Class: CrystalScad::Primitive

Inherits:
CrystalScadObject show all
Defined in:
lib/crystalscad/Primitive.rb

Instance Attribute Summary collapse

Attributes inherited from CrystalScadObject

#args, #transformations

Instance Method Summary collapse

Methods inherited from CrystalScadObject

#initialize, #method_missing, #save, #to_rubyscad, #walk_tree, #walk_tree_classes

Constructor Details

This class inherits a constructor from CrystalScad::CrystalScadObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class CrystalScad::CrystalScadObject

Instance Attribute Details

#childrenObject

Returns the value of attribute children.



3
4
5
# File 'lib/crystalscad/Primitive.rb', line 3

def children
  @children
end

Instance Method Details

#mirror(args) ⇒ Object



33
34
35
36
37
# File 'lib/crystalscad/Primitive.rb', line 33

def mirror(args)
	@transformations ||= []				
	@transformations << Mirror.new(args)		
	self			
end

#rotate(args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/crystalscad/Primitive.rb', line 5

def rotate(args)
  # always make sure we have a z parameter; otherwise RubyScad will produce a 2-dimensional output
  # which can result in openscad weirdness
  if args[:z] == nil
    args[:z] = 0
  end
	@transformations ||= []				
	@transformations << Rotate.new(args)	
	self
end

#rotate_around(point, args) ⇒ Object



16
17
18
19
# File 'lib/crystalscad/Primitive.rb', line 16

def rotate_around(point,args)
	x,y,z= point.x, point.y, point.z
	self.translate(x:-x,y:-y,z:-z).rotate(args).translate(x:x,y:y,z:z)
end

#scale(args) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/crystalscad/Primitive.rb', line 39

def scale(args)
	if args.kind_of? Numeric or args.kind_of? Array
			args = {v:args}
	end
	@transformations ||= []				
	@transformations << Scale.new(args)		
	self			
end

#transform(obj) ⇒ Object

copies the transformation of obj to self



49
50
51
52
53
# File 'lib/crystalscad/Primitive.rb', line 49

def transform(obj)
	@transformations ||= []
	@transformations += obj.transformations
	self
end

#translate(args) ⇒ Object



21
22
23
24
25
# File 'lib/crystalscad/Primitive.rb', line 21

def translate(args)
	@transformations ||= []				
	@transformations << Translate.new(args)		
	self		
end

#union(args) ⇒ Object



27
28
29
30
31
# File 'lib/crystalscad/Primitive.rb', line 27

def union(args)
	@transformations ||= []				
	@transformations << Union.new(args)		
	self			
end