sketchup-api-stubs 0.7.7 → 0.7.9

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