sketchup-api-stubs 0.7.9 → 0.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/sketchup-api-stubs/sketchup.rb +157 -151
- data/lib/sketchup-api-stubs/stubs/Array.rb +741 -741
- data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +322 -322
- data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +182 -172
- data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +111 -126
- data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
- data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +423 -400
- data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +693 -661
- data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +535 -509
- data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +500 -476
- data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +267 -263
- data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +133 -141
- data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +547 -522
- data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +678 -693
- data/lib/sketchup-api-stubs/stubs/Geom.rb +351 -351
- data/lib/sketchup-api-stubs/stubs/LanguageHandler.rb +93 -93
- data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +595 -595
- data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +751 -747
- data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +183 -183
- data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
- data/lib/sketchup-api-stubs/stubs/Layout/Dictionary.rb +234 -0
- data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +683 -517
- data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
- data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +148 -148
- data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +464 -353
- data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -354
- data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
- data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
- data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
- data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +370 -370
- data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
- data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
- data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +225 -225
- data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +614 -567
- data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
- data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
- data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +282 -183
- data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +458 -387
- data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -209
- data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +346 -344
- data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
- data/lib/sketchup-api-stubs/stubs/Layout/ReferenceEntity.rb +82 -82
- data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +714 -692
- data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1565 -1519
- data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
- data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
- data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
- data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
- data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
- data/lib/sketchup-api-stubs/stubs/Length.rb +286 -278
- data/lib/sketchup-api-stubs/stubs/Numeric.rb +249 -249
- data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +196 -144
- data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -169
- data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +226 -209
- data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +145 -150
- data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +294 -281
- data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
- data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +296 -302
- data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +473 -478
- data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
- data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +121 -121
- data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
- data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +673 -659
- data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +600 -593
- data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
- data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +252 -257
- data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
- data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +201 -201
- data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +443 -449
- data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +74 -74
- data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +104 -104
- data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +167 -165
- data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +306 -306
- data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +42 -42
- data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
- data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +403 -406
- data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -397
- data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
- data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1282 -1239
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -261
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
- data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +519 -545
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
- data/lib/sketchup-api-stubs/stubs/Sketchup/Environment.rb +406 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/Environments.rb +185 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/EnvironmentsObserver.rb +113 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +122 -125
- data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +1006 -937
- data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -102
- data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +740 -750
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +289 -282
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +64 -62
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
- data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +405 -468
- data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +266 -266
- data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +189 -189
- data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +432 -406
- data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -84
- data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +307 -306
- data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +332 -326
- data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +380 -422
- data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +409 -427
- data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +241 -249
- data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
- data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +55 -48
- data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
- data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +114 -114
- data/lib/sketchup-api-stubs/stubs/Sketchup/LoadHandler.rb +70 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
- data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +1115 -414
- data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +330 -317
- data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +142 -142
- data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +93 -93
- data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1714 -1652
- data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +372 -357
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +133 -130
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -271
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
- data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +463 -490
- data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +104 -116
- data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +939 -797
- data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +388 -361
- data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
- data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +501 -478
- data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
- data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +385 -361
- data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +45 -45
- data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
- data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +451 -458
- data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
- data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +211 -212
- data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +259 -255
- data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +59 -59
- data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +40 -40
- data/lib/sketchup-api-stubs/stubs/Sketchup/Snap.rb +125 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +88 -69
- data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +263 -217
- data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +283 -262
- data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +199 -217
- data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
- data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +924 -834
- data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
- data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +156 -156
- data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +75 -75
- data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +143 -142
- data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1566 -1311
- data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +71 -45
- data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1429 -1377
- data/lib/sketchup-api-stubs/stubs/SketchupExtension.rb +353 -353
- data/lib/sketchup-api-stubs/stubs/String.rb +24 -24
- data/lib/sketchup-api-stubs/stubs/UI/Command.rb +399 -389
- data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +580 -494
- data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +280 -269
- data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +258 -241
- data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +636 -635
- data/lib/sketchup-api-stubs/stubs/UI.rb +791 -683
- data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -303
- data/lib/sketchup-api-stubs.rb +1 -1
- metadata +10 -24
|
@@ -1,261 +1,261 @@
|
|
|
1
|
-
# Copyright:: Copyright
|
|
2
|
-
# License:: The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
# The {Sketchup::EntitiesBuilder} is an interface to generate bulk geometry
|
|
5
|
-
# with performance in mind.
|
|
6
|
-
#
|
|
7
|
-
# This is particularly useful for importers where the geometry is already well
|
|
8
|
-
# defined and one wants to recreate it without further processing.
|
|
9
|
-
#
|
|
10
|
-
# Before the Entities Builder was introduced there were two ways of adding
|
|
11
|
-
# geometry; the +add_*+ methods of {Sketchup::Entities} and {Geom::PolygonMesh}.
|
|
12
|
-
#
|
|
13
|
-
# The former is slow as the methods perform intersection, splitting and merging
|
|
14
|
-
# of overlapping geometry. This is useful when creating tools similar to the
|
|
15
|
-
# Line and Rectangle tool.
|
|
16
|
-
#
|
|
17
|
-
# {Geom::PolygonMesh} is fast, but it doesn't provide granular control per
|
|
18
|
-
# face or edge added.
|
|
19
|
-
#
|
|
20
|
-
# Entities Builder is similar to {Geom::PolygonMesh} in speed, but with the
|
|
21
|
-
# flexibility of {Sketchup::Entities}'s +add_*+ methods.
|
|
22
|
-
#
|
|
23
|
-
# <i>(See "Creating a triangulated grid" example)</i>
|
|
24
|
-
#
|
|
25
|
-
# rdoc-image:../images/entities-builder-grid-example.png
|
|
26
|
-
#
|
|
27
|
-
# @example Creating a triangulated grid
|
|
28
|
-
# model = Sketchup.active_model
|
|
29
|
-
# model.start_operation('Create Grid', true)
|
|
30
|
-
# model.entities.build { |builder|
|
|
31
|
-
# # Creates a grid similar to Sandbox Tools, with each square
|
|
32
|
-
# # triangulated with a soft+smooth edge.
|
|
33
|
-
# 10.times { |x|
|
|
34
|
-
# 10.times { |y|
|
|
35
|
-
# # 4 +--+ 3
|
|
36
|
-
# # |\ |
|
|
37
|
-
# # | \|
|
|
38
|
-
# # 1 +--+ 2
|
|
39
|
-
# pt1 = Geom::Point3d.new(x, y, 0)
|
|
40
|
-
# pt2 = Geom::Point3d.new(x + 1, y, 0)
|
|
41
|
-
# pt3 = Geom::Point3d.new(x + 1, y + 1, 0)
|
|
42
|
-
# pt4 = Geom::Point3d.new(x, y + 1, 0)
|
|
43
|
-
# face1 = builder.add_face([pt1, pt2, pt4])
|
|
44
|
-
# face2 = builder.add_face([pt2, pt3, pt4])
|
|
45
|
-
# material = (x + y).odd? ? 'red' : 'maroon'
|
|
46
|
-
# face1.material = material
|
|
47
|
-
# face2.material = material
|
|
48
|
-
# edge = builder.add_edge(pt2, pt4)
|
|
49
|
-
# edge.soft = true
|
|
50
|
-
# edge.smooth = true
|
|
51
|
-
# }
|
|
52
|
-
# }
|
|
53
|
-
# }
|
|
54
|
-
# model.commit_operation
|
|
55
|
-
#
|
|
56
|
-
# @note Like {Geom::PolygonMesh} there is minimal validation checks made on
|
|
57
|
-
# the input to the creation of the geometry. Vertices are de-duplicated and
|
|
58
|
-
# edges sharing the same vertices will be de-duplicated. But no intersection
|
|
59
|
-
# of overlapping entities is made. It leaves a higher responsibility on the
|
|
60
|
-
# API user to produce valid geometry.
|
|
61
|
-
#
|
|
62
|
-
# @note While using {Sketchup::Entities#build} it is important to not
|
|
63
|
-
# add or remove vertices by other means of the builder. Also don't modify the
|
|
64
|
-
# position of the vertices in the {Sketchup::Entities} container geometry is
|
|
65
|
-
# added to. Doing so can break the vertex-cache that de-duplicates the vertices.
|
|
66
|
-
#
|
|
67
|
-
# @see file:pages/generating_geometry.md
|
|
68
|
-
# Guide on Generating Geometry
|
|
69
|
-
#
|
|
70
|
-
# @see Sketchup::Entities#build
|
|
71
|
-
#
|
|
72
|
-
# @see Sketchup::Entities
|
|
73
|
-
#
|
|
74
|
-
# @see Geom::PolygonMesh
|
|
75
|
-
#
|
|
76
|
-
# @version SketchUp 2022.0
|
|
77
|
-
class Sketchup::EntitiesBuilder
|
|
78
|
-
|
|
79
|
-
# Instance Methods
|
|
80
|
-
|
|
81
|
-
# Adds a {Sketchup::Edge} to the {#entities} collection.
|
|
82
|
-
#
|
|
83
|
-
# @example
|
|
84
|
-
# model = Sketchup.active_model
|
|
85
|
-
# model.entities.build { |builder|
|
|
86
|
-
# edge = builder.add_edge([0, 0, 0], [9, 0, 0])
|
|
87
|
-
# edge.material = 'red'
|
|
88
|
-
# }
|
|
89
|
-
#
|
|
90
|
-
# @note Does not split intersecting faces or edges.
|
|
91
|
-
#
|
|
92
|
-
# @overload add_edge(point1, point2)
|
|
93
|
-
#
|
|
94
|
-
# @param [Geom::Point3d] point1
|
|
95
|
-
# @param [Geom::Point3d] point2
|
|
96
|
-
#
|
|
97
|
-
# @overload add_edge(points)
|
|
98
|
-
#
|
|
99
|
-
# @param [Array(Geom::Point3d, Geom::Point3d)] points
|
|
100
|
-
#
|
|
101
|
-
# @raise [ArgumentError] If the points are considered equal.
|
|
102
|
-
#
|
|
103
|
-
# @raise [RuntimeError] If the builder is not valid.
|
|
104
|
-
#
|
|
105
|
-
# @return [Sketchup::Edge]
|
|
106
|
-
#
|
|
107
|
-
# @see Sketchup::Entities#add_line
|
|
108
|
-
#
|
|
109
|
-
# @version SketchUp 2022.0
|
|
110
|
-
def add_edge(*args)
|
|
111
|
-
end
|
|
112
|
-
alias_method :add_line, :add_edge
|
|
113
|
-
|
|
114
|
-
# Adds a continuous set of {Sketchup::Edge}'s to the {#entities} collection.
|
|
115
|
-
#
|
|
116
|
-
# @example
|
|
117
|
-
# model = Sketchup.active_model
|
|
118
|
-
# model.entities.build { |builder|
|
|
119
|
-
# edges = builder.add_edges([0, 0, 0], [6, 0, 0], [9, 0, 8]) # => 2 edges
|
|
120
|
-
# edges.each { |edge|
|
|
121
|
-
# edge.material = 'red'
|
|
122
|
-
# }
|
|
123
|
-
# }
|
|
124
|
-
#
|
|
125
|
-
# @note Does not split intersecting faces or edges.
|
|
126
|
-
#
|
|
127
|
-
# @overload add_edges(points)
|
|
128
|
-
#
|
|
129
|
-
# @param [Array<Geom::Point3d>] points
|
|
130
|
-
#
|
|
131
|
-
# @overload add_edges(*points)
|
|
132
|
-
#
|
|
133
|
-
# @param [Array<Geom::Point3d>] points
|
|
134
|
-
#
|
|
135
|
-
# @raise [RuntimeError] If the builder is not valid.
|
|
136
|
-
#
|
|
137
|
-
# @return [Array<Sketchup::Edge, nil>] In the array, for each pair in +points+ an edge is returned.
|
|
138
|
-
# If two point are so close they are considered identical then +nil+ is returned.
|
|
139
|
-
#
|
|
140
|
-
# @see Sketchup::Entities#add_edges
|
|
141
|
-
#
|
|
142
|
-
# @version SketchUp 2022.0
|
|
143
|
-
def add_edges(*args)
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
# Adds a {Sketchup::Face} to the {#entities} collection.
|
|
147
|
-
#
|
|
148
|
-
# @example Adding a simple face
|
|
149
|
-
# model = Sketchup.active_model
|
|
150
|
-
# model.entities.build { |builder|
|
|
151
|
-
# face = builder.add_face([[0, 0, 0], [6, 0, 0], [6, 8, 0], [0, 8, 0]])
|
|
152
|
-
# face.material = 'red'
|
|
153
|
-
# }
|
|
154
|
-
#
|
|
155
|
-
# @example Adding an edge with two holes
|
|
156
|
-
# model = Sketchup.active_model
|
|
157
|
-
# model.entities.build { |builder|
|
|
158
|
-
# outer_loop = [[0, 0, 0], [8, 0, 0], [8, 9, 0], [0, 9, 0]]
|
|
159
|
-
# hole1 = [[1, 1, 0], [3, 1, 0], [3, 8, 0], [1, 8, 0]]
|
|
160
|
-
# hole2 = [[4, 1, 0], [7, 1, 0], [7, 8, 0], [4, 8, 0]]
|
|
161
|
-
# face = builder.add_face(outer_loop, holes: [hole1, hole2])
|
|
162
|
-
# }
|
|
163
|
-
#
|
|
164
|
-
# @note Does not split intersecting faces or edges.
|
|
165
|
-
#
|
|
166
|
-
# @overload add_face(outer_loop)
|
|
167
|
-
#
|
|
168
|
-
# @param [Array<Geom::Point3d>] outer_loop
|
|
169
|
-
#
|
|
170
|
-
# @overload add_face(*outer_loop)
|
|
171
|
-
#
|
|
172
|
-
# @param [Array<Geom::Point3d>] outer_loop
|
|
173
|
-
#
|
|
174
|
-
# @overload add_face(outer_loop, holes: inner_loops)
|
|
175
|
-
#
|
|
176
|
-
# Adds a face with holes.
|
|
177
|
-
# @note The inner loops are not validated to be within the bounds of the outer loop.
|
|
178
|
-
# @param [Array<Geom::Point3d>] outer_loop
|
|
179
|
-
# @param [Array<Array<Geom::Point3d>>] inner_loops
|
|
180
|
-
#
|
|
181
|
-
# @overload add_face(*outer_loop, holes: inner_loops)
|
|
182
|
-
#
|
|
183
|
-
# Adds a face with holes.
|
|
184
|
-
# @note The inner loops are not validated to be within the bounds of the outer loop.
|
|
185
|
-
# @param [Array<Geom::Point3d>] outer_loop
|
|
186
|
-
# @param [Array<Array<Geom::Point3d>>] inner_loops
|
|
187
|
-
#
|
|
188
|
-
# @raise [ArgumentError] If points are not planar.
|
|
189
|
-
#
|
|
190
|
-
# @raise [ArgumentError] If any of the loops doesn't have at least 3 points.
|
|
191
|
-
#
|
|
192
|
-
# @raise [RuntimeError] If the builder is not valid.
|
|
193
|
-
#
|
|
194
|
-
# @return [Sketchup::Face]
|
|
195
|
-
#
|
|
196
|
-
# @see Sketchup::Entities#add_face
|
|
197
|
-
#
|
|
198
|
-
# @version SketchUp 2022.0
|
|
199
|
-
def add_face(*args)
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
# The {Sketchup::Entities} collection the {Sketchup::EntitiesBuilder} will add
|
|
203
|
-
# the geometry to.
|
|
204
|
-
#
|
|
205
|
-
# @example
|
|
206
|
-
# model = Sketchup.active_model
|
|
207
|
-
# model.entities.build { |builder|
|
|
208
|
-
# p builder.entities == model.entities # => true
|
|
209
|
-
# }
|
|
210
|
-
#
|
|
211
|
-
# @raise [RuntimeError] If the builder is not valid.
|
|
212
|
-
#
|
|
213
|
-
# @return [Sketchup::Entities]
|
|
214
|
-
#
|
|
215
|
-
# @version SketchUp 2022.0
|
|
216
|
-
def entities
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
# Indicates whether the builder object is valid and can be used.
|
|
220
|
-
#
|
|
221
|
-
# A builder object is only valid within the scope of the block given to
|
|
222
|
-
# {Sketchup::Entities#build}.
|
|
223
|
-
#
|
|
224
|
-
# When this return +false+, calling any other method on the builder will raise
|
|
225
|
-
# an error.
|
|
226
|
-
#
|
|
227
|
-
# @bug Prior to SketchUp 2023.0 this returned +0+ for success instead of +true+.
|
|
228
|
-
# In Ruby +0+ evaluates as +true+ so conditional logic still worked.
|
|
229
|
-
#
|
|
230
|
-
# @example
|
|
231
|
-
# model = Sketchup.active_model
|
|
232
|
-
# cached_builder = nil
|
|
233
|
-
# model.entities.build { |builder|
|
|
234
|
-
# p builder.valid? # => true
|
|
235
|
-
# cached_builder = builder # Don't hold on to builder objects.
|
|
236
|
-
# }
|
|
237
|
-
# p cached_builder.valid? # => false
|
|
238
|
-
#
|
|
239
|
-
# @return [Boolean]
|
|
240
|
-
#
|
|
241
|
-
# @version SketchUp 2022.0
|
|
242
|
-
def valid?
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
# Finds an existing {Sketchup::Vertex} for the given position, otherwise returns +nil+.
|
|
246
|
-
#
|
|
247
|
-
# @example
|
|
248
|
-
# model = Sketchup.active_model
|
|
249
|
-
# model.entities.build { |builder|
|
|
250
|
-
# edge = builder.add_edge([1, 0, 0], [9, 0, 0])
|
|
251
|
-
# builder.vertex_at([0, 0, 0]) => nil
|
|
252
|
-
# builder.vertex_at([9, 0, 0]) => #<Sketchup::Vertex>
|
|
253
|
-
# }
|
|
254
|
-
#
|
|
255
|
-
# @return [Sketchup::Vertex, nil]
|
|
256
|
-
#
|
|
257
|
-
# @version SketchUp 2022.0
|
|
258
|
-
def vertex_at(position)
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
end
|
|
1
|
+
# Copyright:: Copyright 2026 Trimble Inc.
|
|
2
|
+
# License:: The MIT License (MIT)
|
|
3
|
+
|
|
4
|
+
# The {Sketchup::EntitiesBuilder} is an interface to generate bulk geometry
|
|
5
|
+
# with performance in mind.
|
|
6
|
+
#
|
|
7
|
+
# This is particularly useful for importers where the geometry is already well
|
|
8
|
+
# defined and one wants to recreate it without further processing.
|
|
9
|
+
#
|
|
10
|
+
# Before the Entities Builder was introduced there were two ways of adding
|
|
11
|
+
# geometry; the +add_*+ methods of {Sketchup::Entities} and {Geom::PolygonMesh}.
|
|
12
|
+
#
|
|
13
|
+
# The former is slow as the methods perform intersection, splitting and merging
|
|
14
|
+
# of overlapping geometry. This is useful when creating tools similar to the
|
|
15
|
+
# Line and Rectangle tool.
|
|
16
|
+
#
|
|
17
|
+
# {Geom::PolygonMesh} is fast, but it doesn't provide granular control per
|
|
18
|
+
# face or edge added.
|
|
19
|
+
#
|
|
20
|
+
# Entities Builder is similar to {Geom::PolygonMesh} in speed, but with the
|
|
21
|
+
# flexibility of {Sketchup::Entities}'s +add_*+ methods.
|
|
22
|
+
#
|
|
23
|
+
# <i>(See "Creating a triangulated grid" example)</i>
|
|
24
|
+
#
|
|
25
|
+
# rdoc-image:../images/entities-builder-grid-example.png
|
|
26
|
+
#
|
|
27
|
+
# @example Creating a triangulated grid
|
|
28
|
+
# model = Sketchup.active_model
|
|
29
|
+
# model.start_operation('Create Grid', true)
|
|
30
|
+
# model.entities.build { |builder|
|
|
31
|
+
# # Creates a grid similar to Sandbox Tools, with each square
|
|
32
|
+
# # triangulated with a soft+smooth edge.
|
|
33
|
+
# 10.times { |x|
|
|
34
|
+
# 10.times { |y|
|
|
35
|
+
# # 4 +--+ 3
|
|
36
|
+
# # |\ |
|
|
37
|
+
# # | \|
|
|
38
|
+
# # 1 +--+ 2
|
|
39
|
+
# pt1 = Geom::Point3d.new(x, y, 0)
|
|
40
|
+
# pt2 = Geom::Point3d.new(x + 1, y, 0)
|
|
41
|
+
# pt3 = Geom::Point3d.new(x + 1, y + 1, 0)
|
|
42
|
+
# pt4 = Geom::Point3d.new(x, y + 1, 0)
|
|
43
|
+
# face1 = builder.add_face([pt1, pt2, pt4])
|
|
44
|
+
# face2 = builder.add_face([pt2, pt3, pt4])
|
|
45
|
+
# material = (x + y).odd? ? 'red' : 'maroon'
|
|
46
|
+
# face1.material = material
|
|
47
|
+
# face2.material = material
|
|
48
|
+
# edge = builder.add_edge(pt2, pt4)
|
|
49
|
+
# edge.soft = true
|
|
50
|
+
# edge.smooth = true
|
|
51
|
+
# }
|
|
52
|
+
# }
|
|
53
|
+
# }
|
|
54
|
+
# model.commit_operation
|
|
55
|
+
#
|
|
56
|
+
# @note Like {Geom::PolygonMesh} there is minimal validation checks made on
|
|
57
|
+
# the input to the creation of the geometry. Vertices are de-duplicated and
|
|
58
|
+
# edges sharing the same vertices will be de-duplicated. But no intersection
|
|
59
|
+
# of overlapping entities is made. It leaves a higher responsibility on the
|
|
60
|
+
# API user to produce valid geometry.
|
|
61
|
+
#
|
|
62
|
+
# @note While using {Sketchup::Entities#build} it is important to not
|
|
63
|
+
# add or remove vertices by other means of the builder. Also don't modify the
|
|
64
|
+
# position of the vertices in the {Sketchup::Entities} container geometry is
|
|
65
|
+
# added to. Doing so can break the vertex-cache that de-duplicates the vertices.
|
|
66
|
+
#
|
|
67
|
+
# @see file:pages/generating_geometry.md
|
|
68
|
+
# Guide on Generating Geometry
|
|
69
|
+
#
|
|
70
|
+
# @see Sketchup::Entities#build
|
|
71
|
+
#
|
|
72
|
+
# @see Sketchup::Entities
|
|
73
|
+
#
|
|
74
|
+
# @see Geom::PolygonMesh
|
|
75
|
+
#
|
|
76
|
+
# @version SketchUp 2022.0
|
|
77
|
+
class Sketchup::EntitiesBuilder
|
|
78
|
+
|
|
79
|
+
# Instance Methods
|
|
80
|
+
|
|
81
|
+
# Adds a {Sketchup::Edge} to the {#entities} collection.
|
|
82
|
+
#
|
|
83
|
+
# @example
|
|
84
|
+
# model = Sketchup.active_model
|
|
85
|
+
# model.entities.build { |builder|
|
|
86
|
+
# edge = builder.add_edge([0, 0, 0], [9, 0, 0])
|
|
87
|
+
# edge.material = 'red'
|
|
88
|
+
# }
|
|
89
|
+
#
|
|
90
|
+
# @note Does not split intersecting faces or edges.
|
|
91
|
+
#
|
|
92
|
+
# @overload add_edge(point1, point2)
|
|
93
|
+
#
|
|
94
|
+
# @param [Geom::Point3d] point1
|
|
95
|
+
# @param [Geom::Point3d] point2
|
|
96
|
+
#
|
|
97
|
+
# @overload add_edge(points)
|
|
98
|
+
#
|
|
99
|
+
# @param [Array(Geom::Point3d, Geom::Point3d)] points
|
|
100
|
+
#
|
|
101
|
+
# @raise [ArgumentError] If the points are considered equal.
|
|
102
|
+
#
|
|
103
|
+
# @raise [RuntimeError] If the builder is not valid.
|
|
104
|
+
#
|
|
105
|
+
# @return [Sketchup::Edge]
|
|
106
|
+
#
|
|
107
|
+
# @see Sketchup::Entities#add_line
|
|
108
|
+
#
|
|
109
|
+
# @version SketchUp 2022.0
|
|
110
|
+
def add_edge(*args)
|
|
111
|
+
end
|
|
112
|
+
alias_method :add_line, :add_edge
|
|
113
|
+
|
|
114
|
+
# Adds a continuous set of {Sketchup::Edge}'s to the {#entities} collection.
|
|
115
|
+
#
|
|
116
|
+
# @example
|
|
117
|
+
# model = Sketchup.active_model
|
|
118
|
+
# model.entities.build { |builder|
|
|
119
|
+
# edges = builder.add_edges([0, 0, 0], [6, 0, 0], [9, 0, 8]) # => 2 edges
|
|
120
|
+
# edges.each { |edge|
|
|
121
|
+
# edge.material = 'red'
|
|
122
|
+
# }
|
|
123
|
+
# }
|
|
124
|
+
#
|
|
125
|
+
# @note Does not split intersecting faces or edges.
|
|
126
|
+
#
|
|
127
|
+
# @overload add_edges(points)
|
|
128
|
+
#
|
|
129
|
+
# @param [Array<Geom::Point3d>] points
|
|
130
|
+
#
|
|
131
|
+
# @overload add_edges(*points)
|
|
132
|
+
#
|
|
133
|
+
# @param [Array<Geom::Point3d>] points
|
|
134
|
+
#
|
|
135
|
+
# @raise [RuntimeError] If the builder is not valid.
|
|
136
|
+
#
|
|
137
|
+
# @return [Array<Sketchup::Edge, nil>] In the array, for each pair in +points+ an edge is returned.
|
|
138
|
+
# If two point are so close they are considered identical then +nil+ is returned.
|
|
139
|
+
#
|
|
140
|
+
# @see Sketchup::Entities#add_edges
|
|
141
|
+
#
|
|
142
|
+
# @version SketchUp 2022.0
|
|
143
|
+
def add_edges(*args)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Adds a {Sketchup::Face} to the {#entities} collection.
|
|
147
|
+
#
|
|
148
|
+
# @example Adding a simple face
|
|
149
|
+
# model = Sketchup.active_model
|
|
150
|
+
# model.entities.build { |builder|
|
|
151
|
+
# face = builder.add_face([[0, 0, 0], [6, 0, 0], [6, 8, 0], [0, 8, 0]])
|
|
152
|
+
# face.material = 'red'
|
|
153
|
+
# }
|
|
154
|
+
#
|
|
155
|
+
# @example Adding an edge with two holes
|
|
156
|
+
# model = Sketchup.active_model
|
|
157
|
+
# model.entities.build { |builder|
|
|
158
|
+
# outer_loop = [[0, 0, 0], [8, 0, 0], [8, 9, 0], [0, 9, 0]]
|
|
159
|
+
# hole1 = [[1, 1, 0], [3, 1, 0], [3, 8, 0], [1, 8, 0]]
|
|
160
|
+
# hole2 = [[4, 1, 0], [7, 1, 0], [7, 8, 0], [4, 8, 0]]
|
|
161
|
+
# face = builder.add_face(outer_loop, holes: [hole1, hole2])
|
|
162
|
+
# }
|
|
163
|
+
#
|
|
164
|
+
# @note Does not split intersecting faces or edges.
|
|
165
|
+
#
|
|
166
|
+
# @overload add_face(outer_loop)
|
|
167
|
+
#
|
|
168
|
+
# @param [Array<Geom::Point3d>] outer_loop
|
|
169
|
+
#
|
|
170
|
+
# @overload add_face(*outer_loop)
|
|
171
|
+
#
|
|
172
|
+
# @param [Array<Geom::Point3d>] outer_loop
|
|
173
|
+
#
|
|
174
|
+
# @overload add_face(outer_loop, holes: inner_loops)
|
|
175
|
+
#
|
|
176
|
+
# Adds a face with holes.
|
|
177
|
+
# @note The inner loops are not validated to be within the bounds of the outer loop.
|
|
178
|
+
# @param [Array<Geom::Point3d>] outer_loop
|
|
179
|
+
# @param [Array<Array<Geom::Point3d>>] inner_loops
|
|
180
|
+
#
|
|
181
|
+
# @overload add_face(*outer_loop, holes: inner_loops)
|
|
182
|
+
#
|
|
183
|
+
# Adds a face with holes.
|
|
184
|
+
# @note The inner loops are not validated to be within the bounds of the outer loop.
|
|
185
|
+
# @param [Array<Geom::Point3d>] outer_loop
|
|
186
|
+
# @param [Array<Array<Geom::Point3d>>] inner_loops
|
|
187
|
+
#
|
|
188
|
+
# @raise [ArgumentError] If points are not planar.
|
|
189
|
+
#
|
|
190
|
+
# @raise [ArgumentError] If any of the loops doesn't have at least 3 points.
|
|
191
|
+
#
|
|
192
|
+
# @raise [RuntimeError] If the builder is not valid.
|
|
193
|
+
#
|
|
194
|
+
# @return [Sketchup::Face]
|
|
195
|
+
#
|
|
196
|
+
# @see Sketchup::Entities#add_face
|
|
197
|
+
#
|
|
198
|
+
# @version SketchUp 2022.0
|
|
199
|
+
def add_face(*args)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
# The {Sketchup::Entities} collection the {Sketchup::EntitiesBuilder} will add
|
|
203
|
+
# the geometry to.
|
|
204
|
+
#
|
|
205
|
+
# @example
|
|
206
|
+
# model = Sketchup.active_model
|
|
207
|
+
# model.entities.build { |builder|
|
|
208
|
+
# p builder.entities == model.entities # => true
|
|
209
|
+
# }
|
|
210
|
+
#
|
|
211
|
+
# @raise [RuntimeError] If the builder is not valid.
|
|
212
|
+
#
|
|
213
|
+
# @return [Sketchup::Entities]
|
|
214
|
+
#
|
|
215
|
+
# @version SketchUp 2022.0
|
|
216
|
+
def entities
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Indicates whether the builder object is valid and can be used.
|
|
220
|
+
#
|
|
221
|
+
# A builder object is only valid within the scope of the block given to
|
|
222
|
+
# {Sketchup::Entities#build}.
|
|
223
|
+
#
|
|
224
|
+
# When this return +false+, calling any other method on the builder will raise
|
|
225
|
+
# an error.
|
|
226
|
+
#
|
|
227
|
+
# @bug Prior to SketchUp 2023.0 this returned +0+ for success instead of +true+.
|
|
228
|
+
# In Ruby +0+ evaluates as +true+ so conditional logic still worked.
|
|
229
|
+
#
|
|
230
|
+
# @example
|
|
231
|
+
# model = Sketchup.active_model
|
|
232
|
+
# cached_builder = nil
|
|
233
|
+
# model.entities.build { |builder|
|
|
234
|
+
# p builder.valid? # => true
|
|
235
|
+
# cached_builder = builder # Don't hold on to builder objects.
|
|
236
|
+
# }
|
|
237
|
+
# p cached_builder.valid? # => false
|
|
238
|
+
#
|
|
239
|
+
# @return [Boolean]
|
|
240
|
+
#
|
|
241
|
+
# @version SketchUp 2022.0
|
|
242
|
+
def valid?
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
# Finds an existing {Sketchup::Vertex} for the given position, otherwise returns +nil+.
|
|
246
|
+
#
|
|
247
|
+
# @example
|
|
248
|
+
# model = Sketchup.active_model
|
|
249
|
+
# model.entities.build { |builder|
|
|
250
|
+
# edge = builder.add_edge([1, 0, 0], [9, 0, 0])
|
|
251
|
+
# builder.vertex_at([0, 0, 0]) => nil
|
|
252
|
+
# builder.vertex_at([9, 0, 0]) => #<Sketchup::Vertex>
|
|
253
|
+
# }
|
|
254
|
+
#
|
|
255
|
+
# @return [Sketchup::Vertex, nil]
|
|
256
|
+
#
|
|
257
|
+
# @version SketchUp 2022.0
|
|
258
|
+
def vertex_at(position)
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
end
|