sketchup-api-stubs 0.7.4 → 0.7.8

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