sketchup-api-stubs 0.7.4 → 0.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +148 -145
  3. data/lib/sketchup-api-stubs/stubs/{array.rb → Array.rb} +741 -741
  4. data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +322 -318
  5. data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +172 -172
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +523 -492
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +478 -478
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
  13. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
  14. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -522
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +693 -691
  16. data/lib/sketchup-api-stubs/stubs/{geom.rb → Geom.rb} +351 -348
  17. data/lib/sketchup-api-stubs/stubs/{languagehandler.rb → LanguageHandler.rb} +93 -92
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +595 -573
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +698 -411
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +183 -174
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
  22. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +516 -514
  23. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  24. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +148 -143
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +353 -353
  26. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -349
  27. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
  28. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
  29. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
  30. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +370 -371
  31. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
  32. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
  33. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +225 -220
  34. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +567 -567
  35. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
  37. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +183 -183
  38. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +387 -387
  39. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -204
  40. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +344 -344
  41. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
  42. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +692 -694
  43. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1519 -1519
  44. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
  45. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
  46. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
  48. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  49. data/lib/sketchup-api-stubs/stubs/{length.rb → Length.rb} +278 -278
  50. data/lib/sketchup-api-stubs/stubs/{numeric.rb → Numeric.rb} +249 -249
  51. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +144 -140
  52. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -157
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +209 -209
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +152 -152
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +286 -281
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +302 -328
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +478 -577
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +122 -122
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -281
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +619 -562
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -593
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -257
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +201 -194
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +426 -329
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +74 -72
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +104 -102
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +165 -165
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +306 -312
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +42 -38
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +396 -390
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +502 -508
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1205 -1119
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +272 -0
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -125
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +545 -544
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -59
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +126 -125
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +937 -750
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +104 -104
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +750 -697
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +292 -285
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +468 -409
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +266 -226
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +189 -190
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +407 -393
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -82
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +306 -303
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +326 -285
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +422 -0
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +427 -244
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +249 -136
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +112 -112
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +414 -416
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +318 -311
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +142 -141
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +93 -95
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1651 -1638
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +357 -356
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +131 -132
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +284 -284
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +797 -770
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +363 -353
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -76
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +477 -456
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +364 -364
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +45 -44
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +459 -454
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +260 -257
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +59 -57
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +40 -0
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +69 -69
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +217 -211
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +217 -225
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +837 -829
  134. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  135. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +156 -154
  136. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +75 -61
  137. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
  138. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1317 -1301
  139. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -43
  140. data/lib/sketchup-api-stubs/stubs/{sketchup.rb → Sketchup.rb} +1360 -1310
  141. data/lib/sketchup-api-stubs/stubs/{sketchupextension.rb → SketchupExtension.rb} +353 -353
  142. data/lib/sketchup-api-stubs/stubs/{string.rb → String.rb} +24 -24
  143. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +389 -310
  144. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +496 -356
  145. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +269 -229
  146. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +240 -240
  147. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +635 -633
  148. data/lib/sketchup-api-stubs/stubs/{ui.rb → UI.rb} +683 -667
  149. data/lib/sketchup-api-stubs/stubs/_top_level.rb +311 -311
  150. data/lib/sketchup-api-stubs.rb +1 -1
  151. metadata +15 -12
@@ -1,456 +1,477 @@
1
- # Copyright:: Copyright 2020 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # The PickHelper class is used to pick entities that reside under the current
5
- # cursor location. PickHelper and InputPoint are similar, but InputPoint also
6
- # uses inferencing. You can retrieve a PickHelper object using the pick_helper
7
- # method on a View object.
8
- #
9
- # Entities that are picked (found under the
10
- # cursor when a mouse or keyboard event occurs), are called Pick Records and
11
- # are placed in an indexed list.
12
- #
13
- # @version SketchUp 6.0
14
- class Sketchup::PickHelper
15
-
16
- # Constants
17
-
18
- PICK_CROSSING = nil # Stub value.
19
- PICK_INSIDE = nil # Stub value.
20
-
21
- # Instance Methods
22
-
23
- # The all_picked method is used to get an array of entities from the
24
- # active entities from all the pick paths. Duplicates might occur if
25
- # there are multiple pick paths for entities that ends in a group or
26
- # component.
27
- #
28
- # For example, if the pick hits at the border of an edge and face
29
- # inside a group there will be two pick paths - one for the face and
30
- # one for the edge. Since this method returns entities from the active
31
- # entities it would return an array with the group two times.
32
- #
33
- # @example
34
- # ph = view.pick_helper
35
- # ph.do_pick(x, y)
36
- # entities = ph.all_picked
37
- #
38
- # @return elements - the array of elements in the pick.
39
- #
40
- # @version SketchUp 6.0
41
- def all_picked
42
- end
43
-
44
- # The best_picked method is used to retrieve the "best" entity picked (entity
45
- # that you would have picked if you were using the select tool).
46
- #
47
- # Returns nil if nothing was picked. You must have called do_pick
48
- # before calling this method.
49
- #
50
- # @example
51
- # ph = view.pick_helper
52
- # ph.do_pick(x, y)
53
- # best_entity = ph.best_picked
54
- #
55
- # @return entity - the best picked entity
56
- #
57
- # @version SketchUp 6.0
58
- def best_picked
59
- end
60
-
61
- # Used to pick a set of entities from a model from a BoundingBox. The pick
62
- # criteria can be for completely-contained or partially-contained entities,
63
- # similar to how the Selection tool works.
64
- #
65
- # @example
66
- # boundingbox = Geom::BoundingBox.new
67
- # boundingbox.add([1, 1, 1], [100, 100, 100])
68
- # ph = Sketchup.active_model.active_view.pick_helper
69
- #
70
- # # Rotate the box 45' around the z-axis
71
- # angle = 45
72
- # transformation = Geom::Transformation.new(ORIGIN, Z_AXIS, angle)
73
- #
74
- # num_picked = ph.boundingbox_pick(boundingbox, Sketchup::PickHelper::PICK_CROSSING, transformation)
75
- # if num_picked > 0
76
- # Sketchup.active_model.selection.add(ph.all_picked)
77
- # end
78
- #
79
- # @param bounding_box
80
- # BoundingBox object defining the volume to use for picking
81
- #
82
- # @param pick_type
83
- # PICK_INSIDE to select entities completely contained or
84
- # PICK_CROSSING to select entities partially contained.
85
- #
86
- # @param [optional] transformation
87
- # Transformation that will be applied to the
88
- # volume defined by the BoundingBox that allows for a
89
- # rotation.
90
- #
91
- # @return The number of Entity objects picked
92
- #
93
- # @version SketchUp 2016
94
- def boundingbox_pick(bounding_box, pick_type, transformation = IDENTITY)
95
- end
96
-
97
- # The count method is used to count the number of entities picked (number of
98
- # pick records)
99
- #
100
- # @example
101
- # number = pickhelper.count
102
- #
103
- # @return number - the number of entities picked
104
- #
105
- # @version SketchUp 6.0
106
- def count
107
- end
108
-
109
- # The depth_at method retrieves the depth of one of the currently picked
110
- # entities in the list of pick records.
111
- #
112
- # @example
113
- # ph = view.pick_helper
114
- # ph.do_pick(x, y)
115
- # # Iterate all pick-routes:
116
- # pickhelper.count.times { |pick_path_index|
117
- # puts pickhelper.depth_at(pick_path_index)
118
- # }
119
- #
120
- # @param index
121
- # A number from 0 to number of items picked minus one.
122
- #
123
- # @return integer - the depth of the entity if successful
124
- #
125
- # @version SketchUp 6.0
126
- def depth_at(index)
127
- end
128
-
129
- # The do_pick method is used to perform the initial pick. This method is
130
- # generally called before any other methods in the PickHelper class.
131
- #
132
- # Returns the number of entities picked. The x and y values are the screen
133
- # coordinates of the point at which would want to do a pick.
134
- #
135
- # @example
136
- # ph = view.pick_helpernum = ph.do_pick(x, y)
137
- #
138
- # @param x
139
- # X screen coordinate for the pick.
140
- #
141
- # @param y
142
- # Y screen coordinate for the pick.
143
- #
144
- # @param aperture
145
- # The size of the pick-aperture.
146
- #
147
- # @return Integer - The number of Entity objects picked
148
- #
149
- # @version SketchUp 6.0
150
- def do_pick(x, y, aperture = 0)
151
- end
152
-
153
- # The element_at method is used to retrieve a specific entity in the list of
154
- # picked elements. This element will be from the active entities.
155
- #
156
- # Use count() to get the number of possible pick paths.
157
- #
158
- # @example
159
- # ph = view.pick_helper
160
- # ph.do_pick(x, y)
161
- # # Iterate all pick-routes:
162
- # pickhelper.count.times { |pick_path_index|
163
- # puts pickhelper.element_at(pick_path_index)
164
- # }
165
- # # You would iterate the same elements in all_picked.
166
- #
167
- # @param index
168
- # A number from 0 to number of items picked minus one.
169
- #
170
- # @return entity - the entity at the index position in the list
171
- # of picked entities.
172
- #
173
- # @version SketchUp 6.0
174
- def element_at(index)
175
- end
176
-
177
- # The {#init} method is used to initialize the PickHelper for testing points.
178
- #
179
- # You do not normally need to call this method, but you can use this if you
180
- # want to call {#test_point} or {#pick_segment} on a lot of points.
181
- #
182
- # If the optional aperture is given, it is given in pixels.
183
- #
184
- # @example
185
- # ph = view.pick_helper
186
- # ph.init(x, y, 5)
187
- # # Find all points picked by the screen click.
188
- # selected = points.select { |point|
189
- # ph.test_point(point)
190
- # }
191
- #
192
- # @param [Integer] x
193
- # X screen coordinate for the pick.
194
- #
195
- # @param [Integer] y
196
- # Y screen coordinate for the pick.
197
- #
198
- # @param [Integer] aperture
199
- # aperture in pixels.
200
- #
201
- # @return [PickHelper] self
202
- #
203
- # @version SketchUp 6.0
204
- def init(x, y, aperture = 0)
205
- end
206
-
207
- # The leaf_at method retrieves the deepest thing in a pick path.
208
- #
209
- # For example, if you have a face that is within a component that is within
210
- # another component, leaf_at returns the face.
211
- #
212
- # Use count() to get the number of possible pick paths.
213
- #
214
- # @example
215
- # ph = view.pick_helper
216
- # ph.do_pick(x, y)
217
- # # Iterate all pick-routes:
218
- # pickhelper.count.times { |pick_path_index|
219
- # p pickhelper.leaf_at(pick_path_index)
220
- # }
221
- #
222
- # @param index
223
- # A number from 0 to number of items picked minus one.
224
- #
225
- # @return entity - the leaf entity
226
- #
227
- # @version SketchUp 6.0
228
- def leaf_at(index)
229
- end
230
-
231
- # The path_at method is used to retrieve the entire path for an entity in the
232
- # pick list (as an array).
233
- #
234
- # If one of the pick paths end in a face nested in a group nested in a
235
- # component this method will return an array of these entities. The Group
236
- # will be first and the face will be last.
237
- #
238
- # The first item in the array will be from the active entities and the last
239
- # item will be a drawing element that is not a group, component or image.
240
- #
241
- # @example
242
- # ph = view.pick_helper
243
- # ph.do_pick(x, y)
244
- # # Iterate all pick-routes:
245
- # pickhelper.count.times { |pick_path_index|
246
- # p pickhelper.path_at(pick_path_index)
247
- # }
248
- #
249
- # @param index
250
- # A number from 0 to number of items picked minus one.
251
- #
252
- # @return array - an array of entities including the leaf
253
- #
254
- # @version SketchUp 6.0
255
- def path_at(index)
256
- end
257
-
258
- # The {#pick_segment} method is used to pick a segment of a polyline curve that
259
- # is defined by an array of points.
260
- #
261
- # If you click on a point in a polyline curve, the index of
262
- # the point in the curve is returned (starting at 0).
263
- #
264
- # If you click on a segment in the polyline curve, the index of the segment is
265
- # returned. Segments are returned by negative indicies and start at index -1
266
- # (for the segment connecting the first two points) and increase by a factor
267
- # of -1 (for example, the segment connecting second and third point is -2).
268
- #
269
- # There is no need to invoke {#do_pick} for this and the results are unrelated.
270
- #
271
- # @example
272
- # point1 = Geom::Point3d.new(0 ,0, 0)
273
- # point2 = Geom::Point3d.new(10, 0, 0)
274
- # segment = [point1, point2]
275
- # ph = view.pick_helper
276
- # # If testing many points this is the fastest way to test.
277
- # ph.init(x, y)
278
- # picked = ph.pick_segment(segment)
279
- # # This do not require .init
280
- # picked = ph.pick_segment(segment, x, y)
281
- #
282
- # @note The return value will be a negative index when a segment is picked.
283
- #
284
- # @overload pick_segment(points)
285
- #
286
- # This is more efficient if you need to test a number of segments for the
287
- # same set of screen coordinates. But then you must use {#init} first.
288
- # @param [Array<Geom::Point3d>] points A series of points in the polyline as
289
- # a list of parameters or an array containing Point3d
290
- # objects.
291
- # @return [Integer, false] an index on success, +false+ on failure
292
- #
293
- # @overload pick_segment(points, x, y, aperture = 0)
294
- #
295
- # @param [Array<Geom::Point3d>] points A series of points in the polyline as
296
- # a list of parameters or an array containing Point3d
297
- # objects.
298
- # @param [Integer] x screen mouse position in pixels.
299
- # @param [Integer] y (required if x given) screen mouse position
300
- # in pixels.
301
- # @param aperture aperture in pixels.
302
- # @return [Integer, false] an index on success, +false+ on failure
303
- #
304
- # @version SketchUp 6.0
305
- def pick_segment(*args)
306
- end
307
-
308
- # The picked_edge method is used to retrieve the "best" Edge picked.
309
- #
310
- # Returns nil if there were no edges picked. You must have called do_pick
311
- # before calling this method.
312
- #
313
- # @example
314
- # ph = view.pick_helper
315
- # ph.do_pick(x, y)
316
- # edge = ph.picked_edge
317
- #
318
- # @return edge - an Edge object if successful
319
- #
320
- # @version SketchUp 6.0
321
- def picked_edge
322
- end
323
-
324
- # The picked_element method retrieves the best drawing element, that is not an
325
- # edge or a face, picked.
326
- #
327
- # Returns nil if nothing was picked. You must have called do_pick
328
- # before calling this method.
329
- #
330
- # @example
331
- # ph = view.pick_helper
332
- # ph.do_pick(x, y)
333
- # entity = ph.picked_element
334
- #
335
- # @param index
336
- #
337
- # @return element - a drawing element that is not an edge or face
338
- # if successful
339
- #
340
- # @version SketchUp 6.0
341
- def picked_element(index)
342
- end
343
-
344
- # The picked_face method is used to retrieve the best face picked.
345
- #
346
- # Returns nil if there were no faces picked. You must have called do_pick
347
- # before calling this method.
348
- #
349
- # @example
350
- # ph = view.pick_helper
351
- # ph.do_pick(x, y)
352
- # face = ph.picked_face
353
- #
354
- # @return face - a Face object if successful
355
- #
356
- # @version SketchUp 6.0
357
- def picked_face
358
- end
359
-
360
- # The {#test_point} method is used to test a point to see if it would be
361
- # selected using the default or given pick aperture.
362
- #
363
- # There is no need to invoke {#do_pick} for this and the results are unrelated.
364
- #
365
- # @example
366
- # ph = view.pick_helper
367
- # # If testing many points this is the fastest way to test.
368
- # ph.init(x, y)
369
- # picked = ph.test_point(point)
370
- # # These do not require init()
371
- # picked = ph.test_point(point, x, y)
372
- # picked = ph.test_point(point, x, y, aperture)
373
- #
374
- # @overload test_point(point)
375
- #
376
- # This is more efficient if you want to test a lot of points using the same
377
- # screen point. But you *must* have called the {#init} method first for this
378
- # to work.
379
- # @param [Geom::Point3d] point
380
- #
381
- # @overload test_point(point, x, y, aperture = 0)
382
- #
383
- # @param [Geom::Point3d] point
384
- # @param [Integer] x
385
- # @param [Integer] y
386
- # @param [Integer] aperture
387
- #
388
- # @return [Boolean]
389
- #
390
- # @version SketchUp 6.0
391
- def test_point(*args)
392
- end
393
-
394
- # The transformation_at method is used to get a transformation at a specific
395
- # pick path index in the pick helper.
396
- #
397
- # The transformation combines the transformation of all groups, components and
398
- # images in the pick path. This transformation can be used to transform the
399
- # coordinates of the leaf entity into the coordinates of the active entities.
400
- #
401
- # @example
402
- # ph = view.pick_helper
403
- # ph.do_pick(x, y)
404
- # # Iterate all pick-routes:
405
- # pickhelper.count.times { |pick_path_index|
406
- # puts pickhelper.transformation_at(pick_path_index)
407
- # }
408
- #
409
- # @param index
410
- # The index where the transformation should be retrieved.
411
- #
412
- # @return transformation - the transformation found
413
- #
414
- # @version SketchUp 6.0
415
- def transformation_at(index)
416
- end
417
-
418
- # The view method is used to get the view associated with the PickHelper.
419
- #
420
- # @example
421
- # view = pickhelper.view
422
- #
423
- # @return view - the associated view
424
- #
425
- # @version SketchUp 6.0
426
- def view
427
- end
428
-
429
- # Used to pick a set of entities from a model based on a screen coordinate
430
- # rectangular area defined by two points. The pick criteria can be for
431
- # completely-contained or partially-contained entities, similar to how
432
- # the Selection tool works. The z value of the points passed in are ignored.
433
- #
434
- # @example
435
- # ph = Sketchup.active_model.active_view.pick_helper
436
- # start_point = Geom::Point3d.new(100, 100, 0)
437
- # end_point = Geom::Point3d.new(500, 500, 0)
438
- # num_picked = ph.window_pick(start_point, end_point, Sketchup::PickHelper::PICK_CROSSING)
439
- #
440
- # @param start_point
441
- # First screen coordinate point.
442
- #
443
- # @param end_point
444
- # Second screen coordinate point.
445
- #
446
- # @param pick_type
447
- # PICK_INSIDE to select entities completely contained or
448
- # PICK_CROSSING to select entities partially contained.
449
- #
450
- # @return The number of Entity objects picked
451
- #
452
- # @version SketchUp 2016
453
- def window_pick(start_point, end_point, pick_type)
454
- end
455
-
456
- end
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The {Sketchup::PickHelper} class is used to pick entities that reside under
5
+ # the current cursor location, similar to native Select tool. Unlike
6
+ # {Sketchup::InputPoint}, {Sketchup::PickHelper} uses no inference.
7
+ #
8
+ # Only {Sketchup::Tool}s react to cursor location and most of these methods are
9
+ # only useful in the context of a tool. For example, if you want to determine
10
+ # the entity you just clicked, you would use {#do_pick} from within your
11
+ # {Sketchup::Tool#onLButtonDown} method.
12
+ #
13
+ # You can retrieve a PickHelper object using the {Sketchup::View#pick_helper}
14
+ # method.
15
+ #
16
+ # Entities that are picked (found under the
17
+ # cursor when a mouse or keyboard event occurs), are called Pick Records and
18
+ # are placed in an indexed list.
19
+ #
20
+ # @note The same {Sketchup::Pickhelper} instance is being reused by SketchUp.
21
+ # Don't extend, add methods or redefine methods on this object as it can
22
+ # clash with other extensions.
23
+ #
24
+ # @version SketchUp 6.0
25
+ class Sketchup::PickHelper
26
+
27
+ # Constants
28
+
29
+ PICK_CROSSING = nil # Stub value.
30
+ PICK_INSIDE = nil # Stub value.
31
+
32
+ # Instance Methods
33
+
34
+ # The all_picked method is used to get an array of entities from the
35
+ # active entities from all the pick paths. Duplicates might occur if
36
+ # there are multiple pick paths for entities that ends in a group or
37
+ # component.
38
+ #
39
+ # For example, if the pick hits at the border of an edge and face
40
+ # inside a group there will be two pick paths - one for the face and
41
+ # one for the edge. Since this method returns entities from the active
42
+ # entities it would return an array with the group two times.
43
+ #
44
+ # @example
45
+ # ph = view.pick_helper
46
+ # ph.do_pick(x, y)
47
+ # entities = ph.all_picked
48
+ #
49
+ # @return elements - the array of elements in the pick.
50
+ #
51
+ # @version SketchUp 6.0
52
+ def all_picked
53
+ end
54
+
55
+ # The best_picked method is used to retrieve the "best" entity picked (entity
56
+ # that you would have picked if you were using the select tool).
57
+ #
58
+ # Returns nil if nothing was picked. You must have called do_pick
59
+ # before calling this method.
60
+ #
61
+ # @example
62
+ # ph = view.pick_helper
63
+ # ph.do_pick(x, y)
64
+ # best_entity = ph.best_picked
65
+ #
66
+ # @return entity - the best picked entity
67
+ #
68
+ # @version SketchUp 6.0
69
+ def best_picked
70
+ end
71
+
72
+ # Used to pick a set of entities from a model from a BoundingBox. The pick
73
+ # criteria can be for completely-contained or partially-contained entities,
74
+ # similar to how the Selection tool works.
75
+ #
76
+ # transformation) if num_picked > 0 Sketchup.active_model.selection.add(ph.all_picked) end
77
+ #
78
+ # @example
79
+ # boundingbox = Geom::BoundingBox.new
80
+ # boundingbox.add([1, 1, 1], [100, 100, 100])
81
+ # ph = Sketchup.active_model.active_view.pick_helper
82
+ #
83
+ # # Rotate the box 45' around the z-axis
84
+ # angle = 45
85
+ # transformation = Geom::Transformation.new(ORIGIN, Z_AXIS, angle)
86
+ #
87
+ # num_picked = ph.boundingbox_pick(boundingbox, Sketchup::PickHelper::PICK_CROSSING,
88
+ #
89
+ # @param bounding_box
90
+ # BoundingBox object defining the volume to use for picking
91
+ #
92
+ # @param pick_type
93
+ # PICK_INSIDE to select entities completely contained or
94
+ # PICK_CROSSING to select entities partially contained.
95
+ #
96
+ # @param [optional] transformation
97
+ # Transformation that will be applied to the
98
+ # volume defined by the BoundingBox that allows for a
99
+ # rotation.
100
+ #
101
+ # @return The number of Entity objects picked
102
+ #
103
+ # @version SketchUp 2016
104
+ def boundingbox_pick(bounding_box, pick_type, transformation = IDENTITY)
105
+ end
106
+
107
+ # The count method is used to count the number of entities picked (number of
108
+ # pick records)
109
+ #
110
+ # @example
111
+ # number = pickhelper.count
112
+ #
113
+ # @return number - the number of entities picked
114
+ #
115
+ # @version SketchUp 6.0
116
+ def count
117
+ end
118
+
119
+ # The depth_at method retrieves the depth of one of the currently picked
120
+ # entities in the list of pick records.
121
+ #
122
+ # @example
123
+ # pickhelper = view.pick_helper
124
+ # pickhelper.do_pick(x, y)
125
+ # # Iterate all pick-routes:
126
+ # pickhelper.count.times { |pick_path_index|
127
+ # puts pickhelper.depth_at(pick_path_index)
128
+ # }
129
+ #
130
+ # @param index
131
+ # A number from 0 to number of items picked minus one.
132
+ #
133
+ # @return integer - the depth of the entity if successful
134
+ #
135
+ # @version SketchUp 6.0
136
+ def depth_at(index)
137
+ end
138
+
139
+ # The do_pick method is used to perform the initial pick. This method is
140
+ # generally called before any other methods in the PickHelper class.
141
+ #
142
+ # Returns the number of entities picked. The x and y values are the screen
143
+ # coordinates of the point at which would want to do a pick.
144
+ #
145
+ # @example
146
+ # ph = view.pick_helpernum = ph.do_pick(x, y)
147
+ #
148
+ # @param x
149
+ # X screen coordinate for the pick.
150
+ #
151
+ # @param y
152
+ # Y screen coordinate for the pick.
153
+ #
154
+ # @param aperture
155
+ # The size of the pick-aperture.
156
+ #
157
+ # @return Integer - The number of Entity objects picked
158
+ #
159
+ # @version SketchUp 6.0
160
+ def do_pick(x, y, aperture = 0)
161
+ end
162
+
163
+ # The element_at method is used to retrieve a specific entity in the list of
164
+ # picked elements. This element will be from the active entities.
165
+ #
166
+ # Use count() to get the number of possible pick paths.
167
+ #
168
+ # @example
169
+ # pickhelper = view.pick_helper
170
+ # pickhelper.do_pick(x, y)
171
+ # # Iterate all pick-routes:
172
+ # pickhelper.count.times { |pick_path_index|
173
+ # puts pickhelper.element_at(pick_path_index)
174
+ # }
175
+ # # You would iterate the same elements in all_picked.
176
+ #
177
+ # @param index
178
+ # A number from 0 to number of items picked minus one.
179
+ #
180
+ # @return entity - the entity at the index position in the list
181
+ # of picked entities.
182
+ #
183
+ # @version SketchUp 6.0
184
+ def element_at(index)
185
+ end
186
+
187
+ # The {#init} method is used to initialize the PickHelper for testing points.
188
+ #
189
+ # You do not normally need to call this method, but you can use this if you
190
+ # want to call {#test_point} or {#pick_segment} on a lot of points.
191
+ #
192
+ # If the optional aperture is given, it is given in pixels.
193
+ #
194
+ # @example
195
+ # ph = view.pick_helper
196
+ # ph.init(x, y, 5)
197
+ # # Find all points picked by the screen click.
198
+ # selected = points.select { |point|
199
+ # ph.test_point(point)
200
+ # }
201
+ #
202
+ # @param [Integer] x
203
+ # X screen coordinate for the pick.
204
+ #
205
+ # @param [Integer] y
206
+ # Y screen coordinate for the pick.
207
+ #
208
+ # @param [Integer] aperture
209
+ # aperture in pixels.
210
+ #
211
+ # @return [PickHelper] self
212
+ #
213
+ # @version SketchUp 6.0
214
+ def init(x, y, aperture = 0)
215
+ end
216
+
217
+ # The leaf_at method retrieves the deepest thing in a pick path.
218
+ #
219
+ # For example, if you have a face that is within a component that is within
220
+ # another component, leaf_at returns the face.
221
+ #
222
+ # Use count() to get the number of possible pick paths.
223
+ #
224
+ # @example
225
+ # pickhelper = view.pick_helper
226
+ # pickhelper.do_pick(x, y)
227
+ # # Iterate all pick-routes:
228
+ # pickhelper.count.times { |pick_path_index|
229
+ # p pickhelper.leaf_at(pick_path_index)
230
+ # }
231
+ #
232
+ # @param index
233
+ # A number from 0 to number of items picked minus one.
234
+ #
235
+ # @return entity - the leaf entity
236
+ #
237
+ # @version SketchUp 6.0
238
+ def leaf_at(index)
239
+ end
240
+
241
+ # The path_at method is used to retrieve the entire path for an entity in the
242
+ # pick list (as an array).
243
+ #
244
+ # If one of the pick paths end in a face nested in a group nested in a
245
+ # component this method will return an array of these entities. The Group
246
+ # will be first and the face will be last.
247
+ #
248
+ # The first item in the array will be from the active entities and the last
249
+ # item will be a drawing element that is not a group, component or image.
250
+ #
251
+ # @example
252
+ # pickhelper = view.pick_helper
253
+ # pickhelper.do_pick(x, y)
254
+ # # Iterate all pick-routes:
255
+ # pickhelper.count.times { |pick_path_index|
256
+ # p pickhelper.path_at(pick_path_index)
257
+ # }
258
+ #
259
+ # @param index
260
+ # A number from 0 to number of items picked minus one.
261
+ #
262
+ # @return array - an array of entities including the leaf
263
+ #
264
+ # @version SketchUp 6.0
265
+ def path_at(index)
266
+ end
267
+
268
+ # The {#pick_segment} method is used to pick a segment of a polyline curve that
269
+ # is defined by an array of points.
270
+ #
271
+ # If you click on a point in a polyline curve, the index of
272
+ # the point in the curve is returned (starting at 0).
273
+ #
274
+ # If you click on a segment in the polyline curve, the index of the segment is
275
+ # returned. Segments are returned by negative indicies and start at index -1
276
+ # (for the segment connecting the first two points) and increase by a factor
277
+ # of -1 (for example, the segment connecting second and third point is -2).
278
+ #
279
+ # There is no need to invoke {#do_pick} for this and the results are unrelated.
280
+ #
281
+ # @example
282
+ # point1 = Geom::Point3d.new(0 ,0, 0)
283
+ # point2 = Geom::Point3d.new(10, 0, 0)
284
+ # segment = [point1, point2]
285
+ # ph = view.pick_helper
286
+ # # If testing many points this is the fastest way to test.
287
+ # ph.init(x, y)
288
+ # picked = ph.pick_segment(segment)
289
+ # # This do not require .init
290
+ # picked = ph.pick_segment(segment, x, y)
291
+ #
292
+ # @note The return value will be a negative index when a segment is picked.
293
+ #
294
+ # @overload pick_segment(points)
295
+ #
296
+ # This is more efficient if you need to test a number of segments for the
297
+ # same set of screen coordinates. But then you must use {#init} first.
298
+ # @param [Array<Geom::Point3d>] points A series of points in the polyline as
299
+ # a list of parameters or an array containing Point3d
300
+ # objects.
301
+ # @return [Integer, false] an index on success, +false+ on failure
302
+ #
303
+ # @overload pick_segment(points, x, y, aperture = 0)
304
+ #
305
+ # @param [Array<Geom::Point3d>] points A series of points in the polyline as
306
+ # a list of parameters or an array containing Point3d
307
+ # objects.
308
+ # @param [Integer] x screen mouse position in pixels.
309
+ # @param [Integer] y (required if x given) screen mouse position
310
+ # in pixels.
311
+ # @param aperture aperture in pixels.
312
+ # @return [Integer, false] an index on success, +false+ on failure
313
+ #
314
+ # @version SketchUp 6.0
315
+ def pick_segment(*args)
316
+ end
317
+
318
+ # The picked_edge method is used to retrieve the "best" Edge picked.
319
+ #
320
+ # Returns nil if there were no edges picked. You must have called do_pick
321
+ # before calling this method.
322
+ #
323
+ # @example
324
+ # ph = view.pick_helper
325
+ # ph.do_pick(x, y)
326
+ # edge = ph.picked_edge
327
+ #
328
+ # @return edge - an Edge object if successful
329
+ #
330
+ # @version SketchUp 6.0
331
+ def picked_edge
332
+ end
333
+
334
+ # The picked_element method retrieves the best drawing element, that is not an
335
+ # edge or a face, picked.
336
+ #
337
+ # Returns nil if nothing was picked. You must have called do_pick
338
+ # before calling this method.
339
+ #
340
+ # @example
341
+ # ph = view.pick_helper
342
+ # ph.do_pick(x, y)
343
+ # entity = ph.picked_element
344
+ #
345
+ # @param index
346
+ #
347
+ # @return element - a drawing element that is not an edge or face
348
+ # if successful
349
+ #
350
+ # @version SketchUp 6.0
351
+ def picked_element(index)
352
+ end
353
+
354
+ # The picked_face method is used to retrieve the best face picked.
355
+ #
356
+ # Returns nil if there were no faces picked. You must have called do_pick
357
+ # before calling this method.
358
+ #
359
+ # @example
360
+ # ph = view.pick_helper
361
+ # ph.do_pick(x, y)
362
+ # face = ph.picked_face
363
+ #
364
+ # @return face - a Face object if successful
365
+ #
366
+ # @version SketchUp 6.0
367
+ def picked_face
368
+ end
369
+
370
+ # The {#test_point} method is used to test a point to see if it would be
371
+ # selected using the default or given pick aperture.
372
+ #
373
+ # There is no need to invoke {#do_pick} for this and the results are unrelated.
374
+ #
375
+ # @example
376
+ # ph = view.pick_helper
377
+ # # If testing many points this is the fastest way to test.
378
+ # ph.init(x, y)
379
+ # picked = ph.test_point(point)
380
+ # # These do not require init()
381
+ # picked = ph.test_point(point, x, y)
382
+ # picked = ph.test_point(point, x, y, aperture)
383
+ #
384
+ # @overload test_point(point)
385
+ #
386
+ # This is more efficient if you want to test a lot of points using the same
387
+ # screen point. But you *must* have called the {#init} method first for this
388
+ # to work.
389
+ # @param [Geom::Point3d] point
390
+ #
391
+ # @overload test_point(point, x, y, aperture = 0)
392
+ #
393
+ # @param [Geom::Point3d] point
394
+ # @param [Integer] x
395
+ # @param [Integer] y
396
+ # @param [Integer] aperture
397
+ #
398
+ # @return [Boolean]
399
+ #
400
+ # @version SketchUp 6.0
401
+ def test_point(*args)
402
+ end
403
+
404
+ # The transformation_at method is used to get a transformation at a specific
405
+ # pick path index in the pick helper.
406
+ #
407
+ # The transformation combines the transformation of all groups, components and
408
+ # images in the pick path. This transformation can be used to transform the
409
+ # coordinates of the leaf entity into the coordinates of the active entities.
410
+ #
411
+ # @example
412
+ # pickhelper = view.pick_helper
413
+ # pickhelper.do_pick(x, y)
414
+ # # Iterate all pick-routes:
415
+ # pickhelper.count.times { |pick_path_index|
416
+ # puts pickhelper.transformation_at(pick_path_index)
417
+ # }
418
+ #
419
+ # @example Get transformation for specific picked element
420
+ # pickhelper = view.pick_helper
421
+ # pickhelper.do_pick(x, y)
422
+ # face = pickhelper.picked_face # Face may be inside a group or component.
423
+ #
424
+ # index = pickhelper.count.times.find { |i| pickhelper.leaf_at(i) == face }
425
+ # transformation = index ? pickhelper.transformation_at(index) : IDENTITY
426
+ #
427
+ # # Face#area is one method that may need a transformation.
428
+ # area = face.area(transformation)
429
+ #
430
+ # @param index
431
+ # The index where the transformation should be retrieved.
432
+ #
433
+ # @return transformation - the transformation found
434
+ #
435
+ # @version SketchUp 6.0
436
+ def transformation_at(index)
437
+ end
438
+
439
+ # The view method is used to get the view associated with the PickHelper.
440
+ #
441
+ # @example
442
+ # view = pickhelper.view
443
+ #
444
+ # @return view - the associated view
445
+ #
446
+ # @version SketchUp 6.0
447
+ def view
448
+ end
449
+
450
+ # Used to pick a set of entities from a model based on a screen coordinate
451
+ # rectangular area defined by two points. The pick criteria can be for
452
+ # completely-contained or partially-contained entities, similar to how
453
+ # the Selection tool works. The z value of the points passed in are ignored.
454
+ #
455
+ # @example
456
+ # ph = Sketchup.active_model.active_view.pick_helper
457
+ # start_point = Geom::Point3d.new(100, 100, 0)
458
+ # end_point = Geom::Point3d.new(500, 500, 0)
459
+ # num_picked = ph.window_pick(start_point, end_point, Sketchup::PickHelper::PICK_CROSSING)
460
+ #
461
+ # @param start_point
462
+ # First screen coordinate point.
463
+ #
464
+ # @param end_point
465
+ # Second screen coordinate point.
466
+ #
467
+ # @param pick_type
468
+ # PICK_INSIDE to select entities completely contained or
469
+ # PICK_CROSSING to select entities partially contained.
470
+ #
471
+ # @return The number of Entity objects picked
472
+ #
473
+ # @version SketchUp 2016
474
+ def window_pick(start_point, end_point, pick_type)
475
+ end
476
+
477
+ end