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