sketchup-api-stubs 0.7.7 → 0.7.8

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.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +2 -1
  3. data/lib/sketchup-api-stubs/stubs/{array.rb → Array.rb} +1 -1
  4. data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +1 -1
  5. data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +1 -1
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +1 -1
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +1 -1
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +1 -1
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +1 -1
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +18 -4
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +1 -1
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +1 -1
  13. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +1 -1
  14. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +1 -1
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +16 -14
  16. data/lib/sketchup-api-stubs/stubs/{geom.rb → Geom.rb} +1 -1
  17. data/lib/sketchup-api-stubs/stubs/{languagehandler.rb → LanguageHandler.rb} +5 -4
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +76 -54
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +311 -24
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +8 -4
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +1 -1
  22. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +2 -1
  23. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +1 -1
  24. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +1 -1
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +1 -1
  26. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +16 -11
  27. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +1 -1
  28. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +1 -1
  29. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +1 -1
  30. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +2 -2
  31. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +1 -1
  32. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +1 -1
  33. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +1 -1
  34. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +1 -1
  35. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +1 -1
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +1 -1
  37. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +1 -1
  38. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +1 -1
  39. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +2 -2
  40. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +1 -1
  41. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +1 -1
  42. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +9 -11
  43. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1 -1
  44. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +1 -1
  45. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +1 -1
  46. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +1 -1
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +1 -1
  48. data/lib/sketchup-api-stubs/stubs/Layout.rb +1 -1
  49. data/lib/sketchup-api-stubs/stubs/{length.rb → Length.rb} +1 -1
  50. data/lib/sketchup-api-stubs/stubs/{numeric.rb → Numeric.rb} +1 -1
  51. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +1 -1
  52. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +13 -1
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +1 -1
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +1 -1
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +1 -1
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +1 -1
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +1 -1
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +1 -1
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +1 -1
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +1 -1
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +1 -1
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +50 -8
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +7 -8
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +1 -1
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +1 -1
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +1 -1
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +1 -1
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +7 -6
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +1 -1
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +1 -1
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +1 -1
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +1 -1
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +1 -1
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +1 -1
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +1 -1
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +1 -1
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +1 -1
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +120 -41
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +272 -0
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +1 -1
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +1 -1
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +1 -1
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +2 -2
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +27 -7
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +1 -1
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +1 -1
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +1 -1
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +1 -1
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +1 -1
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +1 -1
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +1 -1
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +1 -1
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +4 -2
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +1 -1
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +1 -1
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +7 -8
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +8 -8
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +2 -2
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +1 -1
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +1 -1
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +3 -3
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +1 -1
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +1 -1
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +1 -1
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +1 -1
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +2 -2
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +1 -1
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +1 -1
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +68 -71
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +1 -1
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +2 -2
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +2 -2
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +1 -1
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +7 -7
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +2 -2
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +1 -1
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +4 -5
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +1 -1
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +1 -1
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +1 -1
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +1 -1
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +2 -2
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +1 -1
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +1 -1
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +7 -4
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +1 -1
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +1 -1
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +1 -1
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +2 -2
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +1 -1
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +1 -1
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +1 -1
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +5 -3
  134. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +1 -1
  135. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +1 -1
  136. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +9 -5
  137. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +1 -1
  138. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +14 -4
  139. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +1 -1
  140. data/lib/sketchup-api-stubs/stubs/{sketchup.rb → Sketchup.rb} +10 -3
  141. data/lib/sketchup-api-stubs/stubs/{sketchupextension.rb → SketchupExtension.rb} +1 -1
  142. data/lib/sketchup-api-stubs/stubs/{string.rb → String.rb} +1 -1
  143. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +79 -7
  144. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +26 -8
  145. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +1 -1
  146. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +1 -1
  147. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +18 -16
  148. data/lib/sketchup-api-stubs/stubs/{ui.rb → UI.rb} +25 -14
  149. data/lib/sketchup-api-stubs/stubs/_top_level.rb +1 -1
  150. metadata +12 -11
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # The {Sketchup::Entities} class is a collection of Entity objects, either in a
@@ -69,51 +69,53 @@ class Sketchup::Entities
69
69
  # The add_3d_text is used to create 3D text. It will be added as edges and
70
70
  # faces drawn at the origin.
71
71
  #
72
- # @example
73
- # # Draw the word "test" at the origin of the model, aligned left, in
74
- # # Arial Bold, not italics, 1" in size, best tolerance quality, filled,
75
- # # with an extrusion size of 5".
76
- # entities = Sketchup.active_model.entities
77
- # success = entities.add_3d_text('test', TextAlignLeft, "Arial",
78
- # true, false, 1.0, 0.0, 0.5, true, 5.0)
72
+ # = 1.0, tolerance = 0.0, z = 0.0, is_filled = true, extrusion = 0.0)
79
73
  #
80
- # @param [String] string
81
- # The text to create.
74
+ # @param [String] string
75
+ # The text to create.
82
76
  #
83
- # @param [Integer] alignment
84
- # Number that defines the alignment. There are constants
85
- # called TextAlignLeft, TextAlignRight, and
86
- # TextAlignCenter that can be passed.
77
+ # @param [Integer] alignment
78
+ # Number that defines the alignment. There are constants
79
+ # called TextAlignLeft, TextAlignRight, and
80
+ # TextAlignCenter that can be passed.
87
81
  #
88
- # @param [String] font
89
- # font name.
82
+ # @param [String] font
83
+ # font name.
90
84
  #
91
- # @param [Boolean] is_bold
92
- # true for bold.
85
+ # @param [Boolean] is_bold
86
+ # true for bold.
93
87
  #
94
- # @param [Boolean] is_italic
95
- # true for italic.
88
+ # @param [Boolean] is_italic
89
+ # true for italic.
96
90
  #
97
- # @param [Numeric] letter_height
98
- # Height of the text in inches.
91
+ # @param [Numeric] letter_height
92
+ # Height of the text in inches.
99
93
  #
100
- # @param [Numeric] tolerance
101
- # Tolerance of the curve creation. Defaults to
102
- # 0.0, which creates the highest possible curve quality.
94
+ # @param [Numeric] tolerance
95
+ # Tolerance of the curve creation. Defaults to
96
+ # 0.0, which creates the highest possible curve quality.
103
97
  #
104
- # @param [Numeric] z
105
- # z position in inches.
98
+ # @param [Numeric] z
99
+ # z position in inches.
106
100
  #
107
- # @param [Boolean] is_filled
108
- # true for filled, which will put a face between the edges of the letters.
101
+ # @param [Boolean] is_filled
102
+ # true for filled, which will put a face between the edges of the letters.
109
103
  #
110
- # @param [Numeric] extrusion
111
- # Extrusion depth in inches.
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)
112
114
  #
113
115
  # @return [Boolean] true if successful
114
116
  #
115
117
  # @version SketchUp 6.0
116
- 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)
118
+ def add_3d_text(string, alignment, font, is_bold = false, is_italic = false, letter_height)
117
119
  end
118
120
 
119
121
  # The add_arc method is used to create an arc curve segment.
@@ -263,6 +265,10 @@ class Sketchup::Entities
263
265
 
264
266
  # The {#add_dimension_linear} method adds a linear dimension to the entities.
265
267
  #
268
+ # [instance_path, end_point], vector)
269
+ #
270
+ # vector)
271
+ #
266
272
  # @example
267
273
  # entities = Sketchup.active_model.entities
268
274
  # # From point to point
@@ -288,7 +294,7 @@ class Sketchup::Entities
288
294
  # start_point = edge.start.position
289
295
  # end_point = edge.end.position
290
296
  # vector = Geom::Vector3d.new(30, 30, 0)
291
- # Sketchup.active_model.entities.add_dimension_linear([instance_path, start_point], [instance_path, end_point], vector)
297
+ # Sketchup.active_model.entities.add_dimension_linear([instance_path, start_point],
292
298
  #
293
299
  # @example Instance path as an array
294
300
  # instance = Sketchup.active_model.active_entities.grep(Sketchup::ComponentInstance).first
@@ -297,7 +303,7 @@ class Sketchup::Entities
297
303
  # start_point = edge.start.position
298
304
  # end_point = edge.end.position
299
305
  # vector = Geom::Vector3d.new(30, 30, 0)
300
- # Sketchup.active_model.entities.add_dimension_linear([path, start_point], [path, end_point], vector)
306
+ # Sketchup.active_model.entities.add_dimension_linear([path, start_point], [path, end_point],
301
307
  #
302
308
  # @overload add_dimension_linear(start_pt_or_entity, end_pt_or_entity, offset_vector)
303
309
  #
@@ -400,6 +406,10 @@ class Sketchup::Entities
400
406
  #
401
407
  # @return [Array<Sketchup::Edge>] an array of Edge objects if successful
402
408
  #
409
+ # @see Sketchup::EntitiesBuilder#add_edges
410
+ # EntitiesBuilder#add_edges, alternative
411
+ # for generating bulk geometry with performance in mind.
412
+ #
403
413
  # @version SketchUp 6.0
404
414
  def add_edges(*args)
405
415
  end
@@ -416,9 +426,6 @@ class Sketchup::Entities
416
426
  # For the last form that takes a Curve, the curve must be closed - like a
417
427
  # circle.
418
428
  #
419
- # Note that a special case exists for any face created on the ground plane, in
420
- # which case the vertex order is ignored and the face is always facing down.
421
- #
422
429
  # @example
423
430
  # depth = 100
424
431
  # width = 100
@@ -432,6 +439,9 @@ class Sketchup::Entities
432
439
  # # Add the face to the entities in the model
433
440
  # face = entities.add_face(pts)
434
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
+ #
435
445
  # @overload add_face(entities)
436
446
  #
437
447
  # @param [Array<Sketchup::Edge>, Array<Geom::Point3d>, Sketchup::Curve] entities
@@ -442,12 +452,19 @@ class Sketchup::Entities
442
452
  #
443
453
  # @return [Sketchup::Face, nil]
444
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
+ #
445
462
  # @version SketchUp 6.0
446
463
  def add_face(*args)
447
464
  end
448
465
 
449
- # The {#add_faces_from_mesh} method is used to add Face objects to the
450
- # collection of entities from a PolygonMesh.
466
+ # The {#add_faces_from_mesh} method is used to add {Sketchup::Face} entities to the
467
+ # collection of entities from a {Geom::PolygonMesh}.
451
468
  #
452
469
  # The +smooth_flags+ parameter can contain any of the following values if
453
470
  # passed. The constants were added in SketchUp 2014. For previous versions,
@@ -459,7 +476,7 @@ class Sketchup::Entities
459
476
  # - 4: {Geom::PolygonMesh::AUTO_SOFTEN} (Interior edges are softened.)
460
477
  # - 8: {Geom::PolygonMesh::SMOOTH_SOFT_EDGES} (All soft edges will also be smooth.)
461
478
  #
462
- # The 3rd and 4th parameters will accept a {sketchup::Material} object or a
479
+ # The 3rd and 4th parameters will accept a {Sketchup::Material} object or a
463
480
  # string name of a material currently in the model.
464
481
  #
465
482
  # @example
@@ -492,6 +509,13 @@ class Sketchup::Entities
492
509
  #
493
510
  # @return [Integer] Number of faces created
494
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
+ #
495
519
  # @version SketchUp 6.0
496
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)
497
521
  end
@@ -621,6 +645,13 @@ class Sketchup::Entities
621
645
  #
622
646
  # @return [Sketchup::Edge] a Edge object if successful
623
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
+ #
624
655
  # @version SketchUp 6.0
625
656
  def add_line(point1, point2)
626
657
  end
@@ -770,6 +801,47 @@ class Sketchup::Entities
770
801
  def at(entity_index)
771
802
  end
772
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
+
773
845
  # The clear! method is used to remove all entities from the collection of
774
846
  # entities.
775
847
  #
@@ -796,7 +868,7 @@ class Sketchup::Entities
796
868
  # number = entities.count
797
869
  #
798
870
  # @note Since SketchUp 2014 the count method is inherited from Ruby's
799
- # +Enumable+ mix-in module. Prior to that the {#count} method is an alias
871
+ # +Enumerable+ mix-in module. Prior to that the {#count} method is an alias
800
872
  # for {#length}.
801
873
  #
802
874
  # @return [Integer]
@@ -922,6 +994,13 @@ class Sketchup::Entities
922
994
  #
923
995
  # @return [Boolean]
924
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
+ #
925
1004
  # @version SketchUp 6.0
926
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)
927
1006
  end
@@ -0,0 +1,272 @@
1
+ # Copyright:: Copyright 2022 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
+ # @api EntitiesBuilder
28
+ #
29
+ # @example Creating a triangulated grid
30
+ # model = Sketchup.active_model
31
+ # model.start_operation('Create Grid', true)
32
+ # model.entities.build { |builder|
33
+ # # Creates a grid similar to Sandbox Tools, with each square
34
+ # # triangulated with a soft+smooth edge.
35
+ # 10.times { |x|
36
+ # 10.times { |y|
37
+ # # 4 +--+ 3
38
+ # # |\ |
39
+ # # | \|
40
+ # # 1 +--+ 2
41
+ # pt1 = Geom::Point3d.new(x, y, 0)
42
+ # pt2 = Geom::Point3d.new(x + 1, y, 0)
43
+ # pt3 = Geom::Point3d.new(x + 1, y + 1, 0)
44
+ # pt4 = Geom::Point3d.new(x, y + 1, 0)
45
+ # face1 = builder.add_face([pt1, pt2, pt4])
46
+ # face2 = builder.add_face([pt2, pt3, pt4])
47
+ # material = (x + y).odd? ? 'red' : 'maroon'
48
+ # face1.material = material
49
+ # face2.material = material
50
+ # edge = builder.add_edge(pt2, pt4)
51
+ # edge.soft = true
52
+ # edge.smooth = true
53
+ # }
54
+ # }
55
+ # }
56
+ # model.commit_operation
57
+ #
58
+ # @note Like {Geom::PolygonMesh} there is minimal validation checks made on
59
+ # the input to the creation of the geometry. Vertices are de-duplicated and
60
+ # edges sharing the same vertices will be de-duplicated. But no intersection
61
+ # of overlapping entities is made. It leaves a higher responsibility on the
62
+ # API user to produce valid geometry.
63
+ #
64
+ # @note While using {Sketchup::Entities#build} it is important to not
65
+ # add or remove vertices by other means of the builder. Also don't modify the
66
+ # position of the vertices in the {Sketchup::Entities} container geometry is
67
+ # added to. Doing so can break the vertex-cache that de-duplicates the vertices.
68
+ #
69
+ # @see file:pages/generating_geometry.md
70
+ # Guide on Generating Geometry
71
+ #
72
+ # @see Sketchup::Entities#build
73
+ #
74
+ # @see Sketchup::Entities
75
+ #
76
+ # @see Geom::PolygonMesh
77
+ #
78
+ # @version SketchUp 2022.0
79
+ class Sketchup::EntitiesBuilder
80
+
81
+ # Instance Methods
82
+
83
+ # Adds a {Sketchup::Edge} to the {#entities} collection.
84
+ #
85
+ # @api EntitiesBuilder
86
+ #
87
+ # @example
88
+ # model = Sketchup.active_model
89
+ # model.entities.build { |builder|
90
+ # edge = builder.add_edge([0, 0, 0], [9, 0, 0])
91
+ # edge.material = 'red'
92
+ # }
93
+ #
94
+ # @note Does not split intersecting faces or edges.
95
+ #
96
+ # @overload add_edge(point1, point2)
97
+ #
98
+ # @param [Geom::Point3d] point1
99
+ # @param [Geom::Point3d] point2
100
+ #
101
+ # @overload add_edge(points)
102
+ #
103
+ # @param [Array(Geom::Point3d, Geom::Point3d)] points
104
+ #
105
+ # @raise [ArgumentError] If the points are considered equal.
106
+ #
107
+ # @raise [RuntimeError] If the builder is not valid.
108
+ #
109
+ # @return [Sketchup::Edge]
110
+ #
111
+ # @see Sketchup::Entities#add_line
112
+ #
113
+ # @version SketchUp 2022.0
114
+ def add_edge(*args)
115
+ end
116
+ alias_method :add_line, :add_edge
117
+
118
+ # Adds a continuous set of {Sketchup::Edge}'s to the {#entities} collection.
119
+ #
120
+ # @api EntitiesBuilder
121
+ #
122
+ # @example
123
+ # model = Sketchup.active_model
124
+ # model.entities.build { |builder|
125
+ # edges = builder.add_edges([0, 0, 0], [6, 0, 0], [9, 0, 8]) # => 2 edges
126
+ # edges.each { |edge|
127
+ # edge.material = 'red'
128
+ # }
129
+ # }
130
+ #
131
+ # @note Does not split intersecting faces or edges.
132
+ #
133
+ # @overload add_edges(points)
134
+ #
135
+ # @param [Array<Geom::Point3d>] points
136
+ #
137
+ # @overload add_edges(*points)
138
+ #
139
+ # @param [Array<Geom::Point3d>] points
140
+ #
141
+ # @raise [RuntimeError] If the builder is not valid.
142
+ #
143
+ # @return [Array<Sketchup::Edge, nil>] In the array, for each pair in +points+ an edge is returned.
144
+ # If two point are so close they are considered identical then +nil+ is returned.
145
+ #
146
+ # @see Sketchup::Entities#add_edges
147
+ #
148
+ # @version SketchUp 2022.0
149
+ def add_edges(*args)
150
+ end
151
+
152
+ # Adds a {Sketchup::Face} to the {#entities} collection.
153
+ #
154
+ # @api EntitiesBuilder
155
+ #
156
+ # @example Adding a simple face
157
+ # model = Sketchup.active_model
158
+ # model.entities.build { |builder|
159
+ # face = builder.add_face([[0, 0, 0], [6, 0, 0], [6, 8, 0], [0, 8, 0]])
160
+ # face.material = 'red'
161
+ # }
162
+ #
163
+ # @example Adding an edge with two holes
164
+ # model = Sketchup.active_model
165
+ # model.entities.build { |builder|
166
+ # outer_loop = [[0, 0, 0], [8, 0, 0], [8, 9, 0], [0, 9, 0]]
167
+ # hole1 = [[1, 1, 0], [3, 1, 0], [3, 8, 0], [1, 8, 0]]
168
+ # hole2 = [[4, 1, 0], [7, 1, 0], [7, 8, 0], [4, 8, 0]]
169
+ # face = builder.add_face(outer_loop, holes: [hole1, hole2])
170
+ # }
171
+ #
172
+ # @note Does not split intersecting faces or edges.
173
+ #
174
+ # @overload add_face(outer_loop)
175
+ #
176
+ # @param [Array<Geom::Point3d>] outer_loop
177
+ #
178
+ # @overload add_face(*outer_loop)
179
+ #
180
+ # @param [Array<Geom::Point3d>] outer_loop
181
+ #
182
+ # @overload add_face(outer_loop, holes: inner_loops)
183
+ #
184
+ # Adds a face with holes.
185
+ # @note The inner loops are not validated to be within the bounds of the outer loop.
186
+ # @param [Array<Geom::Point3d>] outer_loop
187
+ # @param [Array<Array<Geom::Point3d>>] inner_loops
188
+ #
189
+ # @overload add_face(*outer_loop, holes: inner_loops)
190
+ #
191
+ # Adds a face with holes.
192
+ # @note The inner loops are not validated to be within the bounds of the outer loop.
193
+ # @param [Array<Geom::Point3d>] outer_loop
194
+ # @param [Array<Array<Geom::Point3d>>] inner_loops
195
+ #
196
+ # @raise [ArgumentError] If points are not planar.
197
+ #
198
+ # @raise [ArgumentError] If any of the loops doesn't have at least 3 points.
199
+ #
200
+ # @raise [RuntimeError] If the builder is not valid.
201
+ #
202
+ # @return [Sketchup::Face]
203
+ #
204
+ # @see Sketchup::Entities#add_face
205
+ #
206
+ # @version SketchUp 2022.0
207
+ def add_face(*args)
208
+ end
209
+
210
+ # The {Sketchup::Entities} collection the {Sketchup::EntitiesBuilder} will add
211
+ # the geometry to.
212
+ #
213
+ # @api EntitiesBuilder
214
+ #
215
+ # @example
216
+ # model = Sketchup.active_model
217
+ # model.entities.build { |builder|
218
+ # p builder.entities == model.entities # => true
219
+ # }
220
+ #
221
+ # @raise [RuntimeError] If the builder is not valid.
222
+ #
223
+ # @return [Sketchup::Entities]
224
+ #
225
+ # @version SketchUp 2022.0
226
+ def entities
227
+ end
228
+
229
+ # Indicates whether the builder object is valid and can be used.
230
+ #
231
+ # A builder object is only valid within the scope of the block given to
232
+ # {Sketchup::Entities#build}.
233
+ #
234
+ # When this return +false+, calling any other method on the builder will raise
235
+ # an error.
236
+ #
237
+ # @api EntitiesBuilder
238
+ #
239
+ # @example
240
+ # model = Sketchup.active_model
241
+ # cached_builder = nil
242
+ # model.entities.build { |builder|
243
+ # p builder.valid? # => true
244
+ # cached_builder = builder # Don't hold on to builder objects.
245
+ # }
246
+ # p cached_builder.valid? # => false
247
+ #
248
+ # @return [Boolean]
249
+ #
250
+ # @version SketchUp 2022.0
251
+ def valid?
252
+ end
253
+
254
+ # Finds an existing {Sketchup::Vertex} for the given position, otherwise returns +nil+.
255
+ #
256
+ # @api EntitiesBuilder
257
+ #
258
+ # @example
259
+ # model = Sketchup.active_model
260
+ # model.entities.build { |builder|
261
+ # edge = builder.add_edge([1, 0, 0], [9, 0, 0])
262
+ # builder.vertex_at([0, 0, 0]) => nil
263
+ # builder.vertex_at([9, 0, 0]) => #<Sketchup::Vertex>
264
+ # }
265
+ #
266
+ # @return [Sketchup::Vertex, nil]
267
+ #
268
+ # @version SketchUp 2022.0
269
+ def vertex_at(position)
270
+ end
271
+
272
+ end
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # This observer interface is implemented to react to {Sketchup::Entities}
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # This is the base class for all SketchUp entities. Entities are basically
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # This observer interface is implemented to react to entity events.
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # The ExtensionsManager class provides a way of accessing the
@@ -51,7 +51,7 @@ class Sketchup::ExtensionsManager
51
51
  # number = manager.count
52
52
  #
53
53
  # @note Since SketchUp 2014 the count method is inherited from Ruby's
54
- # +Enumable+ mix-in module. Prior to that the {#count} method is an alias
54
+ # +Enumerable+ mix-in module. Prior to that the {#count} method is an alias
55
55
  # for {#length}.
56
56
  #
57
57
  # @return [Integer]
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # Faces in SketchUp are flat, 2-sided polygons with 3 or more sides.
@@ -200,6 +200,18 @@ class Sketchup::Face < Sketchup::Drawingelement
200
200
  def classify_point(point)
201
201
  end
202
202
 
203
+ # The {#clear_texture_position} method is used to remove any explicit
204
+ # texture positioning for a face and have SketchUp display it with the
205
+ # default texture positioning.
206
+ #
207
+ # @param [Boolean] front
208
+ # +true+ Clears on the front side of the face, +false+
209
+ # the back side.
210
+ #
211
+ # @version SketchUp 2022.0
212
+ def clear_texture_position(front)
213
+ end
214
+
203
215
  # The {#clear_texture_projection} method is used to clear the texture
204
216
  # projection. This is similar to toggling off Projection from the Position
205
217
  # Texture tool in the UI.
@@ -325,6 +337,8 @@ class Sketchup::Face < Sketchup::Drawingelement
325
337
  # The get_glued_instances method returns an Array any ComponentInstances
326
338
  # that are glued to the face.
327
339
  #
340
+ # ComponentInstance objects that are currently glued to the face.
341
+ #
328
342
  # @example
329
343
  # # Create a series of points that define a new face.
330
344
  # model = Sketchup.active_model
@@ -339,8 +353,7 @@ class Sketchup::Face < Sketchup::Drawingelement
339
353
  # face = entities.add_face(pts)
340
354
  # glued_array = face.get_glued_instances
341
355
  #
342
- # @return [Array<Sketchup::ComponentInstance, Sketchup::Group, Sketchup::Image>] An array of ComponentInstance objects that
343
- # are currently glued to the face.
356
+ # @return [Array<Sketchup::ComponentInstance, Sketchup::Group, Sketchup::Image>] An array of
344
357
  #
345
358
  # @version SketchUp 7.0 M1
346
359
  def get_glued_instances
@@ -645,6 +658,8 @@ class Sketchup::Face < Sketchup::Drawingelement
645
658
  #
646
659
  # @overload position_material(material, points, on_front, projection)
647
660
  #
661
+ # @version SketchUp 2021.1
662
+ #
648
663
  # This variant positions a material on the face's plane with projection.
649
664
  #
650
665
  # @param [Sketchup::Material] material
@@ -742,7 +757,7 @@ class Sketchup::Face < Sketchup::Drawingelement
742
757
  #
743
758
  # @deprecated This function never worked correctly. It's not capable of
744
759
  # controlling the position and orientation of the texture. In some cases it
745
- # produced an invalid model. After SketchUp 2021.1 the method will raise
760
+ # produced an invalid model. As of SketchUp 2021.1 the method simply raises
746
761
  # +NotImplementedError+.
747
762
  #
748
763
  # @param [Geom::Vector3d] vector
@@ -784,7 +799,7 @@ class Sketchup::Face < Sketchup::Drawingelement
784
799
  # }
785
800
  #
786
801
  # @param [Boolean] front
787
- # +true+ Checks the front side of the face, +face+
802
+ # +true+ Checks the front side of the face, +false+
788
803
  # the back side.
789
804
  #
790
805
  # @return [Boolean]
@@ -809,7 +824,7 @@ class Sketchup::Face < Sketchup::Drawingelement
809
824
  # {#position_material}.
810
825
  #
811
826
  # @param [Boolean] front
812
- # +true+ Checks the front side of the face, +face+
827
+ # +true+ Checks the front side of the face, +false+
813
828
  # the back side.
814
829
  #
815
830
  # @return [Boolean]
@@ -842,6 +857,11 @@ class Sketchup::Face < Sketchup::Drawingelement
842
857
  #
843
858
  # rdoc-image:../images/face-uv-tile-at.png
844
859
  #
860
+ # @bug Fixed in SketchUp 2022.0: If the +position+ argument should line up exact
861
+ # U or V axes of the UV coordinate system the returned set of points won't
862
+ # be correct. A workaround for older SketchUp versions would be to slightly
863
+ # offset the +position+ argument.
864
+ #
845
865
  # @example Copy material from front to back
846
866
  # model = Sketchup.active_model
847
867
  # model.active_entities.grep(Sketchup::Face) { |face|
@@ -876,7 +896,7 @@ class Sketchup::Face < Sketchup::Drawingelement
876
896
  # bounded by the UV tile.
877
897
  #
878
898
  # @param [Boolean] front
879
- # +true+ Checks the front side of the face, +face+
899
+ # +true+ Checks the front side of the face, +false+
880
900
  # the back side.
881
901
  #
882
902
  # @return [Array<Geom::Point3d>, nil] A set of 8 points. Each stride of two is
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # This observer interface is implemented to react to changes in camera
@@ -1,4 +1,4 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
1
+ # Copyright:: Copyright 2022 Trimble Inc.
2
2
  # License:: The MIT License (MIT)
3
3
 
4
4
  # A Group class contains methods for manipulating groups of entities.