sketchup-api-stubs 0.7.9 → 0.7.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +151 -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 +172 -172
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +509 -509
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +476 -476
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
  13. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
  14. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -522
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +693 -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 +747 -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/Document.rb +569 -517
  23. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  24. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +148 -148
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +356 -353
  26. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -354
  27. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
  28. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
  29. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
  30. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +370 -370
  31. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
  32. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
  33. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +225 -225
  34. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +567 -567
  35. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
  37. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +183 -183
  38. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +459 -387
  39. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -209
  40. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +344 -344
  41. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
  42. data/lib/sketchup-api-stubs/stubs/Layout/ReferenceEntity.rb +82 -82
  43. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +714 -692
  44. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1519 -1519
  45. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
  46. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
  48. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
  49. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  50. data/lib/sketchup-api-stubs/stubs/Length.rb +278 -278
  51. data/lib/sketchup-api-stubs/stubs/Numeric.rb +249 -249
  52. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +144 -144
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -169
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +226 -209
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +150 -150
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -281
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +302 -302
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +478 -478
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +121 -121
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +659 -659
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -593
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -257
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +201 -201
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +449 -449
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +74 -74
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +104 -104
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +165 -165
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +306 -306
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +42 -42
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +406 -406
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -397
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1242 -1239
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -261
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +519 -545
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -125
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +937 -937
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -102
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +750 -750
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +282 -282
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +468 -468
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +266 -266
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +189 -189
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +406 -406
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -84
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +306 -306
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +326 -326
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +422 -422
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +427 -427
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +249 -249
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +114 -114
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +414 -414
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +317 -317
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +142 -142
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +93 -93
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1656 -1652
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +357 -357
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +130 -130
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -271
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +490 -490
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +116 -116
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +797 -797
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +361 -361
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +480 -478
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +373 -361
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +45 -45
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +458 -458
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +255 -255
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +59 -59
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +40 -40
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +69 -69
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +217 -217
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
  134. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +217 -217
  135. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  136. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +834 -834
  137. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  138. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +156 -156
  139. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +75 -75
  140. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
  141. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1329 -1311
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -45
  143. data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1394 -1377
  144. data/lib/sketchup-api-stubs/stubs/SketchupExtension.rb +353 -353
  145. data/lib/sketchup-api-stubs/stubs/String.rb +24 -24
  146. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +387 -389
  147. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +505 -494
  148. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +269 -269
  149. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +241 -241
  150. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +633 -635
  151. data/lib/sketchup-api-stubs/stubs/UI.rb +728 -683
  152. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -303
  153. data/lib/sketchup-api-stubs.rb +1 -1
  154. metadata +3 -3
@@ -1,1652 +1,1656 @@
1
- # Copyright:: Copyright 2023 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # This is the interface to a SketchUp model. The model is the 3D drawing that
5
- # the user is working with, and it serves as the "entry point" for most Ruby
6
- # API interactions. The Sketchup.active_model method gives you a handle to the
7
- # current model, and from there you can use the model-level methods to start
8
- # getting information and making changes.
9
- #
10
- # Constants:
11
- # Product Family
12
- # - Model::ProTrial
13
- # - Model::ProLicensed
14
- # - Model::MakeTrial
15
- # - Model::MakeTrialExpired
16
- #
17
- # @bug Prior to SketchUp 2019.0 this class would yield +TypeError+ for all
18
- # method calls if +#singleton_class+ was called on the model object.
19
- #
20
- # @example
21
- # # Grab a handle to the currently active model (aka the one the user is
22
- # # looking at in SketchUp.)
23
- # model = Sketchup.active_model
24
- #
25
- # # Grab other handles to commonly used collections inside the model.
26
- # entities = model.entities
27
- # layers = model.layers
28
- # materials = model.materials
29
- # component_definitions = model.definitions
30
- # selection = model.selection
31
- #
32
- # # Now that we have our handles, we can start pulling objects and making
33
- # # method calls that are useful.
34
- # first_entity = entities[0]
35
- # UI.messagebox("First thing in your model is a #{first_entity.typename}")
36
- #
37
- # number_materials = materials.length
38
- # UI.messagebox("Your model has #{number_materials} materials.")
39
- #
40
- # new_edge = entities.add_line([0,0,0], [500,500,0])
41
- #
42
- # @version SketchUp 6.0
43
- class Sketchup::Model
44
-
45
- # Constants
46
-
47
- LOAD_STATUS_SUCCESS = nil # Stub value.
48
- LOAD_STATUS_SUCCESS_MORE_RECENT = nil # Stub value.
49
-
50
- Make = nil # Stub value.
51
- MakeTrial = nil # Stub value.
52
- ProLicensed = nil # Stub value.
53
- ProTrial = nil # Stub value.
54
-
55
- VERSION_2013 = nil # Stub value.
56
- VERSION_2014 = nil # Stub value.
57
- VERSION_2015 = nil # Stub value.
58
- VERSION_2016 = nil # Stub value.
59
- VERSION_2017 = nil # Stub value.
60
- VERSION_2018 = nil # Stub value.
61
- VERSION_2019 = nil # Stub value.
62
- VERSION_2020 = nil # Stub value.
63
- VERSION_2021 = nil # Stub value.
64
- VERSION_3 = nil # Stub value.
65
- VERSION_4 = nil # Stub value.
66
- VERSION_5 = nil # Stub value.
67
- VERSION_6 = nil # Stub value.
68
- VERSION_7 = nil # Stub value.
69
- VERSION_8 = nil # Stub value.
70
-
71
- # Instance Methods
72
-
73
- # The {#abort_operation} method aborts the current operation started with the
74
- # start_operation method.
75
- #
76
- # The {#abort_operation} method is normally called from inside of a rescue
77
- # clause to cancel an operation if something goes wrong.
78
- #
79
- # @example
80
- # status = model.abort_operation
81
- #
82
- # @note Never abort a transparent operation. Doing so would abort the operation
83
- # it chains to. Instead, try to clean up and simply commit in order to make
84
- # sure the operation is closed.
85
- #
86
- # @return [Boolean] true if successful, false if unsuccessful
87
- #
88
- # @version SketchUp 6.0
89
- def abort_operation
90
- end
91
-
92
- # Returns an {Sketchup::Entities} object which contains
93
- # the entities in the open group or component instance. If no group or
94
- # component is open for editing then this will be the same as {#entities}.
95
- #
96
- # To perform actions upon the current set of entities the user is working with
97
- # then this is the method to use. Entities selected by the user will be a
98
- # subset of the active entities.
99
- #
100
- # @example
101
- # model = Sketchup.active_model
102
- # entities = model.active_entities
103
- # entities.each { |entity| puts "#{entity} (#{entity.class})" }
104
- #
105
- # @return [Sketchup::Entities]
106
- #
107
- # @see #edit_transform
108
- #
109
- # @version SketchUp 6.0
110
- def active_entities
111
- end
112
-
113
- # The {#active_layer} method retrieves the active Layer.
114
- #
115
- # The default layer in SketchUp is layer 0.
116
- #
117
- # @example
118
- # model = Sketchup.active_model
119
- # layer = model.active_layer
120
- #
121
- # @return [Sketchup::Layer]
122
- #
123
- # @version SketchUp 6.0
124
- def active_layer
125
- end
126
-
127
- # The {#active_layer=} method sets the active {Sketchup::Layer} object.
128
- #
129
- # @example
130
- # model = Sketchup.active_model
131
- # layers = model.layers
132
- # layer = layers.add('My Layer')
133
- # model.active_layer = layer
134
- #
135
- # @param [Sketchup::Layer] layer
136
- # The layer to be set as the active layer.
137
- #
138
- # @return [Sketchup::Layer]
139
- #
140
- # @version SketchUp 6.0
141
- def active_layer=(layer)
142
- end
143
-
144
- # Returns an array containing the sequence of entities the user has
145
- # double-clicked on for editing. This allows one to determine whether they are
146
- # in component edit mode and where in the model they are.
147
- #
148
- # For example, if a user has double-clicked into a component to
149
- # edit its geometry, and then double clicked into a sub-group to edit that,
150
- # the active_path might contain:
151
- #
152
- # <code>[<Sketchup::ComponentInstance>, <Sketchup::Group>]</code>
153
- #
154
- # @example
155
- # active_path = Sketchup.active_model.active_path
156
- #
157
- # @return [Array<Sketchup::Drawingelement>, nil] array of entities showing where the user is
158
- # currently editing.
159
- #
160
- # @version SketchUp 7.0
161
- def active_path
162
- end
163
-
164
- # The {#active_path=} method is used to open a given instance path for editing.
165
- #
166
- # @example Open an instance
167
- # model = Sketchup.active_model
168
- # instance = model.active_entities.grep(Sketchup::ComponentInstance).first
169
- # instance_path = Sketchup::InstancePath.new([instance])
170
- # model.active_path = instance_path
171
- #
172
- # @example Close all instances
173
- # model = Sketchup.active_model
174
- # model.active_path = nil
175
- #
176
- # @note An instance path can only be opened if the instances are not locked.
177
- # This also include instances of the same component definition that are not
178
- # on the given path. A definition cannot be edited if any of its instances
179
- # are locked.
180
- #
181
- # @note Since changing the active entities in SketchUp also changes what
182
- # coordinate system is used, entities can't be modified in the same operation
183
- # as the active entities changes. The API handles this automatically by
184
- # starting and committing transparent operations as needed.
185
- #
186
- # If the API user tries to do this:
187
- #
188
- # model.start_operation('...', true)
189
- # model.active_entities.add_face(...)
190
- # model.active_path = instance_path
191
- # model.active_entities.add_face(...)
192
- # model.commit_operation
193
- #
194
- # Then SketchUp will automatically break it up to something like to this:
195
- #
196
- # model.start_operation('...', true)
197
- # model.active_entities.add_face(...)
198
- # model.commit_operation
199
- #
200
- # model.start_operation('...', true, false, true)
201
- # model.active_path = instance_path
202
- # model.commit_operation
203
- #
204
- # model.start_operation('...', true, false, true)
205
- # model.active_entities.add_face(...)
206
- # model.commit_operation
207
- #
208
- # For the end user this will be experienced as a single operation.
209
- #
210
- # For the API user the side-effect is multiple transaction notifications to
211
- # {Sketchup::ModelObserver}s.
212
- #
213
- # @param [Sketchup::InstancePath, Array<Sketchup::ComponentInstance, Sketchup::Group>, nil] instance_path
214
- # Passing +nil+ or an empty array will close all open instances.
215
- #
216
- # @raise [ArgumentError] if the instance path is not valid.
217
- #
218
- # @raise [ArgumentError] if the instance path contains locked instances.
219
- #
220
- # @raise [ArgumentError] if the instance path contains instances who's
221
- # siblings are locked.
222
- #
223
- # @raise [ArgumentError] if the instance path contains Live Components.
224
- #
225
- # @return [Sketchup::Model]
226
- #
227
- # @version SketchUp 2020.0
228
- def active_path=(instance_path)
229
- end
230
-
231
- # The {#active_view} method returns the active View object for this model.
232
- #
233
- # @example
234
- # model = Sketchup.active_model
235
- # view = model.active_view
236
- #
237
- # @return [Sketchup::View]
238
- #
239
- # @version SketchUp 6.0
240
- def active_view
241
- end
242
-
243
- # Add a text note to the Model. The position of the note is given as relative
244
- # window positions between 0 and 1. For example, the following command
245
- # would create a note that start 1/10 of the ways down the screen from the
246
- # upper left corner of the window.
247
- #
248
- # @example
249
- # model = Sketchup.active_model
250
- # # Add a note 1/10 ways down the screen and 1/10 ways right from the
251
- # # upper left corner of model window.
252
- # note = Sketchup.active_model.add_note('Hello World', 0.1, 0.1)
253
- #
254
- # @param [String] note
255
- # A string note.
256
- #
257
- # @param [Numeric] x
258
- # A distance along the x axis between 0 and 1.
259
- #
260
- # @param [Numeric] y
261
- # A distance along the y axis between 0 and 1.
262
- #
263
- # @return [Sketchup::Text] a note object or an exception if it is
264
- # unsuccessful.
265
- #
266
- # @version SketchUp 6.0
267
- def add_note(note, x, y)
268
- end
269
-
270
- # The add_observer method is used to add an observer to the current object.
271
- #
272
- # @example
273
- # model = Sketchup.active_model
274
- # observer = Sketchup::ModelObserver.new
275
- # status = model.add_observer(observer)
276
- #
277
- # @param [Object] observer
278
- # An observer.
279
- #
280
- # @return [Boolean] true if successful, false if unsuccessful.
281
- #
282
- # @version SketchUp 6.0
283
- def add_observer(observer)
284
- end
285
-
286
- # The {#attribute_dictionaries} method retrieves the AttributeDictionaries
287
- # object that is associated with the Model.
288
- #
289
- # @example
290
- # model = Sketchup.active_model
291
- # dictionaries = model.attribute_dictionaries
292
- # if dictionaries
293
- # # Code to do something if attribute dictionaries exist (usually you
294
- # # parse the array of dictionaries.
295
- # else
296
- # # Code to do something if attribute dictionaries do not exist.
297
- # end
298
- #
299
- # @return [Sketchup::AttributeDictionaries] the AttributeDictionaries
300
- # object associated with the entity, or nil if there are
301
- # no attribute_dictionary objects associated with the
302
- # model. Care must be taken if nil is returned, for
303
- # example: invoking attribute_dictionaries.length will
304
- # throw a NoMethodError exception, not return 0.
305
- #
306
- # @version SketchUp 6.0
307
- def attribute_dictionaries
308
- end
309
-
310
- # Returns the Sketchup::AttributeDictionary object that is specified by
311
- # name. If the model does not have an attribute dictionary that
312
- # corresponds to name, returns either nil, or a creates an attribute
313
- # dictionary. If the optional second argument is true, and there is no
314
- # attribute dictionary that corresponds to name, a new attribute
315
- # dictionary is created.
316
- #
317
- # @example
318
- # model = Sketchup.active_model
319
- # create_if_empty = true
320
- # dictionary = model.attribute_dictionary('name', create_if_empty)
321
- #
322
- # @param [String] name
323
- # The name of the dictionary you are attempting to
324
- # retrieve.
325
- #
326
- # @param [Boolean] create
327
- # if set to true an attribute dictionary of the
328
- # given "name" will be created if not found.
329
- #
330
- # @return [Sketchup::AttributeDictionary] an attribute dictionary object if
331
- # successful, nil if unsuccessful
332
- #
333
- # @version SketchUp 6.0
334
- def attribute_dictionary(name, create = false)
335
- end
336
-
337
- # The {#axes} method returns the drawing axes for the model.
338
- #
339
- # @example
340
- # # Point for a rectangle.
341
- # points = [
342
- # Geom::Point3d.new( 0, 0, 0),
343
- # Geom::Point3d.new(10, 0, 0),
344
- # Geom::Point3d.new(10, 20, 0),
345
- # Geom::Point3d.new( 0, 20, 0)
346
- # ]
347
- # # Transform the points so they are local to the model axes. Otherwise
348
- # # they would be local to the model origin.
349
- # tr = Sketchup.active_model.axes.transformation
350
- # points.each { |point| point.transform!(tr) }
351
- # Sketchup.active_model.active_entities.add_face(points)
352
- #
353
- # @return [Sketchup::Axes] the axes for the model.
354
- #
355
- # @version SketchUp 2016
356
- def axes
357
- end
358
-
359
- # The behavior method retrieves the behavior of the model.
360
- #
361
- # @example
362
- # model = Sketchup.active_model
363
- # behavior = model.behavior
364
- #
365
- # @return [Sketchup::Behavior] behavior object for the model if successful
366
- #
367
- # @version SketchUp 6.0
368
- def behavior
369
- end
370
-
371
- # The {#bounds} method is used to retrieve the {Geom::BoundingBox} bounding the
372
- # contents of a {Sketchup::Model}.
373
- #
374
- # @example
375
- # model = Sketchup.active_model
376
- # bounds = model.bounds
377
- #
378
- # @return [Geom::BoundingBox]
379
- #
380
- # @version SketchUp 6.0
381
- def bounds
382
- end
383
-
384
- # The {#classifications} method is used to retrieve the Classifications object
385
- # for this model.
386
- #
387
- # @example
388
- # model = Sketchup.active_model
389
- # c = model.classifications
390
- #
391
- # @return [Sketchup::Classifications] a Classifications object.
392
- #
393
- # @version SketchUp 2015
394
- def classifications
395
- end
396
-
397
- # The close method is used to close this model. On Mac OS, only the active
398
- # model can be closed. On Windows, since there can be only one document open,
399
- # this method will perform a File/New operation.
400
- #
401
- # @example
402
- # Sketchup.file_new
403
- # model = Sketchup.active_model
404
- # model.close
405
- #
406
- # @param [Boolean] ignore_changes
407
- # If true, model changes will be
408
- # ignored and save prompts will be suppressed.
409
- # If false, changes will not be ignored and save
410
- # prompts will be displayed normally.
411
- #
412
- # @return [nil]
413
- #
414
- # @version SketchUp 2015
415
- def close(ignore_changes = false)
416
- end
417
-
418
- # The {#close_active} method is used to close the currently active (open) group
419
- # or component.
420
- #
421
- # @example
422
- # model = Sketchup.active_model
423
- # status = model.close_active
424
- #
425
- # @note Before SketchUp 2014 this method had a bug where it didn't create an
426
- # undo operation and that could lead to corrupted geometry when undo/redo was
427
- # used after invoking this method.
428
- #
429
- # @return [Boolean] true if successful, false if unsuccessful.
430
- #
431
- # @version SketchUp 6.0
432
- def close_active
433
- end
434
-
435
- # The commit_operation method commits an operation for undo.
436
- #
437
- # The commit_operation method is normally called at the end of a method to
438
- # commit the operation that the method performs.
439
- #
440
- # @example
441
- # status = model.commit_operation
442
- #
443
- # @return [Boolean] true if successful, false if unsuccessful
444
- #
445
- # @version SketchUp 6.0
446
- def commit_operation
447
- end
448
-
449
- # The {#definitions} method retrieves a definition list containing all of the
450
- # component definitions in the model.
451
- #
452
- # @example
453
- # model = Sketchup.active_model
454
- # definitions = model.definitions
455
- #
456
- # @return [Sketchup::DefinitionList]
457
- #
458
- # @version SketchUp 6.0
459
- def definitions
460
- end
461
-
462
- # The description method retrieves a description of the model as found in the
463
- # Model Info > Files panel.
464
- #
465
- # The returned description can be empty. The default description for all models
466
- # is empty.
467
- #
468
- # @example
469
- # model = Sketchup.active_model
470
- # description = model.description
471
- #
472
- # @return [String] a description if successful.
473
- #
474
- # @version SketchUp 6.0
475
- def description
476
- end
477
-
478
- # The {#description=} method sets the description of the model.
479
- #
480
- # @example
481
- # model = Sketchup.active_model
482
- # description = model.description = "This is a model of a house on the " <<
483
- # "North West Corner of 10th and Dolores Street in Carmel, California"
484
- #
485
- # @param [String] description
486
- # the description string to be set.
487
- #
488
- # @return [String]
489
- #
490
- # @version SketchUp 6.0
491
- def description=(description)
492
- end
493
-
494
- # The {#drawing_element_visible?} method reports whether the given drawing
495
- # element in an instance path is visible given the current model options.
496
- #
497
- # @example Traversing every visible entity in the model
498
- # module Example
499
- #
500
- # def self.instance?(entity)
501
- # entity.is_a?(Sketchup::ComponentInstance) || entity.is_a?(Sketchup::Group)
502
- # end
503
- #
504
- # # Walk the visible entities in the model, taking into account
505
- # # "DrawHiddenGeometry" and "DrawHiddenObjects" rendering options.
506
- # def self.walk(entities, transformation = IDENTITY, path = [], &block)
507
- # entities.each { |entity|
508
- # entity_path = path + [entity]
509
- # next unless entity.model.drawing_element_visible?(entity_path)
510
- # block.call(entity, transformation, path)
511
- # if instance?(entity)
512
- # child_entities = entity.definition.entities
513
- # child_transformation = transformation * entity.transformation
514
- # walk(child_entities, child_transformation, entity_path, &block)
515
- # end
516
- # }
517
- # end
518
- #
519
- # end
520
- #
521
- # model = Sketchup.active_model
522
- # Example.walk(model.entities) do |entity, transformation, path|
523
- # # Do something to every visible entity in the model...
524
- # end
525
- #
526
- # @param [Sketchup::InstancePath, Array<Sketchup::Drawingelement>] instance_path
527
- #
528
- # @raise [ArgumentError] if the +instance_path+ is not valid.
529
- #
530
- # @return [Boolean]
531
- #
532
- # @see Sketchup::RenderingOptions
533
- #
534
- # @see Sketchup::Drawingelement#visible?
535
- #
536
- # @see Sketchup::Layer#visible?
537
- #
538
- # @version SketchUp 2020.0
539
- def drawing_element_visible?(instance_path)
540
- end
541
-
542
- # Returns the transformation of the current component edit session. If a user
543
- # has double-clicked to edit a component's geometry, this will
544
- # return the transformation of that component, relative to its parent's
545
- # origin. This allows one to correctly calculate "local" transformations of
546
- # a given entity regardless of whether the user is in edit mode.
547
- #
548
- # @example
549
- # Sketchup.active_model.edit_transform
550
- #
551
- # @return [Geom::Transformation] the current edit Transformation
552
- #
553
- # @version SketchUp 7.0
554
- def edit_transform
555
- end
556
-
557
- # The {#entities} method returns an {Sketchup::Entities} object containing the
558
- # entities in the root of model.
559
- #
560
- # @example
561
- # model = Sketchup.active_model
562
- # entities = model.entities
563
- #
564
- # @note This does not return a collection of all the entities in the model,
565
- # only the top level node of the model hierarchy. To get to all entities in
566
- # a model you must recursivly traverse the model.
567
- #
568
- # @return [Sketchup::Entities] an Entities object if successful
569
- #
570
- # @version SketchUp 6.0
571
- def entities
572
- end
573
-
574
- # The export method is used to export a given file format. It knows which
575
- # format to export based on the file extension you place on the file name.
576
- # For example, a filename of "thing.obj" will export an OBJ file, whereas
577
- # "thing.dae" will export a COLLADA file.
578
- #
579
- # For SketchUp Pro 7.1+, valid extensions include dae, kmz, 3ds, dwg,
580
- # dxf, fbx, obj, wrl, and xsi. SketchUp Free only supports dae and kmz.
581
- #
582
- # Format Support Changes:
583
- # * SketchUp 7.1 added COLLADA (.dae) export capability.
584
- # * SketchUp Pro 2015+ added IFC export capability.
585
- # * SketchUp Pro 2016+ added PDF export capability.
586
- # * SketchUp Pro 2018+ added options for all 3D exporters.
587
- #
588
- # See the {file:pages/exporter_options.md Exporter Options} file for information
589
- # on creating a valid hash for the various exporters.
590
- #
591
- # @example General use
592
- # model = Sketchup.active_model
593
- # show_summary = true
594
- #
595
- # # Export dwg file on a PC, showing a summary when complete.
596
- # status = model.export('c:\my_export.dwg', show_summary)
597
- #
598
- # # Export kmz file on Mac (note the absolute file path), without summary.
599
- # status = model.export('/Library/my_export.kmz')
600
- #
601
- # # Export pdf file on a PC, showing a summary when complete.
602
- # options_hash = { :show_summary => true,
603
- # :output_profile_lines => false,
604
- # :map_fonts => false,
605
- # :model_units => Length::Meter }
606
- # status = model.export('c:/my_export.pdf', options_hash)
607
- #
608
- # # Or for a COLLADA (.dae) file.
609
- # options_hash = { :triangulated_faces => true,
610
- # :doublesided_faces => true,
611
- # :edges => false,
612
- # :author_attribution => false,
613
- # :texture_maps => true,
614
- # :selectionset_only => false,
615
- # :preserve_instancing => true }
616
- # status = model.export('c:/my_export.dae', options_hash)
617
- #
618
- # @example IFC Example
619
- # model = Sketchup.active_model
620
- # # If no IFC types are passed in, then no geometry will be exported.
621
- # options_hash = { :hidden_geometry => true,
622
- # :ifc_mapped_items => true,
623
- # :ifc_types => ['IfcBuilding', 'IfcDoor']}
624
- # status = model.export('c:/my_export.ifc', options_hash)
625
- #
626
- # @overload export(path, show_summary = false)
627
- #
628
- # @param [String] path The name of the file to export.
629
- # @param [Boolean] show_summary Boolean to show summary dialog.
630
- # @return [Boolean]
631
- #
632
- # @overload export(path, options)
633
- #
634
- # @param [String] path The path to save the export at.
635
- # @param [Hash] options
636
- # @return [Boolean]
637
- #
638
- # @raise [ArgumentError] If the file extension is unsupported.
639
- #
640
- # @version SketchUp 6.0
641
- def export(*args)
642
- end
643
-
644
- # Finds and returns entities by their entityID or GUID.
645
- #
646
- # GUIDs looked up are only relevant to Group and ComponentInstance as these
647
- # GUIDs are persistent. ComponentDefinition and Model GUIDs are not persistent
648
- # and are not looked up.
649
- #
650
- # When given an array of IDs, an array is returned with a 1:1 mapping to the
651
- # input arguments. This array may contain nil values if some ids were not
652
- # found. You cannot look up a mix of entityIDs and GUIDs in the same call.
653
- #
654
- # @example
655
- # model = Sketchup.active_model
656
- #
657
- # # Look up by entityID.
658
- # entity_id = model.entities.add_line([0,0,0], [9,9,9]).entityID
659
- # entity = model.find_entity_by_id(entity_id)
660
- #
661
- # # Look up by GUID.
662
- # guid = model.entities.add_group.guid
663
- # entity = model.find_entity_by_id(guid)
664
- #
665
- # # Look up multiple.
666
- # entities = model.find_entity_by_id(id1, id2, id3)
667
- # entities = model.find_entity_by_id([id1, id2, id3])
668
- # entities = model.find_entity_by_id(guid1, guid2, guid3)
669
- # entities = model.find_entity_by_id([guid1, guid2, guid3])
670
- #
671
- # @param [Array<Integer, String>] ids_or_array
672
- # Pass either a series of ids or a single array containing
673
- # ids. Ids must either be entityID Integers or GUID
674
- # Strings.
675
- #
676
- # @return [Array<Sketchup::Entity, nil>] Returns an array with Entity objects for each id
677
- # found and nil otherwise. Single Entity or nil when
678
- # called with a single id.
679
- #
680
- # @version SketchUp 2015
681
- def find_entity_by_id(ids_or_array)
682
- end
683
-
684
- # Finds and returns entities by their persistent id.
685
- #
686
- # When given an array of IDs, an array is returned with a 1:1 mapping to the
687
- # input arguments. This array may contain `nil` values if some ids were not
688
- # found.
689
- #
690
- # @example
691
- # model = Sketchup.active_model
692
- #
693
- # # Look up by persistent_id.
694
- # pid = model.entities.add_line([0,0,0], [9,9,9]).persistent_id
695
- # entity = model.find_entity_by_persistent_id(pid)
696
- #
697
- # # Look up multiple.
698
- # entities = model.find_entity_by_persistent_id(id1, id2, id3)
699
- # entities = model.find_entity_by_persistent_id([id1, id2, id3])
700
- #
701
- # @example Limit search by scope
702
- # model = Sketchup.active_model
703
- # edge_pid = model.entities.add_line([0,0,0], [9,9,9]).persistent_id
704
- # layer_pid = model.layers.add('Hello World').persistent_id
705
- #
706
- # # Search in all scopes:
707
- # entities = model.find_entity_by_persistent_id(edge_pid, layer_pid)
708
- # # => [#<Sketchup::Edge:0x000002567da4a8f0>, #<Sketchup::Layer:0x000002567da49e50>]
709
- #
710
- # # Search in layer scope:
711
- # entities = model.find_entity_by_persistent_id(edge_pid, layer_pid, layers: true)
712
- # # => [nil, #<Sketchup::Layer:0x000002567da49e50>]
713
- #
714
- # @overload find_entity_by_persistent_id(ids_or_array)
715
- #
716
- # @param [Array<Integer>] ids_or_array Pass either a series of ids or a
717
- # single array containing persistent ids.
718
- #
719
- # @return [Array<Sketchup::Entity, nil>] Returns an array with
720
- # {Sketchup::Entity} objects for each id found and nil otherwise.
721
- #
722
- # @overload find_entity_by_persistent_id(ids_or_array, **scope)
723
- #
724
- # @version SketchUp 2020.2
725
- # @param [Array<Integer>] ids_or_array Pass either a series of ids or a
726
- # single array containing persistent ids.
727
- # @param [Hash<Symbol, Boolean>] scope Limit the scope of the search to the
728
- # given scope categories.
729
- # @option [Boolean] scope :entities Search entities parent to
730
- # {Sketchup::Entities}.
731
- # @option [Boolean] scope :layers Search {Sketchup::Layers} for
732
- # {Sketchup::Layer} entities.
733
- # @option [Boolean] scope :layer_folders Search {Sketchup::Layers} for
734
- # {Sketchup::LayerFolder} entities.
735
- # @option [Boolean] scope :materials Search {Sketchup::Materials} for
736
- # {Sketchup::Material} entities.
737
- # @option [Boolean] scope :pages Search {Sketchup::Pages} for
738
- # {Sketchup::Page} entities.
739
- # @option [Boolean] scope :styles Search {Sketchup::Styles} for
740
- # {Sketchup::Style} entities.
741
- # @option [Boolean] scope :definitions Search {Sketchup::DefinitionList} for
742
- # {Sketchup::ComponentDefinition} entities.
743
- #
744
- # @return [Array<Sketchup::Entity, nil>] Returns an array with
745
- # {Sketchup::Entity} objects for each id found and nil otherwise.
746
- #
747
- # @version SketchUp 2017
748
- def find_entity_by_persistent_id(*args)
749
- end
750
-
751
- # This methods determines if the model is georeferenced.
752
- #
753
- # @example
754
- # if model.georeferenced?
755
- # UI.messagebox('This model is georeferenced.')
756
- # else
757
- # UI.messagebox('This model is NOT georeferenced.')
758
- # end
759
- #
760
- # @return [Boolean]
761
- #
762
- # @version SketchUp 7.1
763
- def georeferenced?
764
- end
765
-
766
- # The get_attribute method gets the value of an attribute that in the
767
- # AttributeDictionary with the given name. If no value is associated
768
- # with key, or if the model does not have an attribute dictionary
769
- # specified by name, the optional third parameter will be returned.
770
- #
771
- # @example
772
- # model = Sketchup.active_model
773
- # model.set_attribute('testdictionary', 'test', 115)
774
- # value = model.get_attribute('testdictionary', 'test', 42)
775
- #
776
- # @param [String] dictname
777
- # The name of the dictionary containing the value.
778
- #
779
- # @param [String] key
780
- # The key containing the value.
781
- #
782
- # @param [Object] defaultvalue
783
- # default value that will be returned if a
784
- # value does not exist.
785
- #
786
- # @return [Object, nil] the value for a given key in the given
787
- # dictionary if a value exists; the default value if a
788
- # defaultvalue is provided and the value does not exist;
789
- # nil if the value does not exist and no defaultvalue is
790
- # provided.
791
- #
792
- # @version SketchUp 6.0
793
- def get_attribute(dictname, key, defaultvalue = nil)
794
- end
795
-
796
- # the get_datum method retrieves the datum, in the form of a string, used in
797
- # UTM conversions.
798
- #
799
- # @example
800
- # model = Sketchup.active_model
801
- # datum = model.get_datum
802
- #
803
- # @return [String] a datum represented as a string if successful.
804
- #
805
- # @version SketchUp 6.0
806
- def get_datum
807
- end
808
-
809
- # Returns a value which indicates the product family of the installed SketchUp
810
- # application.
811
- # As of SketchUp 2013, the return values are:
812
- # - +0+ = Unknown
813
- # - +1+ = Pro Trial
814
- # - +2+ = Pro
815
- # - +3+ = Pro Expired
816
- # - +4+ = Make Trial
817
- # - +5+ = Make Expired
818
- # - +6+ = Make
819
- # - +7+ = Pro License Unavailable
820
- #
821
- # The Model class defines some of these values as constants as of SketchUp
822
- # 2016.
823
- #
824
- # @example
825
- # model = Sketchup.active_model
826
- # product_family = model.get_product_family
827
- # if product_family == Sketchup::Model::ProLicensed then
828
- # puts "You are running licensed SketchUp Pro!"
829
- # end
830
- #
831
- # @return [Integer] the product family number.
832
- #
833
- # @version SketchUp 6.0
834
- def get_product_family
835
- end
836
-
837
- # The guid method retrieves the globally unique identifier, in the form of a
838
- # string, for the Model. The guid will change after the model is modified and
839
- # saved. The Model guid is stored with the SketchUp file; it will not change if the
840
- # file is moved to another computer.
841
- #
842
- # @example
843
- # model = Sketchup.active_model
844
- # guid = model.guid
845
- #
846
- # @return [String] a globally unique identifier, in the form of a
847
- # string, for the model
848
- #
849
- # @version SketchUp 6.0
850
- def guid
851
- end
852
-
853
- # The import method is used to load a file by recognizing the file extension
854
- # and calling appropriate importer.
855
- #
856
- # See {Sketchup::DefinitionList#import} for importing a 3d model file as a
857
- # component definition, without activating the UI for placing an instance.
858
- #
859
- # See the {file:pages/importer_options.md Importer Options} file for information
860
- # on creating a valid hash for the various importers.
861
- #
862
- # @example Import for SketchUp 2017 and older
863
- # model = Sketchup.active_model
864
- # show_summary = true
865
- # status = model.import("filename", show_summary)
866
- #
867
- # @example Import for SketchUp 2018+ and newer
868
- # model = Sketchup.active_model
869
- # options = { :units => "model",
870
- # :merge_coplanar_faces => true,
871
- # :show_summary => true }
872
- # status = model.import("filename", options)
873
- #
874
- # @overload import(path, options)
875
- #
876
- # @param [String] path The input file path.
877
- # @param [Hash] options The options.
878
- # @return [Boolean]
879
- #
880
- # @overload import(path, show_summary = false)
881
- #
882
- # @note This variant is for SketchUp 2017 and earlier.
883
- # @param [String] path The input file path.
884
- # @param [Boolean] show_summary Show the summary dialog.
885
- # @return [Boolean]
886
- #
887
- # @version SketchUp 6.0
888
- def import(*args)
889
- end
890
-
891
- # The {#instance_path_from_pid_path} method returns a instance path given a
892
- # string with persistent ids representing the path to the entity.
893
- #
894
- # @example
895
- # points = [
896
- # Geom::Point3d.new( 0, 0, 0),
897
- # Geom::Point3d.new(10, 0, 0),
898
- # Geom::Point3d.new(10, 20, 0),
899
- # Geom::Point3d.new( 0, 20, 0)
900
- # ]
901
- # model = Sketchup.active_model
902
- # entities = model.active_entities
903
- # group = entities.add_group
904
- # face = group.entities.add_face(points)
905
- # pid_path = "#{group.persistent_id}.#{face.persistent_id}"
906
- # # pid_path will look something like this: "658.723"
907
- # instance_path = model.instance_path_from_pid_path(pid_path)
908
- #
909
- # @param [String] pid_path
910
- # a string with persistent ids delimited by period.
911
- #
912
- # @raise [ArgumentError] if a valid instance path cannot be created from the
913
- # given input path string.
914
- #
915
- # @return [Sketchup::InstancePath]
916
- #
917
- # @see Sketchup::InstancePath#persistent_id_path
918
- #
919
- # @version SketchUp 2017
920
- def instance_path_from_pid_path(pid_path)
921
- end
922
-
923
- # The latlong_to_point method converts a latitude and longitude to a Point3d
924
- # object in the model. It does not actually work with a LatLong object, but
925
- # operates on a 2-element array. The returned point will always be on the
926
- # ground (z=0).
927
- #
928
- # @example
929
- # # Draw a point in Boulder, Colorado (40.0170N, 105.2830W)
930
- # lnglat_array = [-105.28300, 40.01700]
931
- # model = Sketchup.active_model
932
- # local_point = model.latlong_to_point(lnglat_array)
933
- # model.entities.add_cpoint(local_point)
934
- #
935
- # @param [Array(Numeric, Numeric)] lnglat_array
936
- # A 2-element array containing first the longitude then
937
- # the latitude.
938
- #
939
- # @return [Geom::Point3d] a point3d object if successful, false if
940
- # unsuccessful.
941
- #
942
- # @version SketchUp 6.0
943
- def latlong_to_point(lnglat_array)
944
- end
945
-
946
- # The {#layers} method retrieves a collection of all {Sketchup::Layers} objects
947
- # in the model.
948
- #
949
- # @example
950
- # model = Sketchup.active_model
951
- # layers = model.layers
952
- #
953
- # @return [Sketchup::Layers] a Layers object containing a collection of
954
- # layers in the model
955
- #
956
- # @version SketchUp 6.0
957
- def layers
958
- end
959
-
960
- # The {#line_styles} method returns the line styles manager.
961
- #
962
- # @example
963
- # line_styles = Sketchup.active_model.line_styles
964
- #
965
- # @return [Sketchup::LineStyles] The line styles manager.
966
- #
967
- # @version SketchUp 2019
968
- def line_styles
969
- end
970
-
971
- # This method retrieves an Array of all of the datums recognized by SketchUp.
972
- #
973
- # @example
974
- # model = Sketchup.active_model
975
- # datums = model.list_datums
976
- #
977
- # @return [Array<String>] An Array object containing the datums
978
- # supported by SketchUp
979
- #
980
- # @version SketchUp 6.0
981
- def list_datums
982
- end
983
-
984
- # The {#materials} method returns a collection of all of the materials in the
985
- # model.
986
- #
987
- # @example
988
- # model = Sketchup.active_model
989
- # materials = model.materials
990
- #
991
- # @return [Sketchup::Materials]
992
- #
993
- # @version SketchUp 6.0
994
- def materials
995
- end
996
-
997
- # This method can be used to turn mipmapping on or off.
998
- #
999
- # @example
1000
- # Sketchup.active_model.mipmapping = false
1001
- #
1002
- # @param [Boolean] mipmap
1003
- # whether mipmapping is turned on or off.
1004
- #
1005
- # @return [Boolean] the new mipmapping setting
1006
- #
1007
- # @version SketchUp 7.0
1008
- def mipmapping=(mipmap)
1009
- end
1010
-
1011
- # This method can be used to find out if mipmapping is on or off.
1012
- #
1013
- # @example
1014
- # mipmapping = Sketchup.active_model.mipmapping?
1015
- #
1016
- # @return [Boolean]
1017
- #
1018
- # @version SketchUp 7.0
1019
- def mipmapping?
1020
- end
1021
-
1022
- # The modified? method determines if the Model has been modified since the
1023
- # last save.
1024
- #
1025
- # @example
1026
- # model = Sketchup.active_model
1027
- # entities = model.active_entities
1028
- # # Add a group to force the status return value to be true
1029
- # entities.add_group
1030
- # status = model.modified?
1031
- #
1032
- # @return [Boolean]
1033
- #
1034
- # @version SketchUp 6.0
1035
- def modified?
1036
- end
1037
-
1038
- # The {#name} method retrieves the name of the model.
1039
- #
1040
- # This property can be seen in Model Info and maps to the component
1041
- # name if the model is inserted into another model. This property should not
1042
- # be confused with the model {#path}.
1043
- #
1044
- # @example
1045
- # model = Sketchup.active_model
1046
- # name = model.name
1047
- #
1048
- # @return [String] string name of the model
1049
- #
1050
- # @version SketchUp 6.0
1051
- def name
1052
- end
1053
-
1054
- # The {#name=} method sets the string name of the model.
1055
- #
1056
- # @example
1057
- # Sketchup.active_model.name = "My New Model Name"
1058
- #
1059
- # @param [String] name
1060
- #
1061
- # @version SketchUp 6.0
1062
- def name=(name)
1063
- end
1064
-
1065
- # Returns the number faces in a model.
1066
- #
1067
- # @example
1068
- # model = Sketchup.active_model
1069
- # number_of_faces = model.number_faces
1070
- # puts "There are #{number_of_faces} faces in the model."
1071
- #
1072
- # @return [Integer]
1073
- #
1074
- # @version SketchUp 7.1
1075
- def number_faces
1076
- end
1077
-
1078
- # The {#options} method retrieves the options manager that defines the options
1079
- # settings for the model.
1080
- #
1081
- # Use the string keys instead of numerical indicies when accessing the options
1082
- # as the indicies are not consistent between SketchUp versions.
1083
- #
1084
- # @example
1085
- # # Output all options available.
1086
- # options_manager = Sketchup.active_model.options
1087
- # options_manager.each { |options_provider|
1088
- # puts options_provider.name
1089
- # options_provider.each { |key, value|
1090
- # puts "> #{key} - #{value}"
1091
- # }
1092
- # }
1093
- #
1094
- # @return [Sketchup::OptionsManager]
1095
- #
1096
- # @version SketchUp 6.0
1097
- def options
1098
- end
1099
-
1100
- #
1101
- # @api Overlays
1102
- #
1103
- # @example
1104
- # Sketchup.active_model.overlays.each { |overlay|
1105
- # puts "#{overlay.name} (#{overlay.overlay_id}) Enabled: #{overlay.enabled?}"
1106
- # }
1107
- #
1108
- # @return [Sketchup::OverlaysManager]
1109
- #
1110
- # @version SketchUp 2023.0
1111
- def overlays
1112
- end
1113
-
1114
- # The {#pages} method retrieves a {Sketchup::Pages} object containing all of
1115
- # the pages in the model.
1116
- #
1117
- # @example
1118
- # model = Sketchup.active_model
1119
- # pages = model.pages
1120
- #
1121
- # @return [Sketchup::Pages]
1122
- #
1123
- # @version SketchUp 6.0
1124
- def pages
1125
- end
1126
-
1127
- # The path method retrieves the path of the file from which the model was
1128
- # opened.
1129
- #
1130
- # An empty string is returned for a model that has not been saved.
1131
- #
1132
- # @example
1133
- # model = Sketchup.active_model
1134
- # path = model.path
1135
- #
1136
- # @return [String]
1137
- #
1138
- # @version SketchUp 6.0
1139
- def path
1140
- end
1141
-
1142
- # The place_component method places a new component in the Model using the
1143
- # component placement tool.
1144
- #
1145
- # @example
1146
- # model.place_component componentdefinition, repeat
1147
- #
1148
- # @param [Sketchup::ComponentDefinition] componentdef
1149
- # A component definition object containing the
1150
- # definition (blueprint) for the component.
1151
- #
1152
- # @param [Boolean] repeat
1153
- # If set to true, stay in the component
1154
- # placement tool and place multiple components.
1155
- #
1156
- # @return [Sketchup::Model, nil] The model object on success or Nil
1157
- #
1158
- # @version SketchUp 6.0
1159
- def place_component(componentdef, repeat = false)
1160
- end
1161
-
1162
- # The point_to_latlong method converts a point in the model to a LatLong so
1163
- # that you can get its latitude and longitude.
1164
- #
1165
- # This method uses the location information set in ShadowInfo.
1166
- #
1167
- # NOTE: SketchUp 6.0 and higher has a change where this method returns a
1168
- # Point3d instead of a LatLong, where the x and y values contain the LatLong
1169
- # coordinates.
1170
- #
1171
- # @example
1172
- # model = Sketchup.active_model
1173
- # local_point = Geom::Point3d.new(10, 10, 10)
1174
- # world_point = model.point_to_latlong(local_point)
1175
- #
1176
- # @param [Geom::Point3d] point
1177
- # A Point3d object.
1178
- #
1179
- # @return [Geom::Point3d, Geom::LatLong] a LatLong or Point3d object. See
1180
- # details for information.
1181
- #
1182
- # @version SketchUp 6.0
1183
- def point_to_latlong(point)
1184
- end
1185
-
1186
- # This method converts a Point3d object in the Model to UTM coordinates.
1187
- #
1188
- # This method uses the location information set in ShadowInfo. See also UTM.
1189
- #
1190
- # @example
1191
- # model = Sketchup.active_model
1192
- # point = Geom::Point3d.new(10, 10, 10)
1193
- # utm = model.point_to_utm(point)
1194
- #
1195
- # @param [Geom::Point3d] point
1196
- # A Point3d object.
1197
- #
1198
- # @return [Geom::UTM] a UTM object
1199
- #
1200
- # @version SketchUp 6.0
1201
- def point_to_utm(point)
1202
- end
1203
-
1204
- # The raytest method is used to cast a ray (line) through the model and return
1205
- # the first thing that the ray hits.
1206
- #
1207
- # A ray is a two element array containing a point and a vector
1208
- # [Geom::Point3d(), Geom::Vector3d()]. The point defines the start point of
1209
- # the ray and the vector defines the direction. If direction can not be
1210
- # normalized (e.g. direction = [0, 0, 0]), direction is taken as a point the
1211
- # ray intersects.
1212
- #
1213
- # first value is a Point3d where the item that the ray passed through exists. The second element is
1214
- # the instance path array of the entity that the ray hit. For example, if the ray hits a face that
1215
- # is contained by a component instance the instance path would be [Component1]. If the ray hit a
1216
- # face that is contained by a component instance, which
1217
- # is contained by another component instance and so on,
1218
- # the instance path would be [Component1, Component2,
1219
- # Component3...].
1220
- #
1221
- # @example
1222
- # model = Sketchup.active_model
1223
- # ray = [Geom::Point3d.new(1, 2, 3), Geom::Vector3d.new(4, 5, 6)]
1224
- # item = model.raytest(ray, false) # Consider hidden geometry when
1225
- # # computing intersections.
1226
- #
1227
- # @note The parameter wysiwyg_flag was added in SU8 M1.
1228
- #
1229
- # @param [Array(Geom::Point3d, Geom::Vector3d)] ray
1230
- # A two element array containing a point and a vector.
1231
- #
1232
- # @param [Boolean] wysiwyg_flag
1233
- # An optional boolean, added in SU8 M1, indicating
1234
- # whether or not to consider hidden geometry in intersect
1235
- # computations. If this flag is not specified, it
1236
- # defaults to true (WYSIWYG) - i.e. hidden geometry is
1237
- # not intersected against.
1238
- #
1239
- # @return [Array(Geom::Point3d, Array<Sketchup::Drawingelement>), nil] an array of two values. The
1240
- #
1241
- # @version SketchUp 6.0
1242
- def raytest(ray, wysiwyg_flag = true)
1243
- end
1244
-
1245
- # The remove_observer method is used to remove an observer from the current
1246
- # object.
1247
- #
1248
- # @example
1249
- # model = Sketchup.active_model
1250
- # observer = Sketchup::ModelObserver.new
1251
- # model.add_observer(observer)
1252
- # status = model.remove_observer(observer)
1253
- #
1254
- # @param [Object] observer
1255
- # An observer.
1256
- #
1257
- # @return [Boolean] true if successful, false if unsuccessful.
1258
- #
1259
- # @version SketchUp 6.0
1260
- def remove_observer(observer)
1261
- end
1262
-
1263
- # The {#rendering_options} method retrieves the RenderingOptions object for
1264
- # this model.
1265
- #
1266
- # @example
1267
- # model = Sketchup.active_model
1268
- # renderingoptions = model.rendering_options
1269
- #
1270
- # @return [Sketchup::RenderingOptions]
1271
- #
1272
- # @version SketchUp 6.0
1273
- def rendering_options
1274
- end
1275
-
1276
- # This method is used to save the model to a file.
1277
- #
1278
- # @example
1279
- # model = Sketchup.active_model
1280
- # # Save the model using the current SketchUp format
1281
- # path = File.join(ENV['HOME'], 'Desktop', 'mysketchup.skp')
1282
- # status = model.save(path)
1283
- #
1284
- # # Save the model to the current file using the current SketchUp format
1285
- # status = model.save
1286
- #
1287
- # # Save the model to the current file in SketchUp 8 format
1288
- # status = model.save("", Sketchup::Model::VERSION_8)
1289
- #
1290
- # # Save the model in SketchUp 8 format
1291
- # path = File.join(ENV['Home'], 'Desktop', 'mysketchup_v8.skp')
1292
- # status = model.save(path, Sketchup::Model::VERSION_8)
1293
- #
1294
- # @note A bug in SketchUp 2016 and older caused the +.skb+ backup file
1295
- # written during save to be empty. The +.skp+ file was however valid.
1296
- #
1297
- # @note Starting with SketchUp 2021, SketchUp is using a the same file format across versions.
1298
- # For instance, SketchUp 2021 can open a file made in SketchUp 2022.
1299
- #
1300
- # @overload save
1301
- #
1302
- # Save model to the path it is already associated with.
1303
- # @raise ArgumentError if the model is not previosly saved.
1304
- # @version SketchUp 2014
1305
- #
1306
- # @overload save(path)
1307
- #
1308
- # Save the model to a given path.
1309
- # @version SketchUp 6.0
1310
- # @param [String] path
1311
- # If empty, the model saves to the path it is already associated with.
1312
- #
1313
- # @overload save(path, version)
1314
- #
1315
- # Save the model as a specific SketchUp file version to a given path.
1316
- # @version SketchUp 2014
1317
- # @param [String] path
1318
- # @param [Integer] version
1319
- # Possible values are:
1320
- # - Sketchup::Model::VERSION_3,
1321
- # - Sketchup::Model::VERSION_4,
1322
- # - Sketchup::Model::VERSION_5,
1323
- # - Sketchup::Model::VERSION_6,
1324
- # - Sketchup::Model::VERSION_7,
1325
- # - Sketchup::Model::VERSION_8,
1326
- # - Sketchup::Model::VERSION_2013,
1327
- # - Sketchup::Model::VERSION_2014,
1328
- # - Sketchup::Model::VERSION_2015,
1329
- # - Sketchup::Model::VERSION_2016,
1330
- # - Sketchup::Model::VERSION_2017,
1331
- # - Sketchup::Model::VERSION_2018,
1332
- # - Sketchup::Model::VERSION_2019,
1333
- # - Sketchup::Model::VERSION_2020,
1334
- # - Sketchup::Model::VERSION_2021
1335
- #
1336
- # @return [Boolean] +true+ if successful, +false+ if unsuccessful
1337
- def save(*args)
1338
- end
1339
-
1340
- # This method is used to save the copy of the current model to a file.
1341
- #
1342
- # @example
1343
- # model = Sketchup.active_model
1344
- # # Save copy of the model using the current SketchUp format
1345
- # path = File.join(ENV['Home'], 'Desktop', 'myModelCopy.skp')
1346
- # status = model.save_copy(path)
1347
- #
1348
- # # Save copy of the model in SketchUp 8 format
1349
- # path = File.join(ENV['Home'], 'Desktop', 'mysketchupcopy_v8.skp')
1350
- # status = model.save_copy(path, Sketchup::Model::VERSION_8)
1351
- #
1352
- # @param [String] path
1353
- # The path of the file to save the model copy to.
1354
- #
1355
- # @param [Integer] version
1356
- # See {Sketchup::Model#save} for supported values.
1357
- #
1358
- # @return [Boolean] true if successful, false if unsuccessful
1359
- #
1360
- # @version SketchUp 2014
1361
- def save_copy(path, version)
1362
- end
1363
-
1364
- # The save_thumbnail method is used to save a thumbnail image to a file.
1365
- # The image format is specified by the file extension of filename. Supported
1366
- # formats are bmp, jpg, png, tif, pct, and gif.
1367
- #
1368
- # @example
1369
- # model = Sketchup.active_model
1370
- # status = model.save_thumbnail('testthumbnail2.jpg')
1371
- #
1372
- # @param [String] filename
1373
- # The name of the file, with extension, to save the
1374
- # thumbnail as.
1375
- #
1376
- # @return [Boolean] true if successful, false if unsuccessful
1377
- #
1378
- # @version SketchUp 6.0
1379
- def save_thumbnail(filename)
1380
- end
1381
-
1382
- # This method is used to select a SketchUp Tool object s the active tool. You
1383
- # must implement the SketchUp Tool interface to create a tool prior to calling
1384
- # this method.
1385
- #
1386
- # The select tool is activated if you pass nil to the select_tool method. You
1387
- # must implement the SketchUp Tool interface to create a tool, prior to calling
1388
- # this method, and then instance the tool implementation and pass the object to
1389
- # this method. If you attempt to set the select_tool to nil in the initialize
1390
- # method of a tool you have written, it will be ignored.
1391
- #
1392
- # @example
1393
- # model = Sketchup.active_model
1394
- # tool = model.select_tool(nil)
1395
- #
1396
- # @param [Object] tool
1397
- # The Tool object you want to select.
1398
- #
1399
- # @return [Sketchup::Model] The Model object.
1400
- #
1401
- # @version SketchUp 6.0
1402
- def select_tool(tool)
1403
- end
1404
-
1405
- # This method retrieves a Selection object for the model, containing the
1406
- # currently selected entities. The entries in the selection list are not
1407
- # necessarily in the same order in which the user selected them.
1408
- #
1409
- # @example
1410
- # model = Sketchup.active_model
1411
- # selection = model.selection
1412
- #
1413
- # @return [Sketchup::Selection] A Selection object with 0 or more entities
1414
- # that are currently selected.
1415
- #
1416
- # @version SketchUp 6.0
1417
- def selection
1418
- end
1419
-
1420
- # This method is used to set the value of an attribute in an attribute
1421
- # dictionary with the given name.
1422
- #
1423
- # This method can be used create a new AttributeDictionary object, if needed.
1424
- #
1425
- # @example
1426
- # model = Sketchup.active_model
1427
- # value = model.set_attribute('attributedictionaryname', 'key', 'value')
1428
- #
1429
- # @param [String] attrdictname
1430
- # The name of the attribute dictionary whose attribute
1431
- # you wish to set.
1432
- #
1433
- # @param [String] key
1434
- # The attribute name.
1435
- #
1436
- # @param [Object] value
1437
- # The value to set.
1438
- #
1439
- # @return [Object] the value that was set
1440
- #
1441
- # @version SketchUp 6.0
1442
- def set_attribute(attrdictname, key, value)
1443
- end
1444
-
1445
- # This method sets the datum used in conversions between the internal
1446
- # coordinate system and UTM.
1447
- #
1448
- # The default datum is WGS84. You can use the method list_datums to get a list
1449
- # of all of the datums supported in SketchUp. If you pass an invalid datum to
1450
- # set_datum, set_datum returns the default datum.
1451
- #
1452
- # @example
1453
- # model = Sketchup.active_model
1454
- # value = model.set_datum('Adindan')
1455
- #
1456
- # @param [String] datum
1457
- #
1458
- # @return [nil]
1459
- #
1460
- # @version SketchUp 6.0
1461
- def set_datum(datum)
1462
- end
1463
-
1464
- # This method is used to retrieve the shadow information for the Model.
1465
- #
1466
- # @example
1467
- # model = Sketchup.active_model
1468
- # shadowinfo = model.shadow_info
1469
- #
1470
- # @return [Sketchup::ShadowInfo]
1471
- #
1472
- # @version SketchUp 6.0
1473
- def shadow_info
1474
- end
1475
-
1476
- # The {#start_operation} method is used to notify SketchUp that a new
1477
- # operation (which can be undone) is starting.
1478
- #
1479
- # The +op_name+ argument is a description for the operation that is displayed
1480
- # adjacent to the Edit > Undo menu item. Make sure to provide a user friendly
1481
- # name for your operation.
1482
- #
1483
- # Starting with SketchUp 7.0, there are three additional booleans that one can
1484
- # pass in when starting an operation. It is recommended to always set
1485
- # +disable_ui+ to +true+. It's left to +false+ for default for compatibility
1486
- # reasons.
1487
- #
1488
- # @example Observer Operation since SU2016
1489
- # class MyDefinitionsObserver < Sketchup::DefinitionObserver
1490
- # def onComponentAdded(definitions, definition)
1491
- # return if definition.deleted?
1492
- # # The operation name won't be displayed when the fourth argument is
1493
- # # +true+. It will absorb into the previous operation.
1494
- # definition.model.start_operation('Tag It', true, false, true)
1495
- # definition.set_attribute('MyExtension', 'Tag', 'You are it')
1496
- # definition.model.commit_operation
1497
- # end
1498
- # end
1499
- #
1500
- # observer = MyDefinitionsObserver.new
1501
- # model = Sketchup.active_model
1502
- # model.definitions.add_observer(observer)
1503
- #
1504
- # @example Typical Operation
1505
- # model = Sketchup.active_model
1506
- # model.start_operation('Generate House', true)
1507
- # model.entities.add_line([0, 0, 0], [9, 0, 0])
1508
- # model.entities.add_line([9, 0, 0], [9, 0, 9])
1509
- # model.commit_operation
1510
- #
1511
- # @note Operations in SketchUp are sequential and cannot be nested. If you start a
1512
- # new Ruby operation while another is still open, you will implicitly close
1513
- # the first one.
1514
- #
1515
- # @param [String] op_name
1516
- # name of the operation visible in the UI
1517
- #
1518
- # @param [Boolean] disable_ui
1519
- # if set to true, then SketchUp's tendency to
1520
- # update the user interface after each geometry change will be
1521
- # suppressed. This can result in much faster Ruby code execution if the
1522
- # operation involves updating the model in any way.
1523
- #
1524
- # @param [Boolean] next_transparent
1525
- # <b>Deprecated!</b> if set to true, then
1526
- # whatever operation comes after this one will be appended into one
1527
- # combined operation, allowing the user the undo both actions with a
1528
- # single undo command. This flag is a highly difficult one, since there
1529
- # are so many ways that a SketchUp user can interrupt a given operation
1530
- # with one of their own. <b>Use extreme caution</b> and test thoroughly
1531
- # when setting this to true.
1532
- #
1533
- # @param [Boolean] transparent
1534
- # if set to true, then this operation will
1535
- # append to the previous operation. This is particularly useful for
1536
- # creating observers that react to user actions without littering the
1537
- # undo stack with extra steps that Ruby is performing.
1538
- #
1539
- # @raise [RuntimeError] if called within the context of {Sketchup::Entities#build}.
1540
- #
1541
- # @return [Boolean] +true+ if successful, +false+ if unsuccessful
1542
- #
1543
- # @version SketchUp 6.0
1544
- def start_operation(op_name, disable_ui = false, next_transparent = false, transparent = false)
1545
- end
1546
-
1547
- # The {#styles} method retrieves the styles associated with the model.
1548
- #
1549
- # @example
1550
- # model = Sketchup.active_model
1551
- # styles = model.styles
1552
- #
1553
- # @return [Sketchup::Styles]
1554
- #
1555
- # @version SketchUp 6.0
1556
- def styles
1557
- end
1558
-
1559
- # The tags method retrieves the string tags of the model.
1560
- #
1561
- # @example
1562
- # model = Sketchup.active_model
1563
- # tags = model.tags
1564
- #
1565
- # @return [String] string tags of the model
1566
- #
1567
- # @version SketchUp 6.0
1568
- def tags
1569
- end
1570
-
1571
- # The tags= method sets the string tags of the model.
1572
- #
1573
- # @example
1574
- # Sketchup.active_model.tags = "Building, House, Brick"
1575
- #
1576
- # @param [String] tags
1577
- # new tags of the model
1578
- #
1579
- # @return [String] the new tags
1580
- #
1581
- # @version SketchUp 6.0
1582
- def tags=(tags)
1583
- end
1584
-
1585
- # The tile method retrieves the name of the model. If the model is saved on
1586
- # disk, returns the file name without extension. Otherwise returns an empty
1587
- # string.
1588
- #
1589
- # @example
1590
- # model = Sketchup.active_model
1591
- # title = model.title
1592
- #
1593
- # @return [String] the title of the model or an empty string (if
1594
- # the title is not set)
1595
- #
1596
- # @version SketchUp 6.0
1597
- def title
1598
- end
1599
-
1600
- # The {#tools} method is used to retrieve the current {Sketchup::Tools} object.
1601
- #
1602
- # @example
1603
- # model = Sketchup.active_model
1604
- # tools = model.tools
1605
- #
1606
- # @return [Sketchup::Tools] a Tools object.
1607
- #
1608
- # @version SketchUp 6.0
1609
- def tools
1610
- end
1611
-
1612
- # The utm_to_point method converts a position given in UTM coordinates to a
1613
- # Point3d in the Model.
1614
- #
1615
- # @example
1616
- # model = Sketchup.active_model
1617
- # utm = Geom::UTM.new([+1, "A", 0.12333333, 0.12321321])
1618
- # point = model.utm_to_point(utm)
1619
- #
1620
- # @param [Geom::UTM] utm
1621
- # A UTM object.
1622
- #
1623
- # @return [Geom::Point3d] A Point3d object.
1624
- #
1625
- # @version SketchUp 6.0
1626
- def utm_to_point(utm)
1627
- end
1628
-
1629
- # Determine if a model is a valid Sketchup::Model object. Returns false
1630
- # if the model has been closed.
1631
- #
1632
- # This is useful on the mac where one can have multiple models open at the
1633
- # same time. In such a case, this method can tell you if the user has closed
1634
- # the model before you perform operations on it.
1635
- #
1636
- # @example
1637
- # # This is a silly example since the active model is generally going to
1638
- # # be valid, but it illustrates the idea.
1639
- # model = Sketchup.active_model
1640
- # if model.valid?
1641
- # UI.messagebox('This model is valid.')
1642
- # else
1643
- # UI.messagebox('This model is NOT valid.')
1644
- # end
1645
- #
1646
- # @return [Boolean]
1647
- #
1648
- # @version SketchUp 6.0
1649
- def valid?
1650
- end
1651
-
1652
- end
1
+ # Copyright:: Copyright 2024 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # This is the interface to a SketchUp model. The model is the 3D drawing that
5
+ # the user is working with, and it serves as the "entry point" for most Ruby
6
+ # API interactions. The Sketchup.active_model method gives you a handle to the
7
+ # current model, and from there you can use the model-level methods to start
8
+ # getting information and making changes.
9
+ #
10
+ # Constants:
11
+ # Product Family
12
+ # - Model::ProTrial
13
+ # - Model::ProLicensed
14
+ # - Model::MakeTrial
15
+ # - Model::MakeTrialExpired
16
+ #
17
+ # @bug Prior to SketchUp 2019.0 this class would yield +TypeError+ for all
18
+ # method calls if +#singleton_class+ was called on the model object.
19
+ #
20
+ # @example
21
+ # # Grab a handle to the currently active model (aka the one the user is
22
+ # # looking at in SketchUp.)
23
+ # model = Sketchup.active_model
24
+ #
25
+ # # Grab other handles to commonly used collections inside the model.
26
+ # entities = model.entities
27
+ # layers = model.layers
28
+ # materials = model.materials
29
+ # component_definitions = model.definitions
30
+ # selection = model.selection
31
+ #
32
+ # # Now that we have our handles, we can start pulling objects and making
33
+ # # method calls that are useful.
34
+ # first_entity = entities[0]
35
+ # UI.messagebox("First thing in your model is a #{first_entity.typename}")
36
+ #
37
+ # number_materials = materials.length
38
+ # UI.messagebox("Your model has #{number_materials} materials.")
39
+ #
40
+ # new_edge = entities.add_line([0,0,0], [500,500,0])
41
+ #
42
+ # @version SketchUp 6.0
43
+ class Sketchup::Model
44
+
45
+ # Constants
46
+
47
+ LOAD_STATUS_SUCCESS = nil # Stub value.
48
+ LOAD_STATUS_SUCCESS_MORE_RECENT = nil # Stub value.
49
+
50
+ Make = nil # Stub value.
51
+ MakeTrial = nil # Stub value.
52
+ ProLicensed = nil # Stub value.
53
+ ProTrial = nil # Stub value.
54
+
55
+ VERSION_2013 = nil # Stub value.
56
+ VERSION_2014 = nil # Stub value.
57
+ VERSION_2015 = nil # Stub value.
58
+ VERSION_2016 = nil # Stub value.
59
+ VERSION_2017 = nil # Stub value.
60
+ VERSION_2018 = nil # Stub value.
61
+ VERSION_2019 = nil # Stub value.
62
+ VERSION_2020 = nil # Stub value.
63
+ VERSION_2021 = nil # Stub value.
64
+ VERSION_3 = nil # Stub value.
65
+ VERSION_4 = nil # Stub value.
66
+ VERSION_5 = nil # Stub value.
67
+ VERSION_6 = nil # Stub value.
68
+ VERSION_7 = nil # Stub value.
69
+ VERSION_8 = nil # Stub value.
70
+
71
+ # Instance Methods
72
+
73
+ # The {#abort_operation} method aborts the current operation started with the
74
+ # start_operation method.
75
+ #
76
+ # The {#abort_operation} method is normally called from inside of a rescue
77
+ # clause to cancel an operation if something goes wrong.
78
+ #
79
+ # @example
80
+ # status = model.abort_operation
81
+ #
82
+ # @note Never abort a transparent operation. Doing so would abort the operation
83
+ # it chains to. Instead, try to clean up and simply commit in order to make
84
+ # sure the operation is closed.
85
+ #
86
+ # @return [Boolean] true if successful, false if unsuccessful
87
+ #
88
+ # @version SketchUp 6.0
89
+ def abort_operation
90
+ end
91
+
92
+ # Returns an {Sketchup::Entities} object which contains
93
+ # the entities in the open group or component instance. If no group or
94
+ # component is open for editing then this will be the same as {#entities}.
95
+ #
96
+ # To perform actions upon the current set of entities the user is working with
97
+ # then this is the method to use. Entities selected by the user will be a
98
+ # subset of the active entities.
99
+ #
100
+ # @example
101
+ # model = Sketchup.active_model
102
+ # entities = model.active_entities
103
+ # entities.each { |entity| puts "#{entity} (#{entity.class})" }
104
+ #
105
+ # @return [Sketchup::Entities]
106
+ #
107
+ # @see #edit_transform
108
+ #
109
+ # @version SketchUp 6.0
110
+ def active_entities
111
+ end
112
+
113
+ # The {#active_layer} method retrieves the active Layer.
114
+ #
115
+ # The default layer in SketchUp is layer 0.
116
+ #
117
+ # @example
118
+ # model = Sketchup.active_model
119
+ # layer = model.active_layer
120
+ #
121
+ # @return [Sketchup::Layer]
122
+ #
123
+ # @version SketchUp 6.0
124
+ def active_layer
125
+ end
126
+
127
+ # The {#active_layer=} method sets the active {Sketchup::Layer} object.
128
+ #
129
+ # @example
130
+ # model = Sketchup.active_model
131
+ # layers = model.layers
132
+ # layer = layers.add('My Layer')
133
+ # model.active_layer = layer
134
+ #
135
+ # @param [Sketchup::Layer] layer
136
+ # The layer to be set as the active layer.
137
+ #
138
+ # @return [Sketchup::Layer]
139
+ #
140
+ # @version SketchUp 6.0
141
+ def active_layer=(layer)
142
+ end
143
+
144
+ # Returns an array containing the sequence of entities the user has
145
+ # double-clicked on for editing. This allows one to determine whether they are
146
+ # in component edit mode and where in the model they are.
147
+ #
148
+ # For example, if a user has double-clicked into a component to
149
+ # edit its geometry, and then double clicked into a sub-group to edit that,
150
+ # the active_path might contain:
151
+ #
152
+ # <code>[<Sketchup::ComponentInstance>, <Sketchup::Group>]</code>
153
+ #
154
+ # @example
155
+ # active_path = Sketchup.active_model.active_path
156
+ #
157
+ # @return [Array<Sketchup::Drawingelement>, nil] array of entities showing where the user is
158
+ # currently editing.
159
+ #
160
+ # @version SketchUp 7.0
161
+ def active_path
162
+ end
163
+
164
+ # The {#active_path=} method is used to open a given instance path for editing.
165
+ #
166
+ # @example Open an instance
167
+ # model = Sketchup.active_model
168
+ # instance = model.active_entities.grep(Sketchup::ComponentInstance).first
169
+ # instance_path = Sketchup::InstancePath.new([instance])
170
+ # model.active_path = instance_path
171
+ #
172
+ # @example Close all instances
173
+ # model = Sketchup.active_model
174
+ # model.active_path = nil
175
+ #
176
+ # @note An instance path can only be opened if the instances are not locked.
177
+ # This also include instances of the same component definition that are not
178
+ # on the given path. A definition cannot be edited if any of its instances
179
+ # are locked.
180
+ #
181
+ # @note Since changing the active entities in SketchUp also changes what
182
+ # coordinate system is used, entities can't be modified in the same operation
183
+ # as the active entities changes. The API handles this automatically by
184
+ # starting and committing transparent operations as needed.
185
+ #
186
+ # If the API user tries to do this:
187
+ #
188
+ # model.start_operation('...', true)
189
+ # model.active_entities.add_face(...)
190
+ # model.active_path = instance_path
191
+ # model.active_entities.add_face(...)
192
+ # model.commit_operation
193
+ #
194
+ # Then SketchUp will automatically break it up to something like to this:
195
+ #
196
+ # model.start_operation('...', true)
197
+ # model.active_entities.add_face(...)
198
+ # model.commit_operation
199
+ #
200
+ # model.start_operation('...', true, false, true)
201
+ # model.active_path = instance_path
202
+ # model.commit_operation
203
+ #
204
+ # model.start_operation('...', true, false, true)
205
+ # model.active_entities.add_face(...)
206
+ # model.commit_operation
207
+ #
208
+ # For the end user this will be experienced as a single operation.
209
+ #
210
+ # For the API user the side-effect is multiple transaction notifications to
211
+ # {Sketchup::ModelObserver}s.
212
+ #
213
+ # @param [Sketchup::InstancePath, Array<Sketchup::ComponentInstance, Sketchup::Group>, nil] instance_path
214
+ # Passing +nil+ or an empty array will close all open instances.
215
+ #
216
+ # @raise [ArgumentError] if the instance path is not valid.
217
+ #
218
+ # @raise [ArgumentError] if the instance path contains locked instances.
219
+ #
220
+ # @raise [ArgumentError] if the instance path contains instances who's
221
+ # siblings are locked.
222
+ #
223
+ # @raise [ArgumentError] if the instance path contains Live Components.
224
+ #
225
+ # @return [Sketchup::Model]
226
+ #
227
+ # @version SketchUp 2020.0
228
+ def active_path=(instance_path)
229
+ end
230
+
231
+ # The {#active_view} method returns the active View object for this model.
232
+ #
233
+ # @example
234
+ # model = Sketchup.active_model
235
+ # view = model.active_view
236
+ #
237
+ # @return [Sketchup::View]
238
+ #
239
+ # @version SketchUp 6.0
240
+ def active_view
241
+ end
242
+
243
+ # Add a text note to the Model. The position of the note is given as relative
244
+ # window positions between 0 and 1. For example, the following command
245
+ # would create a note that start 1/10 of the ways down the screen from the
246
+ # upper left corner of the window.
247
+ #
248
+ # @example
249
+ # model = Sketchup.active_model
250
+ # # Add a note 1/10 ways down the screen and 1/10 ways right from the
251
+ # # upper left corner of model window.
252
+ # note = Sketchup.active_model.add_note('Hello World', 0.1, 0.1)
253
+ #
254
+ # @param [String] note
255
+ # A string note.
256
+ #
257
+ # @param [Numeric] x
258
+ # A distance along the x axis between 0 and 1.
259
+ #
260
+ # @param [Numeric] y
261
+ # A distance along the y axis between 0 and 1.
262
+ #
263
+ # @return [Sketchup::Text] a note object or an exception if it is
264
+ # unsuccessful.
265
+ #
266
+ # @version SketchUp 6.0
267
+ def add_note(note, x, y)
268
+ end
269
+
270
+ # The add_observer method is used to add an observer to the current object.
271
+ #
272
+ # @example
273
+ # model = Sketchup.active_model
274
+ # observer = Sketchup::ModelObserver.new
275
+ # status = model.add_observer(observer)
276
+ #
277
+ # @param [Object] observer
278
+ # An observer.
279
+ #
280
+ # @return [Boolean] true if successful, false if unsuccessful.
281
+ #
282
+ # @version SketchUp 6.0
283
+ def add_observer(observer)
284
+ end
285
+
286
+ # The {#attribute_dictionaries} method retrieves the AttributeDictionaries
287
+ # object that is associated with the Model.
288
+ #
289
+ # @example
290
+ # model = Sketchup.active_model
291
+ # dictionaries = model.attribute_dictionaries
292
+ # if dictionaries
293
+ # # Code to do something if attribute dictionaries exist (usually you
294
+ # # parse the array of dictionaries.
295
+ # else
296
+ # # Code to do something if attribute dictionaries do not exist.
297
+ # end
298
+ #
299
+ # @return [Sketchup::AttributeDictionaries] the AttributeDictionaries
300
+ # object associated with the entity, or nil if there are
301
+ # no attribute_dictionary objects associated with the
302
+ # model. Care must be taken if nil is returned, for
303
+ # example: invoking attribute_dictionaries.length will
304
+ # throw a NoMethodError exception, not return 0.
305
+ #
306
+ # @version SketchUp 6.0
307
+ def attribute_dictionaries
308
+ end
309
+
310
+ # Returns the Sketchup::AttributeDictionary object that is specified by
311
+ # name. If the model does not have an attribute dictionary that
312
+ # corresponds to name, returns either nil, or a creates an attribute
313
+ # dictionary. If the optional second argument is true, and there is no
314
+ # attribute dictionary that corresponds to name, a new attribute
315
+ # dictionary is created.
316
+ #
317
+ # @example
318
+ # model = Sketchup.active_model
319
+ # create_if_empty = true
320
+ # dictionary = model.attribute_dictionary('name', create_if_empty)
321
+ #
322
+ # @param [String] name
323
+ # The name of the dictionary you are attempting to
324
+ # retrieve.
325
+ #
326
+ # @param [Boolean] create
327
+ # if set to true an attribute dictionary of the
328
+ # given "name" will be created if not found.
329
+ #
330
+ # @return [Sketchup::AttributeDictionary] an attribute dictionary object if
331
+ # successful, nil if unsuccessful
332
+ #
333
+ # @version SketchUp 6.0
334
+ def attribute_dictionary(name, create = false)
335
+ end
336
+
337
+ # The {#axes} method returns the drawing axes for the model.
338
+ #
339
+ # @example
340
+ # # Point for a rectangle.
341
+ # points = [
342
+ # Geom::Point3d.new( 0, 0, 0),
343
+ # Geom::Point3d.new(10, 0, 0),
344
+ # Geom::Point3d.new(10, 20, 0),
345
+ # Geom::Point3d.new( 0, 20, 0)
346
+ # ]
347
+ # # Transform the points so they are local to the model axes. Otherwise
348
+ # # they would be local to the model origin.
349
+ # tr = Sketchup.active_model.axes.transformation
350
+ # points.each { |point| point.transform!(tr) }
351
+ # Sketchup.active_model.active_entities.add_face(points)
352
+ #
353
+ # @return [Sketchup::Axes] the axes for the model.
354
+ #
355
+ # @version SketchUp 2016
356
+ def axes
357
+ end
358
+
359
+ # The behavior method retrieves the behavior of the model.
360
+ #
361
+ # @example
362
+ # model = Sketchup.active_model
363
+ # behavior = model.behavior
364
+ #
365
+ # @return [Sketchup::Behavior] behavior object for the model if successful
366
+ #
367
+ # @version SketchUp 6.0
368
+ def behavior
369
+ end
370
+
371
+ # The {#bounds} method is used to retrieve the {Geom::BoundingBox} bounding the
372
+ # contents of a {Sketchup::Model}.
373
+ #
374
+ # @example
375
+ # model = Sketchup.active_model
376
+ # bounds = model.bounds
377
+ #
378
+ # @return [Geom::BoundingBox]
379
+ #
380
+ # @version SketchUp 6.0
381
+ def bounds
382
+ end
383
+
384
+ # The {#classifications} method is used to retrieve the Classifications object
385
+ # for this model.
386
+ #
387
+ # @example
388
+ # model = Sketchup.active_model
389
+ # c = model.classifications
390
+ #
391
+ # @return [Sketchup::Classifications] a Classifications object.
392
+ #
393
+ # @version SketchUp 2015
394
+ def classifications
395
+ end
396
+
397
+ # The {#close} method is used to close this model. On Mac OS, only the active
398
+ # model can be closed. On Windows, since there can be only one document open,
399
+ # this method will perform a File/New operation.
400
+ #
401
+ # @example
402
+ # Sketchup.file_new
403
+ # model = Sketchup.active_model
404
+ # model.close
405
+ #
406
+ # @note As of SketchUp 2024.0 this method will ensure the next model window
407
+ # gets focus if there is one. Before that `Sketchup.active_model` might
408
+ # return `nil` after calling this method even though more models where open.
409
+ #
410
+ # @param [Boolean] ignore_changes
411
+ # If `true`, model changes will be
412
+ # ignored and save prompts will be suppressed.
413
+ # If `false`, changes will not be ignored and save
414
+ # prompts will be displayed normally.
415
+ #
416
+ # @return [nil]
417
+ #
418
+ # @version SketchUp 2015
419
+ def close(ignore_changes = false)
420
+ end
421
+
422
+ # The {#close_active} method is used to close the currently active (open) group
423
+ # or component.
424
+ #
425
+ # @example
426
+ # model = Sketchup.active_model
427
+ # status = model.close_active
428
+ #
429
+ # @note Before SketchUp 2014 this method had a bug where it didn't create an
430
+ # undo operation and that could lead to corrupted geometry when undo/redo was
431
+ # used after invoking this method.
432
+ #
433
+ # @return [Boolean] true if successful, false if unsuccessful.
434
+ #
435
+ # @version SketchUp 6.0
436
+ def close_active
437
+ end
438
+
439
+ # The commit_operation method commits an operation for undo.
440
+ #
441
+ # The commit_operation method is normally called at the end of a method to
442
+ # commit the operation that the method performs.
443
+ #
444
+ # @example
445
+ # status = model.commit_operation
446
+ #
447
+ # @return [Boolean] true if successful, false if unsuccessful
448
+ #
449
+ # @version SketchUp 6.0
450
+ def commit_operation
451
+ end
452
+
453
+ # The {#definitions} method retrieves a definition list containing all of the
454
+ # component definitions in the model.
455
+ #
456
+ # @example
457
+ # model = Sketchup.active_model
458
+ # definitions = model.definitions
459
+ #
460
+ # @return [Sketchup::DefinitionList]
461
+ #
462
+ # @version SketchUp 6.0
463
+ def definitions
464
+ end
465
+
466
+ # The description method retrieves a description of the model as found in the
467
+ # Model Info > Files panel.
468
+ #
469
+ # The returned description can be empty. The default description for all models
470
+ # is empty.
471
+ #
472
+ # @example
473
+ # model = Sketchup.active_model
474
+ # description = model.description
475
+ #
476
+ # @return [String] a description if successful.
477
+ #
478
+ # @version SketchUp 6.0
479
+ def description
480
+ end
481
+
482
+ # The {#description=} method sets the description of the model.
483
+ #
484
+ # @example
485
+ # model = Sketchup.active_model
486
+ # description = model.description = "This is a model of a house on the " <<
487
+ # "North West Corner of 10th and Dolores Street in Carmel, California"
488
+ #
489
+ # @param [String] description
490
+ # the description string to be set.
491
+ #
492
+ # @return [String]
493
+ #
494
+ # @version SketchUp 6.0
495
+ def description=(description)
496
+ end
497
+
498
+ # The {#drawing_element_visible?} method reports whether the given drawing
499
+ # element in an instance path is visible given the current model options.
500
+ #
501
+ # @example Traversing every visible entity in the model
502
+ # module Example
503
+ #
504
+ # def self.instance?(entity)
505
+ # entity.is_a?(Sketchup::ComponentInstance) || entity.is_a?(Sketchup::Group)
506
+ # end
507
+ #
508
+ # # Walk the visible entities in the model, taking into account
509
+ # # "DrawHiddenGeometry" and "DrawHiddenObjects" rendering options.
510
+ # def self.walk(entities, transformation = IDENTITY, path = [], &block)
511
+ # entities.each { |entity|
512
+ # entity_path = path + [entity]
513
+ # next unless entity.model.drawing_element_visible?(entity_path)
514
+ # block.call(entity, transformation, path)
515
+ # if instance?(entity)
516
+ # child_entities = entity.definition.entities
517
+ # child_transformation = transformation * entity.transformation
518
+ # walk(child_entities, child_transformation, entity_path, &block)
519
+ # end
520
+ # }
521
+ # end
522
+ #
523
+ # end
524
+ #
525
+ # model = Sketchup.active_model
526
+ # Example.walk(model.entities) do |entity, transformation, path|
527
+ # # Do something to every visible entity in the model...
528
+ # end
529
+ #
530
+ # @param [Sketchup::InstancePath, Array<Sketchup::Drawingelement>] instance_path
531
+ #
532
+ # @raise [ArgumentError] if the +instance_path+ is not valid.
533
+ #
534
+ # @return [Boolean]
535
+ #
536
+ # @see Sketchup::RenderingOptions
537
+ #
538
+ # @see Sketchup::Drawingelement#visible?
539
+ #
540
+ # @see Sketchup::Layer#visible?
541
+ #
542
+ # @version SketchUp 2020.0
543
+ def drawing_element_visible?(instance_path)
544
+ end
545
+
546
+ # Returns the transformation of the current component edit session. If a user
547
+ # has double-clicked to edit a component's geometry, this will
548
+ # return the transformation of that component, relative to its parent's
549
+ # origin. This allows one to correctly calculate "local" transformations of
550
+ # a given entity regardless of whether the user is in edit mode.
551
+ #
552
+ # @example
553
+ # Sketchup.active_model.edit_transform
554
+ #
555
+ # @return [Geom::Transformation] the current edit Transformation
556
+ #
557
+ # @version SketchUp 7.0
558
+ def edit_transform
559
+ end
560
+
561
+ # The {#entities} method returns an {Sketchup::Entities} object containing the
562
+ # entities in the root of model.
563
+ #
564
+ # @example
565
+ # model = Sketchup.active_model
566
+ # entities = model.entities
567
+ #
568
+ # @note This does not return a collection of all the entities in the model,
569
+ # only the top level node of the model hierarchy. To get to all entities in
570
+ # a model you must recursivly traverse the model.
571
+ #
572
+ # @return [Sketchup::Entities] an Entities object if successful
573
+ #
574
+ # @version SketchUp 6.0
575
+ def entities
576
+ end
577
+
578
+ # The export method is used to export a given file format. It knows which
579
+ # format to export based on the file extension you place on the file name.
580
+ # For example, a filename of "thing.obj" will export an OBJ file, whereas
581
+ # "thing.dae" will export a COLLADA file.
582
+ #
583
+ # For SketchUp Pro 7.1+, valid extensions include dae, kmz, 3ds, dwg,
584
+ # dxf, fbx, obj, wrl, and xsi. SketchUp Free only supports dae and kmz.
585
+ #
586
+ # Format Support Changes:
587
+ # * SketchUp 7.1 added COLLADA (.dae) export capability.
588
+ # * SketchUp Pro 2015+ added IFC export capability.
589
+ # * SketchUp Pro 2016+ added PDF export capability.
590
+ # * SketchUp Pro 2018+ added options for all 3D exporters.
591
+ #
592
+ # See the {file:pages/exporter_options.md Exporter Options} file for information
593
+ # on creating a valid hash for the various exporters.
594
+ #
595
+ # @example General use
596
+ # model = Sketchup.active_model
597
+ # show_summary = true
598
+ #
599
+ # # Export dwg file on a PC, showing a summary when complete.
600
+ # status = model.export('c:\my_export.dwg', show_summary)
601
+ #
602
+ # # Export kmz file on Mac (note the absolute file path), without summary.
603
+ # status = model.export('/Library/my_export.kmz')
604
+ #
605
+ # # Export pdf file on a PC, showing a summary when complete.
606
+ # options_hash = { :show_summary => true,
607
+ # :output_profile_lines => false,
608
+ # :map_fonts => false,
609
+ # :model_units => Length::Meter }
610
+ # status = model.export('c:/my_export.pdf', options_hash)
611
+ #
612
+ # # Or for a COLLADA (.dae) file.
613
+ # options_hash = { :triangulated_faces => true,
614
+ # :doublesided_faces => true,
615
+ # :edges => false,
616
+ # :author_attribution => false,
617
+ # :texture_maps => true,
618
+ # :selectionset_only => false,
619
+ # :preserve_instancing => true }
620
+ # status = model.export('c:/my_export.dae', options_hash)
621
+ #
622
+ # @example IFC Example
623
+ # model = Sketchup.active_model
624
+ # # If no IFC types are passed in, then no geometry will be exported.
625
+ # options_hash = { :hidden_geometry => true,
626
+ # :ifc_mapped_items => true,
627
+ # :ifc_types => ['IfcBuilding', 'IfcDoor']}
628
+ # status = model.export('c:/my_export.ifc', options_hash)
629
+ #
630
+ # @overload export(path, show_summary = false)
631
+ #
632
+ # @param [String] path The name of the file to export.
633
+ # @param [Boolean] show_summary Boolean to show summary dialog.
634
+ # @return [Boolean]
635
+ #
636
+ # @overload export(path, options)
637
+ #
638
+ # @param [String] path The path to save the export at.
639
+ # @param [Hash] options
640
+ # @return [Boolean]
641
+ #
642
+ # @raise [ArgumentError] If the file extension is unsupported.
643
+ #
644
+ # @version SketchUp 6.0
645
+ def export(*args)
646
+ end
647
+
648
+ # Finds and returns entities by their entityID or GUID.
649
+ #
650
+ # GUIDs looked up are only relevant to Group and ComponentInstance as these
651
+ # GUIDs are persistent. ComponentDefinition and Model GUIDs are not persistent
652
+ # and are not looked up.
653
+ #
654
+ # When given an array of IDs, an array is returned with a 1:1 mapping to the
655
+ # input arguments. This array may contain nil values if some ids were not
656
+ # found. You cannot look up a mix of entityIDs and GUIDs in the same call.
657
+ #
658
+ # @example
659
+ # model = Sketchup.active_model
660
+ #
661
+ # # Look up by entityID.
662
+ # entity_id = model.entities.add_line([0,0,0], [9,9,9]).entityID
663
+ # entity = model.find_entity_by_id(entity_id)
664
+ #
665
+ # # Look up by GUID.
666
+ # guid = model.entities.add_group.guid
667
+ # entity = model.find_entity_by_id(guid)
668
+ #
669
+ # # Look up multiple.
670
+ # entities = model.find_entity_by_id(id1, id2, id3)
671
+ # entities = model.find_entity_by_id([id1, id2, id3])
672
+ # entities = model.find_entity_by_id(guid1, guid2, guid3)
673
+ # entities = model.find_entity_by_id([guid1, guid2, guid3])
674
+ #
675
+ # @param [Array<Integer, String>] ids_or_array
676
+ # Pass either a series of ids or a single array containing
677
+ # ids. Ids must either be entityID Integers or GUID
678
+ # Strings.
679
+ #
680
+ # @return [Array<Sketchup::Entity, nil>] Returns an array with Entity objects for each id
681
+ # found and nil otherwise. Single Entity or nil when
682
+ # called with a single id.
683
+ #
684
+ # @version SketchUp 2015
685
+ def find_entity_by_id(ids_or_array)
686
+ end
687
+
688
+ # Finds and returns entities by their persistent id.
689
+ #
690
+ # When given an array of IDs, an array is returned with a 1:1 mapping to the
691
+ # input arguments. This array may contain `nil` values if some ids were not
692
+ # found.
693
+ #
694
+ # @example
695
+ # model = Sketchup.active_model
696
+ #
697
+ # # Look up by persistent_id.
698
+ # pid = model.entities.add_line([0,0,0], [9,9,9]).persistent_id
699
+ # entity = model.find_entity_by_persistent_id(pid)
700
+ #
701
+ # # Look up multiple.
702
+ # entities = model.find_entity_by_persistent_id(id1, id2, id3)
703
+ # entities = model.find_entity_by_persistent_id([id1, id2, id3])
704
+ #
705
+ # @example Limit search by scope
706
+ # model = Sketchup.active_model
707
+ # edge_pid = model.entities.add_line([0,0,0], [9,9,9]).persistent_id
708
+ # layer_pid = model.layers.add('Hello World').persistent_id
709
+ #
710
+ # # Search in all scopes:
711
+ # entities = model.find_entity_by_persistent_id(edge_pid, layer_pid)
712
+ # # => [#<Sketchup::Edge:0x000002567da4a8f0>, #<Sketchup::Layer:0x000002567da49e50>]
713
+ #
714
+ # # Search in layer scope:
715
+ # entities = model.find_entity_by_persistent_id(edge_pid, layer_pid, layers: true)
716
+ # # => [nil, #<Sketchup::Layer:0x000002567da49e50>]
717
+ #
718
+ # @overload find_entity_by_persistent_id(ids_or_array)
719
+ #
720
+ # @param [Array<Integer>] ids_or_array Pass either a series of ids or a
721
+ # single array containing persistent ids.
722
+ #
723
+ # @return [Array<Sketchup::Entity, nil>] Returns an array with
724
+ # {Sketchup::Entity} objects for each id found and nil otherwise.
725
+ #
726
+ # @overload find_entity_by_persistent_id(ids_or_array, **scope)
727
+ #
728
+ # @version SketchUp 2020.2
729
+ # @param [Array<Integer>] ids_or_array Pass either a series of ids or a
730
+ # single array containing persistent ids.
731
+ # @param [Hash<Symbol, Boolean>] scope Limit the scope of the search to the
732
+ # given scope categories.
733
+ # @option [Boolean] scope :entities Search entities parent to
734
+ # {Sketchup::Entities}.
735
+ # @option [Boolean] scope :layers Search {Sketchup::Layers} for
736
+ # {Sketchup::Layer} entities.
737
+ # @option [Boolean] scope :layer_folders Search {Sketchup::Layers} for
738
+ # {Sketchup::LayerFolder} entities.
739
+ # @option [Boolean] scope :materials Search {Sketchup::Materials} for
740
+ # {Sketchup::Material} entities.
741
+ # @option [Boolean] scope :pages Search {Sketchup::Pages} for
742
+ # {Sketchup::Page} entities.
743
+ # @option [Boolean] scope :styles Search {Sketchup::Styles} for
744
+ # {Sketchup::Style} entities.
745
+ # @option [Boolean] scope :definitions Search {Sketchup::DefinitionList} for
746
+ # {Sketchup::ComponentDefinition} entities.
747
+ #
748
+ # @return [Array<Sketchup::Entity, nil>] Returns an array with
749
+ # {Sketchup::Entity} objects for each id found and nil otherwise.
750
+ #
751
+ # @version SketchUp 2017
752
+ def find_entity_by_persistent_id(*args)
753
+ end
754
+
755
+ # This methods determines if the model is georeferenced.
756
+ #
757
+ # @example
758
+ # if model.georeferenced?
759
+ # UI.messagebox('This model is georeferenced.')
760
+ # else
761
+ # UI.messagebox('This model is NOT georeferenced.')
762
+ # end
763
+ #
764
+ # @return [Boolean]
765
+ #
766
+ # @version SketchUp 7.1
767
+ def georeferenced?
768
+ end
769
+
770
+ # The get_attribute method gets the value of an attribute that in the
771
+ # AttributeDictionary with the given name. If no value is associated
772
+ # with key, or if the model does not have an attribute dictionary
773
+ # specified by name, the optional third parameter will be returned.
774
+ #
775
+ # @example
776
+ # model = Sketchup.active_model
777
+ # model.set_attribute('testdictionary', 'test', 115)
778
+ # value = model.get_attribute('testdictionary', 'test', 42)
779
+ #
780
+ # @param [String] dictname
781
+ # The name of the dictionary containing the value.
782
+ #
783
+ # @param [String] key
784
+ # The key containing the value.
785
+ #
786
+ # @param [Object] defaultvalue
787
+ # default value that will be returned if a
788
+ # value does not exist.
789
+ #
790
+ # @return [Object, nil] the value for a given key in the given
791
+ # dictionary if a value exists; the default value if a
792
+ # defaultvalue is provided and the value does not exist;
793
+ # nil if the value does not exist and no defaultvalue is
794
+ # provided.
795
+ #
796
+ # @version SketchUp 6.0
797
+ def get_attribute(dictname, key, defaultvalue = nil)
798
+ end
799
+
800
+ # the get_datum method retrieves the datum, in the form of a string, used in
801
+ # UTM conversions.
802
+ #
803
+ # @example
804
+ # model = Sketchup.active_model
805
+ # datum = model.get_datum
806
+ #
807
+ # @return [String] a datum represented as a string if successful.
808
+ #
809
+ # @version SketchUp 6.0
810
+ def get_datum
811
+ end
812
+
813
+ # Returns a value which indicates the product family of the installed SketchUp
814
+ # application.
815
+ # As of SketchUp 2013, the return values are:
816
+ # - +0+ = Unknown
817
+ # - +1+ = Pro Trial
818
+ # - +2+ = Pro
819
+ # - +3+ = Pro Expired
820
+ # - +4+ = Make Trial
821
+ # - +5+ = Make Expired
822
+ # - +6+ = Make
823
+ # - +7+ = Pro License Unavailable
824
+ #
825
+ # The Model class defines some of these values as constants as of SketchUp
826
+ # 2016.
827
+ #
828
+ # @example
829
+ # model = Sketchup.active_model
830
+ # product_family = model.get_product_family
831
+ # if product_family == Sketchup::Model::ProLicensed then
832
+ # puts "You are running licensed SketchUp Pro!"
833
+ # end
834
+ #
835
+ # @return [Integer] the product family number.
836
+ #
837
+ # @version SketchUp 6.0
838
+ def get_product_family
839
+ end
840
+
841
+ # The guid method retrieves the globally unique identifier, in the form of a
842
+ # string, for the Model. The guid will change after the model is modified and
843
+ # saved. The Model guid is stored with the SketchUp file; it will not change if the
844
+ # file is moved to another computer.
845
+ #
846
+ # @example
847
+ # model = Sketchup.active_model
848
+ # guid = model.guid
849
+ #
850
+ # @return [String] a globally unique identifier, in the form of a
851
+ # string, for the model
852
+ #
853
+ # @version SketchUp 6.0
854
+ def guid
855
+ end
856
+
857
+ # The import method is used to load a file by recognizing the file extension
858
+ # and calling appropriate importer.
859
+ #
860
+ # See {Sketchup::DefinitionList#import} for importing a 3d model file as a
861
+ # component definition, without activating the UI for placing an instance.
862
+ #
863
+ # See the {file:pages/importer_options.md Importer Options} file for information
864
+ # on creating a valid hash for the various importers.
865
+ #
866
+ # @example Import for SketchUp 2017 and older
867
+ # model = Sketchup.active_model
868
+ # show_summary = true
869
+ # status = model.import("filename", show_summary)
870
+ #
871
+ # @example Import for SketchUp 2018+ and newer
872
+ # model = Sketchup.active_model
873
+ # options = { :units => "model",
874
+ # :merge_coplanar_faces => true,
875
+ # :show_summary => true }
876
+ # status = model.import("filename", options)
877
+ #
878
+ # @overload import(path, options)
879
+ #
880
+ # @param [String] path The input file path.
881
+ # @param [Hash] options The options.
882
+ # @return [Boolean]
883
+ #
884
+ # @overload import(path, show_summary = false)
885
+ #
886
+ # @note This variant is for SketchUp 2017 and earlier.
887
+ # @param [String] path The input file path.
888
+ # @param [Boolean] show_summary Show the summary dialog.
889
+ # @return [Boolean]
890
+ #
891
+ # @version SketchUp 6.0
892
+ def import(*args)
893
+ end
894
+
895
+ # The {#instance_path_from_pid_path} method returns a instance path given a
896
+ # string with persistent ids representing the path to the entity.
897
+ #
898
+ # @example
899
+ # points = [
900
+ # Geom::Point3d.new( 0, 0, 0),
901
+ # Geom::Point3d.new(10, 0, 0),
902
+ # Geom::Point3d.new(10, 20, 0),
903
+ # Geom::Point3d.new( 0, 20, 0)
904
+ # ]
905
+ # model = Sketchup.active_model
906
+ # entities = model.active_entities
907
+ # group = entities.add_group
908
+ # face = group.entities.add_face(points)
909
+ # pid_path = "#{group.persistent_id}.#{face.persistent_id}"
910
+ # # pid_path will look something like this: "658.723"
911
+ # instance_path = model.instance_path_from_pid_path(pid_path)
912
+ #
913
+ # @param [String] pid_path
914
+ # a string with persistent ids delimited by period.
915
+ #
916
+ # @raise [ArgumentError] if a valid instance path cannot be created from the
917
+ # given input path string.
918
+ #
919
+ # @return [Sketchup::InstancePath]
920
+ #
921
+ # @see Sketchup::InstancePath#persistent_id_path
922
+ #
923
+ # @version SketchUp 2017
924
+ def instance_path_from_pid_path(pid_path)
925
+ end
926
+
927
+ # The latlong_to_point method converts a latitude and longitude to a Point3d
928
+ # object in the model. It does not actually work with a LatLong object, but
929
+ # operates on a 2-element array. The returned point will always be on the
930
+ # ground (z=0).
931
+ #
932
+ # @example
933
+ # # Draw a point in Boulder, Colorado (40.0170N, 105.2830W)
934
+ # lnglat_array = [-105.28300, 40.01700]
935
+ # model = Sketchup.active_model
936
+ # local_point = model.latlong_to_point(lnglat_array)
937
+ # model.entities.add_cpoint(local_point)
938
+ #
939
+ # @param [Array(Numeric, Numeric)] lnglat_array
940
+ # A 2-element array containing first the longitude then
941
+ # the latitude.
942
+ #
943
+ # @return [Geom::Point3d] a point3d object if successful, false if
944
+ # unsuccessful.
945
+ #
946
+ # @version SketchUp 6.0
947
+ def latlong_to_point(lnglat_array)
948
+ end
949
+
950
+ # The {#layers} method retrieves a collection of all {Sketchup::Layers} objects
951
+ # in the model.
952
+ #
953
+ # @example
954
+ # model = Sketchup.active_model
955
+ # layers = model.layers
956
+ #
957
+ # @return [Sketchup::Layers] a Layers object containing a collection of
958
+ # layers in the model
959
+ #
960
+ # @version SketchUp 6.0
961
+ def layers
962
+ end
963
+
964
+ # The {#line_styles} method returns the line styles manager.
965
+ #
966
+ # @example
967
+ # line_styles = Sketchup.active_model.line_styles
968
+ #
969
+ # @return [Sketchup::LineStyles] The line styles manager.
970
+ #
971
+ # @version SketchUp 2019
972
+ def line_styles
973
+ end
974
+
975
+ # This method retrieves an Array of all of the datums recognized by SketchUp.
976
+ #
977
+ # @example
978
+ # model = Sketchup.active_model
979
+ # datums = model.list_datums
980
+ #
981
+ # @return [Array<String>] An Array object containing the datums
982
+ # supported by SketchUp
983
+ #
984
+ # @version SketchUp 6.0
985
+ def list_datums
986
+ end
987
+
988
+ # The {#materials} method returns a collection of all of the materials in the
989
+ # model.
990
+ #
991
+ # @example
992
+ # model = Sketchup.active_model
993
+ # materials = model.materials
994
+ #
995
+ # @return [Sketchup::Materials]
996
+ #
997
+ # @version SketchUp 6.0
998
+ def materials
999
+ end
1000
+
1001
+ # This method can be used to turn mipmapping on or off.
1002
+ #
1003
+ # @example
1004
+ # Sketchup.active_model.mipmapping = false
1005
+ #
1006
+ # @param [Boolean] mipmap
1007
+ # whether mipmapping is turned on or off.
1008
+ #
1009
+ # @return [Boolean] the new mipmapping setting
1010
+ #
1011
+ # @version SketchUp 7.0
1012
+ def mipmapping=(mipmap)
1013
+ end
1014
+
1015
+ # This method can be used to find out if mipmapping is on or off.
1016
+ #
1017
+ # @example
1018
+ # mipmapping = Sketchup.active_model.mipmapping?
1019
+ #
1020
+ # @return [Boolean]
1021
+ #
1022
+ # @version SketchUp 7.0
1023
+ def mipmapping?
1024
+ end
1025
+
1026
+ # The modified? method determines if the Model has been modified since the
1027
+ # last save.
1028
+ #
1029
+ # @example
1030
+ # model = Sketchup.active_model
1031
+ # entities = model.active_entities
1032
+ # # Add a group to force the status return value to be true
1033
+ # entities.add_group
1034
+ # status = model.modified?
1035
+ #
1036
+ # @return [Boolean]
1037
+ #
1038
+ # @version SketchUp 6.0
1039
+ def modified?
1040
+ end
1041
+
1042
+ # The {#name} method retrieves the name of the model.
1043
+ #
1044
+ # This property can be seen in Model Info and maps to the component
1045
+ # name if the model is inserted into another model. This property should not
1046
+ # be confused with the model {#path}.
1047
+ #
1048
+ # @example
1049
+ # model = Sketchup.active_model
1050
+ # name = model.name
1051
+ #
1052
+ # @return [String] string name of the model
1053
+ #
1054
+ # @version SketchUp 6.0
1055
+ def name
1056
+ end
1057
+
1058
+ # The {#name=} method sets the string name of the model.
1059
+ #
1060
+ # @example
1061
+ # Sketchup.active_model.name = "My New Model Name"
1062
+ #
1063
+ # @param [String] name
1064
+ #
1065
+ # @version SketchUp 6.0
1066
+ def name=(name)
1067
+ end
1068
+
1069
+ # Returns the number faces in a model.
1070
+ #
1071
+ # @example
1072
+ # model = Sketchup.active_model
1073
+ # number_of_faces = model.number_faces
1074
+ # puts "There are #{number_of_faces} faces in the model."
1075
+ #
1076
+ # @return [Integer]
1077
+ #
1078
+ # @version SketchUp 7.1
1079
+ def number_faces
1080
+ end
1081
+
1082
+ # The {#options} method retrieves the options manager that defines the options
1083
+ # settings for the model.
1084
+ #
1085
+ # Use the string keys instead of numerical indicies when accessing the options
1086
+ # as the indicies are not consistent between SketchUp versions.
1087
+ #
1088
+ # @example
1089
+ # # Output all options available.
1090
+ # options_manager = Sketchup.active_model.options
1091
+ # options_manager.each { |options_provider|
1092
+ # puts options_provider.name
1093
+ # options_provider.each { |key, value|
1094
+ # puts "> #{key} - #{value}"
1095
+ # }
1096
+ # }
1097
+ #
1098
+ # @return [Sketchup::OptionsManager]
1099
+ #
1100
+ # @version SketchUp 6.0
1101
+ def options
1102
+ end
1103
+
1104
+ #
1105
+ # @api Overlays
1106
+ #
1107
+ # @example
1108
+ # Sketchup.active_model.overlays.each { |overlay|
1109
+ # puts "#{overlay.name} (#{overlay.overlay_id}) Enabled: #{overlay.enabled?}"
1110
+ # }
1111
+ #
1112
+ # @return [Sketchup::OverlaysManager]
1113
+ #
1114
+ # @version SketchUp 2023.0
1115
+ def overlays
1116
+ end
1117
+
1118
+ # The {#pages} method retrieves a {Sketchup::Pages} object containing all of
1119
+ # the pages in the model.
1120
+ #
1121
+ # @example
1122
+ # model = Sketchup.active_model
1123
+ # pages = model.pages
1124
+ #
1125
+ # @return [Sketchup::Pages]
1126
+ #
1127
+ # @version SketchUp 6.0
1128
+ def pages
1129
+ end
1130
+
1131
+ # The path method retrieves the path of the file from which the model was
1132
+ # opened.
1133
+ #
1134
+ # An empty string is returned for a model that has not been saved.
1135
+ #
1136
+ # @example
1137
+ # model = Sketchup.active_model
1138
+ # path = model.path
1139
+ #
1140
+ # @return [String]
1141
+ #
1142
+ # @version SketchUp 6.0
1143
+ def path
1144
+ end
1145
+
1146
+ # The place_component method places a new component in the Model using the
1147
+ # component placement tool.
1148
+ #
1149
+ # @example
1150
+ # model.place_component componentdefinition, repeat
1151
+ #
1152
+ # @param [Sketchup::ComponentDefinition] componentdef
1153
+ # A component definition object containing the
1154
+ # definition (blueprint) for the component.
1155
+ #
1156
+ # @param [Boolean] repeat
1157
+ # If set to true, stay in the component
1158
+ # placement tool and place multiple components.
1159
+ #
1160
+ # @return [Sketchup::Model, nil] The model object on success or Nil
1161
+ #
1162
+ # @version SketchUp 6.0
1163
+ def place_component(componentdef, repeat = false)
1164
+ end
1165
+
1166
+ # The point_to_latlong method converts a point in the model to a LatLong so
1167
+ # that you can get its latitude and longitude.
1168
+ #
1169
+ # This method uses the location information set in ShadowInfo.
1170
+ #
1171
+ # NOTE: SketchUp 6.0 and higher has a change where this method returns a
1172
+ # Point3d instead of a LatLong, where the x and y values contain the LatLong
1173
+ # coordinates.
1174
+ #
1175
+ # @example
1176
+ # model = Sketchup.active_model
1177
+ # local_point = Geom::Point3d.new(10, 10, 10)
1178
+ # world_point = model.point_to_latlong(local_point)
1179
+ #
1180
+ # @param [Geom::Point3d] point
1181
+ # A Point3d object.
1182
+ #
1183
+ # @return [Geom::Point3d, Geom::LatLong] a LatLong or Point3d object. See
1184
+ # details for information.
1185
+ #
1186
+ # @version SketchUp 6.0
1187
+ def point_to_latlong(point)
1188
+ end
1189
+
1190
+ # This method converts a Point3d object in the Model to UTM coordinates.
1191
+ #
1192
+ # This method uses the location information set in ShadowInfo. See also UTM.
1193
+ #
1194
+ # @example
1195
+ # model = Sketchup.active_model
1196
+ # point = Geom::Point3d.new(10, 10, 10)
1197
+ # utm = model.point_to_utm(point)
1198
+ #
1199
+ # @param [Geom::Point3d] point
1200
+ # A Point3d object.
1201
+ #
1202
+ # @return [Geom::UTM] a UTM object
1203
+ #
1204
+ # @version SketchUp 6.0
1205
+ def point_to_utm(point)
1206
+ end
1207
+
1208
+ # The raytest method is used to cast a ray (line) through the model and return
1209
+ # the first thing that the ray hits.
1210
+ #
1211
+ # A ray is a two element array containing a point and a vector
1212
+ # [Geom::Point3d(), Geom::Vector3d()]. The point defines the start point of
1213
+ # the ray and the vector defines the direction. If direction can not be
1214
+ # normalized (e.g. direction = [0, 0, 0]), direction is taken as a point the
1215
+ # ray intersects.
1216
+ #
1217
+ # first value is a Point3d where the item that the ray passed through exists. The second element is
1218
+ # the instance path array of the entity that the ray hit. For example, if the ray hits a face that
1219
+ # is contained by a component instance the instance path would be [Component1]. If the ray hit a
1220
+ # face that is contained by a component instance, which
1221
+ # is contained by another component instance and so on,
1222
+ # the instance path would be [Component1, Component2,
1223
+ # Component3...].
1224
+ #
1225
+ # @example
1226
+ # model = Sketchup.active_model
1227
+ # ray = [Geom::Point3d.new(1, 2, 3), Geom::Vector3d.new(4, 5, 6)]
1228
+ # item = model.raytest(ray, false) # Consider hidden geometry when
1229
+ # # computing intersections.
1230
+ #
1231
+ # @note The parameter wysiwyg_flag was added in SU8 M1.
1232
+ #
1233
+ # @param [Array(Geom::Point3d, Geom::Vector3d)] ray
1234
+ # A two element array containing a point and a vector.
1235
+ #
1236
+ # @param [Boolean] wysiwyg_flag
1237
+ # An optional boolean, added in SU8 M1, indicating
1238
+ # whether or not to consider hidden geometry in intersect
1239
+ # computations. If this flag is not specified, it
1240
+ # defaults to true (WYSIWYG) - i.e. hidden geometry is
1241
+ # not intersected against.
1242
+ #
1243
+ # @return [Array(Geom::Point3d, Array<Sketchup::Drawingelement>), nil] an array of two values. The
1244
+ #
1245
+ # @version SketchUp 6.0
1246
+ def raytest(ray, wysiwyg_flag = true)
1247
+ end
1248
+
1249
+ # The remove_observer method is used to remove an observer from the current
1250
+ # object.
1251
+ #
1252
+ # @example
1253
+ # model = Sketchup.active_model
1254
+ # observer = Sketchup::ModelObserver.new
1255
+ # model.add_observer(observer)
1256
+ # status = model.remove_observer(observer)
1257
+ #
1258
+ # @param [Object] observer
1259
+ # An observer.
1260
+ #
1261
+ # @return [Boolean] true if successful, false if unsuccessful.
1262
+ #
1263
+ # @version SketchUp 6.0
1264
+ def remove_observer(observer)
1265
+ end
1266
+
1267
+ # The {#rendering_options} method retrieves the RenderingOptions object for
1268
+ # this model.
1269
+ #
1270
+ # @example
1271
+ # model = Sketchup.active_model
1272
+ # renderingoptions = model.rendering_options
1273
+ #
1274
+ # @return [Sketchup::RenderingOptions]
1275
+ #
1276
+ # @version SketchUp 6.0
1277
+ def rendering_options
1278
+ end
1279
+
1280
+ # This method is used to save the model to a file.
1281
+ #
1282
+ # @example
1283
+ # model = Sketchup.active_model
1284
+ # # Save the model using the current SketchUp format
1285
+ # path = File.join(ENV['HOME'], 'Desktop', 'mysketchup.skp')
1286
+ # status = model.save(path)
1287
+ #
1288
+ # # Save the model to the current file using the current SketchUp format
1289
+ # status = model.save
1290
+ #
1291
+ # # Save the model to the current file in SketchUp 8 format
1292
+ # status = model.save("", Sketchup::Model::VERSION_8)
1293
+ #
1294
+ # # Save the model in SketchUp 8 format
1295
+ # path = File.join(ENV['Home'], 'Desktop', 'mysketchup_v8.skp')
1296
+ # status = model.save(path, Sketchup::Model::VERSION_8)
1297
+ #
1298
+ # @note A bug in SketchUp 2016 and older caused the +.skb+ backup file
1299
+ # written during save to be empty. The +.skp+ file was however valid.
1300
+ #
1301
+ # @note Starting with SketchUp 2021, SketchUp is using a the same file format across versions.
1302
+ # For instance, SketchUp 2021 can open a file made in SketchUp 2022.
1303
+ #
1304
+ # @overload save
1305
+ #
1306
+ # Save model to the path it is already associated with.
1307
+ # @raise ArgumentError if the model is not previosly saved.
1308
+ # @version SketchUp 2014
1309
+ #
1310
+ # @overload save(path)
1311
+ #
1312
+ # Save the model to a given path.
1313
+ # @version SketchUp 6.0
1314
+ # @param [String] path
1315
+ # If empty, the model saves to the path it is already associated with.
1316
+ #
1317
+ # @overload save(path, version)
1318
+ #
1319
+ # Save the model as a specific SketchUp file version to a given path.
1320
+ # @version SketchUp 2014
1321
+ # @param [String] path
1322
+ # @param [Integer] version
1323
+ # Possible values are:
1324
+ # - Sketchup::Model::VERSION_3,
1325
+ # - Sketchup::Model::VERSION_4,
1326
+ # - Sketchup::Model::VERSION_5,
1327
+ # - Sketchup::Model::VERSION_6,
1328
+ # - Sketchup::Model::VERSION_7,
1329
+ # - Sketchup::Model::VERSION_8,
1330
+ # - Sketchup::Model::VERSION_2013,
1331
+ # - Sketchup::Model::VERSION_2014,
1332
+ # - Sketchup::Model::VERSION_2015,
1333
+ # - Sketchup::Model::VERSION_2016,
1334
+ # - Sketchup::Model::VERSION_2017,
1335
+ # - Sketchup::Model::VERSION_2018,
1336
+ # - Sketchup::Model::VERSION_2019,
1337
+ # - Sketchup::Model::VERSION_2020,
1338
+ # - Sketchup::Model::VERSION_2021
1339
+ #
1340
+ # @return [Boolean] +true+ if successful, +false+ if unsuccessful
1341
+ def save(*args)
1342
+ end
1343
+
1344
+ # This method is used to save the copy of the current model to a file.
1345
+ #
1346
+ # @example
1347
+ # model = Sketchup.active_model
1348
+ # # Save copy of the model using the current SketchUp format
1349
+ # path = File.join(ENV['Home'], 'Desktop', 'myModelCopy.skp')
1350
+ # status = model.save_copy(path)
1351
+ #
1352
+ # # Save copy of the model in SketchUp 8 format
1353
+ # path = File.join(ENV['Home'], 'Desktop', 'mysketchupcopy_v8.skp')
1354
+ # status = model.save_copy(path, Sketchup::Model::VERSION_8)
1355
+ #
1356
+ # @param [String] path
1357
+ # The path of the file to save the model copy to.
1358
+ #
1359
+ # @param [Integer] version
1360
+ # See {Sketchup::Model#save} for supported values.
1361
+ #
1362
+ # @return [Boolean] true if successful, false if unsuccessful
1363
+ #
1364
+ # @version SketchUp 2014
1365
+ def save_copy(path, version)
1366
+ end
1367
+
1368
+ # The save_thumbnail method is used to save a thumbnail image to a file.
1369
+ # The image format is specified by the file extension of filename. Supported
1370
+ # formats are bmp, jpg, png, tif, pct, and gif.
1371
+ #
1372
+ # @example
1373
+ # model = Sketchup.active_model
1374
+ # status = model.save_thumbnail('testthumbnail2.jpg')
1375
+ #
1376
+ # @param [String] filename
1377
+ # The name of the file, with extension, to save the
1378
+ # thumbnail as.
1379
+ #
1380
+ # @return [Boolean] true if successful, false if unsuccessful
1381
+ #
1382
+ # @version SketchUp 6.0
1383
+ def save_thumbnail(filename)
1384
+ end
1385
+
1386
+ # This method is used to select a SketchUp Tool object s the active tool. You
1387
+ # must implement the SketchUp Tool interface to create a tool prior to calling
1388
+ # this method.
1389
+ #
1390
+ # The select tool is activated if you pass nil to the select_tool method. You
1391
+ # must implement the SketchUp Tool interface to create a tool, prior to calling
1392
+ # this method, and then instance the tool implementation and pass the object to
1393
+ # this method. If you attempt to set the select_tool to nil in the initialize
1394
+ # method of a tool you have written, it will be ignored.
1395
+ #
1396
+ # @example
1397
+ # model = Sketchup.active_model
1398
+ # tool = model.select_tool(nil)
1399
+ #
1400
+ # @param [Object] tool
1401
+ # The Tool object you want to select.
1402
+ #
1403
+ # @return [Sketchup::Model] The Model object.
1404
+ #
1405
+ # @version SketchUp 6.0
1406
+ def select_tool(tool)
1407
+ end
1408
+
1409
+ # This method retrieves a Selection object for the model, containing the
1410
+ # currently selected entities. The entries in the selection list are not
1411
+ # necessarily in the same order in which the user selected them.
1412
+ #
1413
+ # @example
1414
+ # model = Sketchup.active_model
1415
+ # selection = model.selection
1416
+ #
1417
+ # @return [Sketchup::Selection] A Selection object with 0 or more entities
1418
+ # that are currently selected.
1419
+ #
1420
+ # @version SketchUp 6.0
1421
+ def selection
1422
+ end
1423
+
1424
+ # This method is used to set the value of an attribute in an attribute
1425
+ # dictionary with the given name.
1426
+ #
1427
+ # This method can be used create a new AttributeDictionary object, if needed.
1428
+ #
1429
+ # @example
1430
+ # model = Sketchup.active_model
1431
+ # value = model.set_attribute('attributedictionaryname', 'key', 'value')
1432
+ #
1433
+ # @param [String] attrdictname
1434
+ # The name of the attribute dictionary whose attribute
1435
+ # you wish to set.
1436
+ #
1437
+ # @param [String] key
1438
+ # The attribute name.
1439
+ #
1440
+ # @param [Object] value
1441
+ # The value to set.
1442
+ #
1443
+ # @return [Object] the value that was set
1444
+ #
1445
+ # @version SketchUp 6.0
1446
+ def set_attribute(attrdictname, key, value)
1447
+ end
1448
+
1449
+ # This method sets the datum used in conversions between the internal
1450
+ # coordinate system and UTM.
1451
+ #
1452
+ # The default datum is WGS84. You can use the method list_datums to get a list
1453
+ # of all of the datums supported in SketchUp. If you pass an invalid datum to
1454
+ # set_datum, set_datum returns the default datum.
1455
+ #
1456
+ # @example
1457
+ # model = Sketchup.active_model
1458
+ # value = model.set_datum('Adindan')
1459
+ #
1460
+ # @param [String] datum
1461
+ #
1462
+ # @return [nil]
1463
+ #
1464
+ # @version SketchUp 6.0
1465
+ def set_datum(datum)
1466
+ end
1467
+
1468
+ # This method is used to retrieve the shadow information for the Model.
1469
+ #
1470
+ # @example
1471
+ # model = Sketchup.active_model
1472
+ # shadowinfo = model.shadow_info
1473
+ #
1474
+ # @return [Sketchup::ShadowInfo]
1475
+ #
1476
+ # @version SketchUp 6.0
1477
+ def shadow_info
1478
+ end
1479
+
1480
+ # The {#start_operation} method is used to notify SketchUp that a new
1481
+ # operation (which can be undone) is starting.
1482
+ #
1483
+ # The +op_name+ argument is a description for the operation that is displayed
1484
+ # adjacent to the Edit > Undo menu item. Make sure to provide a user friendly
1485
+ # name for your operation.
1486
+ #
1487
+ # Starting with SketchUp 7.0, there are three additional booleans that one can
1488
+ # pass in when starting an operation. It is recommended to always set
1489
+ # +disable_ui+ to +true+. It's left to +false+ for default for compatibility
1490
+ # reasons.
1491
+ #
1492
+ # @example Observer Operation since SU2016
1493
+ # class MyDefinitionsObserver < Sketchup::DefinitionObserver
1494
+ # def onComponentAdded(definitions, definition)
1495
+ # return if definition.deleted?
1496
+ # # The operation name won't be displayed when the fourth argument is
1497
+ # # +true+. It will absorb into the previous operation.
1498
+ # definition.model.start_operation('Tag It', true, false, true)
1499
+ # definition.set_attribute('MyExtension', 'Tag', 'You are it')
1500
+ # definition.model.commit_operation
1501
+ # end
1502
+ # end
1503
+ #
1504
+ # observer = MyDefinitionsObserver.new
1505
+ # model = Sketchup.active_model
1506
+ # model.definitions.add_observer(observer)
1507
+ #
1508
+ # @example Typical Operation
1509
+ # model = Sketchup.active_model
1510
+ # model.start_operation('Generate House', true)
1511
+ # model.entities.add_line([0, 0, 0], [9, 0, 0])
1512
+ # model.entities.add_line([9, 0, 0], [9, 0, 9])
1513
+ # model.commit_operation
1514
+ #
1515
+ # @note Operations in SketchUp are sequential and cannot be nested. If you start a
1516
+ # new Ruby operation while another is still open, you will implicitly close
1517
+ # the first one.
1518
+ #
1519
+ # @param [String] op_name
1520
+ # name of the operation visible in the UI
1521
+ #
1522
+ # @param [Boolean] disable_ui
1523
+ # if set to true, then SketchUp's tendency to
1524
+ # update the user interface after each geometry change will be
1525
+ # suppressed. This can result in much faster Ruby code execution if the
1526
+ # operation involves updating the model in any way.
1527
+ #
1528
+ # @param [Boolean] next_transparent
1529
+ # <b>Deprecated!</b> if set to true, then
1530
+ # whatever operation comes after this one will be appended into one
1531
+ # combined operation, allowing the user the undo both actions with a
1532
+ # single undo command. This flag is a highly difficult one, since there
1533
+ # are so many ways that a SketchUp user can interrupt a given operation
1534
+ # with one of their own. <b>Use extreme caution</b> and test thoroughly
1535
+ # when setting this to true.
1536
+ #
1537
+ # @param [Boolean] transparent
1538
+ # if set to true, then this operation will
1539
+ # append to the previous operation. This is particularly useful for
1540
+ # creating observers that react to user actions without littering the
1541
+ # undo stack with extra steps that Ruby is performing.
1542
+ #
1543
+ # @raise [RuntimeError] if called within the context of {Sketchup::Entities#build}.
1544
+ #
1545
+ # @return [Boolean] +true+ if successful, +false+ if unsuccessful
1546
+ #
1547
+ # @version SketchUp 6.0
1548
+ def start_operation(op_name, disable_ui = false, next_transparent = false, transparent = false)
1549
+ end
1550
+
1551
+ # The {#styles} method retrieves the styles associated with the model.
1552
+ #
1553
+ # @example
1554
+ # model = Sketchup.active_model
1555
+ # styles = model.styles
1556
+ #
1557
+ # @return [Sketchup::Styles]
1558
+ #
1559
+ # @version SketchUp 6.0
1560
+ def styles
1561
+ end
1562
+
1563
+ # The tags method retrieves the string tags of the model.
1564
+ #
1565
+ # @example
1566
+ # model = Sketchup.active_model
1567
+ # tags = model.tags
1568
+ #
1569
+ # @return [String] string tags of the model
1570
+ #
1571
+ # @version SketchUp 6.0
1572
+ def tags
1573
+ end
1574
+
1575
+ # The tags= method sets the string tags of the model.
1576
+ #
1577
+ # @example
1578
+ # Sketchup.active_model.tags = "Building, House, Brick"
1579
+ #
1580
+ # @param [String] tags
1581
+ # new tags of the model
1582
+ #
1583
+ # @return [String] the new tags
1584
+ #
1585
+ # @version SketchUp 6.0
1586
+ def tags=(tags)
1587
+ end
1588
+
1589
+ # The tile method retrieves the name of the model. If the model is saved on
1590
+ # disk, returns the file name without extension. Otherwise returns an empty
1591
+ # string.
1592
+ #
1593
+ # @example
1594
+ # model = Sketchup.active_model
1595
+ # title = model.title
1596
+ #
1597
+ # @return [String] the title of the model or an empty string (if
1598
+ # the title is not set)
1599
+ #
1600
+ # @version SketchUp 6.0
1601
+ def title
1602
+ end
1603
+
1604
+ # The {#tools} method is used to retrieve the current {Sketchup::Tools} object.
1605
+ #
1606
+ # @example
1607
+ # model = Sketchup.active_model
1608
+ # tools = model.tools
1609
+ #
1610
+ # @return [Sketchup::Tools] a Tools object.
1611
+ #
1612
+ # @version SketchUp 6.0
1613
+ def tools
1614
+ end
1615
+
1616
+ # The utm_to_point method converts a position given in UTM coordinates to a
1617
+ # Point3d in the Model.
1618
+ #
1619
+ # @example
1620
+ # model = Sketchup.active_model
1621
+ # utm = Geom::UTM.new([+1, "A", 0.12333333, 0.12321321])
1622
+ # point = model.utm_to_point(utm)
1623
+ #
1624
+ # @param [Geom::UTM] utm
1625
+ # A UTM object.
1626
+ #
1627
+ # @return [Geom::Point3d] A Point3d object.
1628
+ #
1629
+ # @version SketchUp 6.0
1630
+ def utm_to_point(utm)
1631
+ end
1632
+
1633
+ # Determine if a model is a valid Sketchup::Model object. Returns false
1634
+ # if the model has been closed.
1635
+ #
1636
+ # This is useful on the mac where one can have multiple models open at the
1637
+ # same time. In such a case, this method can tell you if the user has closed
1638
+ # the model before you perform operations on it.
1639
+ #
1640
+ # @example
1641
+ # # This is a silly example since the active model is generally going to
1642
+ # # be valid, but it illustrates the idea.
1643
+ # model = Sketchup.active_model
1644
+ # if model.valid?
1645
+ # UI.messagebox('This model is valid.')
1646
+ # else
1647
+ # UI.messagebox('This model is NOT valid.')
1648
+ # end
1649
+ #
1650
+ # @return [Boolean]
1651
+ #
1652
+ # @version SketchUp 6.0
1653
+ def valid?
1654
+ end
1655
+
1656
+ end