sketchup-api-stubs 0.7.9 → 0.7.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +157 -151
  3. data/lib/sketchup-api-stubs/stubs/Array.rb +741 -741
  4. data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +322 -322
  5. data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +182 -172
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +111 -126
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +423 -400
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +693 -661
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +535 -509
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +500 -476
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +267 -263
  13. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +133 -141
  14. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +547 -522
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +678 -693
  16. data/lib/sketchup-api-stubs/stubs/Geom.rb +351 -351
  17. data/lib/sketchup-api-stubs/stubs/LanguageHandler.rb +93 -93
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +595 -595
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +751 -747
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +183 -183
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
  22. data/lib/sketchup-api-stubs/stubs/Layout/Dictionary.rb +234 -0
  23. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +683 -517
  24. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +148 -148
  26. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +464 -353
  27. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -354
  28. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
  29. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
  30. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
  31. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +370 -370
  32. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
  33. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
  34. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +225 -225
  35. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +614 -567
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
  37. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
  38. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +282 -183
  39. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +458 -387
  40. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -209
  41. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +346 -344
  42. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
  43. data/lib/sketchup-api-stubs/stubs/Layout/ReferenceEntity.rb +82 -82
  44. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +714 -692
  45. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1565 -1519
  46. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
  48. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
  49. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
  50. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  51. data/lib/sketchup-api-stubs/stubs/Length.rb +286 -278
  52. data/lib/sketchup-api-stubs/stubs/Numeric.rb +249 -249
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +196 -144
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -169
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +226 -209
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +145 -150
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +294 -281
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +296 -302
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +473 -478
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +121 -121
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +673 -659
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +600 -593
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +252 -257
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +201 -201
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +443 -449
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +74 -74
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +104 -104
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +167 -165
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +306 -306
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +42 -42
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +403 -406
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -397
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1282 -1239
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -261
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +519 -545
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Environment.rb +406 -0
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/Environments.rb +185 -0
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/EnvironmentsObserver.rb +113 -0
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +122 -125
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +1006 -937
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -102
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +740 -750
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +289 -282
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +64 -62
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +405 -468
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +266 -266
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +189 -189
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +432 -406
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -84
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +307 -306
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +332 -326
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +380 -422
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +409 -427
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +241 -249
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +55 -48
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +114 -114
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/LoadHandler.rb +70 -0
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +1115 -414
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +330 -317
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +142 -142
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +93 -93
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1714 -1652
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +372 -357
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +133 -130
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -271
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +463 -490
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +104 -116
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +939 -797
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +388 -361
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +501 -478
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +385 -361
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +45 -45
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +451 -458
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +211 -212
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +259 -255
  134. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +59 -59
  135. data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +40 -40
  136. data/lib/sketchup-api-stubs/stubs/Sketchup/Snap.rb +125 -0
  137. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +88 -69
  138. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +263 -217
  139. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +283 -262
  140. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +199 -217
  141. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +924 -834
  143. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  144. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +156 -156
  145. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +75 -75
  146. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +143 -142
  147. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1566 -1311
  148. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +71 -45
  149. data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1429 -1377
  150. data/lib/sketchup-api-stubs/stubs/SketchupExtension.rb +353 -353
  151. data/lib/sketchup-api-stubs/stubs/String.rb +24 -24
  152. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +399 -389
  153. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +580 -494
  154. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +280 -269
  155. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +258 -241
  156. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +636 -635
  157. data/lib/sketchup-api-stubs/stubs/UI.rb +791 -683
  158. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -303
  159. data/lib/sketchup-api-stubs.rb +1 -1
  160. metadata +10 -24
@@ -1,593 +1,600 @@
1
- # Copyright:: Copyright 2023 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # The {Sketchup::ComponentInstance} class is used to represent component
5
- # instances of a component definition or components that have been dragged from
6
- # the Component Browser and placed (thus, instanced) within the Model.
7
- # Therefore, the ComponentInstance class contains a reference to a
8
- # corresponding ComponentDefinition object and a Transformation object (which
9
- # contains the location of the component in the Drawing Window).
10
- #
11
- # Starting from SketchUp 2018+, the {Sketchup::ComponentInstance} class
12
- # contains default attributes when created or imported. The attributes
13
- # are: "Owner", "Status". See the
14
- # {https://help.sketchup.com/en/article/3000124 Help article} for more
15
- # information. The dictionary cannot be deleted via ruby and an @raise ArgumentError
16
- # will be raised. The key/value pairs in the dictionary can be deleted safely.
17
- #
18
- # @version SketchUp 6.0
19
- class Sketchup::ComponentInstance < Sketchup::Drawingelement
20
-
21
- # Instance Methods
22
-
23
- # The add_observer method is used to add an observer to the current object.
24
- #
25
- # @example
26
- # entities = Sketchup.active_model.entities
27
- # definition = Sketchup.active_model.definitions[0]
28
- # transformation = Geom::Transformation.new([0,0,0])
29
- # componentinstance = entities.add_instance(definition, transformation)
30
- # status = componentinstance.add_observer observer
31
- #
32
- # @param [Object] observer
33
- # An observer.
34
- #
35
- # @return [Boolean] true if successful, false if unsuccessful.
36
- #
37
- # @version SketchUp 6.0
38
- def add_observer(observer)
39
- end
40
-
41
- # The definition method is used to retrieve the component definition for this
42
- # component instance.
43
- #
44
- # @example
45
- # # First create an instance for us to look at.
46
- # entities = Sketchup.active_model.entities
47
- # definition = Sketchup.active_model.definitions[0]
48
- # transformation = Geom::Transformation.new([0,0,0])
49
- # componentinstance = entities.add_instance(definition, transformation)
50
- #
51
- # # You can get an instance's definition with this method.
52
- # definition = componentinstance.definition
53
- #
54
- # @return [Sketchup::ComponentDefinition] a ComponentDefinition object if
55
- # successful
56
- #
57
- # @version SketchUp 6.0
58
- def definition
59
- end
60
-
61
- # The definition= method is used to set the component definition for this
62
- # component.
63
- #
64
- # This method causes the instance to use a different definition, but it will
65
- # use the same transformation to position it in the Model.
66
- #
67
- # @example
68
- # # Assumes that the active model contains two different components.
69
- # instance1 = Sketchup.active_model.entities[0]
70
- # instance2 = Sketchup.active_model.entities[1]
71
- #
72
- # # Grab handles to our two definitions.
73
- # definition1 = instance1.definition
74
- # definition2 = instance2.definition
75
- #
76
- # # Replace 2nd instance with the 1st definition.
77
- # instance2.definition = definition1
78
- #
79
- # @param [Sketchup::ComponentDefinition] definition
80
- # A ComponentDefinition object to set.
81
- #
82
- # @return [Sketchup::ComponentDefinition] the ComponentDefinition object
83
- # that was set if successful, false if unsuccessful
84
- #
85
- # @version SketchUp 6.0
86
- def definition=(definition)
87
- end
88
-
89
- # The equals? method is used to determine if a component instance is
90
- # geometrically equivalent to another instance.
91
- #
92
- # @example
93
- # entities = Sketchup.active_model.entities
94
- # instance1 = entities[0]
95
- # instance2 = entities[1]
96
- # status = instance1.equals?(instance2)
97
- #
98
- # @param [Sketchup::ComponentInstance] instance
99
- # The instance to compare this instance with.
100
- #
101
- # @return [Boolean]
102
- #
103
- # @version SketchUp 8.0
104
- def equals?(instance)
105
- end
106
-
107
- # The explode method is used to explode the component instance into separate
108
- # entities.
109
- #
110
- # @example
111
- # # Assuming 'instance' is a ComponentInstance object
112
- # array = instance.explode
113
- # if array
114
- # UI.messagebox "Exploded the component instance"
115
- # else
116
- # UI.messagebox "Failure"
117
- # end
118
- #
119
- # @return [Array<Sketchup::Entity>, false] An array of entity objects if successful, +false+ if
120
- # unsuccessful
121
- #
122
- # @version SketchUp 6.0
123
- def explode
124
- end
125
-
126
- # The {#glued_to} method is used to retrieve the entity that this instance is
127
- # glued to.
128
- #
129
- # @example
130
- # point = Geom::Point3d.new(10, 20, 30)
131
- # transform = Geom::Transformation.new(point)
132
- # model = Sketchup.active_model
133
- # entities = model.active_entities
134
- # path = Sketchup.find_support_file("Bed.skp", "Components/Components Sampler/")
135
- # definitions = model.definitions
136
- # componentdefinition = definitions.load(path)
137
- # instance = entities.add_instance(componentdefinition, transform)
138
- # status = instance.glued_to
139
- #
140
- # @return [Sketchup::Face, Sketchup::Group, Sketchup::ComponentInstance, Sketchup::Image, nil]
141
- #
142
- # @version SketchUp 6.0
143
- def glued_to
144
- end
145
-
146
- # The {glued_to=} method glues this instance to a drawing element.
147
- # When moving this other drawing elment with the Move tool, the glued instance moves with it.
148
- #
149
- # In SketchUp 2021.1 support for passing {Sketchup::Group}, {Sketchup::ComponentInstance} and
150
- # {Sketchup::Image} was added.
151
- #
152
- # @example
153
- # model = Sketchup.active_model
154
- # entities = model.active_entities
155
- #
156
- # # Create a face
157
- # face = entities.add_face([[0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0]])
158
- #
159
- # # Add component
160
- # path = Sketchup.find_support_file("Bed.skp", "Components/Components Sampler/")
161
- # point = Geom::Point3d.new(10, 10, 0)
162
- # transformation = Geom::Transformation.new(point)
163
- # definitions = model.definitions
164
- # definition = definitions.load(path)
165
- # instance = entities.add_instance(definition, transformation)
166
- #
167
- # # Make component "gluable"
168
- # definition.behavior.is2d = true
169
- #
170
- # # Glue the component to the face.
171
- # # If you now move the face, the component will follow.
172
- # instance.glued_to = face
173
- #
174
- # @param [Sketchup::Face, Sketchup::Group, Sketchup::ComponentInstance, Sketchup::Image, nil] drawing_element
175
- #
176
- # @raise ArgumentError if the {Sketchup::Behavior} for this component doesn't allow gluing,
177
- # if the alignment is wrong, or if this would lead to cyclic gluing.
178
- #
179
- # @return [Sketchup::Face, Sketchup::Group, Sketchup::ComponentInstance, Sketchup::Image, nil] the entity the instance was glued to.
180
- #
181
- # @version SketchUp 6.0
182
- def glued_to=(drawing_element)
183
- end
184
-
185
- # The guid method is used to get the base 64 encoded unique id
186
- # for this SketchUp object.
187
- #
188
- # @example
189
- # entities = Sketchup.active_model.entities
190
- # definition = Sketchup.active_model.definitions[0]
191
- # transformation = Geom::Transformation.new([0,0,0])
192
- # componentinstance = entities.add_instance(definition, transformation)
193
- # guid = componentinstance.guid
194
- #
195
- # @return [String] a unique 22 character string
196
- #
197
- # @version SketchUp 2014
198
- def guid
199
- end
200
-
201
- # The intersect method is used to compute the boolean intersection of two
202
- # instances representing manifold solid volumes (this - arg). If the specified
203
- # objects (this and arg) do not represent manifold volumes, this method fails.
204
- #
205
- # @example
206
- # entities = Sketchup.active_model.entities
207
- # instance1 = entities[0]
208
- # instance2 = entities[1]
209
- # result = instance1.intersect(instance2)
210
- #
211
- # @note This method is not available in SketchUp Make.
212
- #
213
- # @param [Sketchup::ComponentInstance] instance
214
- # The instance to intersect this instance with.
215
- #
216
- # @return [Sketchup::Group, nil] The resultant group if the two objects
217
- # (this and arg) represent manifold solids and the
218
- # operation succeeds otherwise nil is returned.
219
- #
220
- # @version SketchUp 8.0
221
- def intersect(instance)
222
- end
223
-
224
- # The locked= method is used to lock a component instance.
225
- #
226
- # @example
227
- # entities = Sketchup.active_model.entities
228
- # definition = Sketchup.active_model.definitions[0]
229
- # transformation = Geom::Transformation.new([0,0,0])
230
- # componentinstance = entities.add_instance(definition, transformation)
231
- # status = componentinstance.locked = true
232
- #
233
- # @param [Boolean] lock
234
- #
235
- # @return [Boolean] true if the component instance is locked.
236
- # False if the instance is not locked.
237
- #
238
- # @version SketchUp 6.0
239
- def locked=(lock)
240
- end
241
-
242
- # The locked? method is used to determine if a component instance is locked.
243
- #
244
- # @example
245
- # entities = Sketchup.active_model.entities
246
- # definition = Sketchup.active_model.definitions[0]
247
- # transformation = Geom::Transformation.new([0,0,0])
248
- # componentinstance = entities.add_instance(definition, transformation)
249
- # status = componentinstance.locked?
250
- #
251
- # @return [Boolean]
252
- #
253
- # @version SketchUp 6.0
254
- def locked?
255
- end
256
-
257
- # The {#make_unique} method is used to create a component definition for this
258
- # instance that is not used by any other instances. If the component is already
259
- # unique in the model, nothing happens.
260
- #
261
- # @example
262
- # point = Geom::Point3d.new(10,20,30)
263
- # transform = Geom::Transformation.new(point)
264
- # model = Sketchup.active_model
265
- # entities = model.active_entities
266
- #
267
- # path = Sketchup.find_support_file("Bed.skp",
268
- # "Components/Components Sampler/")
269
- # definitions = model.definitions
270
- # componentdefinition = definitions.load(path)
271
- # instance = entities.add_instance(componentdefinition, transform)
272
- # # Returns unique component instance
273
- # instance.make_unique
274
- #
275
- # @return [Sketchup::ComponentInstance] returns itself
276
- #
277
- # @version SketchUp 6.0
278
- def make_unique
279
- end
280
-
281
- # The manifold? method is used to determine if an instance is manifold.
282
- #
283
- # @example
284
- # entities = Sketchup.active_model.entities
285
- # definition = Sketchup.active_model.definitions[0]
286
- # transformation = Geom::Transformation.new([0,0,0])
287
- # componentinstance = entities.add_instance(definition, transformation)
288
- # status = componentinstance.manifold?
289
- #
290
- # @return [Boolean]
291
- #
292
- # @version SketchUp 8.0
293
- def manifold?
294
- end
295
-
296
- # The {#move!} method is used to set the transformation of this component
297
- # instance, similarly to {#transformation=} but without recording to the undo
298
- # stack.
299
- #
300
- # This method is useful for moving entities inside of an animation or page
301
- # transition.
302
- #
303
- # @example
304
- # entities = Sketchup.active_model.entities
305
- # definition = Sketchup.active_model.definitions[0]
306
- # transformation = Geom::Transformation.new([0,0,0])
307
- # componentinstance = entities.add_instance(definition, transformation)
308
- # new_transformation = Geom::Transformation.new([100,0,0])
309
- # componentinstance.move!(new_transformation)
310
- #
311
- # @note Despite the name being similar to {#transform!}, this method closer
312
- # corresponds to {#transformation=}.
313
- #
314
- # @param [Geom::Transformation] transformation
315
- #
316
- # @return [Boolean] true if successful, false if unsuccessful
317
- #
318
- # @version SketchUp 6.0
319
- def move!(transformation)
320
- end
321
-
322
- # The name method is used to get the name of this instance.
323
- #
324
- # @example
325
- # entities = Sketchup.active_model.entities
326
- # definition = Sketchup.active_model.definitions[0]
327
- # transformation = Geom::Transformation.new([0,0,0])
328
- # componentinstance = entities.add_instance(definition, transformation)
329
- # name = componentinstance.name
330
- #
331
- # @return [String] the string name of the ComponentInstance
332
- #
333
- # @version SketchUp 6.0
334
- def name
335
- end
336
-
337
- # The name method is used to set the name of this instance.
338
- #
339
- # @example
340
- # entities = Sketchup.active_model.entities
341
- # definition = Sketchup.active_model.definitions[0]
342
- # transformation = Geom::Transformation.new([0,0,0])
343
- # componentinstance = entities.add_instance(definition, transformation)
344
- # componentinstance.name = "Sang"
345
- #
346
- # @param [String] name
347
- # the string name to set
348
- #
349
- # @return [Sketchup::ComponentInstance] the newly named ComponentInstance
350
- #
351
- # @version SketchUp 6.0
352
- def name=(name)
353
- end
354
-
355
- # The outer_shell method is used to compute the outer shell of the two
356
- # instances representing manifold solid volumes (this || arg). If the specified
357
- # objects (this and arg) do not represent manifold volumes, this method fails.
358
- #
359
- # @example
360
- # entities = Sketchup.active_model.entities
361
- # instance1 = entities[0]
362
- # instance2 = entities[1]
363
- # result = instance1.outer_shell(instance2)
364
- #
365
- # @param [Sketchup::ComponentInstance] instance
366
- # The instance to outer shell this instance with.
367
- #
368
- # @return [Sketchup::Group, nil] The resultant group if the two objects
369
- # (this and arg) represent manifold solids and the
370
- # operation succeeds otherwise nil is returned.
371
- #
372
- # @version SketchUp 8.0
373
- def outer_shell(instance)
374
- end
375
-
376
- # The remove_observer method is used to remove an observer from the current
377
- # object.
378
- #
379
- # @example
380
- # entities = Sketchup.active_model.entities
381
- # definition = Sketchup.active_model.definitions[0]
382
- # transformation = Geom::Transformation.new([0,0,0])
383
- # componentinstance = entities.add_instance(definition, transformation)
384
- # status = componentinstance.remove_observer observer
385
- #
386
- # @param [Object] observer
387
- # An observer.
388
- #
389
- # @return [Boolean] true if successful, false if unsuccessful.
390
- #
391
- # @version SketchUp 6.0
392
- def remove_observer(observer)
393
- end
394
-
395
- # The show_differences method is used to determine if a component instance is
396
- # geometrically equivalent to another instance and in addition move the non-
397
- # matching and matching geometry to new layers.
398
- #
399
- # This method will move both instances to Layer0. Geometry that is the same
400
- # in both components will be moved to a new layer named def_name + "_same".
401
- # Geometry that is not the same will be moved to a layer named def_name +
402
- # "_diff".
403
- #
404
- # If verbose is true, a list of all the geometry that is different
405
- # from one component to the other is displayed texturally in the Ruby Console.
406
- #
407
- # @example
408
- # entities = Sketchup.active_model.entities
409
- # instance1 = entities[0]
410
- # instance2 = entities[1]
411
- # status = instance1.show_differences(instance2, true)
412
- #
413
- # @param [Sketchup::ComponentInstance] instance
414
- # The instance to be compared with.
415
- #
416
- # @param [Boolean] verbose
417
- # A boolean flag indicating whether to display a textural
418
- # report of the found differences to the Ruby console.
419
- #
420
- # @return [Boolean] true if the instances are geometrically
421
- # equivalent, otherwise false.
422
- #
423
- # @version SketchUp 8.0
424
- def show_differences(instance, verbose)
425
- end
426
-
427
- # The split method is used to compute the boolean split (map overlay)of the two
428
- # instances representing manifold solid volumes (this - arg). If the specified
429
- # objects (this and arg) do not represent manifold volumes, this method fails.
430
- #
431
- # resultant groups if the two objects (this and arg) represent manifold solids and the operation
432
- # succeeds otherwise nil is returned. The 3 groups are as follows: The intersection of volume 1 &
433
- # volume 2, the difference of volume 1 minus volume 2, and the reverse difference of volume 2 minus
434
- # volume 1.
435
- #
436
- # @example
437
- # entities = Sketchup.active_model.entities
438
- # instance1 = entities[0]
439
- # instance2 = entities[1]
440
- # result = instance1.split(instance2)
441
- #
442
- # @note This method is not available in SketchUp Make.
443
- #
444
- # @param [Sketchup::ComponentInstance, nil] instance
445
- # The instance to split this instance with.
446
- #
447
- # @return [Array(Sketchup::Group, Sketchup::Group, Sketchup::Group)] A vector (array) of the three
448
- #
449
- # @version SketchUp 8.0
450
- def split(instance)
451
- end
452
-
453
- # The subtract method is used to compute the boolean difference of the two
454
- # instances representing manifold solid volumes (this - arg). If the specified
455
- # objects (this and arg) do not represent manifold volumes, this method fails.
456
- #
457
- # @example
458
- # entities = Sketchup.active_model.entities
459
- # instance1 = entities[0]
460
- # instance2 = entities[1]
461
- # result = instance1.subtract(instance2)
462
- #
463
- # @note This method is not available in SketchUp Make.
464
- #
465
- # @param [Sketchup::ComponentInstance] instance
466
- # The instance to subtract this instance from.
467
- #
468
- # @return [Sketchup::Group, nil] The resultant group if the two objects
469
- # (this and arg) represent manifold solids and the
470
- # operation succeeds otherwise nil is returned.
471
- #
472
- # @version SketchUp 8.0
473
- def subtract(instance)
474
- end
475
-
476
- # Apply a {Geom::Transformation} to a component instance.
477
- #
478
- # @example
479
- # entities = Sketchup.active_model.entities
480
- # definition = Sketchup.active_model.definitions[0]
481
- # transformation = Geom::Transformation.new([0, 0, 0])
482
- # componentinstance = entities.add_instance(definition, transformation)
483
- # new_transformation = Geom::Transformation.new([100, 0, 0])
484
- # componentinstance.transform! new_transformation
485
- #
486
- # @param [Geom::Transformation] transform
487
- # The transformation object to apply to the component instance.
488
- #
489
- # @return [Boolean]
490
- #
491
- # @version SketchUp 6.0
492
- def transform!(transform)
493
- end
494
-
495
- # The transformation method is used to retrieve the transformation of this
496
- # instance.
497
- #
498
- # @example
499
- # entities = Sketchup.active_model.entities
500
- # definition = Sketchup.active_model.definitions[0]
501
- # transformation = Geom::Transformation.new([0,0,0])
502
- # componentinstance = entities.add_instance(definition, transformation)
503
- # t = componentinstance.transformation
504
- #
505
- # @return [Geom::Transformation] the Transformation object if successful
506
- #
507
- # @version SketchUp 6.0
508
- def transformation
509
- end
510
-
511
- # The {#transformation=} method is used to set the transformation of this
512
- # component instance.
513
- #
514
- # @example
515
- # entities = Sketchup.active_model.entities
516
- # definition = Sketchup.active_model.definitions[0]
517
- # transformation = Geom::Transformation.new([0,0,0])
518
- # componentinstance = entities.add_instance(definition, transformation)
519
- # new_transformation = Geom::Transformation.new([100,0,0])
520
- # componentinstance.transformation = new_transformation
521
- #
522
- # @param [Geom::Transformation] transformation
523
- #
524
- # @version SketchUp 6.0
525
- def transformation=(transformation)
526
- end
527
-
528
- # The trim method is used to compute the (non-destructive) boolean difference
529
- # of the two instances representing manifold solid volumes (this - arg). If
530
- # the specified objects (this and arg) do not represent manifold volumes, this
531
- # method fails.
532
- #
533
- # @example
534
- # entities = Sketchup.active_model.entities
535
- # instance1 = entities[0]
536
- # instance2 = entities[1]
537
- # result = instance1.trim(instance2)
538
- #
539
- # @note This method is not available in SketchUp Make.
540
- #
541
- # @param [Sketchup::ComponentInstance] instance
542
- # The instance to trim this instance against.
543
- #
544
- # @return [Sketchup::Group, nil] The resultant group if the two objects
545
- # (this and arg) represent manifold solids and the
546
- # operation succeeds otherwise nil is returned.
547
- #
548
- # @version SketchUp 8.0
549
- def trim(instance)
550
- end
551
-
552
- # The union method is used to compute the boolean union of the two instances
553
- # representing manifold solid volumes (this | arg). If the specified
554
- # objects (this and arg) do not represent manifold volumes, this method fails.
555
- #
556
- # @example
557
- # entities = Sketchup.active_model.entities
558
- # instance1 = entities[0]
559
- # instance2 = entities[1]
560
- # result = instance1.union(instance2)
561
- #
562
- # @note This method is not available in SketchUp Make.
563
- #
564
- # @param [Sketchup::ComponentInstance] instance
565
- # The instance to union this instance with.
566
- #
567
- # @return [Sketchup::Group, nil] The resultant group if the two objects
568
- # (this and arg) represent manifold solids and the
569
- # operation succeeds otherwise nil is returned.
570
- #
571
- # @version SketchUp 8.0
572
- def union(instance)
573
- end
574
-
575
- # The volume method is used to compute the volume of this instance if and only
576
- # if this instance is manifold.
577
- #
578
- # @example
579
- # entities = Sketchup.active_model.entities
580
- # definition = Sketchup.active_model.definitions[0]
581
- # transformation = Geom::Transformation.new([0,0,0])
582
- # componentinstance = entities.add_instance(definition, transformation)
583
- # volume = componentinstance.volume
584
- #
585
- # @return [Float] If the instance represents a manifold volume,
586
- # volume will be a positive value. If volume is negative,
587
- # the instance is not manifold.
588
- #
589
- # @version SketchUp 8.0
590
- def volume
591
- end
592
-
593
- end
1
+ # Copyright:: Copyright 2026 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The {Sketchup::ComponentInstance} class is used to represent component
5
+ # instances of a component definition or components that have been dragged from
6
+ # the Component Browser and placed (thus, instanced) within the Model.
7
+ # Therefore, the ComponentInstance class contains a reference to a
8
+ # corresponding ComponentDefinition object and a Transformation object (which
9
+ # contains the location of the component in the Drawing Window).
10
+ #
11
+ # Starting from SketchUp 2018+, the {Sketchup::ComponentInstance} class
12
+ # contains default attributes when created or imported. The attributes
13
+ # are: "Owner", "Status". See the
14
+ # {https://help.sketchup.com/en/article/3000124 Help article} for more
15
+ # information. The dictionary cannot be deleted via ruby and an @raise ArgumentError
16
+ # will be raised. The key/value pairs in the dictionary can be deleted safely.
17
+ #
18
+ # @version SketchUp 6.0
19
+ class Sketchup::ComponentInstance < Sketchup::Drawingelement
20
+
21
+ # Instance Methods
22
+
23
+ # The add_observer method is used to add an observer to the current object.
24
+ #
25
+ # @example
26
+ # entities = Sketchup.active_model.entities
27
+ # definition = Sketchup.active_model.definitions[0]
28
+ # transformation = Geom::Transformation.new([0,0,0])
29
+ # componentinstance = entities.add_instance(definition, transformation)
30
+ # status = componentinstance.add_observer observer
31
+ #
32
+ # @param [Object] observer
33
+ # An observer.
34
+ #
35
+ # @return [Boolean] true if successful, false if unsuccessful.
36
+ #
37
+ # @version SketchUp 6.0
38
+ def add_observer(observer)
39
+ end
40
+
41
+ # The definition method is used to retrieve the component definition for this
42
+ # component instance.
43
+ #
44
+ # @example
45
+ # # First create an instance for us to look at.
46
+ # entities = Sketchup.active_model.entities
47
+ # definition = Sketchup.active_model.definitions[0]
48
+ # transformation = Geom::Transformation.new([0,0,0])
49
+ # componentinstance = entities.add_instance(definition, transformation)
50
+ #
51
+ # # You can get an instance's definition with this method.
52
+ # definition = componentinstance.definition
53
+ #
54
+ # @return [Sketchup::ComponentDefinition] a ComponentDefinition object if
55
+ # successful
56
+ #
57
+ # @version SketchUp 6.0
58
+ def definition
59
+ end
60
+
61
+ # The definition= method is used to set the component definition for this
62
+ # component.
63
+ #
64
+ # This method causes the instance to use a different definition, but it will
65
+ # use the same transformation to position it in the Model.
66
+ #
67
+ # @example
68
+ # # Assumes that the active model contains two different components.
69
+ # instance1 = Sketchup.active_model.entities[0]
70
+ # instance2 = Sketchup.active_model.entities[1]
71
+ #
72
+ # # Grab handles to our two definitions.
73
+ # definition1 = instance1.definition
74
+ # definition2 = instance2.definition
75
+ #
76
+ # # Replace 2nd instance with the 1st definition.
77
+ # instance2.definition = definition1
78
+ #
79
+ # @param [Sketchup::ComponentDefinition] definition
80
+ # A ComponentDefinition object to set.
81
+ #
82
+ # @return [Sketchup::ComponentDefinition] the ComponentDefinition object
83
+ # that was set if successful, false if unsuccessful
84
+ #
85
+ # @version SketchUp 6.0
86
+ def definition=(definition)
87
+ end
88
+
89
+ # The equals? method is used to determine if a component instance is
90
+ # geometrically equivalent to another instance.
91
+ #
92
+ # @example
93
+ # entities = Sketchup.active_model.entities
94
+ # instance1 = entities[0]
95
+ # instance2 = entities[1]
96
+ # status = instance1.equals?(instance2)
97
+ #
98
+ # @param [Sketchup::ComponentInstance] instance
99
+ # The instance to compare this instance with.
100
+ #
101
+ # @return [Boolean]
102
+ #
103
+ # @version SketchUp 8.0
104
+ def equals?(instance)
105
+ end
106
+
107
+ # The explode method is used to explode the component instance into separate
108
+ # entities.
109
+ #
110
+ # @example
111
+ # # Assuming 'instance' is a ComponentInstance object
112
+ # instance = Sketchup.active_model.active_entities.grep(Sketchup::ComponentInstance).first
113
+ # entities = instance.explode
114
+ #
115
+ # @return [Array<Sketchup::Entity>, false] An array of entity objects if successful, +false+ if
116
+ # unsuccessful
117
+ #
118
+ # @version SketchUp 6.0
119
+ def explode
120
+ end
121
+
122
+ # The {#glued_to} method is used to retrieve the entity that this instance is
123
+ # glued to.
124
+ #
125
+ # @example
126
+ # point = Geom::Point3d.new(10, 20, 30)
127
+ # transform = Geom::Transformation.new(point)
128
+ # model = Sketchup.active_model
129
+ # entities = model.active_entities
130
+ # path = Sketchup.find_support_file("Bed.skp", "Components/Components Sampler/")
131
+ # definitions = model.definitions
132
+ # componentdefinition = definitions.load(path)
133
+ # instance = entities.add_instance(componentdefinition, transform)
134
+ # status = instance.glued_to
135
+ #
136
+ # @return [Sketchup::Face, Sketchup::Group, Sketchup::ComponentInstance, Sketchup::Image, nil]
137
+ #
138
+ # @version SketchUp 6.0
139
+ def glued_to
140
+ end
141
+
142
+ # The {glued_to=} method glues this instance to a drawing element.
143
+ # When moving this other drawing elment with the Move tool, the glued instance moves with it.
144
+ #
145
+ # In SketchUp 2021.1 support for passing {Sketchup::Group}, {Sketchup::ComponentInstance} and
146
+ # {Sketchup::Image} was added.
147
+ #
148
+ # @example
149
+ # model = Sketchup.active_model
150
+ # entities = model.active_entities
151
+ #
152
+ # # Create a face
153
+ # face = entities.add_face([[0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0]])
154
+ #
155
+ # # Add component
156
+ # path = Sketchup.find_support_file("Bed.skp", "Components/Components Sampler/")
157
+ # point = Geom::Point3d.new(10, 10, 0)
158
+ # transformation = Geom::Transformation.new(point)
159
+ # definitions = model.definitions
160
+ # definition = definitions.load(path)
161
+ # instance = entities.add_instance(definition, transformation)
162
+ #
163
+ # # Make component "gluable"
164
+ # definition.behavior.is2d = true
165
+ #
166
+ # # Glue the component to the face.
167
+ # # If you now move the face, the component will follow.
168
+ # instance.glued_to = face
169
+ #
170
+ # @param [Sketchup::Face, Sketchup::Group, Sketchup::ComponentInstance, Sketchup::Image, nil] drawing_element
171
+ #
172
+ # @raise ArgumentError if the {Sketchup::Behavior} for this component doesn't allow gluing,
173
+ # if the alignment is wrong, or if this would lead to cyclic gluing.
174
+ #
175
+ # @return [Sketchup::Face, Sketchup::Group, Sketchup::ComponentInstance, Sketchup::Image, nil] the entity the instance was glued to.
176
+ #
177
+ # @version SketchUp 6.0
178
+ def glued_to=(drawing_element)
179
+ end
180
+
181
+ # The guid method is used to get the base 64 encoded unique id
182
+ # for this SketchUp object.
183
+ #
184
+ # @example
185
+ # entities = Sketchup.active_model.entities
186
+ # definition = Sketchup.active_model.definitions[0]
187
+ # transformation = Geom::Transformation.new([0,0,0])
188
+ # componentinstance = entities.add_instance(definition, transformation)
189
+ # guid = componentinstance.guid
190
+ #
191
+ # @return [String] a unique 22 character string
192
+ #
193
+ # @version SketchUp 2014
194
+ def guid
195
+ end
196
+
197
+ # The intersect method is used to compute the boolean intersection of two
198
+ # instances representing manifold solid volumes (this - arg). If the specified
199
+ # objects (this and arg) do not represent manifold volumes, this method fails.
200
+ #
201
+ # @example
202
+ # entities = Sketchup.active_model.entities
203
+ # instance1 = entities[0]
204
+ # instance2 = entities[1]
205
+ # result = instance1.intersect(instance2)
206
+ #
207
+ # @note This method is not available in SketchUp Make.
208
+ #
209
+ # @param [Sketchup::ComponentInstance] instance
210
+ # The instance to intersect this instance with.
211
+ #
212
+ # @return [Sketchup::Group, nil] The resultant group if the two objects
213
+ # (this and arg) represent manifold solids and the
214
+ # operation succeeds otherwise nil is returned.
215
+ #
216
+ # @version SketchUp 8.0
217
+ def intersect(instance)
218
+ end
219
+
220
+ # The locked= method is used to lock a component instance.
221
+ #
222
+ # @example
223
+ # entities = Sketchup.active_model.entities
224
+ # definition = Sketchup.active_model.definitions[0]
225
+ # transformation = Geom::Transformation.new([0,0,0])
226
+ # componentinstance = entities.add_instance(definition, transformation)
227
+ # status = componentinstance.locked = true
228
+ #
229
+ # @param [Boolean] lock
230
+ #
231
+ # @return [Boolean] true if the component instance is locked.
232
+ # False if the instance is not locked.
233
+ #
234
+ # @version SketchUp 6.0
235
+ def locked=(lock)
236
+ end
237
+
238
+ # The locked? method is used to determine if a component instance is locked.
239
+ #
240
+ # @example
241
+ # entities = Sketchup.active_model.entities
242
+ # definition = Sketchup.active_model.definitions[0]
243
+ # transformation = Geom::Transformation.new([0,0,0])
244
+ # componentinstance = entities.add_instance(definition, transformation)
245
+ # status = componentinstance.locked?
246
+ #
247
+ # @return [Boolean]
248
+ #
249
+ # @version SketchUp 6.0
250
+ def locked?
251
+ end
252
+
253
+ # The {#make_unique} method is used to create a component definition for this
254
+ # instance that is not used by any other instances. If the component is already
255
+ # unique in the model, nothing happens.
256
+ #
257
+ # @example
258
+ # point = Geom::Point3d.new(10,20,30)
259
+ # transform = Geom::Transformation.new(point)
260
+ # model = Sketchup.active_model
261
+ # entities = model.active_entities
262
+ #
263
+ # path = Sketchup.find_support_file("Bed.skp",
264
+ # "Components/Components Sampler/")
265
+ # definitions = model.definitions
266
+ # componentdefinition = definitions.load(path)
267
+ # instance = entities.add_instance(componentdefinition, transform)
268
+ # # Returns unique component instance
269
+ # instance.make_unique
270
+ #
271
+ # @return [Sketchup::ComponentInstance] returns itself
272
+ #
273
+ # @version SketchUp 6.0
274
+ def make_unique
275
+ end
276
+
277
+ # The manifold? method is used to determine if an instance is manifold.
278
+ #
279
+ # @example
280
+ # entities = Sketchup.active_model.entities
281
+ # definition = Sketchup.active_model.definitions[0]
282
+ # transformation = Geom::Transformation.new([0,0,0])
283
+ # componentinstance = entities.add_instance(definition, transformation)
284
+ # status = componentinstance.manifold?
285
+ #
286
+ # @return [Boolean]
287
+ #
288
+ # @version SketchUp 8.0
289
+ def manifold?
290
+ end
291
+
292
+ # The {#move!} method is used to set the transformation of this component
293
+ # instance, similarly to {#transformation=} but without recording to the undo
294
+ # stack.
295
+ #
296
+ # This method is useful for moving entities inside of an animation or page
297
+ # transition.
298
+ #
299
+ # @example
300
+ # entities = Sketchup.active_model.entities
301
+ # definition = Sketchup.active_model.definitions[0]
302
+ # transformation = Geom::Transformation.new([0,0,0])
303
+ # componentinstance = entities.add_instance(definition, transformation)
304
+ # new_transformation = Geom::Transformation.new([100,0,0])
305
+ # componentinstance.move!(new_transformation)
306
+ #
307
+ # @note Despite the name being similar to {#transform!}, this method closer
308
+ # corresponds to {#transformation=}.
309
+ #
310
+ # @param [Geom::Transformation] transformation
311
+ #
312
+ # @return [Boolean] true if successful, false if unsuccessful
313
+ #
314
+ # @version SketchUp 6.0
315
+ def move!(transformation)
316
+ end
317
+
318
+ # The name method is used to get the name of this instance.
319
+ #
320
+ # @example
321
+ # entities = Sketchup.active_model.entities
322
+ # definition = Sketchup.active_model.definitions[0]
323
+ # transformation = Geom::Transformation.new([0,0,0])
324
+ # componentinstance = entities.add_instance(definition, transformation)
325
+ # name = componentinstance.name
326
+ #
327
+ # @return [String] the string name of the ComponentInstance
328
+ #
329
+ # @version SketchUp 6.0
330
+ def name
331
+ end
332
+
333
+ # The name method is used to set the name of this instance.
334
+ #
335
+ # @example
336
+ # entities = Sketchup.active_model.entities
337
+ # definition = Sketchup.active_model.definitions[0]
338
+ # transformation = Geom::Transformation.new([0,0,0])
339
+ # componentinstance = entities.add_instance(definition, transformation)
340
+ # componentinstance.name = "Sang"
341
+ #
342
+ # @param [String] name
343
+ # the string name to set
344
+ #
345
+ # @return [Sketchup::ComponentInstance] the newly named ComponentInstance
346
+ #
347
+ # @version SketchUp 6.0
348
+ def name=(name)
349
+ end
350
+
351
+ # The outer_shell method is used to compute the outer shell of the two
352
+ # instances representing manifold solid volumes (this || arg). If the specified
353
+ # objects (this and arg) do not represent manifold volumes, this method fails.
354
+ #
355
+ # @example
356
+ # entities = Sketchup.active_model.entities
357
+ # instance1 = entities[0]
358
+ # instance2 = entities[1]
359
+ # result = instance1.outer_shell(instance2)
360
+ #
361
+ # @param [Sketchup::ComponentInstance] instance
362
+ # The instance to outer shell this instance with.
363
+ #
364
+ # @return [Sketchup::Group, nil] The resultant group if the two objects
365
+ # (this and arg) represent manifold solids and the
366
+ # operation succeeds otherwise nil is returned.
367
+ #
368
+ # @version SketchUp 8.0
369
+ def outer_shell(instance)
370
+ end
371
+
372
+ # The remove_observer method is used to remove an observer from the current
373
+ # object.
374
+ #
375
+ # @example
376
+ # entities = Sketchup.active_model.entities
377
+ # definition = Sketchup.active_model.definitions[0]
378
+ # transformation = Geom::Transformation.new([0,0,0])
379
+ # componentinstance = entities.add_instance(definition, transformation)
380
+ # status = componentinstance.remove_observer observer
381
+ #
382
+ # @param [Object] observer
383
+ # An observer.
384
+ #
385
+ # @return [Boolean] true if successful, false if unsuccessful.
386
+ #
387
+ # @version SketchUp 6.0
388
+ def remove_observer(observer)
389
+ end
390
+
391
+ # The show_differences method is used to determine if a component instance is
392
+ # geometrically equivalent to another instance and in addition move the non-
393
+ # matching and matching geometry to new layers.
394
+ #
395
+ # This method will move both instances to Layer0. Geometry that is the same
396
+ # in both components will be moved to a new layer named def_name + "_same".
397
+ # Geometry that is not the same will be moved to a layer named def_name +
398
+ # "_diff".
399
+ #
400
+ # If verbose is true, a list of all the geometry that is different
401
+ # from one component to the other is displayed texturally in the Ruby Console.
402
+ #
403
+ # @example
404
+ # entities = Sketchup.active_model.entities
405
+ # instance1 = entities[0]
406
+ # instance2 = entities[1]
407
+ # status = instance1.show_differences(instance2, true)
408
+ #
409
+ # @param [Sketchup::ComponentInstance] instance
410
+ # The instance to be compared with.
411
+ #
412
+ # @param [Boolean] verbose
413
+ # A boolean flag indicating whether to display a textural
414
+ # report of the found differences to the Ruby console.
415
+ #
416
+ # @return [Boolean] true if the instances are geometrically
417
+ # equivalent, otherwise false.
418
+ #
419
+ # @version SketchUp 8.0
420
+ def show_differences(instance, verbose)
421
+ end
422
+
423
+ # The split method is used to compute the boolean split (map overlay)of the two
424
+ # instances representing manifold solid volumes (this - arg). If the specified
425
+ # objects (this and arg) do not represent manifold volumes, this method fails.
426
+ #
427
+ # resultant groups if the two objects (this and arg) represent manifold solids and the operation
428
+ # succeeds otherwise nil is returned. The 3 groups are as follows: The intersection of volume 1 &
429
+ # volume 2, the difference of volume 1 minus volume 2, and the reverse difference of volume 2 minus
430
+ # volume 1.
431
+ #
432
+ # @example
433
+ # entities = Sketchup.active_model.entities
434
+ # instance1 = entities[0]
435
+ # instance2 = entities[1]
436
+ # result = instance1.split(instance2)
437
+ #
438
+ # @note This method is not available in SketchUp Make.
439
+ #
440
+ # @param [Sketchup::ComponentInstance, nil] instance
441
+ # The instance to split this instance with.
442
+ #
443
+ # @return [Array(Sketchup::Group, Sketchup::Group, Sketchup::Group)] A vector (array) of the three
444
+ #
445
+ # @version SketchUp 8.0
446
+ def split(instance)
447
+ end
448
+
449
+ # The subtract method is used to compute the boolean difference of the two
450
+ # instances representing manifold solid volumes (this - arg). If the specified
451
+ # objects (this and arg) do not represent manifold volumes, this method fails.
452
+ #
453
+ # @example
454
+ # entities = Sketchup.active_model.entities
455
+ # instance1 = entities[0]
456
+ # instance2 = entities[1]
457
+ # result = instance1.subtract(instance2)
458
+ #
459
+ # @note This method is not available in SketchUp Make.
460
+ #
461
+ # @param [Sketchup::ComponentInstance] instance
462
+ # The instance to subtract this instance from.
463
+ #
464
+ # @return [Sketchup::Group, nil] The resultant group if the two objects
465
+ # (this and arg) represent manifold solids and the
466
+ # operation succeeds otherwise nil is returned.
467
+ #
468
+ # @version SketchUp 8.0
469
+ def subtract(instance)
470
+ end
471
+
472
+ # Apply a {Geom::Transformation} to a component instance.
473
+ #
474
+ # @example
475
+ # entities = Sketchup.active_model.entities
476
+ # definition = Sketchup.active_model.definitions[0]
477
+ # transformation = Geom::Transformation.new([0, 0, 0])
478
+ # componentinstance = entities.add_instance(definition, transformation)
479
+ # new_transformation = Geom::Transformation.new([100, 0, 0])
480
+ # componentinstance.transform! new_transformation
481
+ #
482
+ # @param [Geom::Transformation] transform
483
+ # The transformation object to apply to the component instance.
484
+ #
485
+ # @return [Boolean]
486
+ #
487
+ # @version SketchUp 6.0
488
+ def transform!(transform)
489
+ end
490
+
491
+ # The transformation method is used to retrieve the transformation of this
492
+ # instance.
493
+ #
494
+ # @example
495
+ # entities = Sketchup.active_model.entities
496
+ # definition = Sketchup.active_model.definitions[0]
497
+ # transformation = Geom::Transformation.new([0,0,0])
498
+ # componentinstance = entities.add_instance(definition, transformation)
499
+ # t = componentinstance.transformation
500
+ #
501
+ # @return [Geom::Transformation] the Transformation object if successful
502
+ #
503
+ # @version SketchUp 6.0
504
+ def transformation
505
+ end
506
+
507
+ # The {#transformation=} method is used to set the transformation of this
508
+ # component instance.
509
+ #
510
+ # @example
511
+ # entities = Sketchup.active_model.entities
512
+ # definition = Sketchup.active_model.definitions[0]
513
+ # transformation = Geom::Transformation.new([0,0,0])
514
+ # componentinstance = entities.add_instance(definition, transformation)
515
+ # new_transformation = Geom::Transformation.new([100,0,0])
516
+ # componentinstance.transformation = new_transformation
517
+ #
518
+ # @note As of SketchUp 2026, this will raise an error if the
519
+ # {Geom::Transformation} is not invertible. Prior to 2026 this would silently set the
520
+ # transformation possibly causing rendering or editing problems.
521
+ #
522
+ # @param [Geom::Transformation] transformation
523
+ #
524
+ # @raise ArgumentError if the {Geom::Transformation} is not invertible (as of Sketchup 2026)
525
+ #
526
+ # @version SketchUp 6.0
527
+ def transformation=(transformation)
528
+ end
529
+
530
+ # The {#trim} method is used to compute the (non-destructive) boolean difference
531
+ # of the two instances representing manifold solid volumes (this - arg). If
532
+ # the specified objects (this and arg) do not represent manifold volumes, this
533
+ # method fails.
534
+ #
535
+ # @example
536
+ # entities = Sketchup.active_model.entities
537
+ # instance1 = entities[0]
538
+ # instance2 = entities[1]
539
+ # result = instance1.trim(instance2)
540
+ #
541
+ # @note Trimming object instance2 using instance1 results in a new trimmed version of instance2.
542
+ # If the trim is successful the original instance2 is erased and a newly trimmed
543
+ # version is created. This new version, derived from the trimming operation,
544
+ # will possess a new GUID and will be returned.
545
+ #
546
+ # @note This method is not available in SketchUp Make.
547
+ #
548
+ # @param [Sketchup::ComponentInstance] instance
549
+ # The instance to trim this instance against.
550
+ #
551
+ # @return [Sketchup::Group, nil] The resultant group if the two objects
552
+ # (this and arg) represent manifold solids and the
553
+ # operation succeeds otherwise nil is returned.
554
+ #
555
+ # @version SketchUp 8.0
556
+ def trim(instance)
557
+ end
558
+
559
+ # The union method is used to compute the boolean union of the two instances
560
+ # representing manifold solid volumes (this | arg). If the specified
561
+ # objects (this and arg) do not represent manifold volumes, this method fails.
562
+ #
563
+ # @example
564
+ # entities = Sketchup.active_model.entities
565
+ # instance1 = entities[0]
566
+ # instance2 = entities[1]
567
+ # result = instance1.union(instance2)
568
+ #
569
+ # @note This method is not available in SketchUp Make.
570
+ #
571
+ # @param [Sketchup::ComponentInstance] instance
572
+ # The instance to union this instance with.
573
+ #
574
+ # @return [Sketchup::Group, nil] The resultant group if the two objects
575
+ # (this and arg) represent manifold solids and the
576
+ # operation succeeds otherwise nil is returned.
577
+ #
578
+ # @version SketchUp 8.0
579
+ def union(instance)
580
+ end
581
+
582
+ # The volume method is used to compute the volume of this instance if and only
583
+ # if this instance is manifold.
584
+ #
585
+ # @example
586
+ # entities = Sketchup.active_model.entities
587
+ # definition = Sketchup.active_model.definitions[0]
588
+ # transformation = Geom::Transformation.new([0,0,0])
589
+ # componentinstance = entities.add_instance(definition, transformation)
590
+ # volume = componentinstance.volume
591
+ #
592
+ # @return [Float] If the instance represents a manifold volume,
593
+ # volume will be a positive value. If volume is negative,
594
+ # the instance is not manifold.
595
+ #
596
+ # @version SketchUp 8.0
597
+ def volume
598
+ end
599
+
600
+ end