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,1205 +1,1239 @@
1
- # Copyright:: Copyright 2022 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # The {Sketchup::Entities} class is a collection of Entity objects, either in a
5
- # {Sketchup::ComponentDefinition} or directly in the {Sketchup::Model}. A
6
- # {Sketchup::Entities} object corresponds to a drawing context in the GUI.
7
- #
8
- # @version SketchUp 6.0
9
- class Sketchup::Entities
10
-
11
- # Includes
12
-
13
- include Enumerable
14
-
15
- # Instance Methods
16
-
17
- # The {#[]} method is used to retrieve an entity by its index in an array of
18
- # entities. The index is a number between +0+ and entities.length - 1. In
19
- # general, it is preferable to use the {#each} method to iterate though all
20
- # of the entities in the collection as it will be much more efficient.
21
- #
22
- # @example
23
- # entities = Sketchup.active_model.entities
24
- # entity = entities[0]
25
- #
26
- # @param [Integer] entity_index
27
- # The index for a specific entity.
28
- #
29
- # @return [Sketchup::Entity, nil] an {Sketchup::Entity} object if successful,
30
- # +nil+ if not found
31
- #
32
- # @see #at
33
- #
34
- # @version SketchUp 6.0
35
- def [](entity_index)
36
- end
37
-
38
- # The active_section_plane method is used to access the currently active
39
- # section plane in the Entities object.
40
- #
41
- # @example
42
- # sp = Sketchup.active_model.entities.active_section_plane
43
- # puts "Active section plane is #{sp}" if !sp.nil?
44
- #
45
- # @return [Sketchup::SectionPlane, nil] the active SectionPlane or nil if none is active.
46
- #
47
- # @version SketchUp 2014
48
- def active_section_plane
49
- end
50
-
51
- # The active_section_plane= method is used to set the active section plane in
52
- # the Entities object.
53
- #
54
- # @example
55
- # entities = Sketchup.active_model.entities
56
- # sp = entities.add_section_plane([50, 50, 0], [1.0, 1.0, 0])
57
- # entities.active_section_plane = sp
58
- #
59
- # @param [Sketchup::SectionPlane, nil] sec_plane
60
- # the SectionPlane object to be set active. Pass nil to
61
- # deactivate any active section plane.
62
- #
63
- # @return [Sketchup::SectionPlane, nil] the SectionPlane object that was set active.
64
- #
65
- # @version SketchUp 2014
66
- def active_section_plane=(sec_plane)
67
- end
68
-
69
- # The add_3d_text is used to create 3D text. It will be added as edges and
70
- # faces drawn at the origin.
71
- #
72
- # = 1.0, tolerance = 0.0, z = 0.0, is_filled = true, extrusion = 0.0)
73
- #
74
- # @param [String] string
75
- # The text to create.
76
- #
77
- # @param [Integer] alignment
78
- # Number that defines the alignment. There are constants
79
- # called TextAlignLeft, TextAlignRight, and
80
- # TextAlignCenter that can be passed.
81
- #
82
- # @param [String] font
83
- # font name.
84
- #
85
- # @param [Boolean] is_bold
86
- # true for bold.
87
- #
88
- # @param [Boolean] is_italic
89
- # true for italic.
90
- #
91
- # @param [Numeric] letter_height
92
- # Height of the text in inches.
93
- #
94
- # @param [Numeric] tolerance
95
- # Tolerance of the curve creation. Defaults to
96
- # 0.0, which creates the highest possible curve quality.
97
- #
98
- # @param [Numeric] z
99
- # z position in inches.
100
- #
101
- # @param [Boolean] is_filled
102
- # true for filled, which will put a face between the edges of the letters.
103
- #
104
- # @param [Numeric] extrusion
105
- # Extrusion depth in inches.
106
- #
107
- # @example
108
- # # Draw the word "test" at the origin of the model, aligned left, in
109
- # # Arial Bold, not italics, 1" in size, best tolerance quality, filled,
110
- # # with an extrusion size of 5".
111
- # entities = Sketchup.active_model.entities
112
- # success = entities.add_3d_text('test', TextAlignLeft, "Arial",
113
- # true, false, 1.0, 0.0, 0.5, true, 5.0)
114
- #
115
- # @return [Boolean] true if successful
116
- #
117
- # @version SketchUp 6.0
118
- def add_3d_text(string, alignment, font, is_bold = false, is_italic = false, letter_height)
119
- end
120
-
121
- # The add_arc method is used to create an arc curve segment.
122
- #
123
- # @example
124
- # centerpoint = Geom::Point3d.new
125
- # # Create a circle perpendicular to the normal or Z axis
126
- # vector = Geom::Vector3d.new 0,0,1
127
- # vector2 = Geom::Vector3d.new 1,0,0
128
- # vector3 = vector.normalize!
129
- # model = Sketchup.active_model
130
- # entities = model.active_entities
131
- # edges = entities.add_arc centerpoint, vector2, vector3, 10, 15.degrees, 135.degrees
132
- # arccurve = edges.first.curve
133
- #
134
- # @overload add_arc(center, xaxis, normal, radius, start_angle, end_angle)
135
- #
136
- # @param [Geom::Point3d] center A Point3d object representing the center .
137
- # @param [Geom::Vector3d] xaxis A Vector3d object representing xaxis for the arc.
138
- # @param [Geom::Vector3d] normal A Vector3d object representing normal for the arc.
139
- # @param [Numeric] radius The radius of the arc.
140
- # @param [Numeric] start_angle Start angle for the arc, in radians.
141
- # @param [Numeric] end_angle End angle for the arc, in radians.
142
- # @return [Array<Sketchup::Edge>] an array of Edge objects that define the arc.
143
- #
144
- # @overload add_arc(center, xaxis, normal, radius, start_angle, end_angle, num_segments)
145
- #
146
- # @param [Geom::Point3d] center A Point3d object representing the center .
147
- # @param [Geom::Vector3d] xaxis A Vector3d object representing xaxis for the arc.
148
- # @param [Geom::Vector3d] normal A Vector3d object representing normal for the arc.
149
- # @param [Numeric] radius The radius of the arc.
150
- # @param [Numeric] start_angle Start angle for the arc, in radians.
151
- # @param [Numeric] end_angle End angle for the arc, in radians.
152
- # @param [Integer] num_segments How many segments to draw.
153
- # @return [Array<Sketchup::Edge>] an array of Edge objects that define the arc.
154
- #
155
- # @version SketchUp 6.0
156
- def add_arc(*args)
157
- end
158
-
159
- # The add_circle method is used to create a circle.
160
- #
161
- # @example
162
- # centerpoint = Geom::Point3d.new
163
- # # Create a circle perpendicular to the normal or Z axis
164
- # vector = Geom::Vector3d.new 0,0,1
165
- # vector2 = vector.normalize!
166
- # model = Sketchup.active_model
167
- # entities = model.active_entities
168
- # edges = entities.add_circle centerpoint, vector2, 10
169
- #
170
- # @param [Geom::Point3d] center
171
- # A Point3d object representing the center.
172
- #
173
- # @param [Geom::Vector3d] normal
174
- # A Vector3d object representing normal for the arc.
175
- #
176
- # @param [Numeric] radius
177
- # The radius of the arc.
178
- #
179
- # @param [Integer] numsegs
180
- # The number of segments.
181
- #
182
- # @return [Array<Sketchup::Edge>] an Array object containing edges if successful
183
- #
184
- # @version SketchUp 6.0
185
- def add_circle(center, normal, radius, numsegs = 24)
186
- end
187
-
188
- # The {#add_cline} method is used to create a construction line. This can be
189
- # finite or infinite.
190
- #
191
- # @example
192
- # model = Sketchup.active_model
193
- # entities = model.active_entities
194
- # point1 = Geom::Point3d.new(0, 0, 0)
195
- # point2 = Geom::Point3d.new(20, 20, 20)
196
- # cline = entities.add_cline(point1, point2)
197
- #
198
- # @overload add_cline(start_point, end_point, stipple = '-')
199
- #
200
- # Creates a finite construction line.
201
- # @param [Geom::Point3d] start_point
202
- # @param [Geom::Point3d] end_point
203
- # @param [String] stipple See {ConstructionLine#stipple=} for acceptable
204
- # patterns.
205
- #
206
- # @overload add_cline(point, vector, stipple = '-')
207
- #
208
- # Creates an infinite construction line.
209
- # @param [Geom::Point3d] point
210
- # @param [Geom::Point3d] vector
211
- # @param [String] stipple See {ConstructionLine#stipple=} for acceptable
212
- # patterns.
213
- #
214
- # @return [Sketchup::ConstructionLine]
215
- #
216
- # @version SketchUp 6.0
217
- def add_cline(*args)
218
- end
219
-
220
- # The add_cpoint method is used to create a construction point.
221
- #
222
- # @example
223
- # model = Sketchup.active_model
224
- # entities = model.active_entities
225
- # point1 = Geom::Point3d.new(100,200,300)
226
- # constpoint = entities.add_cpoint point1
227
- # if (constpoint)
228
- # UI.messagebox constpoint
229
- # else
230
- # UI.messagebox "Failure"
231
- # end
232
- #
233
- # @param [Geom::Point3d] point
234
- # A Point3d object.
235
- #
236
- # @return [Sketchup::ConstructionPoint] a ConstructionPoint object if
237
- # successful
238
- #
239
- # @version SketchUp 6.0
240
- def add_cpoint(point)
241
- end
242
-
243
- # The add_curve method is used to create a curve from a collection of edges.
244
- #
245
- # The arguments are either Points or an Array of Points. At least 2 points are
246
- # required.
247
- #
248
- # @example
249
- # entities = Sketchup.active_model.entities
250
- # curve = entities.add_curve [0,0,0], [0,10,0], [1,20,0]
251
- #
252
- # @overload add_curve(points)
253
- #
254
- # @param [Array<Geom::Point3d>] points
255
- #
256
- # @overload add_curve(*points)
257
- #
258
- # @param [Array<Geom::Point3d>] points
259
- #
260
- # @return [Array<Sketchup::Edge>]
261
- #
262
- # @version SketchUp 6.0
263
- def add_curve(*args)
264
- end
265
-
266
- # The {#add_dimension_linear} method adds a linear dimension to the entities.
267
- #
268
- # [instance_path, end_point], vector)
269
- #
270
- # vector)
271
- #
272
- # @example
273
- # entities = Sketchup.active_model.entities
274
- # # From point to point
275
- # dim = entities.add_dimension_linear [50, 10, 0], [100, 10, 0], [0, 20, 0]
276
- # # Between edge vertices
277
- # edge = entities.add_edges([50,50,0], [40,10,0])[0]
278
- # v0 = edge.start
279
- # v1 = edge.end
280
- # dim = entities.add_dimension_linear v0, v1, [0, 0, 20]
281
- # # From an edge's midpoint to a construction point
282
- # p0 = edge.start.position
283
- # p1 = edge.end.position
284
- # mp = Geom::Point3d.new((p0.x+p1.x)/2.0, (p0.y+p1.y)/2.0, (p0.z+p1.z)/2.0)
285
- # cp = entities.add_cpoint [50, 10, 0]
286
- # dim = entities.add_dimension_linear [edge, mp], cp, [20, 0, 0]
287
- # # alternatively, the start params could be passed in separately
288
- # dim = entities.add_dimension_linear edge, mp, cp, [20, 0, 0]
289
- #
290
- # @example Instance path
291
- # instance = Sketchup.active_model.active_entities.grep(Sketchup::ComponentInstance).first
292
- # edge = instance.definition.entities.grep(Sketchup::Edge).first
293
- # instance_path = Sketchup::InstancePath.new([instance, edge])
294
- # start_point = edge.start.position
295
- # end_point = edge.end.position
296
- # vector = Geom::Vector3d.new(30, 30, 0)
297
- # Sketchup.active_model.entities.add_dimension_linear([instance_path, start_point],
298
- #
299
- # @example Instance path as an array
300
- # instance = Sketchup.active_model.active_entities.grep(Sketchup::ComponentInstance).first
301
- # edge = instance.definition.entities.grep(Sketchup::Edge).first
302
- # path = [instance, edge]
303
- # start_point = edge.start.position
304
- # end_point = edge.end.position
305
- # vector = Geom::Vector3d.new(30, 30, 0)
306
- # Sketchup.active_model.entities.add_dimension_linear([path, start_point], [path, end_point],
307
- #
308
- # @overload add_dimension_linear(start_pt_or_entity, end_pt_or_entity, offset_vector)
309
- #
310
- # @param [Geom::Point3d, Sketchup::Entity] start_pt_or_entity
311
- # the reference point and/or entity at the start of
312
- # the dimension. This parameter can take several
313
- # forms:
314
- # @param [Geom::Point3d, Sketchup::Entity] end_pt_or_entity
315
- # the reference point and/or entity at the end
316
- # of the dimension. This parameter takes the exact
317
- # same forms as 'start_pt_or_entity'.
318
- # @param [Geom::Vector3d] offset_vector
319
- # the parallel offset vector from the reference line
320
- # to the dimension line measured from the 'start'
321
- # reference point.
322
- #
323
- # @overload add_dimension_linear(start_instance_path, end_instance_path, offset_vector)
324
- #
325
- # @note Added in SketchUp 2019.
326
- # @param [Array<Sketchup::InstancePath, Geom::Point3d>] start_instance_path An array
327
- # containing a {Sketchup::InstancePath} and a {Geom::Point3d}.
328
- # @param [Array<Sketchup::InstancePath, Geom::Point3d>] end_instance_path An array
329
- # containing a {Sketchup::InstancePath} and a {Geom::Point3d}.
330
- # @param [Geom::Vector3d] offset_vector The parallel offset vector from the
331
- # reference line to the dimension line measured from the start reference
332
- # point.
333
- #
334
- # @overload add_dimension_linear(start_array, end_array, offset_vector)
335
- #
336
- # @note Added in SketchUp 2019.
337
- # @param [Array(Array<Entity>, Geom::Point3d)] start_array
338
- # The {Array<Entity>} must contain one or more {Sketchup::ComponentInstance}'s
339
- # and a leaf entity. The leaf entity can be a {Sketchup::Vertex},
340
- # {Sketchup::ConstructionPoint}, {Sketchup::ConstructionLine}, or
341
- # {Sketchup::Edge}. The {Geom::Point3d} is the point associated with the leaf entity.
342
- # @param [Array(Array<Entity>, Geom::Point3d)] end_array
343
- # The {Array<Entity>} must contain one or more {Sketchup::ComponentInstance}'s
344
- # and a leaf entity. The leaf entity can be a {Sketchup::Vertex},
345
- # {Sketchup::ConstructionPoint}, {Sketchup::ConstructionLine}, or
346
- # {Sketchup::Edge}. The {Geom::Point3d} is the point associated with the leaf entity.
347
- # @param [Geom::Vector3d] offset_vector The parallel offset vector from the
348
- # reference line to the dimension line measured form the start reference
349
- # point.
350
- #
351
- # @return [Sketchup::DimensionLinear] the created dimension
352
- #
353
- # @version SketchUp 2014
354
- def add_dimension_linear(*args)
355
- end
356
-
357
- # The add_dimension_radial method adds a radial dimension (i.e arc/circle
358
- # radius/diameter dimension) to the entities.
359
- #
360
- # @example
361
- # entities = Sketchup.active_model.entities
362
- # # Create a circle
363
- # centerpoint = Geom::Point3d.new(10, 10, 0)
364
- # vector = Geom::Vector3d.new(0, 0, 1)
365
- # edges = entities.add_circle centerpoint, vector, 10
366
- # circle = edges[0].curve
367
- # dim = entities.add_dimension_radial circle, [30, 30, 0]
368
- #
369
- # @param [Sketchup::ArcCurve] arc_curve
370
- # an ArcCurve object to which the dimension is to be
371
- # attached.
372
- #
373
- # @param [Geom::Point3d] leader_break_pt
374
- # a Point3d for the break point on the leader where the
375
- # dimension text is attached.
376
- #
377
- # @return [Sketchup::DimensionRadial] the created dimension
378
- #
379
- # @version SketchUp 2014
380
- def add_dimension_radial(arc_curve, leader_break_pt)
381
- end
382
-
383
- # The {#add_edges} method is used to add a set of connected edges to the
384
- # {Sketchup::Entities} collection.
385
- #
386
- # @example
387
- # model = Sketchup.active_model
388
- # entities = model.active_entities
389
- # point1 = Geom::Point3d.new(0,0,0)
390
- # point2 = Geom::Point3d.new(20,20,20)
391
- # edges = entities.add_edges point1, point2
392
- #
393
- # @note If the points form a closed loop, the first and last vertex will not
394
- # merge. If you intend to create a face from the edges, use {#add_face}
395
- # directly.
396
- #
397
- # @overload add_edges(points)
398
- #
399
- # @param [Array<Geom::Point3d>] points At least two points required.
400
- # @return [Array<Sketchup::Edge>]
401
- #
402
- # @overload add_edges(*points)
403
- #
404
- # @param [Array<Geom::Point3d>] points At least two points required.
405
- # @return [Array<Sketchup::Edge>]
406
- #
407
- # @return [Array<Sketchup::Edge>] an array of Edge objects if successful
408
- #
409
- # @see Sketchup::EntitiesBuilder#add_edges
410
- # EntitiesBuilder#add_edges, alternative
411
- # for generating bulk geometry with performance in mind.
412
- #
413
- # @version SketchUp 6.0
414
- def add_edges(*args)
415
- end
416
-
417
- # The add_face method is used to create a face. You can call this method a
418
- # number of ways:
419
- #
420
- # - entities.add_face(edge1, edge2, edge3, ...)
421
- # - entities.add_face(edgearray)
422
- # - entities.add_face(pt1, pt2, pt3, ...)
423
- # - entities.add_face([pt1, pt2, pt3,...])
424
- # - entities.add_face(curve)
425
- #
426
- # For the last form that takes a Curve, the curve must be closed - like a
427
- # circle.
428
- #
429
- # @example
430
- # depth = 100
431
- # width = 100
432
- # model = Sketchup.active_model
433
- # entities = model.active_entities
434
- # pts = []
435
- # pts[0] = [0, 0, 0]
436
- # pts[1] = [width, 0, 0]
437
- # pts[2] = [width, depth, 0]
438
- # pts[3] = [0, depth, 0]
439
- # # Add the face to the entities in the model
440
- # face = entities.add_face(pts)
441
- #
442
- # @note A special case exists for any face created on the ground plane, in
443
- # which case the vertex order is ignored and the face is always facing down.
444
- #
445
- # @overload add_face(entities)
446
- #
447
- # @param [Array<Sketchup::Edge>, Array<Geom::Point3d>, Sketchup::Curve] entities
448
- #
449
- # @overload add_face(*entities)
450
- #
451
- # @param [Array<Sketchup::Edge>, Array<Geom::Point3d>] entities
452
- #
453
- # @return [Sketchup::Face, nil]
454
- #
455
- # @see Sketchup::EntitiesBuilder#add_face
456
- # EntitiesBuilder#add_face, alternative
457
- # for generating bulk geometry with performance in mind.
458
- #
459
- # @see file:pages/generating_geometry.md
460
- # Guide on Generating Geometry
461
- #
462
- # @version SketchUp 6.0
463
- def add_face(*args)
464
- end
465
-
466
- # The {#add_faces_from_mesh} method is used to add {Sketchup::Face} entities to the
467
- # collection of entities from a {Geom::PolygonMesh}.
468
- #
469
- # The +smooth_flags+ parameter can contain any of the following values if
470
- # passed. The constants were added in SketchUp 2014. For previous versions,
471
- # numeric values have to be specified instead of the Ruby constants.
472
- #
473
- # - 0: {Geom::PolygonMesh::NO_SMOOTH_OR_HIDE}
474
- # - 1: {Geom::PolygonMesh::HIDE_BASED_ON_INDEX} (Negative point index will hide the edge.)
475
- # - 2: {Geom::PolygonMesh::SOFTEN_BASED_ON_INDEX} (Negative point index will soften the edge.)
476
- # - 4: {Geom::PolygonMesh::AUTO_SOFTEN} (Interior edges are softened.)
477
- # - 8: {Geom::PolygonMesh::SMOOTH_SOFT_EDGES} (All soft edges will also be smooth.)
478
- #
479
- # The 3rd and 4th parameters will accept a {Sketchup::Material} object or a
480
- # string name of a material currently in the model.
481
- #
482
- # @example
483
- # pm = Geom::PolygonMesh.new
484
- # pm.add_point([ 0, 0, 0]) # 1
485
- # pm.add_point([10, 0, 0]) # 2
486
- # pm.add_point([10,10, 0]) # 3
487
- # pm.add_point([ 0,10, 0]) # 4
488
- # pm.add_point([20, 0, 5]) # 5
489
- # pm.add_point([20,10, 5]) # 6
490
- # pm.add_polygon(1, -2, 3, 4)
491
- # pm.add_polygon(2, 5,6, -3)
492
- #
493
- # # Create a new group that we will populate with the mesh.
494
- # group = Sketchup.active_model.entities.add_group
495
- # material = Sketchup.active_model.materials.add('green')
496
- # smooth_flags = Geom::PolygonMesh::NO_SMOOTH_OR_HIDE
497
- # group.entities.add_faces_from_mesh(pm, smooth_flags, material)
498
- #
499
- # @param [Geom::PolygonMesh] polygon_mesh
500
- #
501
- # @param [Integer] smooth_flags
502
- # flags for softening and smoothing of edges.
503
- #
504
- # @param [Sketchup::Material, String] f_material
505
- # material to paint front faces with.
506
- #
507
- # @param [Sketchup::Material, String] b_material
508
- # material to paint back faces with.
509
- #
510
- # @return [Integer] Number of faces created
511
- #
512
- # @see Sketchup::EntitiesBuilder
513
- # EntitiesBuilder, alternative interface
514
- # for generating bulk geometry with performance in mind.
515
- #
516
- # @see file:pages/generating_geometry.md
517
- # Guide on Generating Geometry
518
- #
519
- # @version SketchUp 6.0
520
- def add_faces_from_mesh(polygon_mesh, smooth_flags = Geom::PolygonMesh::AUTO_SOFTEN|Geom::PolygonMesh::SMOOTH_SOFT_EDGES, f_material = nil, b_material = nil)
521
- end
522
-
523
- # The add_group method is used to create an empty group or a group with
524
- # entities.
525
- #
526
- # @example
527
- # model = Sketchup.active_model
528
- # entities = model.active_entities
529
- # group = entities.add_group
530
- #
531
- # @note Calling add_group with entities in its parameters has been known to
532
- # crash SketchUp before version 8.0. It is preferable to create an empty
533
- # group and then add things to its Entities collection.
534
- #
535
- # @overload add_group(entities)
536
- #
537
- # @param [Array<Sketchup::Entity>] entities
538
- # an entities collection to add to the group.
539
- #
540
- # @overload add_group(*entities)
541
- #
542
- # @param [Array<Sketchup::Entity>] entities
543
- # an entities collection to add to the group.
544
- #
545
- # @return [Sketchup::Group]
546
- #
547
- # @version SketchUp 6.0
548
- def add_group(*args)
549
- end
550
-
551
- # The add_image method is used to add an image to the collection of entities.
552
- #
553
- # The width and height are measured in model units (i.e. inches). If the
554
- # height is not given, then it is computed from the width to preserve the
555
- # aspect ratio of the image.
556
- #
557
- # @example
558
- # model = Sketchup.active_model
559
- # entities = model.active_entities
560
- # point = Geom::Point3d.new 10,20,30
561
- # image = entities.add_image "Shapes.jpg", point, 300
562
- # if (image)
563
- # UI.messagebox image
564
- # else
565
- # UI.messagebox "Failure"
566
- # end
567
- #
568
- # @param [String] path
569
- # A path for the image file.
570
- #
571
- # @param [Geom::Point3d] point
572
- # A Point3d object representing the insertion point of
573
- # the image.
574
- #
575
- # @param [Numeric] width
576
- # Width for the image.
577
- #
578
- # @param [Numeric] height
579
- # height for the image if you want to control
580
- # width and height independently. Leave as default +0.0+ when you want it
581
- # to be relative to the aspect ratio.
582
- #
583
- # @return [Sketchup::Image, nil] an Image object if successful.
584
- #
585
- # @version SketchUp 6.0
586
- def add_image(path, point, width, height = 0.0)
587
- end
588
-
589
- # The add_instance method adds a component instance to the collection of
590
- # entities.
591
- #
592
- # @example
593
- # point = Geom::Point3d.new 10,20,30
594
- # transform = Geom::Transformation.new point
595
- # model = Sketchup.active_model
596
- # entities = model.active_entities
597
- # path = Sketchup.find_support_file "Bed.skp",
598
- # "Components/Components Sampler/"
599
- # definitions = model.definitions
600
- # componentdefinition = definitions.load path
601
- # instance = entities.add_instance componentdefinition, transform
602
- # if (instance)
603
- # UI.messagebox instance
604
- # else
605
- # UI.messagebox "Failure"
606
- # end
607
- #
608
- # @param [Sketchup::ComponentDefinition] definition
609
- # A ComponentDefinition object.
610
- #
611
- # @param [Geom::Transformation] transform
612
- # A Transformation object.
613
- #
614
- # @return [Sketchup::ComponentInstance] a ComponentInstance object if successful
615
- #
616
- # @version SketchUp 6.0
617
- def add_instance(definition, transform)
618
- end
619
-
620
- # The add_line method is used to add an edge to the collection of entities.
621
- # This is not to be confused with the concept of a "line" from a geometric
622
- # sense, which is an invisible object represented by an Array of a point
623
- # and a vector. (See the Array class for more information on geometric lines in
624
- # SketchUp.)
625
- #
626
- # This method is the same as add_edges method, but returns a single edge.
627
- #
628
- # @example
629
- # model = Sketchup.active_model
630
- # entities = model.active_entities
631
- # point1 = Geom::Point3d.new(0,0,0)
632
- # point2 = Geom::Point3d.new(20,20,20)
633
- # line = entities.add_line point1,point2
634
- # if (line)
635
- # UI.messagebox line
636
- # else
637
- # UI.messagebox "Failure"
638
- # end
639
- #
640
- # @param [Geom::Point3d] point1
641
- # Point3d object representing the edge's starting point.
642
- #
643
- # @param [Geom::Point3d] point2
644
- # Point3d object representing the edge's ending point.
645
- #
646
- # @return [Sketchup::Edge] a Edge object if successful
647
- #
648
- # @see Sketchup::EntitiesBuilder#add_edge
649
- # EntitiesBuilder#add_edge, alternative
650
- # for generating bulk geometry with performance in mind.
651
- #
652
- # @see file:pages/generating_geometry.md
653
- # Guide on Generating Geometry
654
- #
655
- # @version SketchUp 6.0
656
- def add_line(point1, point2)
657
- end
658
-
659
- # The add_ngon method is used to create a multi-sided polygon.
660
- #
661
- # @example
662
- # entities = Sketchup.active_model.entities
663
- # center = Geom::Point3d.new
664
- # normal = Geom::Vector3d.new(0,0,1)
665
- # radius = 100
666
- # numsides = 6
667
- # edges = entities.add_ngon center, normal, radius, numsides
668
- #
669
- # @param [Geom::Point3d] center
670
- # A Point3d object representing the center of the polygon.
671
- #
672
- # @param [Geom::Vector3d] normal
673
- # A Vector3d object.
674
- #
675
- # @param [Numeric] radius
676
- # A radius.
677
- #
678
- # @param [Integer] numsides
679
- # The number of sides for the polygon.
680
- #
681
- # @return [Array<Sketchup::Edge>] an array of Edges that make up the polygon if
682
- # successful
683
- #
684
- # @version SketchUp 6.0
685
- def add_ngon(center, normal, radius, numsides = 24)
686
- end
687
-
688
- # The add_observer method is used to add an observer to the current object.
689
- #
690
- # @example
691
- # entities = Sketchup.active_model.entities
692
- # status = entities.add_observer observer
693
- #
694
- # @param [Object] observer
695
- # An observer.
696
- #
697
- # @return [Boolean] true if successful, false if unsuccessful.
698
- #
699
- # @version SketchUp 6.0
700
- def add_observer(observer)
701
- end
702
-
703
- # The add_section_plane method adds a section plane object to the entities.
704
- #
705
- # @example
706
- # # Create a section plane
707
- # model = Sketchup.active_model
708
- # sp = model.entities.add_section_plane([50, 50, 0], [1.0, 1.0, 0])
709
- # # Activate it
710
- # sp.activate
711
- # # Make sure section planes are visible
712
- # model.rendering_options['DisplaySectionPlanes'] = true
713
- #
714
- # @param plane
715
- # the geometric plane where the SectionPlane object is to
716
- # be created. Refer to the Geom module for information on
717
- # how planes are represented.
718
- #
719
- # @return [Sketchup::SectionPlane, nil] the created SectionPlane object if
720
- # successful, nil on failure.
721
- #
722
- # @version SketchUp 2014
723
- def add_section_plane(plane)
724
- end
725
-
726
- # The {#add_text} method adds a note or label text entity to the entities.
727
- #
728
- # @example
729
- # coordinates = [10, 10, 10]
730
- # model = Sketchup.active_model
731
- # entities = model.entities
732
- # point = Geom::Point3d.new coordinates
733
- # text = entities.add_text "This is a Test", point
734
- #
735
- # @example Instance path
736
- # instance = Sketchup.active_model.active_entities.grep(Sketchup::ComponentInstance).first
737
- # edge = instance.definition.entities.grep(Sketchup::Edge).first
738
- # instance_path = Sketchup::InstancePath.new([instance, edge])
739
- # point = edge.start.position
740
- # vector = Geom::Vector3d.new(30, 30, 0)
741
- # Sketchup.active_model.entities.add_text("mytext", [instance_path, point], vector)
742
- #
743
- # @example Instance path as an array
744
- # instance = Sketchup.active_model.active_entities.grep(Sketchup::ComponentInstance).first
745
- # edge = instance.definition.entities.grep(Sketchup::Edge).first
746
- # path = [instance, edge]
747
- # point = edge.start.position
748
- # vector = Geom::Vector3d.new(30, 30, 0)
749
- # Sketchup.active_model.entities.add_text("mytext", [path, point], vector)
750
- #
751
- # @overload add_text(text, point, vector)
752
- #
753
- # @bug SketchUp 2019.0 had a regression bug where an error was thrown if
754
- # +point+ was provided as a {Sketchup::Vertex} or {Sketchup::InputPoint}.
755
- # This was fixed in SketchUp 2019.1.
756
- # @param [String] text The text string to add.
757
- # @param [Geom::Point3d, Sketchup::Vertex, Sketchup::InputPoint] point
758
- # A Point3d object representing the insertion point.
759
- # @param [Geom::Vector3d] vector The Vector representing an arrow leader.
760
- #
761
- # @overload add_text(text, instance_path_and_pt, vector)
762
- #
763
- # @version SketchUp 2019
764
- # @param [String] text The text to add.
765
- # @param [Array<Sketchup::InstancePath, Geom::Point3d>] instance_path_and_pt
766
- # The array containing a {Sketchup::InstancePath} and a {Geom::Point3d}.
767
- # @param [Geom::Vector3d] vector The vector representing an arrow leader.
768
- #
769
- # @overload add_text(text, instance_array_and_pt, vector)
770
- #
771
- # @version SketchUp 2019
772
- # @param [String] text The text to add.
773
- # @param [Array(Array<Sketchup::Entity>, Geom::Point3d)] instance_array_with_pt
774
- # The array containing one or more {Sketchup::ComponentInstance}'s and a
775
- # leaf entity. The leaf entity can be a {Sketchup::Vertex},
776
- # {Sketchup::ConstructionPoint}, {Sketchup::ConstructionLine}, or
777
- # {Sketchup::Edge}. The {Geom::Point3d} is the point associated with the
778
- # leaf entity.
779
- # @param [Geom::Vector3d] vector The vector representing an arrow leader.
780
- #
781
- # @return [Sketchup::Text] a Text object if successful
782
- #
783
- # @version SketchUp 6.0
784
- def add_text(*args)
785
- end
786
-
787
- # The {#at} method is an alias for {#[]}.
788
- #
789
- # @example
790
- # entities = Sketchup.active_model.entities
791
- # entity = entities.at(0)
792
- #
793
- # @param [Integer] entity_index
794
- # The index for a specific entity.
795
- #
796
- # @return [Sketchup::Entity, nil]
797
- #
798
- # @see #[]
799
- #
800
- # @version SketchUp 6.0
801
- def at(entity_index)
802
- end
803
-
804
- # Creates an {Sketchup::EntitiesBuilder} that can be used to generate bulk
805
- # geometry with performance in mind. This is particularly useful for importers
806
- # where the geometry is already well defined and one wants to recreate it
807
- # without further processing.
808
- #
809
- # The call to {#build} starts an implicit operation, even if no other model
810
- # changes are made within the block. This is not the same as
811
- # {Sketchup::Model#start_operation}, so it's still recommended to wrap all
812
- # model changes, including {#build} with {Sketchup::Model#start_operation} and
813
- # {Sketchup::Model#commit_operation}.
814
- #
815
- # Refer to the documentation of {Sketchup::EntitiesBuilder} for more details.
816
- #
817
- # @api EntitiesBuilder
818
- #
819
- # @example
820
- # model = Sketchup.active_model
821
- # model.entities.build { |builder|
822
- # edge = builder.add_edge([0, 0, 0], [9, 0, 0])
823
- # edge.material = 'red'
824
- # face = builder.add_face([[0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0]])
825
- # face.material = 'maroon'
826
- # }
827
- #
828
- # @note While using {Sketchup::Entities#build} it is important to not
829
- # add or remove vertices by other means of the builder. Also don't modify the
830
- # position of the vertices in the {Sketchup::Entities} container geometry is
831
- # added to. Doing so can break the vertex-cache that de-duplicates the vertices.
832
- #
833
- # @return [nil]
834
- #
835
- # @see Sketchup::EntitiesBuilder
836
- #
837
- # @version SketchUp 2022.0
838
- #
839
- # @yield [builder]
840
- #
841
- # @yieldparam [Sketchup::EntitiesBuilder] builder
842
- def build
843
- end
844
-
845
- # The clear! method is used to remove all entities from the collection of
846
- # entities.
847
- #
848
- # @example
849
- # coordinates = [10, 10, 10]
850
- # model = Sketchup.active_model
851
- # entities = model.entities
852
- # point = Geom::Point3d.new coordinates
853
- # text = entities.add_text "This is a Test", point
854
- # UI.messagebox "Clearing All"
855
- # status = entities.clear!
856
- #
857
- # @return [Boolean] true if successful, false if unsuccessful
858
- #
859
- # @version SketchUp 6.0
860
- def clear!
861
- end
862
-
863
- #
864
- # @example
865
- # model = Sketchup.active_model
866
- # entities = model.entities
867
- # entities.add_cpoint([10, 10, 10])
868
- # number = entities.count
869
- #
870
- # @note Since SketchUp 2014 the count method is inherited from Ruby's
871
- # +Enumerable+ mix-in module. Prior to that the {#count} method is an alias
872
- # for {#length}.
873
- #
874
- # @return [Integer]
875
- #
876
- # @see #length
877
- #
878
- # @version SketchUp 6.0
879
- def count
880
- end
881
-
882
- # The {#each} method is used to iterate through the entities in the collection
883
- # of entities.
884
- #
885
- # @example
886
- # coordinates = [10, 10, 10]
887
- # model = Sketchup.active_model
888
- # entities = model.entities
889
- # point = Geom::Point3d.new coordinates
890
- # text = entities.add_text "This is a Test", point
891
- # entities.each { | entity| puts entity }
892
- #
893
- # @note Don't remove content from this collection while iterating over it with
894
- # {#each}. This would change the size of the collection and cause elements to
895
- # be skipped as the indices change. Instead copy the current collection to an
896
- # array using +to_a+ and then use +each+ on the array, when removing content.
897
- #
898
- # @return [nil]
899
- #
900
- # @version SketchUp 6.0
901
- #
902
- # @yieldparam [Sketchup::Entity] entity
903
- def each
904
- end
905
-
906
- # The erase_entities method is used to erase one or more entities from the
907
- # model.
908
- #
909
- # @example
910
- # depth = 100
911
- # width = 100
912
- # model = Sketchup.active_model
913
- # entities = model.active_entities
914
- # pts = []
915
- # pts[0] = [0, 0, 0]
916
- # pts[1] = [width, 0, 0]
917
- # pts[2] = [width, depth, 0]
918
- # pts[3] = [0, depth, 0]
919
- #
920
- # # Add the face to the entities in the model
921
- # face = entities.add_face pts
922
- #
923
- # # I just happen to know that the second entity in the
924
- # # entities objects is an edge, so erase it.
925
- # UI.messagebox entities
926
- # entities.erase_entities entities[1]
927
- # UI.messagebox entities
928
- #
929
- # @overload erase_entities(entities)
930
- #
931
- # @param [Array<Sketchup::Entity>] entities
932
- #
933
- # @overload erase_entities(*entities)
934
- #
935
- # @param [Array<Sketchup::Entity>] entities
936
- #
937
- # @return [nil]
938
- #
939
- # @version SketchUp 6.0
940
- def erase_entities(*args)
941
- end
942
-
943
- # The {#fill_from_mesh} method is used to add faces and edges to the collection
944
- # of entities from a {Geom::PolygonMesh}. It requires that the entities
945
- # collection to be filled is empty. It has higher performance than
946
- # {#add_faces_from_mesh}, but does less error checking as it builds the
947
- # geometry.
948
- #
949
- # The +smooth_flags+ parameter can contain any of the following values if
950
- # passed. The constants were added in SketchUp 2014. For previous versions,
951
- # numeric values have to be specified instead of the Ruby constants:
952
- #
953
- # - 0: {Geom::PolygonMesh::NO_SMOOTH_OR_HIDE}
954
- # - 1: {Geom::PolygonMesh::HIDE_BASED_ON_INDEX} (Negative point index will hide the edge.)
955
- # - 2: {Geom::PolygonMesh::SOFTEN_BASED_ON_INDEX} (Negative point index will soften the edge.)
956
- # - 4: {Geom::PolygonMesh::AUTO_SOFTEN} (Interior edges are softened.)
957
- # - 8: {Geom::PolygonMesh::SMOOTH_SOFT_EDGES} (All soft edges will also be smooth.)
958
- #
959
- # The 4rd and 5th parameters will accept a {Sketchup::Material} object or a
960
- # string name of a material currently in the model.
961
- #
962
- # @example
963
- # pm = Geom::PolygonMesh.new
964
- # pm.add_point([ 0, 0, 0]) # 1
965
- # pm.add_point([10, 0, 0]) # 2
966
- # pm.add_point([10,10, 0]) # 3
967
- # pm.add_point([ 0,10, 0]) # 4
968
- # pm.add_point([20, 0, 5]) # 5
969
- # pm.add_point([20,10, 5]) # 6
970
- # pm.add_polygon(1, -2, 3, 4)
971
- # pm.add_polygon(2, 5, 6, -3)
972
- #
973
- # # Create a new group that we will populate with the mesh.
974
- # group = Sketchup.active_model.entities.add_group
975
- # material = Sketchup.active_model.materials.add('red')
976
- # smooth_flags = Geom::PolygonMesh::HIDE_BASED_ON_INDEX
977
- # group.entities.fill_from_mesh(pm, true, smooth_flags, material)
978
- #
979
- # @param [Geom::PolygonMesh] polygon_mesh
980
- #
981
- # @param [Boolean] weld_vertices
982
- # This argument has no effect and is kept for
983
- # compatibility reasons. Points are always
984
- # merged.
985
- #
986
- # @param [Integer] smooth_flags
987
- # flags for softening and smoothing of edges.
988
- #
989
- # @param [Sketchup::Material, String] f_material
990
- # material to paint front faces with.
991
- #
992
- # @param [Sketchup::Material, String] b_material
993
- # material to paint back faces with.
994
- #
995
- # @return [Boolean]
996
- #
997
- # @see Sketchup::EntitiesBuilder
998
- # EntitiesBuilder, alternative interface
999
- # for generating bulk geometry with performance in mind.
1000
- #
1001
- # @see file:pages/generating_geometry.md
1002
- # Guide on Generating Geometry
1003
- #
1004
- # @version SketchUp 6.0
1005
- def fill_from_mesh(polygon_mesh, weld_vertices = true, smooth_flags = Geom::PolygonMesh::AUTO_SOFTEN|Geom::PolygonMesh::SMOOTH_SOFT_EDGES, f_material = nil, b_material = nil)
1006
- end
1007
-
1008
- # The intersect_with method is used to intersect an entities, component
1009
- # instance, or group object with a entities object.
1010
- #
1011
- # @example
1012
- # entities.intersect_with recurse, transformation1, entities1,
1013
- # transformation2, hidden, entities2
1014
- #
1015
- # @param [Boolean] recurse
1016
- # true if you want this entities object to be recursed
1017
- # (intersection lines will be put inside of groups and
1018
- # components within this entities object).
1019
- #
1020
- # @param [Geom::Transformation] transform1
1021
- # The transformation for this entities object.
1022
- #
1023
- # @param [Sketchup::Entities] entities1
1024
- # The entities object where you want the intersection
1025
- # lines to appear.
1026
- #
1027
- # @param [Geom::Transformation] transform2
1028
- # The transformation for entities1.
1029
- #
1030
- # @param [Boolean] hidden
1031
- # true if you want hidden geometry in this entities
1032
- # object to be used in the intersection.
1033
- #
1034
- # @param [Sketchup::Entity, Array<Sketchup::Entity>] entities2
1035
- # A single entity, or an array of entities.
1036
- #
1037
- # @return [nil]
1038
- #
1039
- # @version SketchUp 6.0
1040
- def intersect_with(recurse, transform1, entities1, transform2, hidden, entities2)
1041
- end
1042
-
1043
- # The {#length} method is used to retrieve the number of entities in the
1044
- # collection of entities.
1045
- #
1046
- # @example
1047
- # model = Sketchup.active_model
1048
- # entities = model.entities
1049
- # entities.add_cpoint([10, 10, 10])
1050
- # number = entities.length
1051
- #
1052
- # @return [Integer]
1053
- #
1054
- # @see #size
1055
- #
1056
- # @version SketchUp 6.0
1057
- def length
1058
- end
1059
-
1060
- # The model method is used to retrieve the model that contains the collection
1061
- # of entities.
1062
- #
1063
- # @example
1064
- # coordinates = [10, 10, 10]
1065
- # model = Sketchup.active_model
1066
- # entities = model.entities
1067
- # point = Geom::Point3d.new coordinates
1068
- # text = entities.add_text "This is a Test", point
1069
- # model = entities.model
1070
- #
1071
- # @return [Sketchup::Model] the model that contains the collection of
1072
- # entities if successful.
1073
- #
1074
- # @version SketchUp 6.0
1075
- def model
1076
- end
1077
-
1078
- # The parent method is used to retrieve the parent or object that contains the
1079
- # collection of entities. A parent can be either a Model or
1080
- # ComponentDefinition object.
1081
- #
1082
- # @example
1083
- # coordinates = [10, 10, 10]
1084
- # model = Sketchup.active_model
1085
- # entities = model.entities
1086
- # point = Geom::Point3d.new coordinates
1087
- # text = entities.add_text "This is a Test", point
1088
- # parent = entities.parent
1089
- #
1090
- # @return [Sketchup::ComponentDefinition, Sketchup::Model] the object that
1091
- # contains the collection of entities if successful
1092
- #
1093
- # @version SketchUp 6.0
1094
- def parent
1095
- end
1096
-
1097
- # The remove_observer method is used to remove an observer from the current
1098
- # object.
1099
- #
1100
- # @example
1101
- # entities = Sketchup.active_model.entities
1102
- # status = entities.remove_observer observer
1103
- #
1104
- # @param [Object] observer
1105
- # An observer.
1106
- #
1107
- # @return [Boolean] true if successful, false if unsuccessful.
1108
- #
1109
- # @version SketchUp 6.0
1110
- def remove_observer(observer)
1111
- end
1112
-
1113
- # The {#size} method is an alias for the {#length} method.
1114
- #
1115
- # @example
1116
- # model = Sketchup.active_model
1117
- # entities = model.entities
1118
- # entities.add_cpoint([10, 10, 10])
1119
- # number = entities.size
1120
- #
1121
- # @return [Integer]
1122
- #
1123
- # @see #length
1124
- #
1125
- # @version SketchUp 2014
1126
- def size
1127
- end
1128
-
1129
- # The transform_by_vectors method is used to apply several vectors to several
1130
- # sub-entities all at once.
1131
- #
1132
- # @example
1133
- # # Raise vertices in selection by their distance to the origin.
1134
- # model = Sketchup.active_model
1135
- # entities = model.active_entities
1136
- # with_vertices = entities.select { |entity| entity.respond_to?(:vertices) }
1137
- # vertices = with_vertices.flat_map(&:vertices).uniq
1138
- # lengths = vertices.map { |vertex| vertex.position.distance(ORIGIN) }
1139
- # vectors = lengths.map { |length| Geom::Vector3d.new(0, 0, length) }
1140
- #
1141
- # entities.transform_by_vectors(vertices, vectors)
1142
- #
1143
- # @param [Array<Sketchup::Entity>] sub_entities
1144
- # An array of entities to transform.
1145
- #
1146
- # @param [Array<Geom::Vector3d>] vectors
1147
- # An array of vectors to apply.
1148
- #
1149
- # @return [Sketchup::Entities]
1150
- #
1151
- # @version SketchUp 6.0
1152
- def transform_by_vectors(sub_entities, vectors)
1153
- end
1154
-
1155
- # The transform_entities method is used to apply a transform to several
1156
- # sub-entities all at once.
1157
- #
1158
- # If you are transforming entities in the active drawing context or any of its
1159
- # parent drawing contexts, the transformation will be interpreted as relative
1160
- # to the global coordinate system. Otherwise the transformation will be
1161
- # interpreted as being on the local coordinate system.
1162
- #
1163
- # @example
1164
- # entities = Sketchup.active_model.entities
1165
- # entity1 = entities.add_line([0,0,0],[100,100,100])
1166
- # entity2 = entities.add_line([0,0,0],[200,-10,-10])
1167
- #
1168
- # transformation = Geom::Transformation.new([100,0,0])
1169
- # entities.transform_entities(transformation, [entity1, entity2])
1170
- #
1171
- # @param [Geom::Transformation] transform
1172
- # The Transformation to apply.
1173
- #
1174
- # @param [Array<Sketchup::Entity>] entities
1175
- # An array or series of entities to transform.
1176
- #
1177
- # @return [Boolean] +false+ if the entities array was empty.
1178
- #
1179
- # @version SketchUp 6.0
1180
- def transform_entities(transform, entities)
1181
- end
1182
-
1183
- # The {#weld} method takes a set of edges and find all possible chains of edges
1184
- # and connect them with a {Sketchup::Curve}.
1185
- #
1186
- # A curve will not cross another curve. They will split where multiple curves
1187
- # meet.
1188
- #
1189
- # @example
1190
- # model = Sketchup.active_model
1191
- # edges = model.selection.grep(Sketchup::Edge)
1192
- # curves = model.active_entities.weld(edges)
1193
- #
1194
- # @param [Array<Sketchup::Edge>] edges
1195
- #
1196
- # @raise [ArgumentError] if the given entities are not part of the same
1197
- # {Sketchup::Entities} collection.
1198
- #
1199
- # @return [Array<Sketchup::Curve>]
1200
- #
1201
- # @version SketchUp 2020.1
1202
- def weld(edges)
1203
- end
1204
-
1205
- end
1
+ # Copyright:: Copyright 2023 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The {Sketchup::Entities} class is a collection of Entity objects, either in a
5
+ # {Sketchup::ComponentDefinition} or directly in the {Sketchup::Model}. A
6
+ # {Sketchup::Entities} object corresponds to a drawing context in the GUI.
7
+ #
8
+ # @version SketchUp 6.0
9
+ class Sketchup::Entities
10
+
11
+ # Includes
12
+
13
+ include Enumerable
14
+
15
+ # Instance Methods
16
+
17
+ # The {#[]} method is used to retrieve an entity by its index in an array of
18
+ # entities. The index is a number between +0+ and entities.length - 1. In
19
+ # general, it is preferable to use the {#each} method to iterate though all
20
+ # of the entities in the collection as it will be much more efficient.
21
+ #
22
+ # @example
23
+ # entities = Sketchup.active_model.entities
24
+ # entity = entities[0]
25
+ #
26
+ # @param [Integer] entity_index
27
+ # The index for a specific entity.
28
+ #
29
+ # @return [Sketchup::Entity, nil] an {Sketchup::Entity} object if successful,
30
+ # +nil+ if not found
31
+ #
32
+ # @see #at
33
+ #
34
+ # @version SketchUp 6.0
35
+ def [](entity_index)
36
+ end
37
+
38
+ # The active_section_plane method is used to access the currently active
39
+ # section plane in the Entities object.
40
+ #
41
+ # @example
42
+ # entities = Sketchup.active_model.entities
43
+ # section_plane = entities.add_section_plane([50, 50, 0], [1.0, 1.0, 0])
44
+ # entities.active_section_plane = section_plane
45
+ # section_plane = entities.active_section_plane
46
+ #
47
+ # @return [Sketchup::SectionPlane, nil] the active SectionPlane or nil if none is active.
48
+ #
49
+ # @version SketchUp 2014
50
+ def active_section_plane
51
+ end
52
+
53
+ # The active_section_plane= method is used to set the active section plane in
54
+ # the Entities object.
55
+ #
56
+ # @example
57
+ # entities = Sketchup.active_model.entities
58
+ # section_plane = entities.add_section_plane([50, 50, 0], [1.0, 1.0, 0])
59
+ # entities.active_section_plane = section_plane
60
+ #
61
+ # @param [Sketchup::SectionPlane, nil] sec_plane
62
+ # the SectionPlane object to be set active. Pass nil to
63
+ # deactivate any active section plane.
64
+ #
65
+ # @return [Sketchup::SectionPlane, nil] the SectionPlane object that was set active.
66
+ #
67
+ # @version SketchUp 2014
68
+ def active_section_plane=(sec_plane)
69
+ end
70
+
71
+ # The {#add_3d_text} method is used to create 3D text. It will be added as edges and
72
+ # faces drawn at the origin.
73
+ #
74
+ # @example
75
+ # # Draw the word "test" at the origin of the model, aligned left, in
76
+ # # Arial Bold, not italics, 1" in size, best tolerance quality, filled,
77
+ # # with an extrusion size of 5".
78
+ # entities = Sketchup.active_model.entities
79
+ # success = entities.add_3d_text('test', TextAlignLeft, "Arial",
80
+ # true, false, 1.inch, 0.0, 0.5.inch, true, 5.0.inch)
81
+ #
82
+ # @param [String] string
83
+ # The text to create.
84
+ #
85
+ # @param [Integer] alignment
86
+ # Number that defines the alignment. There are constants
87
+ # called TextAlignLeft, TextAlignRight, and
88
+ # TextAlignCenter that can be passed.
89
+ #
90
+ # @param [String] font
91
+ # font name.
92
+ #
93
+ # @param [Boolean] is_bold
94
+ # true for bold.
95
+ #
96
+ # @param [Boolean] is_italic
97
+ # true for italic.
98
+ #
99
+ # @param [Length] letter_height
100
+ # Height of the text
101
+ #
102
+ # @param [Numeric] tolerance
103
+ # Tolerance of the curve creation. Defaults to
104
+ # 0.0, which creates the highest possible curve quality.
105
+ #
106
+ # @param [Length] z
107
+ # z position of the text
108
+ #
109
+ # @param [Boolean] is_filled
110
+ # true for filled, which will put a face between the edges of the letters.
111
+ #
112
+ # @param [Length] extrusion
113
+ # Extrusion depth
114
+ #
115
+ # @return [Boolean] true if successful
116
+ #
117
+ # @version SketchUp 6.0
118
+ def add_3d_text(string, alignment, font, is_bold = false, is_italic = false, letter_height = 1.0, tolerance = 0.0, z = 0.0, is_filled = true, extrusion = 0.0)
119
+ end
120
+
121
+ # The add_arc method is used to create an arc curve segment.
122
+ #
123
+ # @example
124
+ # model = Sketchup.active_model
125
+ # entities = model.active_entities
126
+ # center_point = Geom::Point3d.new
127
+ # # Create an arc perpendicular to the normal or Z axis
128
+ # normal = Geom::Vector3d.new(0, 0, 1)
129
+ # xaxis = Geom::Vector3d.new(1, 0, 0)
130
+ # edges = entities.add_arc(center_point, xaxis, normal, 10, 15.degrees, 135.degrees)
131
+ #
132
+ # @overload add_arc(center, xaxis, normal, radius, start_angle, end_angle)
133
+ #
134
+ # @param [Geom::Point3d] center A Point3d object representing the center .
135
+ # @param [Geom::Vector3d] xaxis A Vector3d object representing xaxis for the arc.
136
+ # @param [Geom::Vector3d] normal A Vector3d object representing normal for the arc.
137
+ # @param [Numeric] radius The radius of the arc.
138
+ # @param [Numeric] start_angle Start angle for the arc, in radians.
139
+ # @param [Numeric] end_angle End angle for the arc, in radians.
140
+ # @return [Array<Sketchup::Edge>] an array of Edge objects that define the arc.
141
+ #
142
+ # @overload add_arc(center, xaxis, normal, radius, start_angle, end_angle, num_segments)
143
+ #
144
+ # @param [Geom::Point3d] center A Point3d object representing the center .
145
+ # @param [Geom::Vector3d] xaxis A Vector3d object representing xaxis for the arc.
146
+ # @param [Geom::Vector3d] normal A Vector3d object representing normal for the arc.
147
+ # @param [Numeric] radius The radius of the arc.
148
+ # @param [Numeric] start_angle Start angle for the arc, in radians.
149
+ # @param [Numeric] end_angle End angle for the arc, in radians.
150
+ # @param [Integer] num_segments How many segments to draw.
151
+ # @return [Array<Sketchup::Edge>] an array of Edge objects that define the arc.
152
+ #
153
+ # @version SketchUp 6.0
154
+ def add_arc(*args)
155
+ end
156
+
157
+ # The add_circle method is used to create a circle.
158
+ #
159
+ # @example
160
+ # model = Sketchup.active_model
161
+ # entities = model.active_entities
162
+ # center_point = Geom::Point3d.new
163
+ # # Create a circle perpendicular to the provided vector.
164
+ # normal = Z_AXIS
165
+ # edges = entities.add_circle(center_point, vector, 10)
166
+ #
167
+ # @param [Geom::Point3d] center
168
+ # A Point3d object representing the center.
169
+ #
170
+ # @param [Geom::Vector3d] normal
171
+ # A Vector3d object representing normal for the arc.
172
+ #
173
+ # @param [Numeric] radius
174
+ # The radius of the arc.
175
+ #
176
+ # @param [Integer] numsegs
177
+ # The number of segments.
178
+ #
179
+ # @return [Array<Sketchup::Edge>] an Array object containing edges if successful
180
+ #
181
+ # @version SketchUp 6.0
182
+ def add_circle(center, normal, radius, numsegs = 24)
183
+ end
184
+
185
+ # The {#add_cline} method is used to create a construction line. This can be
186
+ # finite or infinite.
187
+ #
188
+ # @example
189
+ # model = Sketchup.active_model
190
+ # entities = model.active_entities
191
+ # point1 = Geom::Point3d.new(0, 0, 0)
192
+ # point2 = Geom::Point3d.new(20, 20, 20)
193
+ # cline = entities.add_cline(point1, point2)
194
+ #
195
+ # @overload add_cline(start_point, end_point, stipple = '-')
196
+ #
197
+ # Creates a finite construction line.
198
+ # @param [Geom::Point3d] start_point
199
+ # @param [Geom::Point3d] end_point
200
+ # @param [String] stipple See {ConstructionLine#stipple=} for acceptable
201
+ # patterns.
202
+ #
203
+ # @overload add_cline(point, vector, stipple = '-')
204
+ #
205
+ # Creates an infinite construction line.
206
+ # @param [Geom::Point3d] point
207
+ # @param [Geom::Point3d] vector
208
+ # @param [String] stipple See {ConstructionLine#stipple=} for acceptable
209
+ # patterns.
210
+ #
211
+ # @return [Sketchup::ConstructionLine]
212
+ #
213
+ # @version SketchUp 6.0
214
+ def add_cline(*args)
215
+ end
216
+
217
+ # The add_cpoint method is used to create a construction point.
218
+ #
219
+ # @example
220
+ # entities = Sketchup.active_model.active_entities
221
+ # point1 = Geom::Point3d.new(100, 200, 300)
222
+ # constpoint = entities.add_cpoint(point1)
223
+ #
224
+ # @param [Geom::Point3d] point
225
+ # A Point3d object.
226
+ #
227
+ # @return [Sketchup::ConstructionPoint] a ConstructionPoint object if
228
+ # successful
229
+ #
230
+ # @version SketchUp 6.0
231
+ def add_cpoint(point)
232
+ end
233
+
234
+ # The add_curve method is used to create a curve from a collection of edges.
235
+ #
236
+ # The arguments are either Points or an Array of Points. At least 2 points are
237
+ # required.
238
+ #
239
+ # @example
240
+ # entities = Sketchup.active_model.entities
241
+ # curve = entities.add_curve([0, 0, 0], [0, 10, 0], [10, 20, 0])
242
+ #
243
+ # @overload add_curve(points)
244
+ #
245
+ # @param [Array<Geom::Point3d>] points
246
+ #
247
+ # @overload add_curve(*points)
248
+ #
249
+ # @param [Array<Geom::Point3d>] points
250
+ #
251
+ # @return [Array<Sketchup::Edge>]
252
+ #
253
+ # @version SketchUp 6.0
254
+ def add_curve(*args)
255
+ end
256
+
257
+ # The {#add_dimension_linear} method adds a linear dimension to the entities.
258
+ #
259
+ # @example
260
+ # entities = Sketchup.active_model.entities
261
+ # # From point to point
262
+ # dim = entities.add_dimension_linear([0, 0, 0], [50, 0, 0], [0, 20, 0])
263
+ #
264
+ # # Between edge vertices
265
+ # edge1 = entities.add_edges([70, 0, 0], [120, 0, 0])[0]
266
+ # v0 = edge1.start
267
+ # v1 = edge1.end
268
+ # dim = entities.add_dimension_linear(v0, v1, [0, 20, 0])
269
+ #
270
+ # # From an edge's midpoint to a construction point
271
+ # edge2 = entities.add_edges([150, 0, 0], [200, 0, 0])[0]
272
+ # p0 = edge2.start.position
273
+ # p1 = edge2.end.position
274
+ # mp = Geom::Point3d.new((p0.x + p1.x) / 2.0, (p0.y + p1.y) / 2.0, (p0.z + p1.z) / 2.0)
275
+ # cp = entities.add_cpoint([150, 40, 0])
276
+ # dim = entities.add_dimension_linear([edge2, mp], cp, [20, 0, 0])
277
+ #
278
+ # @example Instance path
279
+ # entities = Sketchup.active_model.entities
280
+ # group = entities.add_group
281
+ # group.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
282
+ # instance = group.to_component
283
+ # transformation = instance.transformation
284
+ # edge = instance.definition.entities.grep(Sketchup::Edge).first
285
+ # instance_path = Sketchup::InstancePath.new([instance, edge])
286
+ # start_point = edge.start.position.transform(transformation)
287
+ # end_point = edge.end.position.transform(transformation)
288
+ # vector = Geom::Vector3d.new(0, 30, 0)
289
+ # Sketchup.active_model.entities.add_dimension_linear(
290
+ # [instance_path, start_point], [instance_path, end_point], vector)
291
+ #
292
+ # @example Instance path as an array
293
+ # entities = Sketchup.active_model.entities
294
+ # group = entities.add_group
295
+ # group.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
296
+ # instance = group.to_component
297
+ # transformation = instance.transformation
298
+ # edge = instance.definition.entities.grep(Sketchup::Edge).first
299
+ # path = [instance, edge]
300
+ # start_point = edge.start.position.transform(transformation)
301
+ # end_point = edge.end.position.transform(transformation)
302
+ # vector = Geom::Vector3d.new(0, 30, 0)
303
+ # Sketchup.active_model.entities.add_dimension_linear(
304
+ # [path, start_point], [path, end_point], vector)
305
+ #
306
+ # @overload add_dimension_linear(start_pt_or_entity, end_pt_or_entity, offset_vector)
307
+ #
308
+ # @param [Geom::Point3d, Sketchup::Entity] start_pt_or_entity
309
+ # the reference point and/or entity at the start of
310
+ # the dimension. This parameter can take several
311
+ # forms:
312
+ # @param [Geom::Point3d, Sketchup::Entity] end_pt_or_entity
313
+ # the reference point and/or entity at the end
314
+ # of the dimension. This parameter takes the exact
315
+ # same forms as 'start_pt_or_entity'.
316
+ # @param [Geom::Vector3d] offset_vector
317
+ # the parallel offset vector from the reference line
318
+ # to the dimension line measured from the 'start'
319
+ # reference point.
320
+ #
321
+ # @overload add_dimension_linear(start_instance_path, end_instance_path, offset_vector)
322
+ #
323
+ # @note Added in SketchUp 2019.
324
+ # @param [Array<Sketchup::InstancePath, Geom::Point3d>] start_instance_path An array
325
+ # containing a {Sketchup::InstancePath} and a {Geom::Point3d}.
326
+ # @param [Array<Sketchup::InstancePath, Geom::Point3d>] end_instance_path An array
327
+ # containing a {Sketchup::InstancePath} and a {Geom::Point3d}.
328
+ # @param [Geom::Vector3d] offset_vector The parallel offset vector from the
329
+ # reference line to the dimension line measured from the start reference
330
+ # point.
331
+ #
332
+ # @overload add_dimension_linear(start_array, end_array, offset_vector)
333
+ #
334
+ # @note Added in SketchUp 2019.
335
+ # @param [Array(Array<Sketchup::Entity>, Geom::Point3d)] start_array
336
+ # The {Array<Sketchup::Entity>} must contain one or more {Sketchup::ComponentInstance}'s
337
+ # and a leaf entity. The leaf entity can be a {Sketchup::Vertex},
338
+ # {Sketchup::ConstructionPoint}, {Sketchup::ConstructionLine}, or
339
+ # {Sketchup::Edge}. The {Geom::Point3d} is the point associated with the leaf entity.
340
+ # @param [Array(Array<Sketchup::Entity>, Geom::Point3d)] end_array
341
+ # The {Array<Sketchup::Entity>} must contain one or more {Sketchup::ComponentInstance}'s
342
+ # and a leaf entity. The leaf entity can be a {Sketchup::Vertex},
343
+ # {Sketchup::ConstructionPoint}, {Sketchup::ConstructionLine}, or
344
+ # {Sketchup::Edge}. The {Geom::Point3d} is the point associated with the leaf entity.
345
+ # @param [Geom::Vector3d] offset_vector The parallel offset vector from the
346
+ # reference line to the dimension line measured form the start reference
347
+ # point.
348
+ #
349
+ # @return [Sketchup::DimensionLinear] the created dimension
350
+ #
351
+ # @version SketchUp 2014
352
+ def add_dimension_linear(*args)
353
+ end
354
+
355
+ # The add_dimension_radial method adds a radial dimension (i.e arc/circle
356
+ # radius/diameter dimension) to the entities.
357
+ #
358
+ # @example
359
+ # entities = Sketchup.active_model.entities
360
+ # # Create a circle
361
+ # center_point = Geom::Point3d.new(10, 10, 0)
362
+ # vector = Geom::Vector3d.new(0, 0, 1)
363
+ # edges = entities.add_circle(center_point, vector, 10)
364
+ # circle = edges[0].curve
365
+ # dim = entities.add_dimension_radial(circle, [30, 30, 0])
366
+ #
367
+ # @param [Sketchup::ArcCurve] arc_curve
368
+ # an ArcCurve object to which the dimension is to be
369
+ # attached.
370
+ #
371
+ # @param [Geom::Point3d] leader_break_pt
372
+ # a Point3d for the break point on the leader where the
373
+ # dimension text is attached.
374
+ #
375
+ # @return [Sketchup::DimensionRadial] the created dimension
376
+ #
377
+ # @version SketchUp 2014
378
+ def add_dimension_radial(arc_curve, leader_break_pt)
379
+ end
380
+
381
+ # The {#add_edges} method is used to add a set of connected edges to the
382
+ # {Sketchup::Entities} collection.
383
+ #
384
+ # @example
385
+ # model = Sketchup.active_model
386
+ # entities = model.active_entities
387
+ # point1 = Geom::Point3d.new(0, 0, 0)
388
+ # point2 = Geom::Point3d.new(20, 20, 20)
389
+ # point3 = Geom::Point3d.new(20, 40, 20)
390
+ # edges = entities.add_edges(point1, point2, point3)
391
+ #
392
+ # @note If the points form a closed loop, the first and last vertex will not
393
+ # merge. If you intend to create a face from the edges, use {#add_face}
394
+ # directly.
395
+ #
396
+ # @overload add_edges(points)
397
+ #
398
+ # @param [Array<Geom::Point3d>] points At least two points required.
399
+ # @return [Array<Sketchup::Edge>]
400
+ #
401
+ # @overload add_edges(*points)
402
+ #
403
+ # @param [Array<Geom::Point3d>] points At least two points required.
404
+ # @return [Array<Sketchup::Edge>]
405
+ #
406
+ # @return [Array<Sketchup::Edge>] an array of Edge objects if successful
407
+ #
408
+ # @see Sketchup::EntitiesBuilder#add_edges
409
+ # EntitiesBuilder#add_edges, alternative
410
+ # for generating bulk geometry with performance in mind.
411
+ #
412
+ # @version SketchUp 6.0
413
+ def add_edges(*args)
414
+ end
415
+
416
+ # The add_face method is used to create a face. You can call this method a
417
+ # number of ways:
418
+ #
419
+ # - entities.add_face(edge1, edge2, edge3, ...)
420
+ # - entities.add_face(edgearray)
421
+ # - entities.add_face(pt1, pt2, pt3, ...)
422
+ # - entities.add_face([pt1, pt2, pt3,...])
423
+ # - entities.add_face(curve)
424
+ #
425
+ # For the last form that takes a Curve, the curve must be closed - like a
426
+ # circle.
427
+ #
428
+ # @example
429
+ # model = Sketchup.active_model
430
+ # entities = model.active_entities
431
+ # points = []
432
+ # points << [0, 0, 0]
433
+ # points << [100, 0, 0]
434
+ # points << [100, 100, 0]
435
+ # points << [0, 100, 0]
436
+ # # Add the face to the entities in the model
437
+ # face = entities.add_face(points)
438
+ #
439
+ # @note A special case exists for any face created on the ground plane, in
440
+ # which case the vertex order is ignored and the face is always facing down.
441
+ #
442
+ # @overload add_face(entities)
443
+ #
444
+ # @param [Array<Sketchup::Edge>, Array<Geom::Point3d>, Sketchup::Curve] entities
445
+ #
446
+ # @overload add_face(*entities)
447
+ #
448
+ # @param [Array<Sketchup::Edge>, Array<Geom::Point3d>] entities
449
+ #
450
+ # @return [Sketchup::Face, nil]
451
+ #
452
+ # @see Sketchup::EntitiesBuilder#add_face
453
+ # EntitiesBuilder#add_face, alternative
454
+ # for generating bulk geometry with performance in mind.
455
+ #
456
+ # @see file:pages/generating_geometry.md
457
+ # Guide on Generating Geometry
458
+ #
459
+ # @version SketchUp 6.0
460
+ def add_face(*args)
461
+ end
462
+
463
+ # The {#add_faces_from_mesh} method is used to add {Sketchup::Face} entities to the
464
+ # collection of entities from a {Geom::PolygonMesh}.
465
+ #
466
+ # The +smooth_flags+ parameter can contain any of the following values if
467
+ # passed. The constants were added in SketchUp 2014. For previous versions,
468
+ # numeric values have to be specified instead of the Ruby constants.
469
+ #
470
+ # - 0: {Geom::PolygonMesh::NO_SMOOTH_OR_HIDE}
471
+ # - 1: {Geom::PolygonMesh::HIDE_BASED_ON_INDEX} (Negative point index will hide the edge.)
472
+ # - 2: {Geom::PolygonMesh::SOFTEN_BASED_ON_INDEX} (Negative point index will soften the edge.)
473
+ # - 4: {Geom::PolygonMesh::AUTO_SOFTEN} (Interior edges are softened.)
474
+ # - 8: {Geom::PolygonMesh::SMOOTH_SOFT_EDGES} (All soft edges will also be smooth.)
475
+ #
476
+ # The 3rd and 4th parameters will accept a {Sketchup::Material} object or a
477
+ # string name of a material currently in the model.
478
+ #
479
+ # @example
480
+ # pm = Geom::PolygonMesh.new
481
+ # pm.add_point([ 0, 0, 0]) # 1
482
+ # pm.add_point([10, 0, 0]) # 2
483
+ # pm.add_point([10, 10, 0]) # 3
484
+ # pm.add_point([0, 10, 0]) # 4
485
+ # pm.add_point([20, 0, 5]) # 5
486
+ # pm.add_point([20, 10, 5]) # 6
487
+ # pm.add_polygon(1, -2, 3, 4)
488
+ # pm.add_polygon(2, 5, 6, -3)
489
+ #
490
+ # # Create a new group that we will populate with the mesh.
491
+ # group = Sketchup.active_model.entities.add_group
492
+ # material1 = Sketchup.active_model.materials.add('My Green Material')
493
+ # material1.color = 'green'
494
+ # material2 = Sketchup.active_model.materials.add('My Red Material')
495
+ # material2.color = 'red'
496
+ # smooth_flags = Geom::PolygonMesh::NO_SMOOTH_OR_HIDE
497
+ # group.entities.add_faces_from_mesh(pm, smooth_flags, material1, material2)
498
+ #
499
+ # @param [Geom::PolygonMesh] polygon_mesh
500
+ #
501
+ # @param [Integer] smooth_flags
502
+ # flags for softening and smoothing of edges.
503
+ #
504
+ # @param [Sketchup::Material, String] f_material
505
+ # material to paint front faces with.
506
+ #
507
+ # @param [Sketchup::Material, String] b_material
508
+ # material to paint back faces with.
509
+ #
510
+ # @return [Integer] Number of faces created
511
+ #
512
+ # @see Sketchup::EntitiesBuilder
513
+ # EntitiesBuilder, alternative interface
514
+ # for generating bulk geometry with performance in mind.
515
+ #
516
+ # @see file:pages/generating_geometry.md
517
+ # Guide on Generating Geometry
518
+ #
519
+ # @version SketchUp 6.0
520
+ def add_faces_from_mesh(polygon_mesh, smooth_flags = Geom::PolygonMesh::AUTO_SOFTEN|Geom::PolygonMesh::SMOOTH_SOFT_EDGES, f_material = nil, b_material = nil)
521
+ end
522
+
523
+ # The add_group method is used to create an empty group or a group with
524
+ # entities.
525
+ #
526
+ # @example
527
+ # model = Sketchup.active_model
528
+ # entities = model.active_entities
529
+ # group = entities.add_group
530
+ #
531
+ # @note Calling add_group with entities in its parameters has been known to
532
+ # crash SketchUp before version 8.0. It is preferable to create an empty
533
+ # group and then add things to its Entities collection.
534
+ #
535
+ # @overload add_group(entities)
536
+ #
537
+ # @param [Array<Sketchup::Entity>] entities
538
+ # an entities collection to add to the group.
539
+ #
540
+ # @overload add_group(*entities)
541
+ #
542
+ # @param [Array<Sketchup::Entity>] entities
543
+ # an entities collection to add to the group.
544
+ #
545
+ # @return [Sketchup::Group]
546
+ #
547
+ # @version SketchUp 6.0
548
+ def add_group(*args)
549
+ end
550
+
551
+ # The add_image method is used to add an image to the collection of entities.
552
+ #
553
+ # The width and height are measured in model units (i.e. inches). If the
554
+ # height is not given, then it is computed from the width to preserve the
555
+ # aspect ratio of the image.
556
+ #
557
+ # @example
558
+ # model = Sketchup.active_model
559
+ # entities = model.active_entities
560
+ # point = Geom::Point3d.new(10, 20, 30)
561
+ # image = entities.add_image(Sketchup.find_support_file('ColorWheel.png',
562
+ # 'Resources/../..'), point, 300)
563
+ #
564
+ # @param [String] path
565
+ # A path for the image file.
566
+ #
567
+ # @param [Geom::Point3d] point
568
+ # A Point3d object representing the insertion point of
569
+ # the image.
570
+ #
571
+ # @param [Numeric] width
572
+ # Width for the image.
573
+ #
574
+ # @param [Numeric] height
575
+ # height for the image if you want to control
576
+ # width and height independently. Leave as default +0.0+ when you want it
577
+ # to be relative to the aspect ratio.
578
+ #
579
+ # @return [Sketchup::Image, nil] an Image object if successful.
580
+ #
581
+ # @version SketchUp 6.0
582
+ def add_image(path, point, width, height = 0.0)
583
+ end
584
+
585
+ # The add_instance method adds a component instance to the collection of
586
+ # entities.
587
+ #
588
+ # @example
589
+ # model = Sketchup.active_model
590
+ # entities = model.active_entities
591
+ # point = Geom::Point3d.new(10, 20, 30)
592
+ # transform = Geom::Transformation.new(point)
593
+ # path = Sketchup.find_support_file("Bed.skp", "Components/Components Sampler/")
594
+ # definitions = model.definitions
595
+ # componentdefinition = definitions.load(path)
596
+ # instance = entities.add_instance(componentdefinition, transform)
597
+ #
598
+ # @param [Sketchup::ComponentDefinition] definition
599
+ # A ComponentDefinition object.
600
+ #
601
+ # @param [Geom::Transformation] transform
602
+ # A Transformation object.
603
+ #
604
+ # @return [Sketchup::ComponentInstance] a ComponentInstance object if successful
605
+ #
606
+ # @version SketchUp 6.0
607
+ def add_instance(definition, transform)
608
+ end
609
+
610
+ # The add_line method is used to add an edge to the collection of entities.
611
+ # This is not to be confused with the concept of a "line" from a geometric
612
+ # sense, which is an invisible object represented by an Array of a point
613
+ # and a vector. (See the Array class for more information on geometric lines in
614
+ # SketchUp.)
615
+ #
616
+ # This method is the same as add_edges method, but returns a single edge.
617
+ #
618
+ # @example
619
+ # model = Sketchup.active_model
620
+ # entities = model.active_entities
621
+ # point1 = Geom::Point3d.new(0, 0, 0)
622
+ # point2 = Geom::Point3d.new(20, 20, 20)
623
+ # line = entities.add_line(point1, point2)
624
+ #
625
+ # @param [Geom::Point3d] point1
626
+ # Point3d object representing the edge's starting point.
627
+ #
628
+ # @param [Geom::Point3d] point2
629
+ # Point3d object representing the edge's ending point.
630
+ #
631
+ # @return [Sketchup::Edge] a Edge object if successful
632
+ #
633
+ # @see Sketchup::EntitiesBuilder#add_edge
634
+ # EntitiesBuilder#add_edge, alternative
635
+ # for generating bulk geometry with performance in mind.
636
+ #
637
+ # @see file:pages/generating_geometry.md
638
+ # Guide on Generating Geometry
639
+ #
640
+ # @version SketchUp 6.0
641
+ def add_line(point1, point2)
642
+ end
643
+
644
+ # The add_ngon method is used to create a multi-sided polygon.
645
+ #
646
+ # @example
647
+ # entities = Sketchup.active_model.entities
648
+ # center = Geom::Point3d.new
649
+ # normal = Geom::Vector3d.new(0, 0, 1)
650
+ # radius = 100
651
+ # numsides = 6
652
+ # edges = entities.add_ngon(center, normal, radius, numsides)
653
+ #
654
+ # @param [Geom::Point3d] center
655
+ # A Point3d object representing the center of the polygon.
656
+ #
657
+ # @param [Geom::Vector3d] normal
658
+ # A Vector3d object.
659
+ #
660
+ # @param [Numeric] radius
661
+ # A radius.
662
+ #
663
+ # @param [Integer] numsides
664
+ # The number of sides for the polygon.
665
+ #
666
+ # @return [Array<Sketchup::Edge>] an array of Edges that make up the polygon if
667
+ # successful
668
+ #
669
+ # @version SketchUp 6.0
670
+ def add_ngon(center, normal, radius, numsides = 24)
671
+ end
672
+
673
+ # The add_observer method is used to add an observer to the current object.
674
+ #
675
+ # @example
676
+ # # This is an example of an observer that watches the entities collection.
677
+ # # It writes to the console everytime new entities are added to the model.
678
+ # class MyEntitiesObserver < Sketchup::EntitiesObserver
679
+ # def onElementAdded(entities, entity)
680
+ # puts "onElementAdded: #{entity} was added to the model."
681
+ # end
682
+ # end
683
+ #
684
+ # # Attach the observer
685
+ # entities = Sketchup.active_model.entities
686
+ # entities.add_observer(MyEntitiesObserver.new)
687
+ #
688
+ # @param [Object] observer
689
+ # An observer.
690
+ #
691
+ # @return [Boolean] true if successful, false if unsuccessful.
692
+ #
693
+ # @version SketchUp 6.0
694
+ def add_observer(observer)
695
+ end
696
+
697
+ # The add_section_plane method adds a section plane object to the entities.
698
+ #
699
+ # @example
700
+ # # Create a section plane
701
+ # model = Sketchup.active_model
702
+ # section_plane = model.entities.add_section_plane([50, 50, 0], [1.0, 1.0, 0])
703
+ # # Activate it
704
+ # section_plane.activate
705
+ # # Make sure section planes are visible
706
+ # model.rendering_options['DisplaySectionPlanes'] = true
707
+ #
708
+ # @param plane
709
+ # the geometric plane where the SectionPlane object is to
710
+ # be created. Refer to the Geom module for information on
711
+ # how planes are represented.
712
+ #
713
+ # @return [Sketchup::SectionPlane, nil] the created SectionPlane object if
714
+ # successful, nil on failure.
715
+ #
716
+ # @version SketchUp 2014
717
+ def add_section_plane(plane)
718
+ end
719
+
720
+ # The {#add_text} method adds a note or label text entity to the entities.
721
+ #
722
+ # @example
723
+ # model = Sketchup.active_model
724
+ # entities = model.entities
725
+ # point = Geom::Point3d.new(10, 10, 10)
726
+ # text = entities.add_text("This is a Test", point)
727
+ #
728
+ # @example Instance path
729
+ # entities = Sketchup.active_model.entities
730
+ # group = entities.add_group
731
+ # group.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
732
+ # instance = group.to_component
733
+ # transformation = instance.transformation
734
+ # edge = instance.definition.entities.grep(Sketchup::Edge).first
735
+ # instance_path = Sketchup::InstancePath.new([instance, edge])
736
+ # point = edge.start.position.transform(transformation)
737
+ # vector = Geom::Vector3d.new(45, 45, 45)
738
+ # Sketchup.active_model.entities.add_text("mytext", [instance_path, point], vector)
739
+ #
740
+ # @example Instance path as an array
741
+ # entities = Sketchup.active_model.entities
742
+ # group = entities.add_group
743
+ # group.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
744
+ # instance = group.to_component
745
+ # transformation = instance.transformation
746
+ # edge = instance.definition.entities.grep(Sketchup::Edge).first
747
+ # path = [instance, edge]
748
+ # point = edge.start.position.transform(transformation)
749
+ # vector = Geom::Vector3d.new(45, 45, 45)
750
+ # Sketchup.active_model.entities.add_text("mytext", [path, point], vector)
751
+ #
752
+ # @overload add_text(text, point, vector)
753
+ #
754
+ # @bug SketchUp 2019.0 had a regression bug where an error was thrown if
755
+ # +point+ was provided as a {Sketchup::Vertex} or {Sketchup::InputPoint}.
756
+ # This was fixed in SketchUp 2019.1.
757
+ # @param [String] text The text string to add.
758
+ # @param [Geom::Point3d, Sketchup::Vertex, Sketchup::InputPoint] point
759
+ # A Point3d object representing the insertion point.
760
+ # @param [Geom::Vector3d] vector The Vector representing an arrow leader.
761
+ #
762
+ # @overload add_text(text, instance_path_and_pt, vector)
763
+ #
764
+ # @version SketchUp 2019
765
+ # @param [String] text The text to add.
766
+ # @param [Array<Sketchup::InstancePath, Geom::Point3d>] instance_path_and_pt
767
+ # The array containing a {Sketchup::InstancePath} and a {Geom::Point3d}.
768
+ # @param [Geom::Vector3d] vector The vector representing an arrow leader.
769
+ #
770
+ # @overload add_text(text, instance_array_and_pt, vector)
771
+ #
772
+ # @version SketchUp 2019
773
+ # @param [String] text The text to add.
774
+ # @param [Array(Array<Sketchup::Entity>, Geom::Point3d)] instance_array_with_pt
775
+ # The array containing one or more {Sketchup::ComponentInstance}'s and a
776
+ # leaf entity. The leaf entity can be a {Sketchup::Vertex},
777
+ # {Sketchup::ConstructionPoint}, {Sketchup::ConstructionLine}, or
778
+ # {Sketchup::Edge}. The {Geom::Point3d} is the point associated with the
779
+ # leaf entity.
780
+ # @param [Geom::Vector3d] vector The vector representing an arrow leader.
781
+ #
782
+ # @return [Sketchup::Text] a Text object if successful
783
+ #
784
+ # @version SketchUp 6.0
785
+ def add_text(*args)
786
+ end
787
+
788
+ # The {#at} method is an alias for {#[]}.
789
+ #
790
+ # @example
791
+ # entities = Sketchup.active_model.entities
792
+ # entity = entities.at(0)
793
+ #
794
+ # @param [Integer] entity_index
795
+ # The index for a specific entity.
796
+ #
797
+ # @return [Sketchup::Entity, nil]
798
+ #
799
+ # @see #[]
800
+ #
801
+ # @version SketchUp 6.0
802
+ def at(entity_index)
803
+ end
804
+
805
+ # Creates an {Sketchup::EntitiesBuilder} that can be used to generate bulk
806
+ # geometry with performance in mind. This is particularly useful for importers
807
+ # where the geometry is already well defined and one wants to recreate it
808
+ # without further processing.
809
+ #
810
+ # The call to {#build} starts an implicit operation, even if no other model
811
+ # changes are made within the block. This is not the same as
812
+ # {Sketchup::Model#start_operation}, so it's still recommended to wrap all
813
+ # model changes, including {#build} with {Sketchup::Model#start_operation} and
814
+ # {Sketchup::Model#commit_operation}.
815
+ #
816
+ # Refer to the documentation of {Sketchup::EntitiesBuilder} for more details.
817
+ #
818
+ # @example
819
+ # model = Sketchup.active_model
820
+ # model.entities.build { |builder|
821
+ # edge = builder.add_edge([0, 0, 0], [9, 0, 0])
822
+ # edge.material = 'red'
823
+ # face = builder.add_face([0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0])
824
+ # face.material = 'maroon'
825
+ # }
826
+ #
827
+ # @note While using {Sketchup::Entities#build} it is important to not
828
+ # add or remove vertices by other means of the builder. Also don't modify the
829
+ # position of the vertices in the {Sketchup::Entities} container geometry is
830
+ # added to. Doing so can break the vertex-cache that de-duplicates the vertices.
831
+ #
832
+ # @return [nil]
833
+ #
834
+ # @see Sketchup::EntitiesBuilder
835
+ #
836
+ # @version SketchUp 2022.0
837
+ #
838
+ # @yield [builder]
839
+ #
840
+ # @yieldparam [Sketchup::EntitiesBuilder] builder
841
+ def build
842
+ end
843
+
844
+ # The clear! method is used to remove all entities from the collection of
845
+ # entities.
846
+ #
847
+ # @example
848
+ # entities = Sketchup.active_model.entities
849
+ # status = entities.clear!
850
+ #
851
+ # @return [Boolean] true if successful, false if unsuccessful
852
+ #
853
+ # @version SketchUp 6.0
854
+ def clear!
855
+ end
856
+
857
+ #
858
+ # @example
859
+ # entities = Sketchup.active_model.entities
860
+ # number = entities.count
861
+ #
862
+ # @note Since SketchUp 2014 the count method is inherited from Ruby's
863
+ # +Enumerable+ mix-in module. Prior to that the {#count} method is an alias
864
+ # for {#length}.
865
+ #
866
+ # @return [Integer]
867
+ #
868
+ # @see #length
869
+ #
870
+ # @version SketchUp 6.0
871
+ def count
872
+ end
873
+
874
+ # The {#each} method is used to iterate through the entities in the collection
875
+ # of entities.
876
+ #
877
+ # @example
878
+ # model = Sketchup.active_model
879
+ # entities = model.entities
880
+ # entities.each { | entity| puts entity }
881
+ #
882
+ # @note Don't remove content from this collection while iterating over it with
883
+ # {#each}. This would change the size of the collection and cause elements to
884
+ # be skipped as the indices change. Instead copy the current collection to an
885
+ # array using +to_a+ and then use +each+ on the array, when removing content.
886
+ #
887
+ # @return [nil]
888
+ #
889
+ # @version SketchUp 6.0
890
+ #
891
+ # @yieldparam [Sketchup::Entity] entity
892
+ def each
893
+ end
894
+
895
+ # The {#erase_entities} method is used to erase one or more entities from the
896
+ # model.
897
+ #
898
+ # @bug Prior to SketchUp 2023.0 this could crash SketchUp if you erased an
899
+ # instance used by the active edit path.
900
+ #
901
+ # @example
902
+ # model = Sketchup.active_model
903
+ # entities = model.active_entities
904
+ # points = []
905
+ # points << [0, 0, 0]
906
+ # points << [100, 0, 0]
907
+ # points << [100, 100, 0]
908
+ # points << [0, 100, 0]
909
+ #
910
+ # # Add the face to the entities in the model.
911
+ # face = entities.add_face(pts)
912
+ # faces = entities.grep(Sketchup::Face)
913
+ # entities.erase_entities(faces)
914
+ #
915
+ # @note It's faster to use this method and erase in bulk than to iterate
916
+ # individual drawing elements calling {Sketchup::Drawingelement#erase!}.
917
+ #
918
+ # @overload erase_entities(entities)
919
+ #
920
+ # @param [Array<Sketchup::Entity>] entities
921
+ #
922
+ # @overload erase_entities(*entities)
923
+ #
924
+ # @param [Array<Sketchup::Entity>] entities
925
+ #
926
+ # @raise [ArgumentError] if the given entities contains instances or
927
+ # definitions are used by {Sketchup::Model#active_path}.
928
+ #
929
+ # @return [nil]
930
+ #
931
+ # @version SketchUp 6.0
932
+ def erase_entities(*args)
933
+ end
934
+
935
+ # The {#fill_from_mesh} method is used to add faces and edges to the collection
936
+ # of entities from a {Geom::PolygonMesh}. It requires that the entities
937
+ # collection to be filled is empty. It has higher performance than
938
+ # {#add_faces_from_mesh}, but does less error checking as it builds the
939
+ # geometry.
940
+ #
941
+ # The +smooth_flags+ parameter can contain any of the following values if
942
+ # passed. The constants were added in SketchUp 2014. For previous versions,
943
+ # numeric values have to be specified instead of the Ruby constants:
944
+ #
945
+ # - 0: {Geom::PolygonMesh::NO_SMOOTH_OR_HIDE}
946
+ # - 1: {Geom::PolygonMesh::HIDE_BASED_ON_INDEX} (Negative point index will hide the edge.)
947
+ # - 2: {Geom::PolygonMesh::SOFTEN_BASED_ON_INDEX} (Negative point index will soften the edge.)
948
+ # - 4: {Geom::PolygonMesh::AUTO_SOFTEN} (Interior edges are softened.)
949
+ # - 8: {Geom::PolygonMesh::SMOOTH_SOFT_EDGES} (All soft edges will also be smooth.)
950
+ #
951
+ # The 4rd and 5th parameters will accept a {Sketchup::Material} object or a
952
+ # string name of a material currently in the model.
953
+ #
954
+ # @example
955
+ # pm = Geom::PolygonMesh.new
956
+ # pm.add_point([ 0, 0, 0]) # 1
957
+ # pm.add_point([ 10, 0, 0]) # 2
958
+ # pm.add_point([ 10, 10, 0]) # 3
959
+ # pm.add_point([ 0, 10, 0]) # 4
960
+ # pm.add_point([ 20, 0, 5]) # 5
961
+ # pm.add_point([ 20, 10, 5]) # 6
962
+ # pm.add_polygon(1, -2, 3, 4)
963
+ # pm.add_polygon(2, 5, 6, -3)
964
+ #
965
+ # # Create a new group that we will populate with the mesh.
966
+ # group = Sketchup.active_model.entities.add_group
967
+ # material = Sketchup.active_model.materials.add('My Red Material')
968
+ # material.color = 'red'
969
+ # smooth_flags = Geom::PolygonMesh::HIDE_BASED_ON_INDEX
970
+ # group.entities.fill_from_mesh(pm, true, smooth_flags, material)
971
+ #
972
+ # @param [Geom::PolygonMesh] polygon_mesh
973
+ #
974
+ # @param [Boolean] weld_vertices
975
+ # This argument has no effect and is kept for
976
+ # compatibility reasons. Points are always
977
+ # merged.
978
+ #
979
+ # @param [Integer] smooth_flags
980
+ # flags for softening and smoothing of edges.
981
+ #
982
+ # @param [Sketchup::Material, String] f_material
983
+ # material to paint front faces with.
984
+ #
985
+ # @param [Sketchup::Material, String] b_material
986
+ # material to paint back faces with.
987
+ #
988
+ # @return [Boolean]
989
+ #
990
+ # @see Sketchup::EntitiesBuilder
991
+ # EntitiesBuilder, alternative interface
992
+ # for generating bulk geometry with performance in mind.
993
+ #
994
+ # @see file:pages/generating_geometry.md
995
+ # Guide on Generating Geometry
996
+ #
997
+ # @version SketchUp 6.0
998
+ def fill_from_mesh(polygon_mesh, weld_vertices = true, smooth_flags = Geom::PolygonMesh::AUTO_SOFTEN|Geom::PolygonMesh::SMOOTH_SOFT_EDGES, f_material = nil, b_material = nil)
999
+ end
1000
+
1001
+ # The intersect_with method is used to intersect an entities, component
1002
+ # instance, or group object with a entities object.
1003
+ #
1004
+ # @example
1005
+ # model = Sketchup.active_model
1006
+ # entities = model.active_entities
1007
+ #
1008
+ # # Create a group to intersect with the model
1009
+ # group1 = entities.add_group
1010
+ # face1 = group1.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
1011
+ # face1.pushpull(-40)
1012
+ #
1013
+ # # Add geometry into the model
1014
+ # face2 = entities.add_face([50, 50, 0], [200, 50, 0], [200, 200, 0], [50, 200, 0])
1015
+ # face2.pushpull(-100)
1016
+ #
1017
+ # entities1 = group1.entities
1018
+ # entities2 = entities.to_a
1019
+ #
1020
+ # transformation1 = Geom::Transformation.new
1021
+ # transformation2 = group1.transformation
1022
+ #
1023
+ # # Intersect the group and model geometry
1024
+ # entities.intersect_with(true, transformation1, entities1, transformation2, true, entities2)
1025
+ #
1026
+ # @param [Boolean] recurse
1027
+ # true if you want this entities object to be recursed
1028
+ # (intersection lines will be put inside of groups and
1029
+ # components within this entities object).
1030
+ #
1031
+ # @param [Geom::Transformation] transform1
1032
+ # The transformation for this entities object.
1033
+ #
1034
+ # @param [Sketchup::Entities] entities1
1035
+ # The entities object where you want the intersection
1036
+ # lines to appear.
1037
+ #
1038
+ # @param [Geom::Transformation] transform2
1039
+ # The transformation for entities1.
1040
+ #
1041
+ # @param [Boolean] hidden
1042
+ # true if you want hidden geometry in this entities
1043
+ # object to be used in the intersection.
1044
+ #
1045
+ # @param [Sketchup::Entity, Array<Sketchup::Entity>] entities2
1046
+ # A single entity, or an array of entities.
1047
+ #
1048
+ # @return [nil]
1049
+ #
1050
+ # @version SketchUp 6.0
1051
+ def intersect_with(recurse, transform1, entities1, transform2, hidden, entities2)
1052
+ end
1053
+
1054
+ # The {#length} method is used to retrieve the number of entities in the
1055
+ # collection of entities.
1056
+ #
1057
+ # @example
1058
+ # model = Sketchup.active_model
1059
+ # entities = model.entities
1060
+ # number = entities.length
1061
+ #
1062
+ # @return [Integer]
1063
+ #
1064
+ # @see #size
1065
+ #
1066
+ # @version SketchUp 6.0
1067
+ def length
1068
+ end
1069
+
1070
+ # The model method is used to retrieve the model that contains the collection
1071
+ # of entities.
1072
+ #
1073
+ # @example
1074
+ # model = Sketchup.active_model
1075
+ # entities = model.entities
1076
+ # group = entities.add_group
1077
+ # face = group.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
1078
+ # model = group.entities.model
1079
+ #
1080
+ # @return [Sketchup::Model] the model that contains the collection of
1081
+ # entities if successful.
1082
+ #
1083
+ # @version SketchUp 6.0
1084
+ def model
1085
+ end
1086
+
1087
+ # The parent method is used to retrieve the parent or object that contains the
1088
+ # collection of entities. A parent can be either a Model or
1089
+ # ComponentDefinition object.
1090
+ #
1091
+ # @example
1092
+ # model = Sketchup.active_model
1093
+ # entities = model.entities
1094
+ # group = entities.add_group
1095
+ # face = group.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
1096
+ # model = group.entities.parent
1097
+ #
1098
+ # @return [Sketchup::ComponentDefinition, Sketchup::Model] the object that
1099
+ # contains the collection of entities if successful
1100
+ #
1101
+ # @version SketchUp 6.0
1102
+ def parent
1103
+ end
1104
+
1105
+ # The remove_observer method is used to remove an observer from the current
1106
+ # object.
1107
+ #
1108
+ # @example
1109
+ # # This is an example of an observer that watches the entities collection.
1110
+ # # It writes to the console everytime new entities are added to the model.
1111
+ # class MyEntitiesObserver < Sketchup::EntitiesObserver
1112
+ # def onElementAdded(entities, entity)
1113
+ # puts "onElementAdded: #{entity} was added to the model."
1114
+ # end
1115
+ # end
1116
+ #
1117
+ # # Attach the observer
1118
+ # entities = Sketchup.active_model.entities
1119
+ # my_observer = MyEntitiesObserver.new
1120
+ # entities.add_observer(my_observer)
1121
+ # # Add an entity to the model, and the observer will trigger.
1122
+ # entities.add_line([0,0,0], [100,0,0])
1123
+ # # Remove the oberserver and the observer will no longer trigger.
1124
+ # status = entities.remove_observer(my_observer)
1125
+ #
1126
+ # @param [Object] observer
1127
+ # An observer.
1128
+ #
1129
+ # @return [Boolean] true if successful, false if unsuccessful.
1130
+ #
1131
+ # @version SketchUp 6.0
1132
+ def remove_observer(observer)
1133
+ end
1134
+
1135
+ # The {#size} method is an alias for the {#length} method.
1136
+ #
1137
+ # @example
1138
+ # model = Sketchup.active_model
1139
+ # entities = model.entities
1140
+ # entities.size
1141
+ #
1142
+ # @return [Integer]
1143
+ #
1144
+ # @see #length
1145
+ #
1146
+ # @version SketchUp 2014
1147
+ def size
1148
+ end
1149
+
1150
+ # The transform_by_vectors method is used to apply several vectors to several
1151
+ # sub-entities all at once.
1152
+ #
1153
+ # @example
1154
+ # model = Sketchup.active_model
1155
+ # entities = model.active_entities
1156
+ #
1157
+ # # Create a group with geometry to transform
1158
+ # group1 = entities.add_group
1159
+ # face1 = group1.entities.add_face([0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0])
1160
+ # face1.pushpull(-40)
1161
+ #
1162
+ # # Raise vertices in selection by their distance to the origin.
1163
+ # with_vertices = group1.entities.select { |entity| entity.respond_to?(:vertices) }
1164
+ # vertices = with_vertices.flat_map(&:vertices).uniq
1165
+ # lengths = vertices.map { |vertex| vertex.position.distance(ORIGIN) }
1166
+ # vectors = lengths.map { |length| Geom::Vector3d.new(0, 0, length) }
1167
+ #
1168
+ # entities.transform_by_vectors(vertices, vectors)
1169
+ #
1170
+ # @param [Array<Sketchup::Entity>] sub_entities
1171
+ # An array of entities to transform.
1172
+ #
1173
+ # @param [Array<Geom::Vector3d>] vectors
1174
+ # An array of vectors to apply.
1175
+ #
1176
+ # @return [Sketchup::Entities]
1177
+ #
1178
+ # @version SketchUp 6.0
1179
+ def transform_by_vectors(sub_entities, vectors)
1180
+ end
1181
+
1182
+ # The transform_entities method is used to apply a transform to several
1183
+ # sub-entities all at once.
1184
+ #
1185
+ # If you are transforming entities in the active drawing context or any of its
1186
+ # parent drawing contexts, the transformation will be interpreted as relative
1187
+ # to the global coordinate system. Otherwise the transformation will be
1188
+ # interpreted as being on the local coordinate system.
1189
+ #
1190
+ # @example
1191
+ # entities = Sketchup.active_model.entities
1192
+ # # Add edges to the model at the origin.
1193
+ # edge1 = entities.add_line([0, 0, 0], [100, 100, 100])
1194
+ # edge2 = entities.add_line([0, 0, 0], [200, -10, -10])
1195
+ #
1196
+ # # After the transformation, the edges will be moved 100 inches
1197
+ # # away from the origin, on the x axis.
1198
+ # transformation = Geom::Transformation.new([100, 0, 0])
1199
+ # entities.transform_entities(transformation, [edge1, edge2])
1200
+ #
1201
+ # @param [Geom::Transformation] transform
1202
+ # The Transformation to apply.
1203
+ #
1204
+ # @param [Array<Sketchup::Entity>] entities
1205
+ # An array or series of entities to transform.
1206
+ #
1207
+ # @return [Boolean] +false+ if the entities array was empty.
1208
+ #
1209
+ # @version SketchUp 6.0
1210
+ def transform_entities(transform, entities)
1211
+ end
1212
+
1213
+ # The {#weld} method takes a set of edges and find all possible chains of edges
1214
+ # and connect them with a {Sketchup::Curve}.
1215
+ #
1216
+ # A curve will not cross another curve. They will split where multiple curves
1217
+ # meet.
1218
+ #
1219
+ # @example
1220
+ # model = Sketchup.active_model
1221
+ # entities = model.active_entities
1222
+ # edges = []
1223
+ # edges << entities.add_line([0, 0, 0], [100, 20, 0])
1224
+ # edges << entities.add_line([100, 20, 0], [130, 200, 50])
1225
+ # edges << entities.add_line([130, 200, 50], [130, 300, 50])
1226
+ # curves = model.active_entities.weld(edges)
1227
+ #
1228
+ # @param [Array<Sketchup::Edge>] edges
1229
+ #
1230
+ # @raise [ArgumentError] if the given entities are not part of the same
1231
+ # {Sketchup::Entities} collection.
1232
+ #
1233
+ # @return [Array<Sketchup::Curve>]
1234
+ #
1235
+ # @version SketchUp 2020.1
1236
+ def weld(edges)
1237
+ end
1238
+
1239
+ end