sketchup-api-stubs 0.7.9 → 0.7.11

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