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
ComponentDefinitionto a given 3d point. -
.set_origin_by_bounds(definition, origin) ⇒ Boolean
Sets the origin of the
ComponentDefinitionto 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 |