sketchup-api-stubs 0.7.8 → 0.7.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +151 -148
  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 +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 -523
  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 -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 +747 -698
  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/Document.rb +517 -516
  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 -354
  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 -692
  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 +278 -278
  51. data/lib/sketchup-api-stubs/stubs/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 -169
  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 -619
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -593
  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 -426
  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 -1205
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -272
  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 -937
  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 -407
  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 -326
  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 -1651
  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 -477
  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 -260
  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 -837
  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 -75
  140. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
  141. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1311 -1317
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -45
  143. data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1377 -1360
  144. data/lib/sketchup-api-stubs/stubs/SketchupExtension.rb +353 -353
  145. data/lib/sketchup-api-stubs/stubs/String.rb +24 -24
  146. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +389 -389
  147. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +494 -496
  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 -635
  151. data/lib/sketchup-api-stubs/stubs/UI.rb +683 -683
  152. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -311
  153. data/lib/sketchup-api-stubs.rb +1 -1
  154. metadata +10 -7
@@ -1,523 +1,509 @@
1
- # Copyright:: Copyright 2022 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # The {#Geom::PolygonMesh} class contains methods to create polygon mesh
5
- # structures. This is useful if you need to write a custom importer/exporter in
6
- # Ruby that works at the level of triangulated polygons. For example, you can
7
- # determine the triangles that make up a 15-sided {#Sketchup::Face} by using
8
- # this class, or write a {#Sketchup::Importer} that reads a data file, creates
9
- # a mesh from it, and draws faces based on the mesh.
10
- #
11
- # You can construct a mesh manually using the methods of this class, or you
12
- # can get a mesh from a face by calling the {Sketchup::Face#mesh} method. See
13
- # {Sketchup::Entities#add_faces_from_mesh} for an easy way to convert a mesh
14
- # back into faces.
15
- #
16
- # @example
17
- # entities = Sketchup.active_model.active_entities
18
- # face = entities.grep(Sketchup::Face).first
19
- #
20
- # mesh = face.mesh
21
- #
22
- # group = entities.add_group
23
- # group.entities.add_faces_from_mesh(mesh)
24
- #
25
- # @note As of SketchUp 2022.0 the new {Sketchup::EntitiesBuilder} interface
26
- # can be used to generate bulk geometry. It has similar performance as
27
- # {Geom::PolygonMesh}, but with similar degree of per-entity control as
28
- # {Sketchup::Entities}.
29
- #
30
- # @see file:pages/generating_geometry.md
31
- # Guide on Generating Geometry
32
- #
33
- # @version SketchUp 6.0
34
- class Geom::PolygonMesh
35
-
36
- # Constants
37
-
38
- AUTO_SOFTEN = nil # Stub value.
39
- HIDE_BASED_ON_INDEX = nil # Stub value.
40
- NO_SMOOTH_OR_HIDE = nil # Stub value.
41
- SMOOTH_SOFT_EDGES = nil # Stub value.
42
- SOFTEN_BASED_ON_INDEX = nil # Stub value.
43
-
44
- MESH_NORMALS = nil # Stub value.
45
- MESH_POINTS = nil # Stub value.
46
- MESH_UVQ_BACK = nil # Stub value.
47
- MESH_UVQ_FRONT = nil # Stub value.
48
-
49
- # Instance Methods
50
-
51
- # The {#add_point} method is used to add a point to the mesh.
52
- #
53
- # The returned index can be used for creating polygons.
54
- #
55
- # @example
56
- # mesh = Geom::PolygonMesh.new
57
- # point = Geom::Point3d.new(0, 1, 2)
58
- # index = mesh.add_point(point)
59
- #
60
- # @note In SketchUp 2021.1 this method was improved to be faster.
61
- # See {#initialize} for details.
62
- #
63
- # @param [Geom::Point3d] point
64
- #
65
- # @return [Integer] the index in the mesh for the point
66
- #
67
- # @version SketchUp 6.0
68
- def add_point(point)
69
- end
70
-
71
- # The {#add_polygon} method is used for adding a polygon to a
72
- # {Geom::PolygonMesh}. All variations of this method require at least 3 elements
73
- # to define a polygon, although more may be given.
74
- #
75
- # @note In SketchUp 2021.1 this method was improved to be faster.
76
- # See {#initialize} for details.
77
- #
78
- # @overload add_polygon(index, index, index, ...)
79
- #
80
- # Adds a polygon from a list of the mesh's vertex indices.
81
- # @example
82
- # mesh = Geom::PolygonMesh.new
83
- # # add points to mesh...
84
- # mesh.add_point(Geom::Point3d.new(0, 0, 0))
85
- # mesh.add_point(Geom::Point3d.new(1, 0, 0))
86
- # mesh.add_point(Geom::Point3d.new(1, 1, 0))
87
- # polygon_index = mesh.add_polygon(1, 2, 3)
88
- # @param [Integer] index
89
- # An index of a vertex in the mesh. Remember that mesh indices start at 1.
90
- # @param [Integer] ...
91
- # Additional indices (optional)
92
- #
93
- # @overload add_polygon(index_array)
94
- #
95
- # Adds a polygon from an Array of the mesh's vertex indices.
96
- # @example
97
- # mesh = Geom::PolygonMesh.new
98
- # # add points to mesh...
99
- # mesh.add_point(Geom::Point3d.new(0, 0, 0))
100
- # mesh.add_point(Geom::Point3d.new(1, 0, 0))
101
- # mesh.add_point(Geom::Point3d.new(1, 1, 0))
102
- # polygon_index = mesh.add_polygon([1, 2, 3])
103
- # @param [Array<Integer>] index_array
104
- # An {Array} of point indices.
105
- #
106
- # @overload add_polygon(point3d, point3d, point3d, ...)
107
- #
108
- # Adds a polygon from a list of Point3d objects.
109
- # @example
110
- # mesh = Geom::PolygonMesh.new
111
- # point1 = Geom::Point3d.new(0, 1, 2)
112
- # point2 = Geom::Point3d.new(1, 0, 2)
113
- # point3 = Geom::Point3d.new(2, 0, 1)
114
- # polygon_index = mesh.add_polygon(point1, point2, point3)
115
- # @param [Geom::Point3d] point3d
116
- # @raise [ArgumentError] When using Arrays in place of Point3d objects.
117
- # Normally Arrays may be used in place of Point3d objects in most
118
- # SketchUp methods. This method is an exception to that rule.
119
- # @param [Geom::Point3d] ...
120
- # Additional points (optional)
121
- #
122
- # @overload add_polygon(point3d_array)
123
- #
124
- # Adds a polygon from an Array of Point3d objects.
125
- # @example
126
- # mesh = Geom::PolygonMesh.new
127
- # point1 = Geom::Point3d.new(0, 1, 2)
128
- # point2 = Geom::Point3d.new(1, 0, 2)
129
- # point3 = Geom::Point3d.new(2, 0, 1)
130
- # polygon_index = mesh.add_polygon([point1, point2, point3])
131
- # @param [Array<Geom::Point3d>] point3d_array
132
- #
133
- # @overload add_polygon(array)
134
- #
135
- # Adds a polygon from an Array of 3-element Arrays.
136
- # @example
137
- # pts = [[0, 0, 0], [1, 0, 0], [1, 1, 0], [0.5, 2, 0], [0, 1, 0]]
138
- # mesh = Geom::PolygonMesh.new
139
- # polygon_index = mesh.add_polygon(pts)
140
- # Sketchup.active_model.entities.add_faces_from_mesh(mesh)
141
- # @param [Array<Array(3)>] array
142
- # An array of arrays of length 3, where the inner arrays are used as if
143
- # they were Point3d objects.
144
- #
145
- # @return [Integer] The index of the polygon in the mesh.
146
- #
147
- # @return [0] Invalid index. Returned if the method failed to create a
148
- # polygon.
149
- #
150
- # @version SketchUp 6.0
151
- def add_polygon(*args)
152
- end
153
-
154
- # The {#count_points} method is used to count the number of points in a mesh.
155
- #
156
- # @example
157
- # mesh = Geom::PolygonMesh.new
158
- # point = Geom::Point3d.new(0, 1, 2)
159
- # mesh.add_point(point)
160
- # num = mesh.count_points
161
- #
162
- # @return [Integer] the number of points in a mesh
163
- #
164
- # @version SketchUp 6.0
165
- def count_points
166
- end
167
-
168
- # The {#count_polygons} count the number of polygons in the mesh.
169
- #
170
- # @example
171
- # mesh = Geom::PolygonMesh.new
172
- # point1 = Geom::Point3d.new(0, 1, 2)
173
- # point2 = Geom::Point3d.new(1, 0, 2)
174
- # point3 = Geom::Point3d.new(2, 0, 1)
175
- # mesh.add_polygon(point1, point2, point3)
176
- # nump = mesh.count_polygons
177
- #
178
- # @return [Integer] the number of polygons in the mesh
179
- #
180
- # @version SketchUp 6.0
181
- def count_polygons
182
- end
183
-
184
- # Create a new empty polygon mesh.
185
- #
186
- # The number of points and polygons are optional and are used as a hint to
187
- # decide how much space to pre-allocate to speed up adding points and polygons.
188
- #
189
- # As of SketchUp 2021.1 the performance of looking up and inserting points is
190
- # significantly better provided the mesh was initialized with roughly the
191
- # correct number of total points.
192
- #
193
- # @example
194
- # mesh = Geom::PolygonMesh.new
195
- #
196
- # @note When creating a mesh with normals and/or UVQ data it's critical that
197
- # the number of points estimated is equal to or higher than the final number
198
- # of points added. If fewer points are estimated the normals and UVQ data
199
- # might end up out of sync.
200
- #
201
- # @overload initialize
202
- #
203
- # @return [Geom::PolygonMesh]
204
- #
205
- # @overload initialize(numpts)
206
- #
207
- # @param [Integer] numpts How many points will be in the mesh.
208
- # @return [Geom::PolygonMesh]
209
- #
210
- # @overload initialize(numpts, numpolys)
211
- #
212
- # @param [Integer] numpts How many points will be in the mesh.
213
- # @param [Integer] numpolys How many polygons will be in the mesh.
214
- # @return [Geom::PolygonMesh]
215
- #
216
- # @raise [RangeError] If number of points or polygons are negative numbers.
217
- #
218
- # @version SketchUp 6.0
219
- def initialize(*args)
220
- end
221
-
222
- # The {#normal_at} method is used to determine the vertex normal at a
223
- # particular index in the mesh. This only works for meshes retrieved from
224
- # {Sketchup::Face#mesh} with the +PolygonMeshNormals+ flag.
225
- #
226
- # @example
227
- # flags = 4 # PolygonMeshNormals
228
- # mesh = face.mesh(flags)
229
- # normal = mesh.normal_at(1)
230
- #
231
- # @note Index starts at 1.
232
- #
233
- # @param [Integer] index
234
- # The index in the mesh for the vertex normal to be
235
- # retrieved
236
- #
237
- # @return [Geom::Vector3d, nil]
238
- #
239
- # @version SketchUp 6.0
240
- def normal_at(index)
241
- end
242
-
243
- # The {#point_at} method is used to retrieve the point at a specific index in
244
- # the mesh.
245
- #
246
- # @example
247
- # mesh = Geom::PolygonMesh.new
248
- # point1 = Geom::Point3d.new(0, 1, 2)
249
- # point2 = Geom::Point3d.new(10, 20, 30)
250
- # mesh.add_point(point1)
251
- # mesh.add_point(point2)
252
- # point_from_index = mesh.point_at(1)
253
- #
254
- # @note Index starts at 1.
255
- #
256
- # @param [Integer] index
257
- # The index in the mesh for the point to be retrieved
258
- #
259
- # @return [Geom::Point3d, nil]
260
- #
261
- # @version SketchUp 6.0
262
- def point_at(index)
263
- end
264
-
265
- # The {#point_index} method is used to retrieve the index of a point in the
266
- # mesh.
267
- #
268
- # @example
269
- # mesh = Geom::PolygonMesh.new
270
- # point1 = Geom::Point3d.new(0, 1, 2)
271
- # point2 = Geom::Point3d.new(10, 20, 30)
272
- # mesh.add_point(point1)
273
- # mesh.add_point(point2)
274
- # index = mesh.point_index(point2)
275
- #
276
- # @note Returns 0 if point is not found.
277
- #
278
- # @param [Geom::Point3d] point
279
- #
280
- # @return [Integer] the index in the mesh for the {Geom::Point3d} object
281
- #
282
- # @version SketchUp 6.0
283
- def point_index(point)
284
- end
285
-
286
- # The {#points} method is used to retrieve an array of points (vertices) in the
287
- # mesh
288
- #
289
- # @example
290
- # mesh = Geom::PolygonMesh.new
291
- # point1 = Geom::Point3d.new(0, 1, 2)
292
- # point2 = Geom::Point3d.new(10, 20, 30)
293
- # mesh.add_point(point1)
294
- # mesh.add_point(point2)
295
- # # Returns array of points in the mesh.
296
- # points = mesh.points
297
- #
298
- # @return [Array<Geom::Point3d>]
299
- #
300
- # @version SketchUp 6.0
301
- def points
302
- end
303
-
304
- # The {#polygon_at} method is used to retrieve an array of vertex index values
305
- # for a polygon at a specific index.
306
- #
307
- # @example
308
- # mesh = Geom::PolygonMesh.new
309
- # point1 = Geom::Point3d.new(0, 1, 2)
310
- # point2 = Geom::Point3d.new(1, 0, 2)
311
- # point3 = Geom::Point3d.new(2, 0, 1)
312
- # index = mesh.add_polygon(point1, point2, point3)
313
- # polygon = mesh.polygon_at(index)
314
- #
315
- # @note Index starts at 1.
316
- #
317
- # @note The returned array can contain negative
318
- # values with the sign indicating a hidden edge. For example, a return value
319
- # of +[-1, 2, 3]+ indicates that the edge from +1+ to +2+ is hidden. The
320
- # negative values should not be used as an index for {#point_at}, take the
321
- # absolute value of the index value in the polygon array. So if you
322
- # get +[-1, 2,3]+ use +1+ as the argument to {#point_at}.
323
- #
324
- # @param [Integer] index
325
- # The index of the desired polygon.
326
- #
327
- # @return [Array<Geom::Point3d>, nil]
328
- #
329
- # @version SketchUp 6.0
330
- def polygon_at(index)
331
- end
332
-
333
- # The {#polygon_points_at} method is used to retrieve the points for a polygon
334
- # that is at a specific index in the mesh.
335
- #
336
- # @example
337
- # mesh = Geom::PolygonMesh.new
338
- # point1 = Geom::Point3d.new(0, 1, 2)
339
- # point2 = Geom::Point3d.new(1, 0, 2)
340
- # point3 = Geom::Point3d.new(2, 0, 1)
341
- # index = mesh.add_polygon(point1, point2, point3)
342
- # points = mesh.polygon_points_at(index)
343
- #
344
- # @note Index starts at 1.
345
- #
346
- # @param [Integer] index
347
- # An index for a polygon in the mesh.
348
- #
349
- # @return [Array<Geom::Point3d>, nil]
350
- #
351
- # @version SketchUp 6.0
352
- def polygon_points_at(index)
353
- end
354
-
355
- # The {#polygons} method is used to retrieve an array of all polygons in the
356
- # mesh.
357
- #
358
- # The returned array contains an array that can have a negative value with the
359
- # sign indicating a hidden edge. For example, a return value of +[-1, 2, 3]+
360
- # indicates that the edge from +1+ to +2+ is hidden.
361
- #
362
- # @example
363
- # polygons = polygonmesh.polygons
364
- #
365
- # @return [Array<Array<Integer>>, Array<nil>]
366
- #
367
- # @version SketchUp 6.0
368
- def polygons
369
- end
370
-
371
- # The {#set_point} method is used to set the point at a specific index in the
372
- # mesh.
373
- #
374
- # @example
375
- # mesh = Geom::PolygonMesh.new
376
- # point1 = Geom::Point3d.new(0, 1, 2)
377
- # point2 = Geom::Point3d.new(10, 20, 30)
378
- # index = mesh.add_point(point1)
379
- # mesh.set_point(index, point2)
380
- #
381
- # @note Index starts at 1.
382
- #
383
- # @param [Integer] index
384
- # The index where the point will be set.
385
- #
386
- # @param [Geom::Point3d] point
387
- # A Point3d object to set at the index.
388
- #
389
- # @return [Geom::PolygonMesh]
390
- #
391
- # @version SketchUp 6.0
392
- def set_point(index, point)
393
- end
394
-
395
- # The {#set_uv} method is used to define UV mapping coordinates to points in
396
- # the mesh.
397
- #
398
- # Beware that the polygons connected to the point will share UV coordiates so
399
- # UV mapping coordinates needs to be continuous across the polygon mesh.
400
- #
401
- # When setting the UV for a point one need to make sure to have the correct
402
- # index for the point. It's therefore best to add the points using {#add_point}
403
- # and use the index it returns for following calls to set_uv and
404
- # {#add_polygon}.
405
- #
406
- # If you are not able to calculate how many points there will be in your mesh
407
- # make sure to not specify an index in {#set_uv} higher than the number of
408
- # times you have called {#set_uv}.
409
- #
410
- # @example
411
- # mesh = Geom::PolygonMesh.new(4)
412
- # # Create points for a triangle.
413
- # point1 = Geom::Point3d.new(0, 0, 0)
414
- # point2 = Geom::Point3d.new(9, 0, 0)
415
- # point3 = Geom::Point3d.new(9, 9, 0)
416
- # point4 = Geom::Point3d.new(0, 9, 0)
417
- # # Create UV mapping to tile 2x cross triangle.
418
- # uv1 = Geom::Point3d.new(0, 0, 0)
419
- # uv2 = Geom::Point3d.new(2, 0, 0)
420
- # uv3 = Geom::Point3d.new(2, 2, 0)
421
- # uv4 = Geom::Point3d.new(0, 2, 0)
422
- # # Add points and UV data to mesh.
423
- # index1 = mesh.add_point(point1)
424
- # index2 = mesh.add_point(point2)
425
- # index3 = mesh.add_point(point3)
426
- # index4 = mesh.add_point(point4)
427
- # mesh.set_uv(index1, uv1, true)
428
- # mesh.set_uv(index2, uv2, true)
429
- # mesh.set_uv(index3, uv3, true)
430
- # mesh.set_uv(index4, uv4, true)
431
- # # Add polygons.
432
- # mesh.add_polygon(index1, index2, index3)
433
- # mesh.add_polygon(index1, index3, index4)
434
- #
435
- # @note If you don't specify how many points you will be adding to the mesh
436
- # when you initiate it you may risk the UV data becoming out of sync.
437
- #
438
- # @note Index starts at 1.
439
- #
440
- # @param [Integer] index
441
- # An Integer representing the UV index.
442
- #
443
- # @param [Geom::Point3d] point
444
- # A Point3d object representing UV coordinates.
445
- #
446
- # @param [Boolean] front
447
- # A boolean representing the front or back.
448
- #
449
- # @return [nil]
450
- #
451
- # @version SketchUp 2014
452
- def set_uv(index, point, front)
453
- end
454
-
455
- # The {#transform!} method is used to apply a transformation to a mesh.
456
- #
457
- # @example
458
- # point1 = Geom::Point3d.new(100, 200, 300)
459
- # tr = Geom::Transformation.new(point1)
460
- # mesh = Geom::PolygonMesh.new
461
- # point2 = Geom::Point3d.new(0, 1, 2)
462
- # mesh.add_point(point2)
463
- # mesh.transform!(tr)
464
- #
465
- # @param [Geom::Transformation] transformation
466
- #
467
- # @return [Geom::PolygonMesh]
468
- #
469
- # @version SketchUp 6.0
470
- def transform!(transformation)
471
- end
472
-
473
- # The {#uv_at} method is used to access a uv (texture coordinates) at a
474
- # specific index.
475
- #
476
- # "UVs" is a way of referring to the u,v texture coordinates (as
477
- # opposed to the X, Y, and Z axis that you construct your meshes on), which
478
- # are points defining 1-by-1 positions within an image. These coordinates
479
- # connect to points in your 3D model, to position an image texture onto it's
480
- # surface (similar to virtual "thumb tacks")
481
- #
482
- # These coordinates pin an exact spot on an image that you wish to use to
483
- # texture your model to a specific point on an object's surface. Between these
484
- # points, your software will stretch the image smoothly. This is what is
485
- # referred to as UV mapping.
486
- #
487
- # @example
488
- # point = mesh.uv_at(1, true)
489
- #
490
- # @note Index starts at 1.
491
- #
492
- # @param [Integer] index
493
- # The index for the texture coordinate.
494
- #
495
- # @param [Boolean] front
496
- # Set to +true+ to get the UV for the front size,
497
- # +false+ for the back side.
498
- #
499
- # @return [Geom::Point3d, nil] a Point3d object where the x equals the u
500
- # value and the y equals the v value.
501
- # Returns nil on failure.
502
- #
503
- # @version SketchUp 6.0
504
- def uv_at(index, front)
505
- end
506
-
507
- # The {#uvs} method is used to retrieve an array of uv coordinates in the
508
- # mesh.
509
- #
510
- # @example
511
- # # Get a mesh with front and back UVs.
512
- # mesh = face.mesh(1 | 2)
513
- # uvs = mesh.uvs(true)
514
- #
515
- # @param [Boolean] front
516
- #
517
- # @return [Array<Geom::Point3d>]
518
- #
519
- # @version SketchUp 6.0
520
- def uvs(front)
521
- end
522
-
523
- end
1
+ # Copyright:: Copyright 2023 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The {#Geom::PolygonMesh} class contains methods to create polygon mesh
5
+ # structures. This is useful if you need to write a custom importer/exporter in
6
+ # Ruby that works at the level of triangulated polygons. For example, you can
7
+ # determine the triangles that make up a 15-sided {#Sketchup::Face} by using
8
+ # this class, or write a {#Sketchup::Importer} that reads a data file, creates
9
+ # a mesh from it, and draws faces based on the mesh.
10
+ #
11
+ # You can construct a mesh manually using the methods of this class, or you
12
+ # can get a mesh from a face by calling the {Sketchup::Face#mesh} method. See
13
+ # {Sketchup::Entities#add_faces_from_mesh} for an easy way to convert a mesh
14
+ # back into faces.
15
+ #
16
+ # @example
17
+ # entities = Sketchup.active_model.active_entities
18
+ # face = entities.grep(Sketchup::Face).first
19
+ #
20
+ # mesh = face.mesh
21
+ #
22
+ # group = entities.add_group
23
+ # group.entities.add_faces_from_mesh(mesh)
24
+ #
25
+ # @note As of SketchUp 2022.0 the new {Sketchup::EntitiesBuilder} interface
26
+ # can be used to generate bulk geometry. It has similar performance as
27
+ # {Geom::PolygonMesh}, but with similar degree of per-entity control as
28
+ # {Sketchup::Entities}.
29
+ #
30
+ # @see file:pages/generating_geometry.md
31
+ # Guide on Generating Geometry
32
+ #
33
+ # @version SketchUp 6.0
34
+ class Geom::PolygonMesh
35
+
36
+ # Constants
37
+
38
+ AUTO_SOFTEN = nil # Stub value.
39
+ HIDE_BASED_ON_INDEX = nil # Stub value.
40
+ NO_SMOOTH_OR_HIDE = nil # Stub value.
41
+ SMOOTH_SOFT_EDGES = nil # Stub value.
42
+ SOFTEN_BASED_ON_INDEX = nil # Stub value.
43
+
44
+ MESH_NORMALS = nil # Stub value.
45
+ MESH_POINTS = nil # Stub value.
46
+ MESH_UVQ_BACK = nil # Stub value.
47
+ MESH_UVQ_FRONT = nil # Stub value.
48
+
49
+ # Instance Methods
50
+
51
+ # The {#add_point} method is used to add a point to the mesh.
52
+ #
53
+ # The returned index can be used for creating polygons.
54
+ #
55
+ # @example
56
+ # mesh = Geom::PolygonMesh.new
57
+ # point = Geom::Point3d.new(0, 1, 2)
58
+ # index = mesh.add_point(point)
59
+ #
60
+ # @note In SketchUp 2021.1 this method was improved to be faster.
61
+ # See {#initialize} for details.
62
+ #
63
+ # @param [Geom::Point3d] point
64
+ #
65
+ # @return [Integer] the index in the mesh for the point
66
+ #
67
+ # @version SketchUp 6.0
68
+ def add_point(point)
69
+ end
70
+
71
+ # The {#add_polygon} method is used for adding a polygon to a
72
+ # {Geom::PolygonMesh}. All variations of this method require at least 3 elements
73
+ # to define a polygon, although more may be given.
74
+ #
75
+ # @note In SketchUp 2021.1 this method was improved to be faster.
76
+ # See {#initialize} for details.
77
+ #
78
+ # @overload add_polygon(index, index, index, ...)
79
+ #
80
+ # Adds a polygon from a list of the mesh's vertex indices.
81
+ # @example
82
+ # mesh = Geom::PolygonMesh.new
83
+ # # add points to mesh...
84
+ # mesh.add_point(Geom::Point3d.new(0, 0, 0))
85
+ # mesh.add_point(Geom::Point3d.new(1, 0, 0))
86
+ # mesh.add_point(Geom::Point3d.new(1, 1, 0))
87
+ # polygon_index = mesh.add_polygon(1, 2, 3)
88
+ # @param [Integer] index
89
+ # An index of a vertex in the mesh. Remember that mesh indices start at 1.
90
+ # @param [Integer] ...
91
+ # Additional indices (optional)
92
+ #
93
+ # @overload add_polygon(index_array)
94
+ #
95
+ # Adds a polygon from an Array of the mesh's vertex indices.
96
+ # @example
97
+ # mesh = Geom::PolygonMesh.new
98
+ # # add points to mesh...
99
+ # mesh.add_point(Geom::Point3d.new(0, 0, 0))
100
+ # mesh.add_point(Geom::Point3d.new(1, 0, 0))
101
+ # mesh.add_point(Geom::Point3d.new(1, 1, 0))
102
+ # polygon_index = mesh.add_polygon([1, 2, 3])
103
+ # @param [Array<Integer>] index_array
104
+ # An {Array} of point indices.
105
+ #
106
+ # @overload add_polygon(point3d, point3d, point3d, ...)
107
+ #
108
+ # Adds a polygon from a list of Point3d objects.
109
+ # @example
110
+ # mesh = Geom::PolygonMesh.new
111
+ # point1 = Geom::Point3d.new(0, 1, 2)
112
+ # point2 = Geom::Point3d.new(1, 0, 2)
113
+ # point3 = Geom::Point3d.new(2, 0, 1)
114
+ # polygon_index = mesh.add_polygon(point1, point2, point3)
115
+ # @param [Geom::Point3d] point3d
116
+ # @raise [ArgumentError] When using Arrays in place of Point3d objects.
117
+ # Normally Arrays may be used in place of Point3d objects in most
118
+ # SketchUp methods. This method is an exception to that rule.
119
+ # @param [Geom::Point3d] ...
120
+ # Additional points (optional)
121
+ #
122
+ # @overload add_polygon(point3d_array)
123
+ #
124
+ # Adds a polygon from an Array of Point3d objects.
125
+ # @example
126
+ # mesh = Geom::PolygonMesh.new
127
+ # point1 = Geom::Point3d.new(0, 1, 2)
128
+ # point2 = Geom::Point3d.new(1, 0, 2)
129
+ # point3 = Geom::Point3d.new(2, 0, 1)
130
+ # polygon_index = mesh.add_polygon([point1, point2, point3])
131
+ # @param [Array<Geom::Point3d>] point3d_array
132
+ #
133
+ # @return [Integer] The 1-based index of the polygon in the mesh. +0+
134
+ # is returned if the method failed to create a polygon.
135
+ #
136
+ # @version SketchUp 6.0
137
+ def add_polygon(*args)
138
+ end
139
+
140
+ # The {#count_points} method is used to count the number of points in a mesh.
141
+ #
142
+ # @example
143
+ # mesh = Geom::PolygonMesh.new
144
+ # point = Geom::Point3d.new(0, 1, 2)
145
+ # mesh.add_point(point)
146
+ # num = mesh.count_points
147
+ #
148
+ # @return [Integer] the number of points in a mesh
149
+ #
150
+ # @version SketchUp 6.0
151
+ def count_points
152
+ end
153
+
154
+ # The {#count_polygons} count the number of polygons in the mesh.
155
+ #
156
+ # @example
157
+ # mesh = Geom::PolygonMesh.new
158
+ # point1 = Geom::Point3d.new(0, 1, 2)
159
+ # point2 = Geom::Point3d.new(1, 0, 2)
160
+ # point3 = Geom::Point3d.new(2, 0, 1)
161
+ # mesh.add_polygon(point1, point2, point3)
162
+ # nump = mesh.count_polygons
163
+ #
164
+ # @return [Integer] the number of polygons in the mesh
165
+ #
166
+ # @version SketchUp 6.0
167
+ def count_polygons
168
+ end
169
+
170
+ # Create a new empty polygon mesh.
171
+ #
172
+ # The number of points and polygons are optional and are used as a hint to
173
+ # decide how much space to pre-allocate to speed up adding points and polygons.
174
+ #
175
+ # As of SketchUp 2021.1 the performance of looking up and inserting points is
176
+ # significantly better provided the mesh was initialized with roughly the
177
+ # correct number of total points.
178
+ #
179
+ # @example
180
+ # mesh = Geom::PolygonMesh.new
181
+ #
182
+ # @note When creating a mesh with normals and/or UVQ data it's critical that
183
+ # the number of points estimated is equal to or higher than the final number
184
+ # of points added. If fewer points are estimated the normals and UVQ data
185
+ # might end up out of sync.
186
+ #
187
+ # @overload initialize
188
+ #
189
+ # @return [Geom::PolygonMesh]
190
+ #
191
+ # @overload initialize(numpts)
192
+ #
193
+ # @param [Integer] numpts How many points will be in the mesh.
194
+ # @return [Geom::PolygonMesh]
195
+ #
196
+ # @overload initialize(numpts, numpolys)
197
+ #
198
+ # @param [Integer] numpts How many points will be in the mesh.
199
+ # @param [Integer] numpolys How many polygons will be in the mesh.
200
+ # @return [Geom::PolygonMesh]
201
+ #
202
+ # @raise [RangeError] If number of points or polygons are negative numbers.
203
+ #
204
+ # @version SketchUp 6.0
205
+ def initialize(*args)
206
+ end
207
+
208
+ # The {#normal_at} method is used to determine the vertex normal at a
209
+ # particular index in the mesh. This only works for meshes retrieved from
210
+ # {Sketchup::Face#mesh} with the +PolygonMeshNormals+ flag.
211
+ #
212
+ # @example
213
+ # flags = 4 # PolygonMeshNormals
214
+ # mesh = face.mesh(flags)
215
+ # normal = mesh.normal_at(1)
216
+ #
217
+ # @note Index starts at 1.
218
+ #
219
+ # @param [Integer] index
220
+ # The index in the mesh for the vertex normal to be
221
+ # retrieved
222
+ #
223
+ # @return [Geom::Vector3d, nil]
224
+ #
225
+ # @version SketchUp 6.0
226
+ def normal_at(index)
227
+ end
228
+
229
+ # The {#point_at} method is used to retrieve the point at a specific index in
230
+ # the mesh.
231
+ #
232
+ # @example
233
+ # mesh = Geom::PolygonMesh.new
234
+ # point1 = Geom::Point3d.new(0, 1, 2)
235
+ # point2 = Geom::Point3d.new(10, 20, 30)
236
+ # mesh.add_point(point1)
237
+ # mesh.add_point(point2)
238
+ # point_from_index = mesh.point_at(1)
239
+ #
240
+ # @note Index starts at 1.
241
+ #
242
+ # @param [Integer] index
243
+ # The index in the mesh for the point to be retrieved
244
+ #
245
+ # @return [Geom::Point3d, nil]
246
+ #
247
+ # @version SketchUp 6.0
248
+ def point_at(index)
249
+ end
250
+
251
+ # The {#point_index} method is used to retrieve the index of a point in the
252
+ # mesh.
253
+ #
254
+ # @example
255
+ # mesh = Geom::PolygonMesh.new
256
+ # point1 = Geom::Point3d.new(0, 1, 2)
257
+ # point2 = Geom::Point3d.new(10, 20, 30)
258
+ # mesh.add_point(point1)
259
+ # mesh.add_point(point2)
260
+ # index = mesh.point_index(point2)
261
+ #
262
+ # @note Returns 0 if point is not found.
263
+ #
264
+ # @param [Geom::Point3d] point
265
+ #
266
+ # @return [Integer] the index in the mesh for the {Geom::Point3d} object
267
+ #
268
+ # @version SketchUp 6.0
269
+ def point_index(point)
270
+ end
271
+
272
+ # The {#points} method is used to retrieve an array of points (vertices) in the
273
+ # mesh
274
+ #
275
+ # @example
276
+ # mesh = Geom::PolygonMesh.new
277
+ # point1 = Geom::Point3d.new(0, 1, 2)
278
+ # point2 = Geom::Point3d.new(10, 20, 30)
279
+ # mesh.add_point(point1)
280
+ # mesh.add_point(point2)
281
+ # # Returns array of points in the mesh.
282
+ # points = mesh.points
283
+ #
284
+ # @return [Array<Geom::Point3d>]
285
+ #
286
+ # @version SketchUp 6.0
287
+ def points
288
+ end
289
+
290
+ # The {#polygon_at} method is used to retrieve an array of vertex index values
291
+ # for a polygon at a specific index.
292
+ #
293
+ # @example
294
+ # mesh = Geom::PolygonMesh.new
295
+ # point1 = Geom::Point3d.new(0, 1, 2)
296
+ # point2 = Geom::Point3d.new(1, 0, 2)
297
+ # point3 = Geom::Point3d.new(2, 0, 1)
298
+ # index = mesh.add_polygon(point1, point2, point3)
299
+ # polygon = mesh.polygon_at(index)
300
+ #
301
+ # @note Index starts at 1.
302
+ #
303
+ # @note The returned array can contain negative
304
+ # values with the sign indicating a hidden edge. For example, a return value
305
+ # of +[-1, 2, 3]+ indicates that the edge from +1+ to +2+ is hidden. The
306
+ # negative values should not be used as an index for {#point_at}, take the
307
+ # absolute value of the index value in the polygon array. So if you
308
+ # get +[-1, 2,3]+ use +1+ as the argument to {#point_at}.
309
+ #
310
+ # @param [Integer] index
311
+ # The index of the desired polygon.
312
+ #
313
+ # @return [Array<Geom::Point3d>, nil]
314
+ #
315
+ # @version SketchUp 6.0
316
+ def polygon_at(index)
317
+ end
318
+
319
+ # The {#polygon_points_at} method is used to retrieve the points for a polygon
320
+ # that is at a specific index in the mesh.
321
+ #
322
+ # @example
323
+ # mesh = Geom::PolygonMesh.new
324
+ # point1 = Geom::Point3d.new(0, 1, 2)
325
+ # point2 = Geom::Point3d.new(1, 0, 2)
326
+ # point3 = Geom::Point3d.new(2, 0, 1)
327
+ # index = mesh.add_polygon(point1, point2, point3)
328
+ # points = mesh.polygon_points_at(index)
329
+ #
330
+ # @note Index starts at 1.
331
+ #
332
+ # @param [Integer] index
333
+ # An index for a polygon in the mesh.
334
+ #
335
+ # @return [Array<Geom::Point3d>, nil]
336
+ #
337
+ # @version SketchUp 6.0
338
+ def polygon_points_at(index)
339
+ end
340
+
341
+ # The {#polygons} method is used to retrieve an array of all polygons in the
342
+ # mesh.
343
+ #
344
+ # The returned array contains an array that can have a negative value with the
345
+ # sign indicating a hidden edge. For example, a return value of +[-1, 2, 3]+
346
+ # indicates that the edge from +1+ to +2+ is hidden.
347
+ #
348
+ # @example
349
+ # polygons = polygonmesh.polygons
350
+ #
351
+ # @return [Array<Array<Integer>>]
352
+ #
353
+ # @version SketchUp 6.0
354
+ def polygons
355
+ end
356
+
357
+ # The {#set_point} method is used to set the point at a specific index in the
358
+ # mesh.
359
+ #
360
+ # @example
361
+ # mesh = Geom::PolygonMesh.new
362
+ # point1 = Geom::Point3d.new(0, 1, 2)
363
+ # point2 = Geom::Point3d.new(10, 20, 30)
364
+ # index = mesh.add_point(point1)
365
+ # mesh.set_point(index, point2)
366
+ #
367
+ # @note Index starts at 1.
368
+ #
369
+ # @param [Integer] index
370
+ # The index where the point will be set.
371
+ #
372
+ # @param [Geom::Point3d] point
373
+ # A Point3d object to set at the index.
374
+ #
375
+ # @return [Geom::PolygonMesh]
376
+ #
377
+ # @version SketchUp 6.0
378
+ def set_point(index, point)
379
+ end
380
+
381
+ # The {#set_uv} method is used to define UV mapping coordinates to points in
382
+ # the mesh.
383
+ #
384
+ # Beware that the polygons connected to the point will share UV coordiates so
385
+ # UV mapping coordinates needs to be continuous across the polygon mesh.
386
+ #
387
+ # When setting the UV for a point one need to make sure to have the correct
388
+ # index for the point. It's therefore best to add the points using {#add_point}
389
+ # and use the index it returns for following calls to set_uv and
390
+ # {#add_polygon}.
391
+ #
392
+ # If you are not able to calculate how many points there will be in your mesh
393
+ # make sure to not specify an index in {#set_uv} higher than the number of
394
+ # times you have called {#set_uv}.
395
+ #
396
+ # @example
397
+ # mesh = Geom::PolygonMesh.new(4)
398
+ # # Create points for a triangle.
399
+ # point1 = Geom::Point3d.new(0, 0, 0)
400
+ # point2 = Geom::Point3d.new(9, 0, 0)
401
+ # point3 = Geom::Point3d.new(9, 9, 0)
402
+ # point4 = Geom::Point3d.new(0, 9, 0)
403
+ # # Create UV mapping to tile 2x cross triangle.
404
+ # uv1 = Geom::Point3d.new(0, 0, 0)
405
+ # uv2 = Geom::Point3d.new(2, 0, 0)
406
+ # uv3 = Geom::Point3d.new(2, 2, 0)
407
+ # uv4 = Geom::Point3d.new(0, 2, 0)
408
+ # # Add points and UV data to mesh.
409
+ # index1 = mesh.add_point(point1)
410
+ # index2 = mesh.add_point(point2)
411
+ # index3 = mesh.add_point(point3)
412
+ # index4 = mesh.add_point(point4)
413
+ # mesh.set_uv(index1, uv1, true)
414
+ # mesh.set_uv(index2, uv2, true)
415
+ # mesh.set_uv(index3, uv3, true)
416
+ # mesh.set_uv(index4, uv4, true)
417
+ # # Add polygons.
418
+ # mesh.add_polygon(index1, index2, index3)
419
+ # mesh.add_polygon(index1, index3, index4)
420
+ #
421
+ # @note If you don't specify how many points you will be adding to the mesh
422
+ # when you initiate it you may risk the UV data becoming out of sync.
423
+ #
424
+ # @note Index starts at 1.
425
+ #
426
+ # @param [Integer] index
427
+ # An Integer representing the UV index.
428
+ #
429
+ # @param [Geom::Point3d] point
430
+ # A Point3d object representing UV coordinates.
431
+ #
432
+ # @param [Boolean] front
433
+ # A boolean representing the front or back.
434
+ #
435
+ # @return [nil]
436
+ #
437
+ # @version SketchUp 2014
438
+ def set_uv(index, point, front)
439
+ end
440
+
441
+ # The {#transform!} method is used to apply a transformation to a mesh.
442
+ #
443
+ # @example
444
+ # point1 = Geom::Point3d.new(100, 200, 300)
445
+ # tr = Geom::Transformation.new(point1)
446
+ # mesh = Geom::PolygonMesh.new
447
+ # point2 = Geom::Point3d.new(0, 1, 2)
448
+ # mesh.add_point(point2)
449
+ # mesh.transform!(tr)
450
+ #
451
+ # @param [Geom::Transformation] transformation
452
+ #
453
+ # @return [Geom::PolygonMesh]
454
+ #
455
+ # @version SketchUp 6.0
456
+ def transform!(transformation)
457
+ end
458
+
459
+ # The {#uv_at} method is used to access a uv (texture coordinates) at a
460
+ # specific index.
461
+ #
462
+ # "UVs" is a way of referring to the u,v texture coordinates (as
463
+ # opposed to the X, Y, and Z axis that you construct your meshes on), which
464
+ # are points defining 1-by-1 positions within an image. These coordinates
465
+ # connect to points in your 3D model, to position an image texture onto it's
466
+ # surface (similar to virtual "thumb tacks")
467
+ #
468
+ # These coordinates pin an exact spot on an image that you wish to use to
469
+ # texture your model to a specific point on an object's surface. Between these
470
+ # points, your software will stretch the image smoothly. This is what is
471
+ # referred to as UV mapping.
472
+ #
473
+ # @example
474
+ # point = mesh.uv_at(1, true)
475
+ #
476
+ # @note Index starts at 1.
477
+ #
478
+ # @param [Integer] index
479
+ # The index for the texture coordinate.
480
+ #
481
+ # @param [Boolean] front
482
+ # Set to +true+ to get the UV for the front size,
483
+ # +false+ for the back side.
484
+ #
485
+ # @return [Geom::Point3d, nil] a Point3d object where the x equals the u
486
+ # value and the y equals the v value.
487
+ # Returns nil on failure.
488
+ #
489
+ # @version SketchUp 6.0
490
+ def uv_at(index, front)
491
+ end
492
+
493
+ # The {#uvs} method is used to retrieve an array of uv coordinates in the
494
+ # mesh.
495
+ #
496
+ # @example
497
+ # # Get a mesh with front and back UVs.
498
+ # mesh = face.mesh(1 | 2)
499
+ # uvs = mesh.uvs(true)
500
+ #
501
+ # @param [Boolean] front
502
+ #
503
+ # @return [Array<Geom::Point3d>]
504
+ #
505
+ # @version SketchUp 6.0
506
+ def uvs(front)
507
+ end
508
+
509
+ end