@metamesh/modeling 0.15.0 → 0.17.0

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 (719) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +54 -6
  3. package/dist/api/engine.d.ts +4 -3
  4. package/dist/api/geometry.d.ts +608 -266
  5. package/dist/api/index.d.ts +516 -110
  6. package/dist/api/text.d.ts +6 -6
  7. package/dist/docs/guides/concepts.md +298 -106
  8. package/dist/docs/guides/fonts.md +9 -8
  9. package/dist/docs/guides/fundamentals.md +17 -21
  10. package/dist/docs/guides/generation.md +24 -23
  11. package/dist/docs/guides/hosting.md +25 -20
  12. package/dist/docs/guides/recipes.md +68 -36
  13. package/dist/docs/guides/standalone-model.md +42 -0
  14. package/dist/docs/manifest.json +1034 -296
  15. package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
  16. package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
  17. package/dist/docs/reference/engine/GenerationOptions.md +1 -1
  18. package/dist/docs/reference/engine/GeometryResource.md +1 -1
  19. package/dist/docs/reference/engine/ModelDependencies.md +1 -1
  20. package/dist/docs/reference/engine/ModelEngine.md +1 -1
  21. package/dist/docs/reference/engine/ModelEngineOptions.md +1 -1
  22. package/dist/docs/reference/engine/ModelSession.md +1 -1
  23. package/dist/docs/reference/engine/ModelSnapshot.md +2 -2
  24. package/dist/docs/reference/engine/SessionOptions.md +1 -1
  25. package/dist/docs/reference/engine/SnapshotPart.md +7 -4
  26. package/dist/docs/reference/engine/categories/host-lifecycle.md +8 -3
  27. package/dist/docs/reference/engine/createModelEngine.md +1 -1
  28. package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
  29. package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
  30. package/dist/docs/reference/engine/validateModel.md +1 -1
  31. package/dist/docs/reference/engine.md +6 -2
  32. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +5 -1
  33. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +1 -1
  34. package/dist/docs/reference/geometry/Anchor3-type.md +6 -5
  35. package/dist/docs/reference/geometry/ArcCurve2.md +7 -3
  36. package/dist/docs/reference/geometry/ArcCurve3.md +9 -5
  37. package/dist/docs/reference/geometry/AttachOptions.md +2 -1
  38. package/dist/docs/reference/geometry/AxisAngleRotation3.md +2 -1
  39. package/dist/docs/reference/geometry/Bounds2-type.md +127 -0
  40. package/dist/docs/reference/geometry/Bounds2Data.md +45 -0
  41. package/dist/docs/reference/geometry/Bounds2Input.md +21 -0
  42. package/dist/docs/reference/geometry/Bounds2Options.md +72 -0
  43. package/dist/docs/reference/geometry/Bounds3-type.md +127 -0
  44. package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
  45. package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
  46. package/dist/docs/reference/geometry/Bounds3Options.md +72 -0
  47. package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
  48. package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
  49. package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
  50. package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
  51. package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
  52. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  53. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  54. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  55. package/dist/docs/reference/geometry/BoxOptions.md +3 -3
  56. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
  57. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
  58. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  59. package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
  60. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
  61. package/dist/docs/reference/geometry/CircularResolutionOptions.md +1 -1
  62. package/dist/docs/reference/geometry/CircularSampling.md +41 -0
  63. package/dist/docs/reference/geometry/CircularSamplingOptions.md +14 -0
  64. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
  65. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
  66. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
  67. package/dist/docs/reference/geometry/Contour.md +10 -4
  68. package/dist/docs/reference/geometry/ContourCurve.md +5 -1
  69. package/dist/docs/reference/geometry/ContourPoint.md +6 -1
  70. package/dist/docs/reference/geometry/ContourSegment.md +5 -1
  71. package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
  72. package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
  73. package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
  74. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
  75. package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
  76. package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
  77. package/dist/docs/reference/geometry/Curve2.md +5 -1
  78. package/dist/docs/reference/geometry/Curve3.md +5 -1
  79. package/dist/docs/reference/geometry/CurveSamplingOptions.md +5 -1
  80. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
  81. package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
  82. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -3
  83. package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
  84. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +6 -1
  85. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
  86. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
  87. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +5 -1
  88. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
  89. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
  90. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
  91. package/dist/docs/reference/geometry/CylindricalGearSpec.md +6 -1
  92. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  93. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  94. package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
  95. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  96. package/dist/docs/reference/geometry/ExtrudeOptions.md +5 -1
  97. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -1
  98. package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
  99. package/dist/docs/reference/geometry/Frame3.md +10 -6
  100. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  101. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  102. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  103. package/dist/docs/reference/geometry/GeometryResolution.md +1 -1
  104. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
  105. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  106. package/dist/docs/reference/geometry/GridPatternOptions.md +4 -4
  107. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
  108. package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
  109. package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
  110. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +5 -1
  111. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +5 -1
  112. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
  113. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
  114. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +5 -1
  115. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
  116. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
  117. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
  118. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
  119. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
  120. package/dist/docs/reference/geometry/LineCurve2.md +8 -4
  121. package/dist/docs/reference/geometry/LineCurve3.md +8 -4
  122. package/dist/docs/reference/geometry/LinearPatternOptions.md +1 -1
  123. package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
  124. package/dist/docs/reference/geometry/LoftMeshStation.md +5 -1
  125. package/dist/docs/reference/geometry/LoftOptions.md +5 -1
  126. package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
  127. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
  128. package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
  129. package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
  130. package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
  131. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
  132. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
  133. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  134. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
  135. package/dist/docs/reference/geometry/Path2-type.md +12 -8
  136. package/dist/docs/reference/geometry/Path2Data.md +40 -4
  137. package/dist/docs/reference/geometry/Path2Input.md +8 -3
  138. package/dist/docs/reference/geometry/Path3-type.md +12 -8
  139. package/dist/docs/reference/geometry/Path3Data.md +40 -4
  140. package/dist/docs/reference/geometry/Path3Input.md +8 -3
  141. package/dist/docs/reference/geometry/PathFrame.md +9 -5
  142. package/dist/docs/reference/geometry/PathLocation.md +5 -1
  143. package/dist/docs/reference/geometry/PathNormalGuide.md +8 -4
  144. package/dist/docs/reference/geometry/PathOptions.md +5 -1
  145. package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
  146. package/dist/docs/reference/geometry/PathPlacement.md +8 -4
  147. package/dist/docs/reference/geometry/PathResamplingOptions.md +5 -1
  148. package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
  149. package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
  150. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
  151. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +5 -1
  152. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
  153. package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
  154. package/dist/docs/reference/geometry/PolygonData.md +7 -2
  155. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +5 -1
  156. package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -1
  157. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
  158. package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
  159. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
  160. package/dist/docs/reference/geometry/Profile.md +8 -2
  161. package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
  162. package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
  163. package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
  164. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
  165. package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
  166. package/dist/docs/reference/geometry/RackPitchSpec.md +6 -1
  167. package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
  168. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  169. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  170. package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
  171. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
  172. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
  173. package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
  174. package/dist/docs/reference/geometry/RegionData.md +6 -2
  175. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +5 -1
  176. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  177. package/dist/docs/reference/geometry/RevolveOptions.md +5 -1
  178. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  179. package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
  180. package/dist/docs/reference/geometry/SampleContourOptions.md +5 -1
  181. package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
  182. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +5 -1
  183. package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
  184. package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
  185. package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
  186. package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
  187. package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
  188. package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
  189. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  190. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +5 -1
  191. package/dist/docs/reference/geometry/SphereOptions.md +1 -1
  192. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
  193. package/dist/docs/reference/geometry/StrokeCap.md +8 -1
  194. package/dist/docs/reference/geometry/StrokeJoin.md +8 -1
  195. package/dist/docs/reference/geometry/StrokeOptions.md +5 -1
  196. package/dist/docs/reference/geometry/SvgImportOptions.md +20 -1
  197. package/dist/docs/reference/geometry/SvgRegionPreflight.md +21 -2
  198. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +7 -3
  199. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +6 -1
  200. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +6 -1
  201. package/dist/docs/reference/geometry/SweepOptions.md +5 -1
  202. package/dist/docs/reference/geometry/SweepOrientation.md +5 -1
  203. package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
  204. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -1
  205. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
  206. package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
  207. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
  208. package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
  209. package/dist/docs/reference/geometry/ThreadHelixOptions.md +5 -1
  210. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
  211. package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
  212. package/dist/docs/reference/geometry/ThreadProfile-type.md +7 -3
  213. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
  214. package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
  215. package/dist/docs/reference/geometry/ThreadRole.md +8 -1
  216. package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
  217. package/dist/docs/reference/geometry/ThreadedNutOptions.md +5 -1
  218. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
  219. package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
  220. package/dist/docs/reference/geometry/ThreadedRodOptions.md +5 -1
  221. package/dist/docs/reference/geometry/TorusOptions.md +1 -1
  222. package/dist/docs/reference/geometry/Transform2-type.md +6 -5
  223. package/dist/docs/reference/geometry/Transform2Data.md +15 -0
  224. package/dist/docs/reference/geometry/Transform2Input.md +4 -3
  225. package/dist/docs/reference/geometry/Transform3-type.md +6 -5
  226. package/dist/docs/reference/geometry/Transform3Data.md +18 -0
  227. package/dist/docs/reference/geometry/Transform3Input.md +4 -3
  228. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +5 -1
  229. package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
  230. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +7 -3
  231. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
  232. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
  233. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +5 -1
  234. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
  235. package/dist/docs/reference/geometry/TriangleMeshSignature.md +7 -3
  236. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +6 -1
  237. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
  238. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
  239. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
  240. package/dist/docs/reference/geometry/TubeOptions.md +1 -1
  241. package/dist/docs/reference/geometry/Vector2-type.md +6 -5
  242. package/dist/docs/reference/geometry/Vector2Data.md +15 -0
  243. package/dist/docs/reference/geometry/Vector2Input.md +4 -3
  244. package/dist/docs/reference/geometry/Vector3-type.md +6 -5
  245. package/dist/docs/reference/geometry/Vector3Data.md +15 -0
  246. package/dist/docs/reference/geometry/Vector3Input.md +4 -3
  247. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +6 -1
  248. package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
  249. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +7 -3
  250. package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
  251. package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
  252. package/dist/docs/reference/geometry/add2.md +7 -6
  253. package/dist/docs/reference/geometry/add3.md +7 -6
  254. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
  255. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +5 -1
  256. package/dist/docs/reference/geometry/anchor3.md +2 -1
  257. package/dist/docs/reference/geometry/anchorFrame3.md +5 -1
  258. package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
  259. package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
  260. package/dist/docs/reference/geometry/attachmentTransform3.md +5 -4
  261. package/dist/docs/reference/geometry/bounds2.md +39 -0
  262. package/dist/docs/reference/geometry/bounds3.md +39 -0
  263. package/dist/docs/reference/geometry/boundsCenter.md +12 -11
  264. package/dist/docs/reference/geometry/boundsSize.md +12 -11
  265. package/dist/docs/reference/geometry/boxAnchor3.md +4 -3
  266. package/dist/docs/reference/geometry/categories/bounds-layout.md +25 -9
  267. package/dist/docs/reference/geometry/categories/curves-paths.md +21 -9
  268. package/dist/docs/reference/geometry/categories/mechanical.md +22 -10
  269. package/dist/docs/reference/geometry/categories/meshes.md +16 -7
  270. package/dist/docs/reference/geometry/categories/pattern-placement.md +6 -4
  271. package/dist/docs/reference/geometry/categories/primitive-options.md +8 -2
  272. package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -12
  273. package/dist/docs/reference/geometry/categories/resolution-errors.md +8 -3
  274. package/dist/docs/reference/geometry/categories/transforms-math.md +21 -12
  275. package/dist/docs/reference/geometry/categories/vector-import.md +11 -5
  276. package/dist/docs/reference/geometry/circleContour.md +5 -1
  277. package/dist/docs/reference/geometry/closeToAxis.md +14 -5
  278. package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
  279. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +5 -1
  280. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -1
  281. package/dist/docs/reference/geometry/composeTransform3.md +7 -6
  282. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +5 -1
  283. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +11 -2
  284. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
  285. package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +5 -1
  286. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
  287. package/dist/docs/reference/geometry/cross2.md +6 -5
  288. package/dist/docs/reference/geometry/cross3.md +7 -6
  289. package/dist/docs/reference/geometry/cylinderAnchor3.md +3 -2
  290. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
  291. package/dist/docs/reference/geometry/distance2.md +6 -5
  292. package/dist/docs/reference/geometry/distance3.md +6 -5
  293. package/dist/docs/reference/geometry/distributeAlongPath.md +5 -1
  294. package/dist/docs/reference/geometry/dot2.md +6 -5
  295. package/dist/docs/reference/geometry/dot3.md +6 -5
  296. package/dist/docs/reference/geometry/ellipseContour.md +5 -1
  297. package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
  298. package/dist/docs/reference/geometry/extrudeMesh.md +5 -1
  299. package/dist/docs/reference/geometry/fitBounds.md +10 -9
  300. package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
  301. package/dist/docs/reference/geometry/frameTransform3.md +5 -4
  302. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +5 -1
  303. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
  304. package/dist/docs/reference/geometry/gridPatternTransforms.md +4 -4
  305. package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
  306. package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +5 -1
  307. package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +5 -1
  308. package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
  309. package/dist/docs/reference/geometry/isGeometryError.md +5 -2
  310. package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
  311. package/dist/docs/reference/geometry/layoutRow.md +11 -7
  312. package/dist/docs/reference/geometry/length2.md +5 -4
  313. package/dist/docs/reference/geometry/length3.md +5 -4
  314. package/dist/docs/reference/geometry/lerp2.md +7 -6
  315. package/dist/docs/reference/geometry/lerp3.md +7 -6
  316. package/dist/docs/reference/geometry/linearPatternTransforms.md +4 -4
  317. package/dist/docs/reference/geometry/loftMesh.md +5 -1
  318. package/dist/docs/reference/geometry/matchProfiles.md +11 -2
  319. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
  320. package/dist/docs/reference/geometry/meshBounds.md +8 -4
  321. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +5 -1
  322. package/dist/docs/reference/geometry/normalize2.md +10 -6
  323. package/dist/docs/reference/geometry/normalize3.md +10 -6
  324. package/dist/docs/reference/geometry/normalizeContour.md +8 -4
  325. package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
  326. package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
  327. package/dist/docs/reference/geometry/optimizePlanarPatches.md +5 -1
  328. package/dist/docs/reference/geometry/path2.md +14 -2
  329. package/dist/docs/reference/geometry/path3.md +8 -1
  330. package/dist/docs/reference/geometry/pathPatternTransforms.md +9 -5
  331. package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
  332. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +11 -2
  333. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +13 -2
  334. package/dist/docs/reference/geometry/preflightSvgRegion.md +24 -2
  335. package/dist/docs/reference/geometry/preflightThreadedNut.md +12 -2
  336. package/dist/docs/reference/geometry/preflightThreadedRod.md +12 -2
  337. package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
  338. package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -4
  339. package/dist/docs/reference/geometry/rectangleContour.md +10 -3
  340. package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
  341. package/dist/docs/reference/geometry/regionArea.md +5 -1
  342. package/dist/docs/reference/geometry/regionBounds.md +8 -4
  343. package/dist/docs/reference/geometry/regularPolygonContour.md +8 -4
  344. package/dist/docs/reference/geometry/resamplePolyline2.md +8 -4
  345. package/dist/docs/reference/geometry/resamplePolyline3.md +8 -4
  346. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +1 -1
  347. package/dist/docs/reference/geometry/resolveArcSegments.md +1 -1
  348. package/dist/docs/reference/geometry/resolveCircularSampling.md +40 -0
  349. package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
  350. package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
  351. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
  352. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +5 -1
  353. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
  354. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  355. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
  356. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
  357. package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
  358. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +5 -1
  359. package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
  360. package/dist/docs/reference/geometry/revolveMesh.md +5 -1
  361. package/dist/docs/reference/geometry/rotate2.md +6 -5
  362. package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
  363. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -4
  364. package/dist/docs/reference/geometry/sampleContour.md +12 -2
  365. package/dist/docs/reference/geometry/sampleCurve2.md +6 -3
  366. package/dist/docs/reference/geometry/sampleCurve3.md +5 -1
  367. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
  368. package/dist/docs/reference/geometry/sampleHelix.md +13 -5
  369. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
  370. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
  371. package/dist/docs/reference/geometry/sampleSideProfile.md +15 -5
  372. package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
  373. package/dist/docs/reference/geometry/sampleThreadHelices.md +5 -1
  374. package/dist/docs/reference/geometry/scale2.md +6 -5
  375. package/dist/docs/reference/geometry/scale3.md +6 -5
  376. package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
  377. package/dist/docs/reference/geometry/signedContourArea.md +5 -1
  378. package/dist/docs/reference/geometry/starContour.md +8 -4
  379. package/dist/docs/reference/geometry/strokeRegionData.md +5 -1
  380. package/dist/docs/reference/geometry/subtract2.md +7 -6
  381. package/dist/docs/reference/geometry/subtract3.md +7 -6
  382. package/dist/docs/reference/geometry/sweepMesh.md +5 -1
  383. package/dist/docs/reference/geometry/threadProfile.md +5 -1
  384. package/dist/docs/reference/geometry/transform2.md +14 -7
  385. package/dist/docs/reference/geometry/transform3.md +16 -7
  386. package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
  387. package/dist/docs/reference/geometry/transformRegionData.md +5 -1
  388. package/dist/docs/reference/geometry/transformTriangleMesh.md +5 -1
  389. package/dist/docs/reference/geometry/translationTransform3.md +7 -6
  390. package/dist/docs/reference/geometry/triangulateContour.md +5 -1
  391. package/dist/docs/reference/geometry/validateSolidMesh.md +9 -2
  392. package/dist/docs/reference/geometry/validateTransform3.md +6 -5
  393. package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
  394. package/dist/docs/reference/geometry/vector2.md +10 -2
  395. package/dist/docs/reference/geometry/vector3.md +10 -2
  396. package/dist/docs/reference/geometry.md +7 -5
  397. package/dist/docs/reference/model/Anchor3.md +6 -5
  398. package/dist/docs/reference/model/AttachOptions.md +2 -1
  399. package/dist/docs/reference/model/Bounds2-type.md +125 -0
  400. package/dist/docs/reference/model/Bounds2Data.md +44 -0
  401. package/dist/docs/reference/model/Bounds2Input.md +19 -0
  402. package/dist/docs/reference/model/Bounds2Options.md +70 -0
  403. package/dist/docs/reference/model/Bounds3-type.md +125 -0
  404. package/dist/docs/reference/model/Bounds3Data.md +44 -0
  405. package/dist/docs/reference/model/Bounds3Input.md +19 -0
  406. package/dist/docs/reference/model/Bounds3Options.md +70 -0
  407. package/dist/docs/reference/model/BoxEdge.md +1 -1
  408. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  409. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  410. package/dist/docs/reference/model/BoxOptions.md +3 -3
  411. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  412. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  413. package/dist/docs/reference/model/CircleOptions.md +1 -1
  414. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
  415. package/dist/docs/reference/model/Computed.md +6 -1
  416. package/dist/docs/reference/model/ComputedValue.md +5 -1
  417. package/dist/docs/reference/model/Contour.md +6 -4
  418. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  419. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  420. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  421. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  422. package/dist/docs/reference/model/CylinderOptions.md +1 -1
  423. package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
  424. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  425. package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
  426. package/dist/docs/reference/model/EllipseOptions.md +1 -1
  427. package/dist/docs/reference/model/EndTreatments.md +1 -1
  428. package/dist/docs/reference/model/ExtrudeOptions.md +1 -1
  429. package/dist/docs/reference/model/FinalizedModel.md +3 -3
  430. package/dist/docs/reference/model/FinalizedPart.md +1 -1
  431. package/dist/docs/reference/model/Frame3.md +6 -6
  432. package/dist/docs/reference/model/GenerateCallback.md +5 -1
  433. package/dist/docs/reference/model/GenerateContext.md +5 -1
  434. package/dist/docs/reference/model/GeneratedPart.md +5 -1
  435. package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
  436. package/dist/docs/reference/model/GenerationError.md +5 -1
  437. package/dist/docs/reference/model/GeometryResolution.md +1 -1
  438. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  439. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  440. package/dist/docs/reference/model/GridPatternOptions.md +5 -4
  441. package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
  442. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +2 -1
  443. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
  444. package/dist/docs/reference/model/HoleCutterOptions.md +77 -0
  445. package/dist/docs/reference/model/HoleCutterOverrun.md +35 -0
  446. package/dist/docs/reference/model/HoleCutterRecess.md +87 -0
  447. package/dist/docs/reference/model/HullOptions.md +1 -1
  448. package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
  449. package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
  450. package/dist/docs/reference/model/ImplicitOptions.md +6 -6
  451. package/dist/docs/reference/model/InternalThreadCutterOptions.md +2 -1
  452. package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
  453. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
  454. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +38 -0
  455. package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
  456. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
  457. package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
  458. package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
  459. package/dist/docs/reference/model/LinearPatternOptions.md +2 -1
  460. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  461. package/dist/docs/reference/model/LoftOptions.md +1 -1
  462. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  463. package/dist/docs/reference/model/LoftStation.md +1 -1
  464. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  465. package/dist/docs/reference/model/ModelProgram.md +5 -1
  466. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  467. package/dist/docs/reference/model/NumericArray.md +8 -1
  468. package/dist/docs/reference/model/PartGeometry.md +5 -1
  469. package/dist/docs/reference/model/PartOptions.md +5 -1
  470. package/dist/docs/reference/model/Path2-type.md +12 -8
  471. package/dist/docs/reference/model/Path2Data.md +40 -4
  472. package/dist/docs/reference/model/Path2Input.md +8 -3
  473. package/dist/docs/reference/model/Path3-type.md +12 -8
  474. package/dist/docs/reference/model/Path3Data.md +40 -4
  475. package/dist/docs/reference/model/Path3Input.md +8 -3
  476. package/dist/docs/reference/model/PathLocation.md +5 -1
  477. package/dist/docs/reference/model/PathNormalGuide.md +4 -4
  478. package/dist/docs/reference/model/PathOptions.md +5 -1
  479. package/dist/docs/reference/model/PathPatternOptions.md +2 -1
  480. package/dist/docs/reference/model/PathResamplingOptions.md +5 -1
  481. package/dist/docs/reference/model/PatternSource.md +2 -1
  482. package/dist/docs/reference/model/Pivot2Options.md +2 -1
  483. package/dist/docs/reference/model/Pivot3Options.md +2 -1
  484. package/dist/docs/reference/model/PlaneOptions.md +1 -1
  485. package/dist/docs/reference/model/PolygonData.md +3 -2
  486. package/dist/docs/reference/model/PolygonOptions.md +1 -1
  487. package/dist/docs/reference/model/PrimitiveAttachment.md +2 -1
  488. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +2 -1
  489. package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
  490. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
  491. package/dist/docs/reference/model/Profile.md +4 -2
  492. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  493. package/dist/docs/reference/model/ProfileContour2.md +4 -2
  494. package/dist/docs/reference/model/ProfileSpan2.md +3 -3
  495. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
  496. package/dist/docs/reference/model/RadialPatternOptions.md +2 -1
  497. package/dist/docs/reference/model/RadialSizing.md +1 -1
  498. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  499. package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
  500. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  501. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  502. package/dist/docs/reference/model/RectangleOptions.md +3 -3
  503. package/dist/docs/reference/model/RegionData.md +2 -2
  504. package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
  505. package/dist/docs/reference/model/RevolveOptions.md +1 -1
  506. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  507. package/dist/docs/reference/model/Section.md +9 -2
  508. package/dist/docs/reference/model/SectionHullOptions.md +1 -1
  509. package/dist/docs/reference/model/SectionInspection.md +4 -4
  510. package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
  511. package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
  512. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  513. package/dist/docs/reference/model/Solid.md +9 -2
  514. package/dist/docs/reference/model/SolidInspection.md +4 -4
  515. package/dist/docs/reference/model/SolidSegmentHit.md +4 -4
  516. package/dist/docs/reference/model/SphereOptions.md +1 -1
  517. package/dist/docs/reference/model/StarOptions.md +1 -1
  518. package/dist/docs/reference/model/StrokeCap.md +1 -1
  519. package/dist/docs/reference/model/StrokeJoin.md +1 -1
  520. package/dist/docs/reference/model/StrokeOptions.md +1 -1
  521. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  522. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  523. package/dist/docs/reference/model/SvgSectionOptions.md +14 -1
  524. package/dist/docs/reference/model/SweepOptions.md +1 -1
  525. package/dist/docs/reference/model/SweepOrientation.md +1 -1
  526. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  527. package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
  528. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
  529. package/dist/docs/reference/model/ThreadHandedness.md +2 -1
  530. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
  531. package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
  532. package/dist/docs/reference/model/ThreadProfile.md +4 -3
  533. package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
  534. package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
  535. package/dist/docs/reference/model/ThreadedNutOptions.md +2 -1
  536. package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
  537. package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
  538. package/dist/docs/reference/model/ThreadedRodOptions.md +2 -1
  539. package/dist/docs/reference/model/TorusOptions.md +1 -1
  540. package/dist/docs/reference/model/Transform2-type.md +6 -5
  541. package/dist/docs/reference/model/Transform2Data.md +16 -0
  542. package/dist/docs/reference/model/Transform2Input.md +4 -3
  543. package/dist/docs/reference/model/Transform3-type.md +6 -5
  544. package/dist/docs/reference/model/Transform3Data.md +19 -0
  545. package/dist/docs/reference/model/Transform3Input.md +4 -3
  546. package/dist/docs/reference/model/TriangleMesh.md +1 -1
  547. package/dist/docs/reference/model/TriangleMeshAnalysis.md +3 -3
  548. package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
  549. package/dist/docs/reference/model/TubeOptions.md +1 -1
  550. package/dist/docs/reference/model/Vector2-type.md +6 -5
  551. package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
  552. package/dist/docs/reference/model/Vector2Input.md +4 -3
  553. package/dist/docs/reference/model/Vector3-type.md +6 -5
  554. package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
  555. package/dist/docs/reference/model/Vector3Input.md +4 -3
  556. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  557. package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
  558. package/dist/docs/reference/model/anchor.md +2 -1
  559. package/dist/docs/reference/model/bounds2.md +37 -0
  560. package/dist/docs/reference/model/bounds3.md +37 -0
  561. package/dist/docs/reference/model/box.md +2 -2
  562. package/dist/docs/reference/model/castSegment.md +1 -1
  563. package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
  564. package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
  565. package/dist/docs/reference/model/categories/bounds.md +38 -0
  566. package/dist/docs/reference/model/categories/contracts.md +4 -2
  567. package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
  568. package/dist/docs/reference/model/categories/explicit-profiles.md +6 -4
  569. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
  570. package/dist/docs/reference/model/categories/generation.md +11 -2
  571. package/dist/docs/reference/model/categories/hinges.md +38 -0
  572. package/dist/docs/reference/model/categories/inspection.md +9 -2
  573. package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
  574. package/dist/docs/reference/model/categories/paths.md +15 -7
  575. package/dist/docs/reference/model/categories/primitives.md +14 -4
  576. package/dist/docs/reference/model/categories/resolution.md +4 -2
  577. package/dist/docs/reference/model/categories/sections.md +10 -5
  578. package/dist/docs/reference/model/categories/threads.md +10 -7
  579. package/dist/docs/reference/model/categories/transforms-placement.md +17 -9
  580. package/dist/docs/reference/model/circle.md +1 -1
  581. package/dist/docs/reference/model/components.md +1 -1
  582. package/dist/docs/reference/model/compose.md +1 -1
  583. package/dist/docs/reference/model/cylinder.md +1 -1
  584. package/dist/docs/reference/model/distance.md +1 -1
  585. package/dist/docs/reference/model/ellipse.md +1 -1
  586. package/dist/docs/reference/model/extrude.md +1 -1
  587. package/dist/docs/reference/model/generate.md +5 -1
  588. package/dist/docs/reference/model/gridPattern.md +2 -1
  589. package/dist/docs/reference/model/heightfield.md +5 -2
  590. package/dist/docs/reference/model/holeCutter.md +45 -0
  591. package/dist/docs/reference/model/hull.md +1 -1
  592. package/dist/docs/reference/model/immutableBuffer.md +5 -1
  593. package/dist/docs/reference/model/immutableMesh.md +5 -1
  594. package/dist/docs/reference/model/implicit.md +3 -3
  595. package/dist/docs/reference/model/inspectSection.md +1 -1
  596. package/dist/docs/reference/model/inspectSolid.md +1 -1
  597. package/dist/docs/reference/model/internalThreadCutter.md +2 -1
  598. package/dist/docs/reference/model/intersect.md +1 -1
  599. package/dist/docs/reference/model/isEmpty.md +1 -1
  600. package/dist/docs/reference/model/knuckleHinge.md +47 -0
  601. package/dist/docs/reference/model/linearPattern.md +2 -1
  602. package/dist/docs/reference/model/loft.md +1 -1
  603. package/dist/docs/reference/model/matchProfiles.md +1 -1
  604. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  605. package/dist/docs/reference/model/path2.md +14 -2
  606. package/dist/docs/reference/model/path3.md +8 -1
  607. package/dist/docs/reference/model/pathPattern.md +2 -1
  608. package/dist/docs/reference/model/polygon.md +5 -2
  609. package/dist/docs/reference/model/preflightInternalThreadCutter.md +8 -2
  610. package/dist/docs/reference/model/preflightThreadedNut.md +8 -2
  611. package/dist/docs/reference/model/preflightThreadedRod.md +8 -2
  612. package/dist/docs/reference/model/radialPattern.md +2 -1
  613. package/dist/docs/reference/model/rectangle.md +5 -2
  614. package/dist/docs/reference/model/regularPolygon.md +1 -1
  615. package/dist/docs/reference/model/revolve.md +1 -1
  616. package/dist/docs/reference/model/solidFromMesh.md +1 -1
  617. package/dist/docs/reference/model/sphere.md +1 -1
  618. package/dist/docs/reference/model/split.md +1 -1
  619. package/dist/docs/reference/model/splitByPlane.md +1 -1
  620. package/dist/docs/reference/model/star.md +1 -1
  621. package/dist/docs/reference/model/stroke.md +1 -1
  622. package/dist/docs/reference/model/svgPathSection.md +1 -1
  623. package/dist/docs/reference/model/svgSection.md +5 -1
  624. package/dist/docs/reference/model/sweep.md +1 -1
  625. package/dist/docs/reference/model/textSection.md +1 -1
  626. package/dist/docs/reference/model/threadRidge.md +2 -1
  627. package/dist/docs/reference/model/threadedNut.md +2 -1
  628. package/dist/docs/reference/model/threadedRod.md +2 -1
  629. package/dist/docs/reference/model/torus.md +1 -1
  630. package/dist/docs/reference/model/transform2.md +14 -7
  631. package/dist/docs/reference/model/transform3.md +16 -7
  632. package/dist/docs/reference/model/tube.md +1 -1
  633. package/dist/docs/reference/model/union.md +1 -1
  634. package/dist/docs/reference/model/vector2.md +10 -2
  635. package/dist/docs/reference/model/vector3.md +10 -2
  636. package/dist/docs/reference/model.md +15 -8
  637. package/dist/docs/reference/text/Bounds2Data.md +34 -0
  638. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
  639. package/dist/docs/reference/text/Vector2Data.md +7 -0
  640. package/dist/docs/reference/text/VectorFont.md +7 -7
  641. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  642. package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
  643. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  644. package/dist/docs/reference/text/VectorTextLayoutOptions.md +3 -3
  645. package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
  646. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  647. package/dist/docs/reference/text/categories/font-preparation.md +6 -4
  648. package/dist/docs/reference/text/prepareVectorFont.md +1 -1
  649. package/dist/docs/reference/text.md +4 -2
  650. package/dist/engine/construction-operations.js +1 -1
  651. package/dist/engine/extrusion-finishing.js +2 -29
  652. package/dist/engine/hole-cutter-operation.js +148 -0
  653. package/dist/engine/knuckle-hinge-operation.js +128 -0
  654. package/dist/engine/loft-operations.js +1 -1
  655. package/dist/engine/mechanical-operations.js +3 -1
  656. package/dist/engine/modeling-context.js +20 -1
  657. package/dist/engine/primitive-operations.js +19 -6
  658. package/dist/engine/recipe-realization.js +4 -2
  659. package/dist/engine/section-operations.js +2 -2
  660. package/dist/engine/transform-operations.js +3 -3
  661. package/dist/geometry/bounds-value.js +121 -0
  662. package/dist/geometry/bounds.js +10 -25
  663. package/dist/geometry/circular-sampling.js +45 -0
  664. package/dist/geometry/convex-offset.js +41 -0
  665. package/dist/geometry/curves/sampling.js +1 -2
  666. package/dist/geometry/errors.js +1 -0
  667. package/dist/geometry/heightfield.js +12 -1
  668. package/dist/geometry/index.js +5 -2
  669. package/dist/geometry/math/immutable-value.js +1 -1
  670. package/dist/geometry/math/vector-value.js +11 -3
  671. package/dist/geometry/math/vector2.js +1 -0
  672. package/dist/geometry/math/vector3.js +1 -0
  673. package/dist/geometry/mechanical/index.js +1 -0
  674. package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
  675. package/dist/geometry/mechanical/thread-mesh-plan.js +7 -2
  676. package/dist/geometry/mechanical/thread-solids.js +29 -4
  677. package/dist/geometry/mesh/mesh-centroid.js +1 -0
  678. package/dist/geometry/mesh/mesh-solid.js +1 -0
  679. package/dist/geometry/paths/frames.js +1 -0
  680. package/dist/geometry/paths/helix.js +1 -0
  681. package/dist/geometry/paths/path-value.js +43 -27
  682. package/dist/geometry/paths/resampling.js +2 -2
  683. package/dist/geometry/patterns/placements.js +3 -3
  684. package/dist/geometry/patterns.js +3 -1
  685. package/dist/geometry/profiles/contour.js +1 -0
  686. package/dist/geometry/profiles/matched.js +1 -0
  687. package/dist/geometry/profiles/profiles.js +3 -23
  688. package/dist/geometry/profiles/rectangle.js +10 -1
  689. package/dist/geometry/profiles/side-profile.js +2 -0
  690. package/dist/geometry/svg/matrix.js +21 -0
  691. package/dist/geometry/svg-import.js +140 -52
  692. package/dist/geometry/sweeps/options.js +1 -1
  693. package/dist/geometry/text-fitting.js +1 -0
  694. package/dist/geometry/transform-matrix.js +1 -1
  695. package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
  696. package/dist/index.js +2 -1
  697. package/dist/model/execution-binding.js +1 -1
  698. package/dist/model/geometry-recipes.js +1 -1
  699. package/dist/model/hole-cutter.js +1 -0
  700. package/dist/model/immutable-generation-data.js +4 -12
  701. package/dist/model/knuckle-hinge.js +1 -0
  702. package/dist/model/operations.js +78 -3
  703. package/dist/model/recipe-declaration.js +11 -2
  704. package/package.json +1 -1
  705. package/dist/docs/reference/geometry/Bounds2.md +0 -39
  706. package/dist/docs/reference/geometry/Bounds3.md +0 -39
  707. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +0 -23
  708. package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
  709. package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
  710. package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
  711. package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
  712. package/dist/docs/reference/geometry/boundsFromSize.md +0 -83
  713. package/dist/docs/reference/geometry/containsBounds.md +0 -72
  714. package/dist/docs/reference/model/Bounds2.md +0 -39
  715. package/dist/docs/reference/model/Bounds3.md +0 -39
  716. package/dist/docs/reference/model/Transform2Matrix.md +0 -15
  717. package/dist/docs/reference/model/Transform3Matrix.md +0 -18
  718. package/dist/docs/reference/text/Bounds2.md +0 -34
  719. package/dist/docs/reference/text/Vector2Tuple.md +0 -7
@@ -30,11 +30,11 @@ export declare function anchor(shape: Solid | Section, name: string): Anchor3;
30
30
  */
31
31
  export declare interface Anchor3 {
32
32
  /** Unit outward normal used as the anchor's local +Z direction. */
33
- readonly direction: Vector3Tuple;
33
+ readonly direction: Vector3Data;
34
34
  /** World-space attachment position. */
35
- readonly position: Vector3Tuple;
35
+ readonly position: Vector3Data;
36
36
  /** Roll guide projected into the plane perpendicular to `direction`. */
37
- readonly up: Vector3Tuple;
37
+ readonly up: Vector3Data;
38
38
  }
39
39
 
40
40
  /** Options controlling how one anchor is attached to another. */
@@ -49,22 +49,112 @@ export declare interface AttachOptions {
49
49
  readonly tolerance?: GeometryToleranceOptions;
50
50
  }
51
51
 
52
- /** Axis-aligned bounds in two-dimensional model space. */
53
- export declare interface Bounds2 {
52
+ /** Immutable finite XY bounds in millimetres, with tuple coordinates for data interoperability. */
53
+ export declare interface Bounds2 extends Bounds2Data {
54
+ /** Returns nonnegative X/Y dimensions in millimetres, including zero extents. */
55
+ size(): Vector2;
56
+ /** Returns the midpoint in millimetres. */
57
+ center(): Vector2;
58
+ /** Tests positioned XY containment, including touching boundaries. */
59
+ containsBounds(other: Bounds2Input): boolean;
60
+ /** Returns this value's frozen plain record; repeated calls do not allocate. */
61
+ toData(): Bounds2Data;
62
+ }
63
+
64
+ /**
65
+ * Constructs immutable finite XY bounds from ordered extrema or nonnegative size in millimetres.
66
+ *
67
+ * Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
68
+ * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
69
+ * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
70
+ * Compiled Generator packages passing these values to host recipes or computed data require
71
+ * runtime 9.0.0 or newer in major 9.
72
+ */
73
+ export declare function bounds2(input: Bounds2Options): Bounds2;
74
+
75
+ /** Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. */
76
+ export declare interface Bounds2Data {
54
77
  /** Inclusive maximum X/Y coordinates. */
55
- readonly max: Vector2Tuple;
78
+ readonly max: Vector2Data;
56
79
  /** Inclusive minimum X/Y coordinates. */
57
- readonly min: Vector2Tuple;
80
+ readonly min: Vector2Data;
81
+ }
82
+
83
+ /** An immutable XY bounds value or its plain min/max representation. */
84
+ export declare type Bounds2Input = Bounds2 | Bounds2Data;
85
+
86
+ /** XY bounds construction from existing extrema or nonnegative dimensions, never both. */
87
+ export declare type Bounds2Options =
88
+ | (Bounds2Input & {
89
+ /** Preserves the size query when snapshotting an existing fluent value. */
90
+ readonly size?: Bounds2["size"];
91
+ /** Preserves the center query when snapshotting an existing fluent value. */
92
+ readonly center?: Bounds2["center"];
93
+ })
94
+ | {
95
+ /** Nonnegative XY dimensions in millimetres. */
96
+ readonly size: Vector2Data;
97
+ /** Center on the origin; false starts at the origin. Defaults to true. */
98
+ readonly center?: boolean;
99
+ /** Minimum coordinates are unavailable when size is supplied. */
100
+ readonly min?: never;
101
+ /** Maximum coordinates are unavailable when size is supplied. */
102
+ readonly max?: never;
103
+ };
104
+
105
+ /** Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability. */
106
+ export declare interface Bounds3 extends Bounds3Data {
107
+ /** Returns nonnegative X/Y/Z dimensions in millimetres, including zero extents. */
108
+ size(): Vector3;
109
+ /** Returns the midpoint in millimetres. */
110
+ center(): Vector3;
111
+ /** Tests positioned XYZ containment, including touching boundaries. */
112
+ containsBounds(other: Bounds3Input): boolean;
113
+ /** Returns this value's frozen plain record; repeated calls do not allocate. */
114
+ toData(): Bounds3Data;
58
115
  }
59
116
 
60
- /** Axis-aligned bounds in three-dimensional model space. */
61
- export declare interface Bounds3 {
117
+ /**
118
+ * Constructs immutable finite XYZ bounds from ordered extrema or nonnegative size in millimetres.
119
+ *
120
+ * Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
121
+ * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
122
+ * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
123
+ * Compiled Generator packages passing these values to host recipes or computed data require
124
+ * runtime 9.0.0 or newer in major 9.
125
+ */
126
+ export declare function bounds3(input: Bounds3Options): Bounds3;
127
+
128
+ /** Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods. */
129
+ export declare interface Bounds3Data {
62
130
  /** Inclusive maximum X/Y/Z coordinates. */
63
- readonly max: Vector3Tuple;
131
+ readonly max: Vector3Data;
64
132
  /** Inclusive minimum X/Y/Z coordinates. */
65
- readonly min: Vector3Tuple;
133
+ readonly min: Vector3Data;
66
134
  }
67
135
 
136
+ /** An immutable XYZ bounds value or its plain min/max representation. */
137
+ export declare type Bounds3Input = Bounds3 | Bounds3Data;
138
+
139
+ /** XYZ bounds construction from existing extrema or nonnegative dimensions, never both. */
140
+ export declare type Bounds3Options =
141
+ | (Bounds3Input & {
142
+ /** Preserves the size query when snapshotting an existing fluent value. */
143
+ readonly size?: Bounds3["size"];
144
+ /** Preserves the center query when snapshotting an existing fluent value. */
145
+ readonly center?: Bounds3["center"];
146
+ })
147
+ | {
148
+ /** Nonnegative XYZ dimensions in millimetres. */
149
+ readonly size: Vector3Data;
150
+ /** Center on the origin; false starts at the origin. Defaults to true. */
151
+ readonly center?: boolean;
152
+ /** Minimum coordinates are unavailable when size is supplied. */
153
+ readonly min?: never;
154
+ /** Maximum coordinates are unavailable when size is supplied. */
155
+ readonly max?: never;
156
+ };
157
+
68
158
  /**
69
159
  * Axis-aligned box with uniform or disjoint named edge/group treatments.
70
160
  *
@@ -110,7 +200,7 @@ export declare interface BoxOptions extends PrimitiveAttachment {
110
200
  */
111
201
  readonly center?: boolean;
112
202
  /** Positive uniform size or explicit `[X, Y, Z]` extents in millimetres. */
113
- readonly size: number | Vector3Tuple;
203
+ readonly size: number | Vector3Data;
114
204
  /** Uniform treatment or independent disjoint nominal edge/group treatments. */
115
205
  readonly treatment?: EdgeTreatment | BoxEdgeTreatments;
116
206
  }
@@ -162,20 +252,18 @@ export declare interface ChamferedEdgeTreatment {
162
252
  */
163
253
  export declare function circle(options: CircleOptions): Section;
164
254
 
165
- /**
166
- * Circular profile dimensions with exactly one radius or diameter and explicit sampling.
167
- */
255
+ /** Circular profile dimensions with exactly one radius or diameter and explicit sampling. */
168
256
  export declare type CircleContourOptions = CircularPrimitiveOptions &
169
257
  RadialSizingOptions &
170
258
  (
171
259
  | {
172
- /** Positive nominal radius in millimetres; mutually exclusive with diameter. */
260
+ /** Positive nominal radius in millimetres. */
173
261
  readonly radius: number;
174
- /** Full diameter is unavailable when radius is supplied. */
262
+ /** Diameter is unavailable when radius is supplied. */
175
263
  readonly diameter?: never;
176
264
  }
177
265
  | {
178
- /** Positive full diameter in millimetres; mutually exclusive with radius. */
266
+ /** Positive nominal diameter in millimetres. */
179
267
  readonly diameter: number;
180
268
  /** Radius is unavailable when diameter is supplied. */
181
269
  readonly radius?: never;
@@ -246,12 +334,16 @@ declare const computedBrand: unique symbol;
246
334
  export declare type ComputedValue<T> = T | Computed<T>;
247
335
 
248
336
  /**
249
- * A closed two-dimensional boundary whose first point is not repeated at the end.
337
+ * A sampled closed two-dimensional boundary whose first point is not repeated at the end.
250
338
  *
251
339
  * Polygon exteriors are counter-clockwise and holes are clockwise. Algorithms
252
340
  * may reject duplicate adjacent points or fewer than three effective vertices.
341
+ * Use PolygonData to assign an exterior and its holes, or ProfileContour2 for identified curve spans.
342
+ *
343
+ * @see {@link PolygonData}
344
+ * @see [ProfileContour2](/docs/reference/geometry/ProfileContour2)
253
345
  */
254
- export declare type Contour = readonly Vector2Tuple[];
346
+ export declare type Contour = readonly Vector2Data[];
255
347
 
256
348
  /** One sampled component retaining contour identities and logical point correspondence. */
257
349
  export declare interface CorrespondingComponent {
@@ -307,7 +399,7 @@ declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
307
399
  * Open path spanning exactly `[-pitch/2, pitch/2]`, with both endpoints on the minor envelope,
308
400
  * one connected ridge, one contiguous crest, and radial zero at the major envelope.
309
401
  */
310
- readonly points: readonly Vector2Tuple[];
402
+ readonly points: readonly Vector2Data[];
311
403
  }
312
404
 
313
405
  /**
@@ -404,13 +496,13 @@ export declare type EllipseContourOptions = CircularPrimitiveOptions &
404
496
  (
405
497
  | {
406
498
  /** Positive XY radii in millimetres; mutually exclusive with size. */
407
- readonly radius: Vector2Tuple;
499
+ readonly radius: Vector2Data;
408
500
  /** Full XY extents are unavailable when radius is supplied. */
409
501
  readonly size?: never;
410
502
  }
411
503
  | {
412
504
  /** Positive full XY extents in millimetres; mutually exclusive with radius. */
413
- readonly size: Vector2Tuple;
505
+ readonly size: Vector2Data;
414
506
  /** XY radii are unavailable when size is supplied. */
415
507
  readonly radius?: never;
416
508
  }
@@ -482,7 +574,7 @@ export declare interface FinalizedModel {
482
574
  /** Ordered finalized manufacturing parts with copied transferable arrays. */
483
575
  readonly parts: readonly FinalizedPart[];
484
576
  /** Axis-aligned XYZ bounds in millimetres. */
485
- readonly bounds: Bounds3;
577
+ readonly bounds: Bounds3Data;
486
578
  /** Aggregate counts, unique backing storage, volume, and execution timings. */
487
579
  readonly stats: {
488
580
  /** Number of declared output parts, including repeated geometry instances. */
@@ -517,13 +609,13 @@ export declare interface FinalizedPart extends TriangleMesh {
517
609
  /** A right-handed orthonormal coordinate frame expressed in world coordinates. */
518
610
  export declare interface Frame3 {
519
611
  /** World-space origin of the local frame. */
520
- readonly origin: Vector3Tuple;
612
+ readonly origin: Vector3Data;
521
613
  /** Unit vector defining the local +X axis. */
522
- readonly xAxis: Vector3Tuple;
614
+ readonly xAxis: Vector3Data;
523
615
  /** Unit vector defining the local +Y axis. */
524
- readonly yAxis: Vector3Tuple;
616
+ readonly yAxis: Vector3Data;
525
617
  /** Unit vector defining the local +Z axis. */
526
- readonly zAxis: Vector3Tuple;
618
+ readonly zAxis: Vector3Data;
527
619
  }
528
620
 
529
621
  /**
@@ -669,22 +761,23 @@ export declare type GridPatternOptions<Dimension extends 2 | 3 = 3> = {
669
761
  } & (
670
762
  | {
671
763
  /** Positive integer counts on X and Y. */
672
- readonly count: Vector2Tuple;
764
+ readonly count: Vector2Data;
673
765
  /** Signed millimetres between adjacent copies on X and Y. */
674
- readonly spacing: Vector2Tuple;
766
+ readonly spacing: Vector2Data;
675
767
  }
676
768
  | (Dimension extends 3
677
769
  ? {
678
770
  /** Positive integer counts on X, Y and Z. */
679
- readonly count: Vector3Tuple;
771
+ readonly count: Vector3Data;
680
772
  /** Signed millimetres between adjacent copies on X, Y and Z. */
681
- readonly spacing: Vector3Tuple;
773
+ readonly spacing: Vector3Data;
682
774
  }
683
775
  : never)
684
776
  );
685
777
 
686
778
  /**
687
779
  * Closed rectilinear top above a flat base, with uniform or explicit XY coordinates.
780
+ *
688
781
  * Samples each grid height once; center-error triangulation also samples each cell centre.
689
782
  * The retained callback must capture independent immutable inputs, not live session readers or parameters.
690
783
  *
@@ -709,7 +802,7 @@ export declare function heightfield(options: HeightfieldOptions): Solid;
709
802
  */
710
803
  export declare type HeightfieldOptions = {
711
804
  /** Absolute top Z at the supplied XY point. Every sample must be above baseZ. */
712
- readonly height: (point: Vector2Tuple) => number;
805
+ readonly height: (point: Vector2Data) => number;
713
806
  /** Flat bottom Z. Defaults to zero. */
714
807
  readonly baseZ?: number;
715
808
  /**
@@ -722,11 +815,11 @@ export declare type HeightfieldOptions = {
722
815
  } & (
723
816
  | {
724
817
  /** Positive XY footprint for uniform sampling. */
725
- readonly size: Vector2Tuple;
818
+ readonly size: Vector2Data;
726
819
  /** Exact positive integer X/Y interval counts. */
727
820
  readonly segments: readonly [x: number, y: number];
728
821
  /** Lower-left footprint XY. Omitted centers the footprint on XY. */
729
- readonly origin?: Vector2Tuple;
822
+ readonly origin?: Vector2Data;
730
823
  /** Explicit coordinates cannot be combined with uniform sampling. */
731
824
  readonly coordinates?: never;
732
825
  }
@@ -777,7 +870,7 @@ export declare interface HelicalThreadRidgeMeshOptions {
777
870
  readonly tolerance?: GeometryToleranceOptions;
778
871
  }
779
872
 
780
- /** Conservative allocation facts resolved before constructing a direct thread solid mesh. */
873
+ /** Selected sampling counts and conservative allocation estimates, before thread mesh construction. */
781
874
  export declare interface HelicalThreadSolidMeshPreflight {
782
875
  /** Uniform axial intervals required only by a requested physical segment-length limit. */
783
876
  readonly axialIntervals: number;
@@ -789,6 +882,107 @@ export declare interface HelicalThreadSolidMeshPreflight {
789
882
  readonly estimatedTriangles: number;
790
883
  }
791
884
 
885
+ /**
886
+ * Declares a +Z hole or blind-pocket cutter with explicit end overrun in millimetres.
887
+ * Choose exactly one circular diameter or existing Section. A 45-degree entry chamfer
888
+ * supports one strictly convex contour without holes; plain profiles may have any topology.
889
+ * Circular entries retain nominal frustum radii; profile entries offset the supplied polygon edges.
890
+ * Circular head recesses are mutually exclusive with entryChamfer. Both overrun ends default
891
+ * to zero, so the nominal bottom remains at Z=0 and blind pocket floors are preserved.
892
+ * Existing Section samples are authoritative; limits and unspecified circular sampling belong
893
+ * to the evaluating host. Compiled packages require runtime major 9.
894
+ *
895
+ * @example A blind hex pocket with an open top
896
+ * ```ts
897
+ * holeCutter({
898
+ * profile: regularPolygon({ sides: 6, radius: 3.5, sizing: "face", rotation: 30 }),
899
+ * height: 12, entryChamfer: 0.5, overrun: { top: 0.05 },
900
+ * });
901
+ * ```
902
+ */
903
+ export declare function holeCutter(options: HoleCutterOptions): Solid;
904
+
905
+ /**
906
+ * A deferred +Z hole or pocket cutter, with exactly one circular diameter or existing Section.
907
+ * Profile entry chamfers expand one strictly convex contour without holes by parallel-edge offsets;
908
+ * the supplied sampled boundary remains authoritative. Plain profile cutters accept any Section.
909
+ * Circular entry chamfers retain nominal circular/frustum radii under the selected radial sizing.
910
+ */
911
+ export declare type HoleCutterOptions = {
912
+ /** Positive nominal depth along +Z, starting exactly at Z=0. */
913
+ readonly height: number;
914
+ /** Opening carrying the recess or entry chamfer; defaults to top. */
915
+ readonly face?: "bottom" | "top";
916
+ /** Extra length outside each nominal face; both ends default to zero. */
917
+ readonly overrun?: HoleCutterOverrun;
918
+ /** Operation-level physical sampling; an existing Section retains its sampled boundary. */
919
+ readonly resolution?: GeometryResolution;
920
+ /** Local allocation ceilings may only lower the evaluating host's limits. */
921
+ readonly limits?: Partial<ModelingLimits>;
922
+ } & (
923
+ | (CircularPrimitiveOptions &
924
+ RadialSizingOptions & {
925
+ /** Positive nominal circular bore diameter in millimetres. */
926
+ readonly diameter: number;
927
+ /** Unavailable in this input form. */
928
+ readonly profile?: never;
929
+ } & (
930
+ | {
931
+ /** Nonnegative 45-degree entry setback; must be smaller than height. Defaults to zero. */
932
+ readonly entryChamfer?: number;
933
+ /** Unavailable in this input form. */
934
+ readonly recess?: never;
935
+ }
936
+ | {
937
+ /** Circular head seating; mutually exclusive with entryChamfer. */
938
+ readonly recess: HoleCutterRecess;
939
+ /** Unavailable in this input form. */
940
+ readonly entryChamfer?: never;
941
+ }
942
+ ))
943
+ | {
944
+ /** Local XY material to remove, retaining its position, orientation and physical sampling. */
945
+ readonly profile: Section;
946
+ /** Unavailable in this input form. */
947
+ readonly diameter?: never;
948
+ /** Unavailable in this input form. */
949
+ readonly recess?: never;
950
+ /** Unavailable in this input form. */
951
+ readonly segments?: never;
952
+ /** Unavailable in this input form. */
953
+ readonly sizing?: never;
954
+ /** Nonnegative 45-degree entry setback for a strictly convex single contour without holes. */
955
+ readonly entryChamfer?: number;
956
+ }
957
+ );
958
+
959
+ /** Explicit extra cutter length outside the nominal Z=0..height interval, in millimetres. */
960
+ export declare interface HoleCutterOverrun {
961
+ /** Extension below Z=0. Omitted means zero, preserving a blind pocket's floor. */
962
+ readonly bottom?: number;
963
+ /** Extension above Z=height. Omitted means zero. */
964
+ readonly top?: number;
965
+ }
966
+
967
+ /** Circular screw seating dimensions in millimetres; allowances belong to the caller. */
968
+ export declare type HoleCutterRecess =
969
+ | {
970
+ /** Cylindrical seat. */
971
+ readonly kind: "counterbore";
972
+ /** Positive seat diameter greater than the bore, in millimetres. */
973
+ readonly diameter: number;
974
+ /** Positive seat depth no greater than height, in millimetres. */
975
+ readonly depth: number;
976
+ }
977
+ | {
978
+ /** Conical seat. */
979
+ readonly kind: "countersink";
980
+ /** Positive mouth diameter greater than the bore, in millimetres. */
981
+ readonly diameter: number;
982
+ /** Full included angle strictly between zero and 180 degrees; derived depth must fit height. */
983
+ readonly includedAngle: number;
984
+ };
985
+
792
986
  /**
793
987
  * Convex hull of points or solids.
794
988
  *
@@ -884,9 +1078,9 @@ export declare function implicit(options: ImplicitOptions): Solid;
884
1078
  /** Positive-inside sampling, bounded to 4M native BCC grid slots and 8M field calls. */
885
1079
  export declare interface ImplicitOptions {
886
1080
  /** Positive-inside scalar field evaluated at finite XYZ points. */
887
- readonly field: (point: Vector3Tuple) => number;
1081
+ readonly field: (point: Vector3Data) => number;
888
1082
  /** Axis-aligned XYZ bounds in millimetres. */
889
- readonly bounds: Bounds3;
1083
+ readonly bounds: Bounds3Data;
890
1084
  /** Positive sampling edge length in millimetres. */
891
1085
  readonly edgeLength: number;
892
1086
  /** Field isosurface value; defaults to zero. */
@@ -974,6 +1168,128 @@ export declare function intersect(sections: readonly Section[]): Section;
974
1168
  */
975
1169
  export declare function isEmpty(shape: Solid | Section): boolean;
976
1170
 
1171
+ /** Portable local geometry; consumers own plates, holes, part declarations, and final placement. */
1172
+ export declare interface KnuckleHinge {
1173
+ /** Alternating A intervals, including the integral shaft in print-in-place and lift-off modes. */
1174
+ readonly halfA: Solid;
1175
+ /** Alternating B intervals with a face-sized running bore. */
1176
+ readonly halfB: Solid;
1177
+ /** Centered +X pin axis with +Z roll guide; opening and lift-off withdrawal are caller transforms. */
1178
+ readonly axis: Anchor3;
1179
+ }
1180
+
1181
+ /**
1182
+ * Declares separate knuckle-joint halves along the centered +X pin axis, in millimetres.
1183
+ *
1184
+ * A starts at negative X. Attach independent webs or use barrels only; caller geometry connects
1185
+ * otherwise disconnected intervals. Returns portable recipes without initializing the engine.
1186
+ * Unspecified resolution inherits the evaluating session. Axis direction is +X with +Z up.
1187
+ *
1188
+ * Each half's `chamfer` bevels its barrel outer rims and all web edges. Consumers own plates, screw holes,
1189
+ * pin retention, fit policy, and part placement. Added mounting material must preserve the bores.
1190
+ * No opening range or collision freedom is implied for arbitrary caller attachments.
1191
+ * Compiled Generator packages using this operation require runtime 9.0.0 or newer in major 9.
1192
+ *
1193
+ * @example Integral-pin hinge with two mounting webs
1194
+ * ```ts
1195
+ * const joint = knuckleHinge({
1196
+ * mode: "print-in-place", length: 30, knuckleCount: 3,
1197
+ * barrelDiameter: 10, pinDiameter: 3, radialClearance: 0.3, axialGap: 0.4,
1198
+ * halfA: { web: { direction: "positive-y", reach: 8, zMin: -5, thickness: 2 } },
1199
+ * halfB: { web: { direction: "negative-y", reach: 8, zMin: -5, thickness: 2 } },
1200
+ * });
1201
+ * ```
1202
+ */
1203
+ export declare function knuckleHinge(
1204
+ options: KnuckleHingeOptions,
1205
+ ): KnuckleHinge;
1206
+
1207
+ /** Shared knuckle-joint dimensions in millimetres, independent of mounting geometry. */
1208
+ export declare interface KnuckleHingeBaseSpec {
1209
+ /** Total extent along the +X pin axis, centered at the origin. */
1210
+ readonly length: number;
1211
+ /** Number of equal alternating intervals, starting with half A. */
1212
+ readonly knuckleCount: number;
1213
+ /** Outside vertex-sized barrel diameter. */
1214
+ readonly barrelDiameter: number;
1215
+ /** Vertex-sized shaft diameter, including an externally supplied shaft. */
1216
+ readonly pinDiameter: number;
1217
+ /** Nonnegative per-side radial allowance; bores circumscribe this running envelope. */
1218
+ readonly radialClearance: number;
1219
+ /** Nonnegative total air gap between each neighboring pair of knuckle ends. */
1220
+ readonly axialGap: number;
1221
+ }
1222
+
1223
+ /** Optional mounting and edge treatment for one knuckle owner. */
1224
+ export declare interface KnuckleHingeHalfOptions {
1225
+ /** Omit for barrels only. Each interval receives one web; disconnected intervals need caller geometry. */
1226
+ readonly web?: KnuckleHingeWeb;
1227
+ /**
1228
+ * Nonnegative 45° setback in millimetres on barrel outer rims and exposed web edges; defaults to 0.
1229
+ * The root at the pin centreline stays square so its faces can merge with the barrel.
1230
+ *
1231
+ * Must leave a positive barrel wall and axial band. Web thickness must exceed twice the setback;
1232
+ * web reach and knuckle length must exceed `2 * Math.SQRT2 * chamfer` to retain the end contours.
1233
+ */
1234
+ readonly chamfer?: number;
1235
+ }
1236
+
1237
+ /** Joint declaration with independent attachments; unspecified sampling inherits the evaluating host. */
1238
+ export declare type KnuckleHingeOptions = KnuckleHingeSpec &
1239
+ KnuckleHingeSamplingOptions & {
1240
+ /** Optional attachment and edge treatment for A, which owns an integral pin when present. */
1241
+ readonly halfA?: KnuckleHingeHalfOptions;
1242
+ /** Optional attachment and edge treatment for B, which always carries a running bore. */
1243
+ readonly halfB?: KnuckleHingeHalfOptions;
1244
+ };
1245
+
1246
+ /** Shared circular sampling for barrels, shafts, and bores. */
1247
+ export declare interface KnuckleHingeSamplingOptions {
1248
+ /** Exact full-circle count, divisible by four and at least four; overrides adaptive sampling. */
1249
+ readonly segments?: number;
1250
+ /** Physical tessellation policy. Exact circular counts must also be divisible by four. */
1251
+ readonly resolution?: GeometryResolution;
1252
+ /** Explicit allocation ceilings; defaults to the pure geometry sampling limits. */
1253
+ readonly limits?: Partial<GeometrySamplingLimits>;
1254
+ }
1255
+
1256
+ /**
1257
+ * Knuckle-joint construction modes and interval ownership.
1258
+ *
1259
+ * Print-in-place requires an odd count of at least three: A owns both
1260
+ * end anchors and the entire shaft. Inserted-pin bores both halves and supplies no shaft.
1261
+ * Lift-off requires exactly two intervals; A's integral pin enters B without a far anchor.
1262
+ */
1263
+ export declare type KnuckleHingeSpec = KnuckleHingeBaseSpec &
1264
+ (
1265
+ | {
1266
+ /** Captive integral shaft or bores for an externally supplied pin. */
1267
+ readonly mode: "print-in-place" | "inserted-pin";
1268
+ /** Engagement applies only to lift-off construction. */
1269
+ readonly pinEngagement?: never;
1270
+ }
1271
+ | {
1272
+ /** Detachable socket on a finite integral pin. */
1273
+ readonly mode: "lift-off";
1274
+ /** Lift-off has one fixed interval and one removable interval. */
1275
+ readonly knuckleCount: 2;
1276
+ /** Positive axial engagement into B, no greater than its knuckle length. */
1277
+ readonly pinEngagement: number;
1278
+ }
1279
+ );
1280
+
1281
+ /** Rectangular connection from the axis into a caller-owned mounting body, in millimetres. */
1282
+ export declare interface KnuckleHingeWeb {
1283
+ /** Direction from the pin axis; independently chosen for each half. */
1284
+ readonly direction: "positive-y" | "negative-y";
1285
+ /** Positive distance from the axis to the web's far edge. Overlap into the mounting body. */
1286
+ readonly reach: number;
1287
+ /** Lower-face Z coordinate in the pin-centered frame, in millimetres. Must overlap the barrel's interior. */
1288
+ readonly zMin: number;
1289
+ /** Positive thickness along +Z. Each web spans its own barrel interval. */
1290
+ readonly thickness: number;
1291
+ }
1292
+
977
1293
  /**
978
1294
  * Repeats one solid along a normalized direction.
979
1295
  *
@@ -1173,11 +1489,11 @@ export declare interface Path2 {
1173
1489
  readonly dimension: 2;
1174
1490
  /** Whether traversal includes the last-to-first edge. */
1175
1491
  readonly closed: boolean;
1176
- /** Returns frozen tuple coordinates; closure remains separate metadata. Repeated calls do not allocate. */
1177
- toArray(): Path2Data;
1492
+ /** Returns complete deeply frozen path data, including dimension and closure. Repeated calls do not allocate. */
1493
+ toData(): Path2Data;
1178
1494
  /** Total sampled edge length in model units, including the closing edge when closed. */
1179
1495
  length(): number;
1180
- /** Axis-aligned bounds, or undefined for an empty path. */
1496
+ /** Immutable axis-aligned bounds, or undefined for an empty path. */
1181
1497
  bounds(): Bounds2 | undefined;
1182
1498
  /** Finds the nearest edge location; requires at least two vertices. */
1183
1499
  closestPoint(point: Vector2Input): PathLocation<Vector2>;
@@ -1191,19 +1507,29 @@ export declare interface Path2 {
1191
1507
 
1192
1508
  /**
1193
1509
  * Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.
1510
+ *
1194
1511
  * Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated
1195
1512
  * seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed.
1196
1513
  * Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement
1197
1514
  * overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError.
1198
1515
  * A path input retains its closure. Limits bound construction only; resampling takes its own limits.
1516
+ *
1517
+ * Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
1199
1518
  */
1200
1519
  export declare function path2(input: Path2Input, options?: PathOptions): Path2;
1201
1520
 
1202
- /** XY point tuples for interchange; closure is supplied by the consuming operation or Path2 value. */
1203
- export declare type Path2Data = readonly Vector2Tuple[];
1521
+ /** Complete plain XY path representation, including topology and empty-path dimensional identity. */
1522
+ export declare interface Path2Data {
1523
+ /** Coordinate dimension, retained even when points is empty. */
1524
+ readonly dimension: 2;
1525
+ /** Frozen or caller-owned XY coordinates; closed paths omit a duplicated seam. */
1526
+ readonly points: readonly Vector2Data[];
1527
+ /** Whether traversal includes the last-to-first edge. */
1528
+ readonly closed: boolean;
1529
+ }
1204
1530
 
1205
- /** An immutable XY sampled path or a collection of XY tuples and fluent vectors. */
1206
- export declare type Path2Input = Path2 | readonly Vector2Input[];
1531
+ /** A matching path value, complete plain path data, or a collection of vectors. */
1532
+ export declare type Path2Input = Path2 | Path2Data | readonly Vector2Input[];
1207
1533
 
1208
1534
  /** Immutable directed XYZ polyline; it represents sampled edges, not an analytic curve. */
1209
1535
  export declare interface Path3 {
@@ -1211,11 +1537,11 @@ export declare interface Path3 {
1211
1537
  readonly dimension: 3;
1212
1538
  /** Whether traversal includes the last-to-first edge. */
1213
1539
  readonly closed: boolean;
1214
- /** Returns frozen tuple coordinates; closure remains separate metadata. Repeated calls do not allocate. */
1215
- toArray(): Path3Data;
1540
+ /** Returns complete deeply frozen path data, including dimension and closure. Repeated calls do not allocate. */
1541
+ toData(): Path3Data;
1216
1542
  /** Total sampled edge length in model units, including the closing edge when closed. */
1217
1543
  length(): number;
1218
- /** Axis-aligned bounds, or undefined for an empty path. */
1544
+ /** Immutable axis-aligned bounds, or undefined for an empty path. */
1219
1545
  bounds(): Bounds3 | undefined;
1220
1546
  /** Finds the nearest edge location; requires at least two vertices. */
1221
1547
  closestPoint(point: Vector3Input): PathLocation<Vector3>;
@@ -1230,16 +1556,25 @@ export declare interface Path3 {
1230
1556
  /**
1231
1557
  * Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam,
1232
1558
  * allocation and error rules as path2. Analytic curves must be sampled explicitly first.
1559
+ *
1560
+ * Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
1561
+ *
1562
+ * @see {@link path2} for shared construction rules.
1233
1563
  */
1234
1564
  export declare function path3(input: Path3Input, options?: PathOptions): Path3;
1235
1565
 
1236
- /**
1237
- * XYZ point tuples for interchange; closure is supplied by the consuming operation or Path3 value.
1238
- */
1239
- export declare type Path3Data = readonly Vector3Tuple[];
1566
+ /** Complete plain XYZ path representation, including topology and empty-path dimensional identity. */
1567
+ export declare interface Path3Data {
1568
+ /** Coordinate dimension, retained even when points is empty. */
1569
+ readonly dimension: 3;
1570
+ /** Frozen or caller-owned XYZ coordinates; closed paths omit a duplicated seam. */
1571
+ readonly points: readonly Vector3Data[];
1572
+ /** Whether traversal includes the last-to-first edge. */
1573
+ readonly closed: boolean;
1574
+ }
1240
1575
 
1241
- /** An immutable XYZ sampled path or a collection of XYZ tuples and fluent vectors. */
1242
- export declare type Path3Input = Path3 | readonly Vector3Input[];
1576
+ /** A matching path value, complete plain path data, or a collection of vectors. */
1577
+ export declare type Path3Input = Path3 | Path3Data | readonly Vector3Input[];
1243
1578
 
1244
1579
  /** Nearest location on a sampled boundary, rather than inside a filled shape or on an analytic curve. */
1245
1580
  export declare interface PathLocation<Point extends Vector2 | Vector3> {
@@ -1261,7 +1596,7 @@ export declare interface PathLocation<Point extends Vector2 | Vector3> {
1261
1596
  * @returns A finite guide vector that is not parallel to the local path tangent.
1262
1597
  */
1263
1598
  export declare type PathNormalGuide = (
1264
- point: Vector3Tuple,
1599
+ point: Vector3Data,
1265
1600
  index: number,
1266
1601
  ) => Vector3Input;
1267
1602
 
@@ -1341,6 +1676,7 @@ export declare interface PlaneOptions {
1341
1676
 
1342
1677
  /**
1343
1678
  * Fills one closed millimetre XY outline, explicit outer/hole topology, or compound contours.
1679
+ *
1344
1680
  * Closing edges are implicit. Compound contours use nonzero fill unless selected otherwise.
1345
1681
  * Explicit topology must be simple and disjoint; compound winding may resolve overlaps.
1346
1682
  *
@@ -1352,11 +1688,14 @@ export declare interface PlaneOptions {
1352
1688
  export declare function polygon(input: Path2Input | PolygonOptions): Section;
1353
1689
 
1354
1690
  /**
1355
- * One bounded two-dimensional polygon.
1691
+ * One filled two-dimensional polygon with an exterior and optional holes.
1356
1692
  *
1357
1693
  * `outer` is counter-clockwise and each hole is clockwise. Boundary arrays omit
1358
1694
  * their duplicated closing point. Holes must lie inside `outer` and must not
1359
1695
  * intersect each other or the exterior.
1696
+ *
1697
+ * @see {@link Contour}
1698
+ * @see {@link RegionData}
1360
1699
  */
1361
1700
  export declare interface PolygonData {
1362
1701
  /** Clockwise interior boundaries, each omitting its duplicated closing point. */
@@ -1404,17 +1743,41 @@ export declare type PolygonOptions =
1404
1743
  readonly fillRule?: never;
1405
1744
  };
1406
1745
 
1407
- /** Internal-thread facts using host resolution and limits; requires active synchronous model execution. */
1746
+ /**
1747
+ * Checks compensated cutter dimensions and conservative mesh estimates against host output limits.
1748
+ *
1749
+ * Requires active synchronous model execution and uses its resolution and limits. Estimates include
1750
+ * the one-pitch extension beyond each requested face, without mesh buffers or native objects.
1751
+ * Mesh validity, native construction, and aggregate output limits are checked later.
1752
+ *
1753
+ * @see {@link internalThreadCutter}
1754
+ */
1408
1755
  export declare function preflightInternalThreadCutter(
1409
1756
  options: InternalThreadCutterOptions,
1410
1757
  ): HelicalThreadSolidMeshPreflight;
1411
1758
 
1412
- /** Nut/cutter facts using host resolution and limits; requires active synchronous model execution. */
1759
+ /**
1760
+ * Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
1761
+ *
1762
+ * Requires active synchronous model execution and uses its resolution and limits, without mesh
1763
+ * buffers or native objects. Returned thread estimates cover the cutter, excluding the body and
1764
+ * Boolean result. Mesh validity, native construction, and aggregate output limits are checked later.
1765
+ *
1766
+ * @see {@link threadedNut}
1767
+ */
1413
1768
  export declare function preflightThreadedNut(
1414
1769
  options: ThreadedNutOptions,
1415
1770
  ): ThreadedNutPreflight;
1416
1771
 
1417
- /** External-thread facts using host resolution and limits; requires active synchronous model execution. */
1772
+ /**
1773
+ * Checks compensated rod dimensions and conservative mesh estimates against host output limits.
1774
+ *
1775
+ * Requires active synchronous model execution and uses its resolution and limits. Returns selected
1776
+ * sampling and conservative row/triangle estimates without mesh buffers or native objects.
1777
+ * Mesh validity, native construction, and aggregate output limits are checked later.
1778
+ *
1779
+ * @see {@link threadedRod}
1780
+ */
1418
1781
  export declare function preflightThreadedRod(
1419
1782
  options: ThreadedRodOptions,
1420
1783
  ): HelicalThreadSolidMeshPreflight;
@@ -1454,7 +1817,13 @@ export declare interface PrintableThreadFitPolicy {
1454
1817
  readonly maleRadialInset: number;
1455
1818
  }
1456
1819
 
1457
- /** An explicit component/contour/span topology, before shared family sampling. */
1820
+ /**
1821
+ * An explicit component/contour/span topology, before shared family sampling with matchProfiles.
1822
+ * Component, contour and span identities establish correspondence across a loft or sweep family.
1823
+ *
1824
+ * @see {@link CorrespondingProfile}
1825
+ * @see {@link matchProfiles}
1826
+ */
1458
1827
  export declare interface Profile {
1459
1828
  /** Ordered components with explicit contour identities. */
1460
1829
  readonly components: readonly ProfileComponent2[];
@@ -1470,7 +1839,13 @@ export declare interface ProfileComponent2 {
1470
1839
  readonly holes: readonly ProfileContour2[];
1471
1840
  }
1472
1841
 
1473
- /** Ordered, closed spans. Outer winding is CCW and hole winding is CW. */
1842
+ /**
1843
+ * An identified closed boundary of curve spans, before shared family sampling.
1844
+ * Outer winding is CCW and hole winding is CW. matchProfiles retains span identities in sampled contours.
1845
+ *
1846
+ * @see {@link Contour} for sampled point coordinates.
1847
+ * @see {@link CorrespondingContour} for sampled coordinates with correspondence metadata.
1848
+ */
1474
1849
  export declare interface ProfileContour2 {
1475
1850
  /** Stable canonical lowercase identity; unique within the containing topology or output. */
1476
1851
  readonly id: string;
@@ -1487,7 +1862,7 @@ export declare interface ProfiledEdgeTreatment {
1487
1862
  * First coordinates decrease and second coordinates increase. Cylinder/extrusion ends use
1488
1863
  * cap inset first, side setback second; planar corners use incoming then outgoing edges.
1489
1864
  */
1490
- readonly profile: readonly Vector2Tuple[];
1865
+ readonly profile: readonly Vector2Data[];
1491
1866
  }
1492
1867
 
1493
1868
  /** An identified line, circular arc, or cubic Bézier between corresponding landmarks. */
@@ -1503,15 +1878,15 @@ export declare type ProfileSpan2 = {
1503
1878
  /** Selects a straight span. */
1504
1879
  readonly kind: "line";
1505
1880
  /** Start point in millimetres. */
1506
- readonly start: Vector2Tuple;
1881
+ readonly start: Vector2Data;
1507
1882
  /** End point in millimetres. */
1508
- readonly end: Vector2Tuple;
1883
+ readonly end: Vector2Data;
1509
1884
  }
1510
1885
  | {
1511
1886
  /** Selects the geometric curve or span family. */
1512
1887
  readonly kind: "arc";
1513
1888
  /** Center point in millimetres. */
1514
- readonly center: Vector2Tuple;
1889
+ readonly center: Vector2Data;
1515
1890
  /** Circular radius in millimetres. */
1516
1891
  readonly radius: number;
1517
1892
  /** Initial counterclockwise angle in degrees. */
@@ -1523,13 +1898,13 @@ export declare type ProfileSpan2 = {
1523
1898
  /** Selects a cubic Bézier span with the same coordinates as CubicBezierCurve2. */
1524
1899
  readonly kind: "cubic";
1525
1900
  /** Start point in millimetres. */
1526
- readonly start: Vector2Tuple;
1901
+ readonly start: Vector2Data;
1527
1902
  /** First control point in millimetres. */
1528
- readonly control1: Vector2Tuple;
1903
+ readonly control1: Vector2Data;
1529
1904
  /** Second control point in millimetres. */
1530
- readonly control2: Vector2Tuple;
1905
+ readonly control2: Vector2Data;
1531
1906
  /** End point in millimetres. */
1532
- readonly end: Vector2Tuple;
1907
+ readonly end: Vector2Data;
1533
1908
  }
1534
1909
  );
1535
1910
 
@@ -1589,6 +1964,9 @@ export declare interface RadialSizingOptions {
1589
1964
  /**
1590
1965
  * Filled rectangular section with uniform or independently treated corners.
1591
1966
  *
1967
+ * Use [rectangleContour](/docs/reference/geometry/rectangleContour) for sampled boundary coordinates,
1968
+ * or [rectangleProfile](/docs/reference/geometry/rectangleProfile) to retain identified loft landmarks.
1969
+ *
1592
1970
  * @example Round the corners
1593
1971
  * ```ts
1594
1972
  * rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
@@ -1601,7 +1979,7 @@ export declare function rectangle(options: RectangleOptions): Section;
1601
1979
  */
1602
1980
  export declare interface RectangleContourOptions {
1603
1981
  /** Positive uniform size or explicit XY extents in millimetres. */
1604
- readonly size: number | Vector2Tuple;
1982
+ readonly size: number | Vector2Data;
1605
1983
  /** Center on XY; otherwise the minimum corner is the origin. Defaults to true. */
1606
1984
  readonly center?: boolean;
1607
1985
  /** Uniform treatment or four corner treatments. Exact round segments describe a complete circle and must divide by four. */
@@ -1632,7 +2010,12 @@ export declare type RectangleCornerTreatments = readonly [
1632
2010
  export declare interface RectangleOptions
1633
2011
  extends RectangleContourOptions, PrimitiveAttachment {}
1634
2012
 
1635
- /** A two-dimensional region represented by disjoint filled polygons. */
2013
+ /**
2014
+ * A two-dimensional region represented by disjoint filled polygons.
2015
+ * Each PolygonData owns one exterior and its holes; an empty region contains no material.
2016
+ *
2017
+ * @see {@link PolygonData}
2018
+ */
1636
2019
  export declare type RegionData = readonly PolygonData[];
1637
2020
 
1638
2021
  /**
@@ -1705,7 +2088,9 @@ export declare interface RoundedEdgeTreatment extends CircularPrimitiveOptions {
1705
2088
  }
1706
2089
 
1707
2090
  /**
1708
- * Immutable deferred filled XY section recipe. Construction and composition require no engine.
2091
+ * Immutable deferred filled XY section recipe.
2092
+ *
2093
+ * Construction and composition require no engine.
1709
2094
  * Ordinary recipes may be reused across sessions regardless of where constructed.
1710
2095
  * Observed components and recipes using them can only be evaluated in their originating session.
1711
2096
  * Methods leave the source unchanged; observations require a synchronous model execution.
@@ -1812,9 +2197,9 @@ export declare interface SectionInspection {
1812
2197
  /** Number of extracted outer and hole contours. */
1813
2198
  readonly contourCount: number;
1814
2199
  /** Inclusive maximum coordinates in millimetres. */
1815
- readonly max: Vector2Tuple;
2200
+ readonly max: Vector2Data;
1816
2201
  /** Inclusive minimum coordinates in millimetres. */
1817
- readonly min: Vector2Tuple;
2202
+ readonly min: Vector2Data;
1818
2203
  /** Number of disconnected filled section components. */
1819
2204
  readonly componentCount: number;
1820
2205
  /** Number of native section vertices. */
@@ -1851,7 +2236,9 @@ export declare interface SmoothEdgeTreatment {
1851
2236
  }
1852
2237
 
1853
2238
  /**
1854
- * Immutable deferred solid recipe. Construction and composition require no engine.
2239
+ * Immutable deferred solid recipe.
2240
+ *
2241
+ * Construction and composition require no engine.
1855
2242
  * Ordinary recipes may be reused across sessions regardless of where constructed.
1856
2243
  * Explicit resolution settings are captured; unspecified settings inherit the evaluating host's defaults.
1857
2244
  * Observed components and recipes using them can only be evaluated in their originating session.
@@ -1952,9 +2339,9 @@ export declare interface SolidInspection {
1952
2339
  /** Whether this native solid contains no material. */
1953
2340
  readonly isEmpty: boolean;
1954
2341
  /** Inclusive maximum coordinates in millimetres. */
1955
- readonly max: Vector3Tuple;
2342
+ readonly max: Vector3Data;
1956
2343
  /** Inclusive minimum coordinates in millimetres. */
1957
- readonly min: Vector3Tuple;
2344
+ readonly min: Vector3Data;
1958
2345
  /** Number of disconnected material components, each retaining enclosed cavities. */
1959
2346
  readonly componentCount: number;
1960
2347
  /** Enclosed native solid volume in cubic millimetres. */
@@ -1972,9 +2359,9 @@ export declare interface SolidSegmentHit {
1972
2359
  /** Distance from the segment origin in millimetres. */
1973
2360
  readonly distance: number;
1974
2361
  /** Intersection position in millimetres. */
1975
- readonly position: Vector3Tuple;
2362
+ readonly position: Vector3Data;
1976
2363
  /** Outward unit surface normal at the intersection. */
1977
- readonly normal: Vector3Tuple;
2364
+ readonly normal: Vector3Data;
1978
2365
  }
1979
2366
 
1980
2367
  /**
@@ -2179,6 +2566,8 @@ export declare function svgSection(
2179
2566
  * Bounded SVG document sampling. Center origin uses the final painted bounds.
2180
2567
  */
2181
2568
  export declare interface SvgSectionOptions {
2569
+ /** Fit painted bounds uniformly inside positioned XY millimetre bounds; adaptive resolution applies at the fitted size. */
2570
+ readonly fit?: Bounds2Input;
2182
2571
  /** Local allocation ceilings may only lower the configured engine policy. */
2183
2572
  readonly limits?: Partial<GeometrySamplingLimits>;
2184
2573
  /** Exact circular tessellation count overriding physical sampling. */
@@ -2339,7 +2728,7 @@ export declare interface ThreadedNutOptions extends Omit<
2339
2728
  readonly width: number;
2340
2729
  }
2341
2730
 
2342
- /** Allocation-free body, cutter, and end-face facts resolved for a threaded nut. */
2731
+ /** Resolved body and end-face dimensions plus conservative allocation estimates for the thread cutter. */
2343
2732
  export declare interface ThreadedNutPreflight {
2344
2733
  /** Polygon segment count used by the nut body. */
2345
2734
  readonly bodySegments: number;
@@ -2351,7 +2740,7 @@ export declare interface ThreadedNutPreflight {
2351
2740
  readonly minimumBodyFaceInradius: number;
2352
2741
  /** Smallest radial wall left between the body and cutter at either requested face. */
2353
2742
  readonly minimumFaceWall: number;
2354
- /** Conservative allocation facts for the exact extended internal-thread cutter mesh. */
2743
+ /** Conservative allocation estimates for the extended cutter; excludes the body and Boolean result. */
2355
2744
  readonly thread: HelicalThreadSolidMeshPreflight;
2356
2745
  /** Start-aligned circular facet count used by the compensated thread cutter. */
2357
2746
  readonly threadCircularSegments: number;
@@ -2453,7 +2842,7 @@ export declare interface ThreadProfile {
2453
2842
  /** Adjacent axial thread spacing in millimetres. */
2454
2843
  readonly pitch: number;
2455
2844
  /** Immutable open `[axial, radial]` path spanning one pitch. */
2456
- readonly points: readonly Vector2Tuple[];
2845
+ readonly points: readonly Vector2Data[];
2457
2846
  /** Axial width of the flat at the minor envelope. */
2458
2847
  readonly rootFlatWidth: number;
2459
2848
  }
@@ -2530,32 +2919,33 @@ export declare interface Transform2 {
2530
2919
  /** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
2531
2920
  applyNormal(normal: Vector2Input): Vector2;
2532
2921
  /** Returns the frozen canonical row-major 3x3 matrix for interchange. */
2533
- toMatrix(): Transform2Matrix;
2922
+ toData(): Transform2Data;
2534
2923
  /** Embeds this placement in XYZ, leaving Z unchanged, for solids and 3D paths. */
2535
2924
  to3D(): Transform3;
2536
2925
  }
2537
2926
 
2538
2927
  /**
2539
- * Creates an immutable XY transform, identity by default. Matrices are copied and validated.
2928
+ * Creates an immutable XY transform, identity by default.
2929
+ *
2930
+ * Values and data are copied and validated.
2540
2931
  * Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ.
2541
2932
  * Zero scales and singular matrices throw GeometryError; negative scales reflect.
2542
2933
  *
2934
+ * Use `toData()` for frozen matrix interchange.
2935
+ *
2543
2936
  * @example
2544
2937
  * ```ts
2545
2938
  * const placement = transform2().rotate(90).translate([10, 0]);
2546
- * placement.applyPoint([1, 0]).toArray(); // approximately [10, 1]
2939
+ * placement.applyPoint([1, 0]).toData(); // approximately [10, 1]
2547
2940
  * ```
2548
2941
  */
2549
- export declare function transform2(matrix?: Transform2Matrix): Transform2;
2550
-
2551
- /** An immutable XY transform or its canonical row-major matrix for interchange. */
2552
- export declare type Transform2Input = Transform2 | Transform2Matrix;
2942
+ export declare function transform2(input?: Transform2Input): Transform2;
2553
2943
 
2554
2944
  /**
2555
2945
  * A row-major affine 3x3 XY matrix applied to column vectors.
2556
2946
  * Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.
2557
2947
  */
2558
- export declare type Transform2Matrix = readonly [
2948
+ export declare type Transform2Data = readonly [
2559
2949
  m00: number,
2560
2950
  m01: number,
2561
2951
  m02: number,
@@ -2567,6 +2957,9 @@ export declare type Transform2Matrix = readonly [
2567
2957
  m22: number,
2568
2958
  ];
2569
2959
 
2960
+ /** An immutable XY transform or its canonical row-major matrix for interchange. */
2961
+ export declare type Transform2Input = Transform2 | Transform2Data;
2962
+
2570
2963
  /** Immutable reusable XYZ placement. Methods apply in written order; angles are degrees. */
2571
2964
  export declare interface Transform3 {
2572
2965
  /** Applies a translation in model units after this placement. */
@@ -2592,27 +2985,29 @@ export declare interface Transform3 {
2592
2985
  /** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
2593
2986
  applyNormal(normal: Vector3Input): Vector3;
2594
2987
  /** Returns the frozen canonical row-major 4x4 matrix for interchange. */
2595
- toMatrix(): Transform3Matrix;
2988
+ toData(): Transform3Data;
2596
2989
  /** Restricts to XY; throws GeometryError for a plane change or singular XY restriction. */
2597
2990
  to2D(): Transform2;
2598
2991
  }
2599
2992
 
2600
2993
  /**
2601
- * Creates an immutable XYZ transform, identity by default. Matrices are copied and validated.
2994
+ * Creates an immutable XYZ transform, identity by default.
2995
+ *
2996
+ * Values and data are copied and validated.
2602
2997
  * Calls apply in written order; rotations use degrees and pivots use current world coordinates.
2603
2998
  * Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
2604
2999
  * Use frameTransform3(frame) as the input for existing orthonormal frame placement.
2605
3000
  *
3001
+ * Use `toData()` for frozen matrix interchange.
3002
+ * [composeTransform3](/docs/reference/geometry/composeTransform3) takes matrices in after, before order.
3003
+ *
2606
3004
  * @example
2607
3005
  * ```ts
2608
3006
  * const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
2609
- * placement.applyPoint([1, 0, 0]).toArray(); // approximately [10, 1, 0]
3007
+ * placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
2610
3008
  * ```
2611
3009
  */
2612
- export declare function transform3(matrix?: Transform3Matrix): Transform3;
2613
-
2614
- /** An immutable XYZ transform or its canonical row-major matrix for interchange. */
2615
- export declare type Transform3Input = Transform3 | Transform3Matrix;
3010
+ export declare function transform3(input?: Transform3Input): Transform3;
2616
3011
 
2617
3012
  /**
2618
3013
  * A row-major affine 4x4 matrix applied to column vectors.
@@ -2620,7 +3015,7 @@ export declare type Transform3Input = Transform3 | Transform3Matrix;
2620
3015
  * Translation occupies indices 3, 7, and 11. The final row must be
2621
3016
  * `[0, 0, 0, 1]` within the active geometry tolerance.
2622
3017
  */
2623
- export declare type Transform3Matrix = readonly [
3018
+ export declare type Transform3Data = readonly [
2624
3019
  m00: number,
2625
3020
  m01: number,
2626
3021
  m02: number,
@@ -2639,6 +3034,9 @@ export declare type Transform3Matrix = readonly [
2639
3034
  m33: number,
2640
3035
  ];
2641
3036
 
3037
+ /** An immutable XYZ transform or its canonical row-major matrix for interchange. */
3038
+ export declare type Transform3Input = Transform3 | Transform3Data;
3039
+
2642
3040
  /** Trapezoidal thread profile with a configurable included angle. */
2643
3041
  declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
2644
3042
  /** Selects the trapezoidal profile family. */
@@ -2681,7 +3079,7 @@ export declare interface TriangleMeshAnalysis extends TriangleMeshMeasurements {
2681
3079
  */
2682
3080
  export declare interface TriangleMeshMeasurements {
2683
3081
  /** Axis-aligned bounds. */
2684
- readonly bounds: Bounds3;
3082
+ readonly bounds: Bounds3Data;
2685
3083
  /** Signed enclosed volume; positive values correspond to outward winding. */
2686
3084
  readonly signedVolume: number;
2687
3085
  /** Sum of all triangle areas in squared model units. */
@@ -2778,22 +3176,26 @@ export declare interface Vector2 {
2778
3176
  /** Returns Euclidean distance to another vector in the same coordinate units. */
2779
3177
  distance(other: Vector2Input): number;
2780
3178
  /** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
2781
- toArray(): Vector2Tuple;
3179
+ toData(): Vector2Data;
2782
3180
  }
2783
3181
 
2784
3182
  /**
2785
3183
  * Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
3184
+ *
2786
3185
  * Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
2787
3186
  * and overflow throw `NON_FINITE_VALUE` GeometryError.
2788
3187
  * Use transform2().applyDirection(value) for rotations and nonuniform scaling.
3188
+ *
3189
+ * Use `toData()` for frozen tuple interchange, or
3190
+ * [normalize2](/docs/reference/geometry/normalize2) for tuple-based normalization in numerical loops.
2789
3191
  */
2790
3192
  export declare function vector2(input: Vector2Input): Vector2;
2791
3193
 
2792
- /** An XY tuple or immutable fluent vector accepted by vector operations. */
2793
- export declare type Vector2Input = Vector2Tuple | Vector2;
2794
-
2795
3194
  /** A two-dimensional Cartesian vector or point. */
2796
- export declare type Vector2Tuple = readonly [x: number, y: number];
3195
+ export declare type Vector2Data = readonly [x: number, y: number];
3196
+
3197
+ /** An XY tuple or immutable fluent vector accepted by vector operations. */
3198
+ export declare type Vector2Input = Vector2Data | Vector2;
2797
3199
 
2798
3200
  /** Immutable XYZ arithmetic; vector operations return new values and measurements return numbers. */
2799
3201
  export declare interface Vector3 {
@@ -2822,15 +3224,19 @@ export declare interface Vector3 {
2822
3224
  /** Returns Euclidean distance to another vector in the same coordinate units. */
2823
3225
  distance(other: Vector3Input): number;
2824
3226
  /** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
2825
- toArray(): Vector3Tuple;
3227
+ toData(): Vector3Data;
2826
3228
  }
2827
3229
 
2828
3230
  /**
2829
3231
  * Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
3232
+ *
2830
3233
  * Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
2831
3234
  * and overflow throw `NON_FINITE_VALUE` GeometryError.
2832
3235
  * Use transform3().applyDirection(value) for rotations and nonuniform scaling.
2833
3236
  *
3237
+ * Use `toData()` for frozen tuple interchange, or
3238
+ * [normalize3](/docs/reference/geometry/normalize3) for tuple-based normalization in numerical loops.
3239
+ *
2834
3240
  * @example
2835
3241
  * ```ts
2836
3242
  * const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
@@ -2839,11 +3245,11 @@ export declare interface Vector3 {
2839
3245
  */
2840
3246
  export declare function vector3(input: Vector3Input): Vector3;
2841
3247
 
2842
- /** An XYZ tuple or immutable fluent vector accepted by vector operations. */
2843
- export declare type Vector3Input = Vector3Tuple | Vector3;
2844
-
2845
3248
  /** A three-dimensional Cartesian vector or point. */
2846
- export declare type Vector3Tuple = readonly [x: number, y: number, z: number];
3249
+ export declare type Vector3Data = readonly [x: number, y: number, z: number];
3250
+
3251
+ /** An XYZ tuple or immutable fluent vector accepted by vector operations. */
3252
+ export declare type Vector3Input = Vector3Data | Vector3;
2847
3253
 
2848
3254
  /**
2849
3255
  * Immutable vector layout with no browser, font parser, or kernel ownership.
@@ -2858,7 +3264,7 @@ export declare interface VectorTextLayout {
2858
3264
  /** Text measurements from the same immutable layout that supplies geometry and SVG outlines. */
2859
3265
  export declare interface VectorTextMetrics {
2860
3266
  /** Visible curve bounds after alignment, or null when the text has no ink. */
2861
- readonly bounds: Bounds2 | null;
3267
+ readonly bounds: Bounds2Data | null;
2862
3268
  /** Unaligned logical advance and negative baseline displacement in mm; arcs retain [arc length, 0]. */
2863
3269
  readonly advance: readonly [number, number];
2864
3270
  /** Maximum logical line advance in millimetres, including spaces; arc length on circular baselines. */