sketchup-api-stubs 0.7.7 → 0.7.9
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 +151 -147
- data/lib/sketchup-api-stubs/stubs/{array.rb → Array.rb} +741 -741
- data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +322 -322
- data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +172 -172
- data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
- data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
- data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
- data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
- data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +509 -509
- data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +476 -478
- data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
- data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
- data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -522
- data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +693 -691
- data/lib/sketchup-api-stubs/stubs/{geom.rb → Geom.rb} +351 -351
- data/lib/sketchup-api-stubs/stubs/{languagehandler.rb → LanguageHandler.rb} +93 -92
- data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +595 -573
- data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +747 -411
- data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +183 -179
- data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
- data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +517 -515
- 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 +353 -353
- data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -349
- 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 +567 -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 +183 -183
- data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +387 -387
- data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -209
- data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +344 -344
- data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
- data/lib/sketchup-api-stubs/stubs/Layout/ReferenceEntity.rb +82 -0
- data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +692 -694
- data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1519 -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 → Length.rb} +278 -278
- data/lib/sketchup-api-stubs/stubs/{numeric.rb → Numeric.rb} +249 -249
- data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +144 -144
- data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -157
- data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +209 -209
- data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +150 -152
- data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -286
- data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
- data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +302 -302
- data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +478 -478
- data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
- data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +121 -122
- data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
- data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +659 -577
- data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -594
- data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
- data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -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 +449 -425
- 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 +165 -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 +406 -396
- data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -502
- data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
- data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1239 -1126
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
- data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +545 -545
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
- data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -126
- data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +937 -917
- data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -104
- data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +750 -750
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +282 -292
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
- data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +468 -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 +406 -405
- data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -84
- data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +306 -306
- data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +326 -327
- data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +422 -422
- data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +427 -427
- data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +249 -249
- data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
- data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
- data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
- data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +114 -112
- data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
- data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +414 -414
- data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +317 -318
- 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 +1652 -1654
- data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +357 -357
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +130 -131
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -284
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
- data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +490 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +116 -0
- data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +797 -797
- data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +361 -363
- data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
- data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +478 -478
- data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
- data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +361 -364
- 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 +458 -459
- data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
- data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
- data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +255 -257
- 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/Style.rb +69 -69
- data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +217 -217
- data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
- data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +217 -217
- data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
- data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +834 -835
- 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 -71
- data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
- data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1311 -1307
- data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -45
- data/lib/sketchup-api-stubs/stubs/{sketchup.rb → Sketchup.rb} +1377 -1353
- data/lib/sketchup-api-stubs/stubs/{sketchupextension.rb → SketchupExtension.rb} +353 -353
- data/lib/sketchup-api-stubs/stubs/{string.rb → String.rb} +24 -24
- data/lib/sketchup-api-stubs/stubs/UI/Command.rb +389 -317
- data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +494 -478
- data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +269 -269
- data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +241 -240
- data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +635 -633
- data/lib/sketchup-api-stubs/stubs/{ui.rb → UI.rb} +683 -672
- data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -311
- data/lib/sketchup-api-stubs.rb +1 -1
- metadata +20 -16
@@ -0,0 +1,261 @@
|
|
1
|
+
# Copyright:: Copyright 2023 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
|
@@ -1,127 +1,127 @@
|
|
1
|
-
# Copyright:: Copyright
|
2
|
-
# License:: The MIT License (MIT)
|
3
|
-
|
4
|
-
# This observer interface is implemented to react to {Sketchup::Entities}
|
5
|
-
# collection events.
|
6
|
-
#
|
7
|
-
# @abstract To implement this observer, create a Ruby class of this
|
8
|
-
# type, override the desired methods, and add an instance of the observer to
|
9
|
-
# the objects of interests.
|
10
|
-
#
|
11
|
-
# @example
|
12
|
-
# # This is an example of an observer that watches the entities collection
|
13
|
-
# # new added elements and writes a message on the console.
|
14
|
-
# class MyEntitiesObserver < Sketchup::EntitiesObserver
|
15
|
-
# def onElementAdded(entities, entity)
|
16
|
-
# puts "onElementAdded: #{entity}"
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
#
|
20
|
-
# # Attach the observer
|
21
|
-
# Sketchup.active_model.entities.add_observer(MyEntitiesObserver.new)
|
22
|
-
#
|
23
|
-
# @note The methods of this observer fire in such a way that making changes
|
24
|
-
# to the model while inside of them is dangerous. If you experience sudden
|
25
|
-
# crashes, it could be because of this observer. A potential workaround is to
|
26
|
-
# use a {Sketchup::ToolsObserver} to watch what the user is doing instead.
|
27
|
-
#
|
28
|
-
# @version SketchUp 6.0
|
29
|
-
class Sketchup::EntitiesObserver
|
30
|
-
|
31
|
-
# Instance Methods
|
32
|
-
|
33
|
-
# The {#onActiveSectionPlaneChanged} method is invoked when a section plane
|
34
|
-
# within this entities is activated or the active one is deactivated.
|
35
|
-
#
|
36
|
-
# @example
|
37
|
-
# def onActiveSectionPlaneChanged(entities)
|
38
|
-
# sp = entities.active_section_plane
|
39
|
-
# if sp.nil?
|
40
|
-
# puts "Section plane is deactivated on #{entities}"
|
41
|
-
# else
|
42
|
-
# puts "#{sp} is activated on #{entities}"
|
43
|
-
# end
|
44
|
-
# end
|
45
|
-
#
|
46
|
-
# @param [Sketchup::Entities] entities
|
47
|
-
#
|
48
|
-
# @return [nil]
|
49
|
-
#
|
50
|
-
# @version SketchUp 2014
|
51
|
-
def onActiveSectionPlaneChanged(entities)
|
52
|
-
end
|
53
|
-
|
54
|
-
# The onElementAdded method is invoked when a single element is added
|
55
|
-
# to the {Sketchup::Entities} collection.
|
56
|
-
#
|
57
|
-
# @example
|
58
|
-
# def onElementAdded(entities, entity)
|
59
|
-
# puts "onElementAdded: #{entity}"
|
60
|
-
# end
|
61
|
-
#
|
62
|
-
# @param [Sketchup::Entities] entities
|
63
|
-
#
|
64
|
-
# @param [Sketchup::Entity] entity
|
65
|
-
#
|
66
|
-
# @return [nil]
|
67
|
-
#
|
68
|
-
# @version SketchUp 6.0
|
69
|
-
def onElementAdded(entities, entity)
|
70
|
-
end
|
71
|
-
|
72
|
-
# The {#onElementModified} method is invoked whenever one or more elements in
|
73
|
-
# the collection are modified.
|
74
|
-
#
|
75
|
-
# @example
|
76
|
-
# def onElementModified(entities, entity)
|
77
|
-
# puts "onElementModified: #{entity}"
|
78
|
-
# end
|
79
|
-
#
|
80
|
-
# @param [Sketchup::Entities] entities
|
81
|
-
#
|
82
|
-
# @param [Sketchup::Entity] entity
|
83
|
-
#
|
84
|
-
# @return [nil]
|
85
|
-
#
|
86
|
-
# @version SketchUp 8.0
|
87
|
-
def onElementModified(entities, entity)
|
88
|
-
end
|
89
|
-
|
90
|
-
# The {#onElementRemoved} method is invoked when a single element is removed
|
91
|
-
# from the {Sketchup::Entities} collection. Note that the entity has been
|
92
|
-
# deleted and should not be used in anyway except to know that the entity has
|
93
|
-
# been deleted.
|
94
|
-
#
|
95
|
-
# @example
|
96
|
-
# def onElementRemoved(entities, entity_id)
|
97
|
-
# puts "onElementRemoved: #{entity_id}"
|
98
|
-
# end
|
99
|
-
#
|
100
|
-
# @param [Sketchup::Entities] entities
|
101
|
-
#
|
102
|
-
# @param [Sketchup::Entity] entity_id
|
103
|
-
# The id of the entity that was
|
104
|
-
# deleted/removed.
|
105
|
-
#
|
106
|
-
# @return [nil]
|
107
|
-
#
|
108
|
-
# @version SketchUp 6.0
|
109
|
-
def onElementRemoved(entities, entity_id)
|
110
|
-
end
|
111
|
-
|
112
|
-
# The {#onEraseEntities} method is invoked when one or more entities are erased.
|
113
|
-
#
|
114
|
-
# @example
|
115
|
-
# def onEraseEntities(entities)
|
116
|
-
# puts "onEraseEntities: #{entities}"
|
117
|
-
# end
|
118
|
-
#
|
119
|
-
# @param [Sketchup::Entities] entities
|
120
|
-
#
|
121
|
-
# @return [nil]
|
122
|
-
#
|
123
|
-
# @version SketchUp 6.0
|
124
|
-
def onEraseEntities(entities)
|
125
|
-
end
|
126
|
-
|
127
|
-
end
|
1
|
+
# Copyright:: Copyright 2023 Trimble Inc.
|
2
|
+
# License:: The MIT License (MIT)
|
3
|
+
|
4
|
+
# This observer interface is implemented to react to {Sketchup::Entities}
|
5
|
+
# collection events.
|
6
|
+
#
|
7
|
+
# @abstract To implement this observer, create a Ruby class of this
|
8
|
+
# type, override the desired methods, and add an instance of the observer to
|
9
|
+
# the objects of interests.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# # This is an example of an observer that watches the entities collection
|
13
|
+
# # new added elements and writes a message on the console.
|
14
|
+
# class MyEntitiesObserver < Sketchup::EntitiesObserver
|
15
|
+
# def onElementAdded(entities, entity)
|
16
|
+
# puts "onElementAdded: #{entity}"
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# # Attach the observer
|
21
|
+
# Sketchup.active_model.entities.add_observer(MyEntitiesObserver.new)
|
22
|
+
#
|
23
|
+
# @note The methods of this observer fire in such a way that making changes
|
24
|
+
# to the model while inside of them is dangerous. If you experience sudden
|
25
|
+
# crashes, it could be because of this observer. A potential workaround is to
|
26
|
+
# use a {Sketchup::ToolsObserver} to watch what the user is doing instead.
|
27
|
+
#
|
28
|
+
# @version SketchUp 6.0
|
29
|
+
class Sketchup::EntitiesObserver
|
30
|
+
|
31
|
+
# Instance Methods
|
32
|
+
|
33
|
+
# The {#onActiveSectionPlaneChanged} method is invoked when a section plane
|
34
|
+
# within this entities is activated or the active one is deactivated.
|
35
|
+
#
|
36
|
+
# @example
|
37
|
+
# def onActiveSectionPlaneChanged(entities)
|
38
|
+
# sp = entities.active_section_plane
|
39
|
+
# if sp.nil?
|
40
|
+
# puts "Section plane is deactivated on #{entities}"
|
41
|
+
# else
|
42
|
+
# puts "#{sp} is activated on #{entities}"
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
# @param [Sketchup::Entities] entities
|
47
|
+
#
|
48
|
+
# @return [nil]
|
49
|
+
#
|
50
|
+
# @version SketchUp 2014
|
51
|
+
def onActiveSectionPlaneChanged(entities)
|
52
|
+
end
|
53
|
+
|
54
|
+
# The onElementAdded method is invoked when a single element is added
|
55
|
+
# to the {Sketchup::Entities} collection.
|
56
|
+
#
|
57
|
+
# @example
|
58
|
+
# def onElementAdded(entities, entity)
|
59
|
+
# puts "onElementAdded: #{entity}"
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# @param [Sketchup::Entities] entities
|
63
|
+
#
|
64
|
+
# @param [Sketchup::Entity] entity
|
65
|
+
#
|
66
|
+
# @return [nil]
|
67
|
+
#
|
68
|
+
# @version SketchUp 6.0
|
69
|
+
def onElementAdded(entities, entity)
|
70
|
+
end
|
71
|
+
|
72
|
+
# The {#onElementModified} method is invoked whenever one or more elements in
|
73
|
+
# the collection are modified.
|
74
|
+
#
|
75
|
+
# @example
|
76
|
+
# def onElementModified(entities, entity)
|
77
|
+
# puts "onElementModified: #{entity}"
|
78
|
+
# end
|
79
|
+
#
|
80
|
+
# @param [Sketchup::Entities] entities
|
81
|
+
#
|
82
|
+
# @param [Sketchup::Entity] entity
|
83
|
+
#
|
84
|
+
# @return [nil]
|
85
|
+
#
|
86
|
+
# @version SketchUp 8.0
|
87
|
+
def onElementModified(entities, entity)
|
88
|
+
end
|
89
|
+
|
90
|
+
# The {#onElementRemoved} method is invoked when a single element is removed
|
91
|
+
# from the {Sketchup::Entities} collection. Note that the entity has been
|
92
|
+
# deleted and should not be used in anyway except to know that the entity has
|
93
|
+
# been deleted.
|
94
|
+
#
|
95
|
+
# @example
|
96
|
+
# def onElementRemoved(entities, entity_id)
|
97
|
+
# puts "onElementRemoved: #{entity_id}"
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
# @param [Sketchup::Entities] entities
|
101
|
+
#
|
102
|
+
# @param [Sketchup::Entity] entity_id
|
103
|
+
# The id of the entity that was
|
104
|
+
# deleted/removed.
|
105
|
+
#
|
106
|
+
# @return [nil]
|
107
|
+
#
|
108
|
+
# @version SketchUp 6.0
|
109
|
+
def onElementRemoved(entities, entity_id)
|
110
|
+
end
|
111
|
+
|
112
|
+
# The {#onEraseEntities} method is invoked when one or more entities are erased.
|
113
|
+
#
|
114
|
+
# @example
|
115
|
+
# def onEraseEntities(entities)
|
116
|
+
# puts "onEraseEntities: #{entities}"
|
117
|
+
# end
|
118
|
+
#
|
119
|
+
# @param [Sketchup::Entities] entities
|
120
|
+
#
|
121
|
+
# @return [nil]
|
122
|
+
#
|
123
|
+
# @version SketchUp 6.0
|
124
|
+
def onEraseEntities(entities)
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|