Module: TT::Definition
- Defined in:
- TT_Lib2/definition.rb
Overview
Collection of Face methods.
Class Method Summary collapse
-
.set_origin(definition, origin) ⇒ Boolean
Sets the origin of the
ComponentDefinition
to a given 3d point. -
.set_origin_by_bounds(definition, origin) ⇒ Boolean
Sets the origin of the
ComponentDefinition
to a given point on its bounds.
Class Method Details
.set_origin(definition, origin) ⇒ Boolean
Sets the origin of the ComponentDefinition
to a given 3d
point.
22 23 24 25 26 27 28 29 30 31 |
# File 'TT_Lib2/definition.rb', line 22 def self.set_origin(definition, origin) return false if definition.image? # Set the origin - move the entities and counter-adjust the instances. t = Geom::Transformation.new( origin ) definition.entities.transform_entities( t.inverse, definition.entities.to_a ) definition.instances.each { |i| i.transformation = i.transformation * t } return true end |
.set_origin_by_bounds(definition, origin) ⇒ Boolean
Sets the origin of the ComponentDefinition
to a given point on
its bounds.
origin
can be an integer of the following values:
BB_LEFT_FRONT_BOTTOM = 0
BB_RIGHT_FRONT_BOTTOM = 1
BB_LEFT_BACK_BOTTOM = 2
BB_RIGHT_BACK_BOTTOM = 3
BB_LEFT_FRONT_TOP = 4
BB_RIGHT_FRONT_TOP = 5
BB_LEFT_BACK_TOP = 6
BB_RIGHT_BACK_TOP = 7
BB_BOTTOM_CENTER = 8
BB_TOP_CENTER = 9
BB_LEFT_CENTER = 10
BB_RIGHT_CENTER = 11
BB_FRONT_CENTER = 12
BB_BACK_CENTER = 13
BB_CENTER = 14
All these constants are defined under TT
.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'TT_Lib2/definition.rb', line 61 def self.set_origin_by_bounds(definition, origin) return false if definition.image? bb = definition.bounds # Compute the origin if origin.is_a?(Numeric) case origin when (0..7) new_origin = bb.corner(origin) when BB_CENTER new_origin = bb.center when BB_BOTTOM_CENTER p1 = bb.corner(BB_LEFT_FRONT_BOTTOM) p2 = bb.corner(BB_RIGHT_BACK_BOTTOM) new_origin = Geom::Point3d.linear_combination(0.5, p1, 0.5, p2) when BB_TOP_CENTER p1 = bb.corner(BB_LEFT_FRONT_TOP) p2 = bb.corner(BB_RIGHT_BACK_TOP) new_origin = Geom::Point3d.linear_combination(0.5, p1, 0.5, p2) when BB_LEFT_CENTER p1 = bb.corner(BB_LEFT_FRONT_BOTTOM) p2 = bb.corner(BB_LEFT_BACK_TOP) new_origin = Geom::Point3d.linear_combination(0.5, p1, 0.5, p2) when BB_RIGHT_CENTER p1 = bb.corner(BB_RIGHT_FRONT_BOTTOM) p2 = bb.corner(BB_RIGHT_BACK_TOP) new_origin = Geom::Point3d.linear_combination(0.5, p1, 0.5, p2) when BB_FRONT_CENTER p1 = bb.corner(BB_LEFT_FRONT_BOTTOM) p2 = bb.corner(BB_RIGHT_FRONT_TOP) new_origin = Geom::Point3d.linear_combination(0.5, p1, 0.5, p2) when BB_BACK_CENTER p1 = bb.corner(BB_LEFT_BACK_BOTTOM) p2 = bb.corner(BB_RIGHT_BACK_TOP) new_origin = Geom::Point3d.linear_combination(0.5, p1, 0.5, p2) else raise ArgumentError end elsif origin.is_a?(Geom::Point3d) || (origin.is_a?(Array) && origin.size = 3) new_origin = origin else raise ArgumentError end self.set_origin(definition, bb.center) end |