ComponentInstance

class ComponentInstance

Parent: DrawingElement | Class Index
Methods: definition, definition=, explode, glued_to, glued_to=, locked?, make_unique, move!, transform!, transformation, transformation= |
Sample Code: componentinstancetests.rb |

The ComponentInstance class is used to represent component instances of a component definition or components that have been dragged from the Component Browser and placed (thus, instanced) within the Model. Therefore, the ComponentInstance class contains a reference to a corresponding ComponentDefinition object and a Transformation object (which contains the location of the component in the Drawing Window).

Instance Methods

definition
The definition method is used to retrieve the component definition for this component instance.
Syntax:
componentdefinition = instance.definition
Arguments:
Return Value:
componentdefinition - a ComponentDefinition object if successful
Comments:
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities
path=Sketchup.find_support_file "BedTraditional.skp" ,"Components/Furniture/"

definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform
definition = instance.definition

definition=
The definition= method is used to set the component definition for this component.
Syntax:
componentdefinition = componentinstance.definition = componentdefinition
Arguments:
componentdefinition - a ComponentDefinition object to set
Return Value:
componentdefinition - the ComponentDefinition object that was set if successful, false if unsuccessful
Comments:
This method causes the instance to use a different definition, but it will use the same transformation to position it in the Model.
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities
path1=Sketchup.find_support_file "BedTraditional.skp" ,"Components/Furniture/"
path2=Sketchup.find_support_file "TableRound36.skp", "Components/Furniture/"
model = Sketchup.active_model
definitions = model.definitions

componentdefinition1 = definitions.load path1
componentdefinition2 = definitions.load path2
instance = entities.add_instance componentdefinition1, transform
UI.messagebox "Added Bed"
definition = instance.definition=componentdefinition2

explode
The explode method is used to explode the component instance into separate entities.
Syntax:
entities = componentinstance.explode
Arguments:
Return Value:
entities - an Entities object if successful, false if unsuccessful
Comments:
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities
path = Sketchup.find_support_file "TableRound36.skp" ,"Components/Furniture/"
definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform

# Status is an array of all of the entities, verticies, edges uses, and everything
# that makes up the component
status = instance.explode

glued_to
The glued_to method is used to retrieve the entity that this instance is glued to.
Syntax:
entity = componentinstance.glued_to
Arguments:
Return Value:
entity - the Entity object that the instance is glued to (if successful)
Comments:
Returns nil if it is not glued to anything.
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities
path = Sketchup.find_support_file "TableRound36.skp" ,"Components/Furniture/"
definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform
status = instance.glued_to

glued_to=
The glued_to= method glues this instance to a face.
Syntax:
face = componentinstance.glued_to = face
Arguments:
Return Value:
face - the Face object where the component is glued if successful
Comments:
This method will raise an exception if the instance cannot be glued to the given face. Instances cannot be glued if the definition of the instance doesn't support gluing or if the alignment is wrong.
Example:

depth = 100
width = 100
path = Sketchup.find_support_file "Door3-0x6-8RH.skp" ,"Components/Doors/"
model = Sketchup.active_model
entities = model.active_entities
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, depth, 0]
pts[3] = [0, depth, 0]
# Add the face to the entities in the model
face = entities.add_face pts
point = Geom::Point3d.new 10,10,0
transform = Geom::Transformation.new point
definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform
begin
status = instance.glued_to=face
rescue
UI.messagebox $!.message
end
if (status)
UI.messagebox status
else
UI.messagebox "Failure"
end

locked?
The locked? method is used to determine if a component instance is locked.
Syntax:
status = componentinstance.locked?
Arguments:
Return Value:
status - true if the component instance is locked. False if the instance is not locked.
Comments:
Example:

make_unique
The make_unique method is used to create a component definition for this instance that is not used by any other instances.
Syntax:
status = componentinstance.make_unique
Arguments:
Return Value:
status - true if successful, false if unsuccessful
Comments:
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities

path = Sketchup.find_support_file "TableRound36.skp" ,"Components/Furniture/"
definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform
# Returns unique component instance
status = instance.make_unique

move!
The move! method is the same as the transform! method, except that it does not record the move as an undo operation.
Syntax:
status=instance.move! transformation
Arguments:
Return Value:
status - true if successful, false if unsuccessful
Comments:
This method is useful for moving entities inside of an animation or page transition.
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities
path = Sketchup.find_support_file "TableRound36.skp" ,"Components/Furniture/"
definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform
point2 = Geom::Point3d.new 30, 40, 50
transform2 = Geom::Transformation.new point2
UI.messagebox "Applying a new Transformation (in this case, a move)"
status = instance.move! transform2

transform!
The transform! method is used to apply a transformation to a component instance.
Syntax:
status = componentinstance.transform! transformation
Arguments:
transformation - the transform object to apply to the component instance
Return Value:
status - true if successful, false if unsuccessful
Comments:
Example:
UI.messagebox "Applying a new Transformation (in this case, a move)" status = instance.transform! transform2

transformation
The transformation method is used to retrieve the transformation of this instance.
Syntax:
transformation = componentinstance.transformation
Arguments:
Return Value:
transformation - the Transformation object if successful
Comments:
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities

path = Sketchup.find_support_file "TableRound36.skp" ,"Components/Furniture/"
definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform
transformation = instance.transformation

transformation=
The transformation= method is used to set the transformation for this instance.
Syntax:
transformation = instance.transformation = transformation
Arguments:
transformation - the new Transformation object to set
Return Value:
transformation - the Transformation object that was set if successful
Comments:
Example:

point = Geom::Point3d.new 10,20,30
transform = Geom::Transformation.new point
model = Sketchup.active_model
entities = model.active_entities

path = Sketchup.find_support_file "TableRound36.skp" ,"Components/Furniture/"
definitions = model.definitions
componentdefinition = definitions.load path
instance = entities.add_instance componentdefinition, transform
point2 = Geom::Point3d.new 30, 40, 50
transform2 = Geom::Transformation.new point2
UI.messagebox "Applying a new Transformation (in this case, a move)"
status = instance.transformation=transform2

if (status)
UI.messagebox status
else
UI.messagebox "Failure"
end