sketchup-api-stubs 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +5 -5
  2. data/.yardopts +9 -9
  3. data/lib/sketchup-api-stubs.rb +1 -1
  4. data/lib/sketchup-api-stubs/sketchup.rb +145 -145
  5. data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +318 -318
  6. data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +172 -172
  7. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
  8. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
  10. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
  11. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +492 -492
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +478 -478
  13. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
  14. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -522
  16. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +691 -691
  17. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +573 -573
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +411 -411
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +174 -186
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
  22. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +514 -514
  23. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  24. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +143 -155
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +353 -353
  26. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +349 -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 +371 -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 +220 -232
  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 +204 -216
  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 +694 -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/Sketchup/Animation.rb +140 -140
  49. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +157 -157
  50. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +209 -209
  51. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +152 -152
  52. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -281
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +328 -328
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +577 -577
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +122 -122
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +281 -281
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +562 -562
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -593
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -257
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +194 -194
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +329 -329
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +72 -72
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +102 -102
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +165 -165
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +312 -312
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +38 -38
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +390 -390
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +508 -508
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1119 -1119
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +125 -125
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +544 -544
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +59 -59
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -125
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +750 -750
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +104 -104
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +697 -697
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +285 -285
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +409 -409
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +226 -226
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +190 -190
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +393 -393
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +82 -82
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +303 -303
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +285 -280
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +244 -231
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +136 -136
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +112 -123
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +416 -416
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +311 -311
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +141 -141
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +95 -95
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1638 -1601
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +356 -356
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +132 -132
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +284 -284
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +770 -770
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +353 -353
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +76 -76
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +456 -456
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +364 -364
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +44 -44
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +454 -454
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +257 -257
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +57 -57
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +69 -69
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +211 -211
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +225 -225
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +829 -829
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +154 -154
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +61 -61
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1301 -1301
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +43 -43
  134. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +310 -310
  135. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +356 -356
  136. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +229 -229
  137. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +240 -240
  138. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +633 -633
  139. data/lib/sketchup-api-stubs/stubs/_top_level.rb +311 -311
  140. data/lib/sketchup-api-stubs/stubs/array.rb +741 -741
  141. data/lib/sketchup-api-stubs/stubs/geom.rb +348 -348
  142. data/lib/sketchup-api-stubs/stubs/languagehandler.rb +92 -92
  143. data/lib/sketchup-api-stubs/stubs/length.rb +278 -278
  144. data/lib/sketchup-api-stubs/stubs/numeric.rb +249 -249
  145. data/lib/sketchup-api-stubs/stubs/sketchup.rb +1310 -1310
  146. data/lib/sketchup-api-stubs/stubs/sketchupextension.rb +353 -353
  147. data/lib/sketchup-api-stubs/stubs/string.rb +24 -24
  148. data/lib/sketchup-api-stubs/stubs/ui.rb +667 -667
  149. metadata +3 -4
@@ -1,1601 +1,1638 @@
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
- # @param [Array<Integer>] ids_or_array
693
- # Pass either a series of ids or a
694
- # single array containing persistent ids.
695
- #
696
- # @return [Array<Sketchup::Entity, nil>] Returns an array with
697
- # {Sketchup::Entity} objects for each id found and nil otherwise.
698
- #
699
- # @version SketchUp 2017
700
- def find_entity_by_persistent_id(ids_or_array)
701
- end
702
-
703
- # This methods determines if the model is georeferenced.
704
- #
705
- # @example
706
- # if model.georeferenced?
707
- # UI.messagebox('This model is georeferenced.')
708
- # else
709
- # UI.messagebox('This model is NOT georeferenced.')
710
- # end
711
- #
712
- # @return [Boolean]
713
- #
714
- # @version SketchUp 7.1
715
- def georeferenced?
716
- end
717
-
718
- # The get_attribute method gets the value of an attribute that in the
719
- # AttributeDictionary with the given name. If no value is associated
720
- # with key, or if the model does not have an attribute dictionary
721
- # specified by name, the optional third parameter will be returned.
722
- #
723
- # @example
724
- # model = Sketchup.active_model
725
- # model.set_attribute('testdictionary', 'test', 115)
726
- # value = model.get_attribute('testdictionary', 'test', 42)
727
- #
728
- # @param [String] dictname
729
- # The name of the dictionary containing the value.
730
- #
731
- # @param [String] key
732
- # The key containing the value.
733
- #
734
- # @param [Object] defaultvalue
735
- # default value that will be returned if a
736
- # value does not exist.
737
- #
738
- # @return [Object, nil] the value for a given key in the given
739
- # dictionary if a value exists; the default value if a
740
- # defaultvalue is provided and the value does not exist;
741
- # nil if the value does not exist and no defaultvalue is
742
- # provided.
743
- #
744
- # @version SketchUp 6.0
745
- def get_attribute(dictname, key, defaultvalue = nil)
746
- end
747
-
748
- # the get_datum method retrieves the datum, in the form of a string, used in
749
- # UTM conversions.
750
- #
751
- # @example
752
- # model = Sketchup.active_model
753
- # datum = model.get_datum
754
- #
755
- # @return [String] a datum represented as a string if successful.
756
- #
757
- # @version SketchUp 6.0
758
- def get_datum
759
- end
760
-
761
- # Returns a value which indicates the product family of the installed SketchUp
762
- # application.
763
- # As of SketchUp 2013, the return values are:
764
- # - +0+ = Unknown
765
- # - +1+ = Pro Trial
766
- # - +2+ = Pro
767
- # - +3+ = Pro Expired
768
- # - +4+ = Make Trial
769
- # - +5+ = Make Expired
770
- # - +6+ = Make
771
- # - +7+ = Pro License Unavailable
772
- #
773
- # The Model class defines some of these values as constants as of SketchUp
774
- # 2016.
775
- #
776
- # @example
777
- # model = Sketchup.active_model
778
- # product_family = model.get_product_family
779
- # if product_family == Sketchup::Model::ProLicensed then
780
- # puts "You are running licensed SketchUp Pro!"
781
- # end
782
- #
783
- # @return [Integer] the product family number.
784
- #
785
- # @version SketchUp 6.0
786
- def get_product_family
787
- end
788
-
789
- # The guid method retrieves the globally unique identifier, in the form of a
790
- # string, for the Model. The guid will change after the model is modified and
791
- # saved. The Model guid is stored with the SketchUp file; it will not change if the
792
- # file is moved to another computer.
793
- #
794
- # @example
795
- # model = Sketchup.active_model
796
- # guid = model.guid
797
- #
798
- # @return [String] a globally unique identifier, in the form of a
799
- # string, for the model
800
- #
801
- # @version SketchUp 6.0
802
- def guid
803
- end
804
-
805
- # The import method is used to load a file by recognizing the file extension
806
- # and calling appropriate importer.
807
- #
808
- # See the {file:pages/importer_options.md Importer Options} file for information
809
- # on creating a valid hash for the various importers.
810
- #
811
- # @example Import for SketchUp 2017 and older
812
- # model = Sketchup.active_model
813
- # show_summary = true
814
- # status = model.import("filename", show_summary)
815
- #
816
- # @example Import for SketchUp 2018+ and newer
817
- # model = Sketchup.active_model
818
- # options = { :units => "model",
819
- # :merge_coplanar_faces => true,
820
- # :show_summary => true }
821
- # status = model.import("filename", options)
822
- #
823
- # @overload import(filename, options)
824
- #
825
- # @param [String] filename The input filename.
826
- # @param [Hash] options The options.
827
- # @return [Boolean]
828
- #
829
- # @overload import(filename, show_summary = false)
830
- #
831
- # @note This variant is for SketchUp 2017 and earlier.
832
- # @param [String] filename The input filename.
833
- # @param [Boolean] show_summary Show the summary dialog.
834
- # @return [Boolean]
835
- #
836
- # @version SketchUp 6.0
837
- def import(*args)
838
- end
839
-
840
- # The {#instance_path_from_pid_path} method returns a instance path given a
841
- # string with persistent ids representing the path to the entity.
842
- #
843
- # @example
844
- # points = [
845
- # Geom::Point3d.new( 0, 0, 0),
846
- # Geom::Point3d.new(10, 0, 0),
847
- # Geom::Point3d.new(10, 20, 0),
848
- # Geom::Point3d.new( 0, 20, 0)
849
- # ]
850
- # model = Sketchup.active_model
851
- # entities = model.active_entities
852
- # group = entities.add_group
853
- # face = group.entities.add_face(points)
854
- # pid_path = "#{group.persistent_id}.#{face.persistent_id}"
855
- # # pid_path will look something like this: "658.723"
856
- # instance_path = model.instance_path_from_pid_path(pid_path)
857
- #
858
- # @param [String] pid_path
859
- # a string with persistent ids delimited by period.
860
- #
861
- # @raise [ArgumentError] if a valid instance path cannot be created from the
862
- # given input path string.
863
- #
864
- # @return [Sketchup::InstancePath]
865
- #
866
- # @see Sketchup::InstancePath#persistent_id_path
867
- #
868
- # @version SketchUp 2017
869
- def instance_path_from_pid_path(pid_path)
870
- end
871
-
872
- # The latlong_to_point method converts a latitude and longitude to a Point3d
873
- # object in the model. It does not actually work with a LatLong object, but
874
- # operates on a 2-element array. The returned point will always be on the
875
- # ground (z=0).
876
- #
877
- # @example
878
- # # Draw a point in Boulder, Colorado (40.0170N, 105.2830W)
879
- # lnglat_array = [-105.28300, 40.01700]
880
- # model = Sketchup.active_model
881
- # local_point = model.latlong_to_point(lnglat_array)
882
- # model.entities.add_cpoint(local_point)
883
- #
884
- # @param [Array(Numeric, Numeric)] lnglat_array
885
- # A 2-element array containing first the longitude then
886
- # the latitude.
887
- #
888
- # @return [Geom::Point3d] a point3d object if successful, false if
889
- # unsuccessful.
890
- #
891
- # @version SketchUp 6.0
892
- def latlong_to_point(lnglat_array)
893
- end
894
-
895
- # The {#layers method retrieves a collection of all Layers objects in the model.
896
- #
897
- # @example
898
- # model = Sketchup.active_model
899
- # layers = model.layers
900
- #
901
- # @return [Sketchup::Layers] a Layers object containing a collection of
902
- # layers in the model
903
- #
904
- # @version SketchUp 6.0
905
- def layers
906
- end
907
-
908
- # The {#line_styles} method returns the line styles manager.
909
- #
910
- # @example
911
- # line_styles = Sketchup.active_model.line_styles
912
- #
913
- # @return [Sketchup::LineStyles] The line styles manager.
914
- #
915
- # @version SketchUp 2019
916
- def line_styles
917
- end
918
-
919
- # This method retrieves an Array of all of the datums recognized by SketchUp.
920
- #
921
- # @example
922
- # model = Sketchup.active_model
923
- # datums = model.list_datums
924
- #
925
- # @return [Array<String>] An Array object containing the datums
926
- # supported by SketchUp
927
- #
928
- # @version SketchUp 6.0
929
- def list_datums
930
- end
931
-
932
- # The {#materials} method returns a collection of all of the materials in the
933
- # model.
934
- #
935
- # @example
936
- # model = Sketchup.active_model
937
- # materials = model.materials
938
- #
939
- # @return [Sketchup::Materials]
940
- #
941
- # @version SketchUp 6.0
942
- def materials
943
- end
944
-
945
- # This method can be used to turn mipmapping on or off.
946
- #
947
- # @example
948
- # Sketchup.active_model.mipmapping = false
949
- #
950
- # @param [Boolean] mipmap
951
- # whether mipmapping is turned on or off.
952
- #
953
- # @return [Boolean] the new mipmapping setting
954
- #
955
- # @version SketchUp 7.0
956
- def mipmapping=(mipmap)
957
- end
958
-
959
- # This method can be used to find out if mipmapping is on or off.
960
- #
961
- # @example
962
- # mipmapping = Sketchup.active_model.mipmapping?
963
- #
964
- # @return [Boolean]
965
- #
966
- # @version SketchUp 7.0
967
- def mipmapping?
968
- end
969
-
970
- # The modified? method determines if the Model has been modified since the
971
- # last save.
972
- #
973
- # @example
974
- # model = Sketchup.active_model
975
- # entities = model.active_entities
976
- # # Add a group to force the status return value to be true
977
- # entities.add_group
978
- # status = model.modified?
979
- #
980
- # @return [Boolean]
981
- #
982
- # @version SketchUp 6.0
983
- def modified?
984
- end
985
-
986
- # The name method retrieves the string name of the model.
987
- #
988
- # @example
989
- # model = Sketchup.active_model
990
- # name = model.name
991
- #
992
- # @return [String] string name of the model
993
- #
994
- # @version SketchUp 6.0
995
- def name
996
- end
997
-
998
- # The name= method sets the string name of the model.
999
- #
1000
- # @example
1001
- # Sketchup.active_model.name = "My New Model Name"
1002
- #
1003
- # @param [String] name
1004
- # new name of the model
1005
- #
1006
- # @return [String] the new name
1007
- #
1008
- # @version SketchUp 6.0
1009
- def name=(name)
1010
- end
1011
-
1012
- # Returns the number faces in a model.
1013
- #
1014
- # @example
1015
- # model = Sketchup.active_model
1016
- # number_of_faces = model.number_faces
1017
- # puts "There are #{number_of_faces} faces in the model."
1018
- #
1019
- # @return [Integer]
1020
- #
1021
- # @version SketchUp 7.1
1022
- def number_faces
1023
- end
1024
-
1025
- # The {#options} method retrieves the options manager that defines the options
1026
- # settings for the model.
1027
- #
1028
- # Use the string keys instead of numerical indicies when accessing the options
1029
- # as the indicies are not consistent between SketchUp versions.
1030
- #
1031
- # @example
1032
- # # Output all options available.
1033
- # options_manager = Sketchup.active_model.options
1034
- # options_manager.keys.each { |options_provider|
1035
- # puts options_provider.name
1036
- # options_provider.each { |key, value|
1037
- # puts "> #{key} - #{value}"
1038
- # }
1039
- # }
1040
- #
1041
- # @return [Sketchup::OptionsManager]
1042
- #
1043
- # @version SketchUp 6.0
1044
- def options
1045
- end
1046
-
1047
- # The {#pages} method retrieves a {Sketchup::Pages} object containing all of
1048
- # the pages in the model.
1049
- #
1050
- # @example
1051
- # model = Sketchup.active_model
1052
- # pages = model.pages
1053
- #
1054
- # @return [Sketchup::Pages]
1055
- #
1056
- # @version SketchUp 6.0
1057
- def pages
1058
- end
1059
-
1060
- # The path method retrieves the path of the file from which the model was
1061
- # opened.
1062
- #
1063
- # An empty string is returned for a new model (one which has not been saved
1064
- # and opened.)
1065
- #
1066
- # @example
1067
- # model = Sketchup.active_model
1068
- # path = model.path
1069
- #
1070
- # @return [String] an string containing the path for the currently
1071
- # opened model.
1072
- #
1073
- # @version SketchUp 6.0
1074
- def path
1075
- end
1076
-
1077
- # The place_component method places a new component in the Model using the
1078
- # component placement tool.
1079
- #
1080
- # @example
1081
- # model.place_component componentdefinition, repeat
1082
- #
1083
- # @param [Sketchup::ComponentDefinition] componentdef
1084
- # A component definition object containing the
1085
- # definition (blueprint) for the component.
1086
- #
1087
- # @param [Boolean] repeat
1088
- # If set to true, stay in the component
1089
- # placement tool and place multiple components.
1090
- #
1091
- # @return [Sketchup::Model, nil] The model object on success or Nil
1092
- #
1093
- # @version SketchUp 6.0
1094
- def place_component(componentdef, repeat = false)
1095
- end
1096
-
1097
- # The point_to_latlong method converts a point in the model to a LatLong so
1098
- # that you can get its latitude and longitude.
1099
- #
1100
- # This method uses the location information set in ShadowInfo.
1101
- #
1102
- # NOTE: SketchUp 6.0 and higher has a change where this method returns a
1103
- # Point3d instead of a LatLong, where the x and y values contain the LatLong
1104
- # coordinates.
1105
- #
1106
- # @example
1107
- # model = Sketchup.active_model
1108
- # local_point = Geom::Point3d.new(10, 10, 10)
1109
- # world_point = model.point_to_latlong(local_point)
1110
- #
1111
- # @param [Geom::Point3d] point
1112
- # A Point3d object.
1113
- #
1114
- # @return [Geom::Point3d, Geom::LatLong] a LatLong or Point3d object. See
1115
- # details for information.
1116
- #
1117
- # @version SketchUp 6.0
1118
- def point_to_latlong(point)
1119
- end
1120
-
1121
- # This method converts a Point3d object in the Model to UTM coordinates.
1122
- #
1123
- # This method uses the location information set in ShadowInfo. See also UTM.
1124
- #
1125
- # @example
1126
- # model = Sketchup.active_model
1127
- # point = Geom::Point3d.new(10, 10, 10)
1128
- # utm = model.point_to_utm(point)
1129
- #
1130
- # @param [Geom::Point3d] point
1131
- # A Point3d object.
1132
- #
1133
- # @return [Geom::UTM] a UTM object
1134
- #
1135
- # @version SketchUp 6.0
1136
- def point_to_utm(point)
1137
- end
1138
-
1139
- # The raytest method is used to cast a ray (line) through the model and return
1140
- # the first thing that the ray hits.
1141
- #
1142
- # A ray is a two element array containing a point and a vector
1143
- # [Geom::Point3d(), Geom::Vector3d()]. The point defines the start point of
1144
- # the ray and the vector defines the direction. If direction can not be
1145
- # normalized (e.g. direction = [0, 0, 0]), direction is taken as a point the
1146
- # ray intersects.
1147
- #
1148
- # @example
1149
- # model = Sketchup.active_model
1150
- # ray = [Geom::Point3d.new(1, 2, 3), Geom::Vector3d.new(4, 5, 6)]
1151
- # item = model.raytest(ray, false) # Consider hidden geometry when
1152
- # # computing intersections.
1153
- #
1154
- # @note The parameter wysiwyg_flag was added in SU8 M1.
1155
- #
1156
- # @param [Array(Geom::Point3d, Geom::Vector3d)] ray
1157
- # A two element array containing a point and a vector.
1158
- #
1159
- # @param [Boolean] wysiwyg_flag
1160
- # An optional boolean, added in SU8 M1, indicating
1161
- # whether or not to consider hidden geometry in intersect
1162
- # computations. If this flag is not specified, it
1163
- # defaults to true (WYSIWYG) - i.e. hidden geometry is
1164
- # not intersected against.
1165
- #
1166
- # @return [Array(Geom::Point3d, Array<Sketchup::Drawingelement>), nil] an array of two values. The first value is a
1167
- # Point3d where the item that the ray passed through
1168
- # exists. The second element is the instance path array
1169
- # of the entity that the ray hit. For example, if the ray
1170
- # hits a face that is contained by a component instance the
1171
- # instance path would be [Component1]. If the ray hit a
1172
- # face that is contained by a component instance, which
1173
- # is contained by another component instance and so on,
1174
- # the instance path would be [Component1, Component2,
1175
- # Component3...].
1176
- #
1177
- # @version SketchUp 6.0
1178
- def raytest(ray, wysiwyg_flag = true)
1179
- end
1180
-
1181
- # The remove_observer method is used to remove an observer from the current
1182
- # object.
1183
- #
1184
- # @example
1185
- # model = Sketchup.active_model
1186
- # observer = Sketchup::ModelObserver.new
1187
- # model.add_observer(observer)
1188
- # status = model.remove_observer(observer)
1189
- #
1190
- # @param [Object] observer
1191
- # An observer.
1192
- #
1193
- # @return [Boolean] true if successful, false if unsuccessful.
1194
- #
1195
- # @version SketchUp 6.0
1196
- def remove_observer(observer)
1197
- end
1198
-
1199
- # The {#rendering_options} method retrieves the RenderingOptions object for
1200
- # this model.
1201
- #
1202
- # @example
1203
- # model = Sketchup.active_model
1204
- # renderingoptions = model.rendering_options
1205
- #
1206
- # @return [Sketchup::RenderingOptions]
1207
- #
1208
- # @version SketchUp 6.0
1209
- def rendering_options
1210
- end
1211
-
1212
- # This method is used to save the model to a file.
1213
- #
1214
- # @example
1215
- # model = Sketchup.active_model
1216
- # # Save the model using the current SketchUp format
1217
- # filename = File.join(ENV['HOME'], 'Desktop', 'mysketchup.skp')
1218
- # status = model.save(filename)
1219
- # # Save the model to the current file using the current SketchUp format
1220
- # status = model.save
1221
- # # Save the model to the current file in SketchUp 8 format
1222
- # status = model.save("", Sketchup::Model::VERSION_8)
1223
- # # Save the model in SketchUp 8 format
1224
- # filename = File.join(ENV['Home'], 'Desktop', 'mysketchup_v8.skp')
1225
- # status = model.save("filename", Sketchup::Model::VERSION_8)
1226
- #
1227
- # @note A bug in SketchUp 2016 and older caused the +.skb+ backup file
1228
- # written during save to be empty. The +.skp+ file was however valid.
1229
- #
1230
- # @overload save
1231
- #
1232
- # Starting with SketchUp 2014, this parameter is optional.
1233
- # If no arguments are provided or the filename is an empty string, model
1234
- # will be saved to the file to which it is associated. It must have
1235
- # already been saved to a file.
1236
- #
1237
- # @overload save(filename)
1238
- #
1239
- # @param [String] filename
1240
- # The name of the file to save.
1241
- # Starting with SketchUp 2014, this parameter is optional.
1242
- # If not provided or an empty string, model will be saved
1243
- # to the file to which it is associated. It must have
1244
- # already been saved to a file.
1245
- #
1246
- # @overload save(filename, version)
1247
- #
1248
- # @param [String] filename
1249
- # The name of the file to save.
1250
- # Starting with SketchUp 2014, this parameter is optional.
1251
- # If not provided or an empty string, model will be saved
1252
- # to the file to which it is associated. It must have
1253
- # already been saved to a file.
1254
- #
1255
- # @param [Integer] version
1256
- # (SketchUp 2014+)
1257
- # Optional SketchUp file format to save.
1258
- # If not provided, latest file format will be used.
1259
- # Possible values are:
1260
- # Sketchup::Model::VERSION_3, Sketchup::Model::VERSION_4,
1261
- # Sketchup::Model::VERSION_5, Sketchup::Model::VERSION_6,
1262
- # Sketchup::Model::VERSION_7, Sketchup::Model::VERSION_8,
1263
- # Sketchup::Model::VERSION_2013,
1264
- # Sketchup::Model::VERSION_2014,
1265
- # Sketchup::Model::VERSION_2015,
1266
- # Sketchup::Model::VERSION_2016,
1267
- # Sketchup::Model::VERSION_2017,
1268
- # Sketchup::Model::VERSION_2018,
1269
- # Sketchup::Model::VERSION_2019,
1270
- # Sketchup::Model::VERSION_2020
1271
- #
1272
- # @return [Boolean] true if successful, false if unsuccessful
1273
- #
1274
- # @version SketchUp 6.0
1275
- def save(*args)
1276
- end
1277
-
1278
- # This method is used to save the copy of the current model to a file.
1279
- #
1280
- # @example
1281
- # model = Sketchup.active_model
1282
- # # Save copy of the model using the current SketchUp format
1283
- # filename = File.join(ENV['Home'], 'Desktop', 'myModelCopy.skp')
1284
- # status = model.save_copy(filename)
1285
- # # Save copy of the model in SketchUp 8 format
1286
- # filename = File.join(ENV['Home'], 'Desktop', 'mysketchupcopy_v8.skp')
1287
- # status = model.save_copy(filename, Sketchup::Model::VERSION_8)
1288
- #
1289
- # @param [String] filename
1290
- # The name of the file to save the model copy.
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 2014
1312
- def save_copy(filename, version)
1313
- end
1314
-
1315
- # The save_thumbnail method is used to save a thumbnail image to a file.
1316
- # The image format is specified by the file extension of filename. Supported
1317
- # formats are bmp, jpg, png, tif, pct, and gif.
1318
- #
1319
- # @example
1320
- # model = Sketchup.active_model
1321
- # status = model.save_thumbnail('testthumbnail2.jpg')
1322
- #
1323
- # @param [String] filename
1324
- # The name of the file, with extension, to save the
1325
- # thumbnail as.
1326
- #
1327
- # @return [Boolean] true if successful, false if unsuccessful
1328
- #
1329
- # @version SketchUp 6.0
1330
- def save_thumbnail(filename)
1331
- end
1332
-
1333
- # This method is used to select a SketchUp Tool object s the active tool. You
1334
- # must implement the SketchUp Tool interface to create a tool prior to calling
1335
- # this method.
1336
- #
1337
- # The select tool is activated if you pass nil to the select_tool method. You
1338
- # must implement the SketchUp Tool interface to create a tool, prior to calling
1339
- # this method, and then instance the tool implementation and pass the object to
1340
- # this method. If you attempt to set the select_tool to nil in the initialize
1341
- # method of a tool you have written, it will be ignored.
1342
- #
1343
- # @example
1344
- # model = Sketchup.active_model
1345
- # tool = model.select_tool(nil)
1346
- #
1347
- # @param [Object] tool
1348
- # The Tool object you want to select.
1349
- #
1350
- # @return [Sketchup::Model] The Model object.
1351
- #
1352
- # @version SketchUp 6.0
1353
- def select_tool(tool)
1354
- end
1355
-
1356
- # This method retrieves a Selection object for the model, containing the
1357
- # currently selected entities. The entries in the selection list are not
1358
- # necessarily in the same order in which the user selected them.
1359
- #
1360
- # @example
1361
- # model = Sketchup.active_model
1362
- # selection = model.selection
1363
- #
1364
- # @return [Sketchup::Selection] A Selection object with 0 or more entities
1365
- # that are currently selected.
1366
- #
1367
- # @version SketchUp 6.0
1368
- def selection
1369
- end
1370
-
1371
- # This method is used to set the value of an attribute in an attribute
1372
- # dictionary with the given name.
1373
- #
1374
- # This method can be used create a new AttributeDictionary object, if needed.
1375
- #
1376
- # @example
1377
- # model = Sketchup.active_model
1378
- # value = model.set_attribute('attributedictionaryname', 'key', 'value')
1379
- #
1380
- # @param [String] attrdictname
1381
- # The name of the attribute dictionary whose attribute
1382
- # you wish to set.
1383
- #
1384
- # @param [String] key
1385
- # The attribute name.
1386
- #
1387
- # @param [Object] value
1388
- # The value to set.
1389
- #
1390
- # @return [Object] the value that was set
1391
- #
1392
- # @version SketchUp 6.0
1393
- def set_attribute(attrdictname, key, value)
1394
- end
1395
-
1396
- # This method sets the datum used in conversions between the internal
1397
- # coordinate system and UTM.
1398
- #
1399
- # The default datum is WGS84. You can use the method list_datums to get a list
1400
- # of all of the datums supported in SketchUp. If you pass an invalid datum to
1401
- # set_datum, set_datum returns the default datum.
1402
- #
1403
- # @example
1404
- # model = Sketchup.active_model
1405
- # value = model.set_datum('Adindan')
1406
- #
1407
- # @param [String] datum
1408
- #
1409
- # @return [nil]
1410
- #
1411
- # @version SketchUp 6.0
1412
- def set_datum(datum)
1413
- end
1414
-
1415
- # This method is used to retrieve the shadow information for the Model.
1416
- #
1417
- # @example
1418
- # model = Sketchup.active_model
1419
- # shadowinfo = model.shadow_info
1420
- #
1421
- # @return [Sketchup::ShadowInfo]
1422
- #
1423
- # @version SketchUp 6.0
1424
- def shadow_info
1425
- end
1426
-
1427
- # The {#start_operation} method is used to notify SketchUp that a new
1428
- # operation (which can be undone) is starting.
1429
- #
1430
- # The +op_name+ argument is a description for the operation that is displayed
1431
- # adjacent to the Edit > Undo menu item. Make sure to provide a user friendly
1432
- # name for your operation.
1433
- #
1434
- # Starting with SketchUp 7.0, there are three additional booleans that one can
1435
- # pass in when starting an operation. It is recommended to always set
1436
- # +disable_ui+ to +true+. It's left to +false+ for default for compatibility
1437
- # reasons.
1438
- #
1439
- # @example Observer Operation since SU2016
1440
- # class MyDefinitionsObserver < Sketchup::DefinitionObserver
1441
- # def onComponentAdded(definitions, definition)
1442
- # return if definition.deleted?
1443
- # # The operation name won't be displayed when the fourth argument is
1444
- # # +true+. It will absorb into the previous operation.
1445
- # definition.model.start_operation('Tag It', true, false, true)
1446
- # definition.set_attribute('MyExtension', 'Tag', 'You are it')
1447
- # definition.model.commit_operation
1448
- # end
1449
- # end
1450
- #
1451
- # observer = MyDefinitionsObserver.new
1452
- # model = Sketchup.active_model
1453
- # model.definitions.add_observer(observer)
1454
- #
1455
- # @example Typical Operation
1456
- # model = Sketchup.active_model
1457
- # model.start_operation('Generate House', true)
1458
- # model.entities.add_line([0, 0, 0], [9, 0, 0])
1459
- # model.entities.add_line([9, 0, 0], [9, 0, 9])
1460
- # model.commit_operation
1461
- #
1462
- # @note Operations in SketchUp are sequential and cannot be nested. If you start a
1463
- # new Ruby operation while another is still open, you will implicitly close
1464
- # the first one.
1465
- #
1466
- # @param [String] op_name
1467
- # name of the operation visible in the UI
1468
- #
1469
- # @param [Boolean] disable_ui
1470
- # if set to true, then SketchUp's tendency to
1471
- # update the user interface after each geometry change will be
1472
- # suppressed. This can result in much faster Ruby code execution if the
1473
- # operation involves updating the model in any way.
1474
- #
1475
- # @param [Boolean] next_transparent
1476
- # <b>Deprecated!</b> if set to true, then
1477
- # whatever operation comes after this one will be appended into one
1478
- # combined operation, allowing the user the undo both actions with a
1479
- # single undo command. This flag is a highly difficult one, since there
1480
- # are so many ways that a SketchUp user can interrupt a given operation
1481
- # with one of their own. <b>Use extreme caution</b> and test thoroughly
1482
- # when setting this to true.
1483
- #
1484
- # @param [Boolean] transparent
1485
- # if set to true, then this operation will
1486
- # append to the previous operation. This is particularly useful for
1487
- # creating observers that react to user actions without littering the
1488
- # undo stack with extra steps that Ruby is performing.
1489
- #
1490
- # @return [Boolean] +true+ if successful, +false+ if unsuccessful
1491
- #
1492
- # @version SketchUp 6.0
1493
- def start_operation(op_name, disable_ui = false, next_transparent = false, transparent = false)
1494
- end
1495
-
1496
- # The {#styles} method retrieves the styles associated with the model.
1497
- #
1498
- # @example
1499
- # model = Sketchup.active_model
1500
- # styles = model.styles
1501
- #
1502
- # @return [Sketchup::Styles]
1503
- #
1504
- # @version SketchUp 6.0
1505
- def styles
1506
- end
1507
-
1508
- # The tags method retrieves the string tags of the model.
1509
- #
1510
- # @example
1511
- # model = Sketchup.active_model
1512
- # tags = model.tags
1513
- #
1514
- # @return [String] string tags of the model
1515
- #
1516
- # @version SketchUp 6.0
1517
- def tags
1518
- end
1519
-
1520
- # The tags= method sets the string tags of the model.
1521
- #
1522
- # @example
1523
- # Sketchup.active_model.tags = "Building, House, Brick"
1524
- #
1525
- # @param [String] tags
1526
- # new tags of the model
1527
- #
1528
- # @return [String] the new tags
1529
- #
1530
- # @version SketchUp 6.0
1531
- def tags=(tags)
1532
- end
1533
-
1534
- # The tile method retrieves the name of the model. If the model is saved on
1535
- # disk, returns the file name without extension. Otherwise returns an empty
1536
- # string.
1537
- #
1538
- # @example
1539
- # model = Sketchup.active_model
1540
- # title = model.title
1541
- #
1542
- # @return [String] the title of the model or an empty string (if
1543
- # the title is not set)
1544
- #
1545
- # @version SketchUp 6.0
1546
- def title
1547
- end
1548
-
1549
- # The {#tools} method is used to retrieve the current {Sketchup::Tools} object.
1550
- #
1551
- # @example
1552
- # model = Sketchup.active_model
1553
- # tools = model.tools
1554
- #
1555
- # @return [Sketchup::Tools] a Tools object.
1556
- #
1557
- # @version SketchUp 6.0
1558
- def tools
1559
- end
1560
-
1561
- # The utm_to_point method converts a position given in UTM coordinates to a
1562
- # Point3d in the Model.
1563
- #
1564
- # @example
1565
- # model = Sketchup.active_model
1566
- # utm = Geom::UTM.new([+1, "A", 0.12333333, 0.12321321])
1567
- # point = model.utm_to_point(utm)
1568
- #
1569
- # @param [Geom::UTM] utm
1570
- # A UTM object.
1571
- #
1572
- # @return [Geom::Point3d] A Point3d object.
1573
- #
1574
- # @version SketchUp 6.0
1575
- def utm_to_point(utm)
1576
- end
1577
-
1578
- # Determine if a model is a valid Sketchup::Model object. Returns false
1579
- # if the model has been closed.
1580
- #
1581
- # This is useful on the mac where one can have multiple models open at the
1582
- # same time. In such a case, this method can tell you if the user has closed
1583
- # the model before you perform operations on it.
1584
- #
1585
- # @example
1586
- # # This is a silly example since the active model is generally going to
1587
- # # be valid, but it illustrates the idea.
1588
- # model = Sketchup.active_model
1589
- # if model.valid?
1590
- # UI.messagebox('This model is valid.')
1591
- # else
1592
- # UI.messagebox('This model is NOT valid.')
1593
- # end
1594
- #
1595
- # @return [Boolean]
1596
- #
1597
- # @version SketchUp 6.0
1598
- def valid?
1599
- end
1600
-
1601
- end
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