sketchup-api-stubs 0.7.9 → 0.7.10

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 -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 +172 -172
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +509 -509
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +476 -476
  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 -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/Document.rb +569 -517
  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 +356 -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 +459 -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 -82
  43. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +714 -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 +226 -209
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +150 -150
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -281
  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 -121
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +659 -659
  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 -449
  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 -406
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -397
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1242 -1239
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -261
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +519 -545
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -125
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +937 -937
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -102
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +750 -750
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +282 -282
  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 -406
  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 -114
  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 -317
  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 +1656 -1652
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +357 -357
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +130 -130
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -271
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +490 -490
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +116 -116
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +797 -797
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +361 -361
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +480 -478
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +373 -361
  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 -458
  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 -255
  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 -834
  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 +1329 -1311
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -45
  143. data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1394 -1377
  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 +387 -389
  147. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +505 -494
  148. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +269 -269
  149. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +241 -241
  150. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +633 -635
  151. data/lib/sketchup-api-stubs/stubs/UI.rb +728 -683
  152. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -303
  153. data/lib/sketchup-api-stubs.rb +1 -1
  154. metadata +3 -3
@@ -1,509 +1,509 @@
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
1
+ # Copyright:: Copyright 2024 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