@metamesh/modeling 0.15.0 → 0.16.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 (700) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +33 -6
  3. package/dist/api/engine.d.ts +4 -3
  4. package/dist/api/geometry.d.ts +529 -242
  5. package/dist/api/index.d.ts +363 -104
  6. package/dist/api/text.d.ts +6 -6
  7. package/dist/docs/guides/concepts.md +295 -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 +35 -30
  13. package/dist/docs/guides/standalone-model.md +42 -0
  14. package/dist/docs/manifest.json +846 -243
  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/Bounds3-type.md +127 -0
  43. package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
  44. package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
  45. package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
  46. package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
  47. package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
  48. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +2 -1
  49. package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
  50. package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
  51. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  52. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  53. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  54. package/dist/docs/reference/geometry/BoxOptions.md +3 -3
  55. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
  56. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
  57. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  58. package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
  59. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
  60. package/dist/docs/reference/geometry/CircularResolutionOptions.md +1 -1
  61. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
  62. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
  63. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
  64. package/dist/docs/reference/geometry/Contour.md +10 -4
  65. package/dist/docs/reference/geometry/ContourCurve.md +5 -1
  66. package/dist/docs/reference/geometry/ContourPoint.md +6 -1
  67. package/dist/docs/reference/geometry/ContourSegment.md +5 -1
  68. package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
  69. package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
  70. package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
  71. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
  72. package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
  73. package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
  74. package/dist/docs/reference/geometry/Curve2.md +5 -1
  75. package/dist/docs/reference/geometry/Curve3.md +5 -1
  76. package/dist/docs/reference/geometry/CurveSamplingOptions.md +5 -1
  77. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
  78. package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
  79. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -3
  80. package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
  81. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +6 -1
  82. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
  83. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
  84. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +5 -1
  85. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
  86. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
  87. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
  88. package/dist/docs/reference/geometry/CylindricalGearSpec.md +6 -1
  89. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  90. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  91. package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
  92. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  93. package/dist/docs/reference/geometry/ExtrudeOptions.md +5 -1
  94. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -1
  95. package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
  96. package/dist/docs/reference/geometry/Frame3.md +10 -6
  97. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  98. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  99. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  100. package/dist/docs/reference/geometry/GeometryResolution.md +1 -1
  101. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
  102. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  103. package/dist/docs/reference/geometry/GridPatternOptions.md +4 -4
  104. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
  105. package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
  106. package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
  107. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +5 -1
  108. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +5 -1
  109. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
  110. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
  111. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +5 -1
  112. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
  113. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
  114. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
  115. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
  116. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
  117. package/dist/docs/reference/geometry/LineCurve2.md +8 -4
  118. package/dist/docs/reference/geometry/LineCurve3.md +8 -4
  119. package/dist/docs/reference/geometry/LinearPatternOptions.md +1 -1
  120. package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
  121. package/dist/docs/reference/geometry/LoftMeshStation.md +5 -1
  122. package/dist/docs/reference/geometry/LoftOptions.md +5 -1
  123. package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
  124. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
  125. package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
  126. package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
  127. package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
  128. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
  129. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
  130. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  131. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
  132. package/dist/docs/reference/geometry/Path2-type.md +12 -8
  133. package/dist/docs/reference/geometry/Path2Data.md +40 -4
  134. package/dist/docs/reference/geometry/Path2Input.md +8 -3
  135. package/dist/docs/reference/geometry/Path3-type.md +12 -8
  136. package/dist/docs/reference/geometry/Path3Data.md +40 -4
  137. package/dist/docs/reference/geometry/Path3Input.md +8 -3
  138. package/dist/docs/reference/geometry/PathFrame.md +9 -5
  139. package/dist/docs/reference/geometry/PathLocation.md +5 -1
  140. package/dist/docs/reference/geometry/PathNormalGuide.md +8 -4
  141. package/dist/docs/reference/geometry/PathOptions.md +5 -1
  142. package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
  143. package/dist/docs/reference/geometry/PathPlacement.md +8 -4
  144. package/dist/docs/reference/geometry/PathResamplingOptions.md +5 -1
  145. package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
  146. package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
  147. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
  148. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +5 -1
  149. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
  150. package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
  151. package/dist/docs/reference/geometry/PolygonData.md +7 -2
  152. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +5 -1
  153. package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -1
  154. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
  155. package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
  156. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
  157. package/dist/docs/reference/geometry/Profile.md +8 -2
  158. package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
  159. package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
  160. package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
  161. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
  162. package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
  163. package/dist/docs/reference/geometry/RackPitchSpec.md +6 -1
  164. package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
  165. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  166. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  167. package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
  168. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
  169. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
  170. package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
  171. package/dist/docs/reference/geometry/RegionData.md +6 -2
  172. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +5 -1
  173. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  174. package/dist/docs/reference/geometry/RevolveOptions.md +5 -1
  175. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  176. package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
  177. package/dist/docs/reference/geometry/SampleContourOptions.md +5 -1
  178. package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
  179. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +5 -1
  180. package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
  181. package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
  182. package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
  183. package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
  184. package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
  185. package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
  186. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  187. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +5 -1
  188. package/dist/docs/reference/geometry/SphereOptions.md +1 -1
  189. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
  190. package/dist/docs/reference/geometry/StrokeCap.md +8 -1
  191. package/dist/docs/reference/geometry/StrokeJoin.md +8 -1
  192. package/dist/docs/reference/geometry/StrokeOptions.md +5 -1
  193. package/dist/docs/reference/geometry/SvgImportOptions.md +5 -1
  194. package/dist/docs/reference/geometry/SvgRegionPreflight.md +6 -2
  195. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +7 -3
  196. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +6 -1
  197. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +6 -1
  198. package/dist/docs/reference/geometry/SweepOptions.md +5 -1
  199. package/dist/docs/reference/geometry/SweepOrientation.md +5 -1
  200. package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
  201. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -1
  202. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
  203. package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
  204. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
  205. package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
  206. package/dist/docs/reference/geometry/ThreadHelixOptions.md +5 -1
  207. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
  208. package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
  209. package/dist/docs/reference/geometry/ThreadProfile-type.md +7 -3
  210. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
  211. package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
  212. package/dist/docs/reference/geometry/ThreadRole.md +8 -1
  213. package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
  214. package/dist/docs/reference/geometry/ThreadedNutOptions.md +5 -1
  215. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
  216. package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
  217. package/dist/docs/reference/geometry/ThreadedRodOptions.md +5 -1
  218. package/dist/docs/reference/geometry/TorusOptions.md +1 -1
  219. package/dist/docs/reference/geometry/Transform2-type.md +6 -5
  220. package/dist/docs/reference/geometry/Transform2Data.md +15 -0
  221. package/dist/docs/reference/geometry/Transform2Input.md +4 -3
  222. package/dist/docs/reference/geometry/Transform3-type.md +6 -5
  223. package/dist/docs/reference/geometry/Transform3Data.md +18 -0
  224. package/dist/docs/reference/geometry/Transform3Input.md +4 -3
  225. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +5 -1
  226. package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
  227. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +7 -3
  228. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
  229. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
  230. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +5 -1
  231. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
  232. package/dist/docs/reference/geometry/TriangleMeshSignature.md +7 -3
  233. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +6 -1
  234. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
  235. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
  236. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
  237. package/dist/docs/reference/geometry/TubeOptions.md +1 -1
  238. package/dist/docs/reference/geometry/Vector2-type.md +6 -5
  239. package/dist/docs/reference/geometry/Vector2Data.md +15 -0
  240. package/dist/docs/reference/geometry/Vector2Input.md +4 -3
  241. package/dist/docs/reference/geometry/Vector3-type.md +6 -5
  242. package/dist/docs/reference/geometry/Vector3Data.md +15 -0
  243. package/dist/docs/reference/geometry/Vector3Input.md +4 -3
  244. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +6 -1
  245. package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
  246. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +5 -1
  247. package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
  248. package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
  249. package/dist/docs/reference/geometry/add2.md +7 -6
  250. package/dist/docs/reference/geometry/add3.md +7 -6
  251. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
  252. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +5 -1
  253. package/dist/docs/reference/geometry/anchor3.md +2 -1
  254. package/dist/docs/reference/geometry/anchorFrame3.md +5 -1
  255. package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
  256. package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
  257. package/dist/docs/reference/geometry/attachmentTransform3.md +5 -4
  258. package/dist/docs/reference/geometry/bounds2.md +38 -0
  259. package/dist/docs/reference/geometry/bounds3.md +38 -0
  260. package/dist/docs/reference/geometry/boundsCenter.md +12 -11
  261. package/dist/docs/reference/geometry/boundsFromSize.md +12 -11
  262. package/dist/docs/reference/geometry/boundsSize.md +12 -11
  263. package/dist/docs/reference/geometry/boxAnchor3.md +4 -3
  264. package/dist/docs/reference/geometry/categories/bounds-layout.md +23 -6
  265. package/dist/docs/reference/geometry/categories/curves-paths.md +21 -9
  266. package/dist/docs/reference/geometry/categories/mechanical.md +22 -10
  267. package/dist/docs/reference/geometry/categories/meshes.md +16 -7
  268. package/dist/docs/reference/geometry/categories/pattern-placement.md +6 -4
  269. package/dist/docs/reference/geometry/categories/primitive-options.md +8 -2
  270. package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -12
  271. package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -3
  272. package/dist/docs/reference/geometry/categories/transforms-math.md +21 -12
  273. package/dist/docs/reference/geometry/categories/vector-import.md +11 -5
  274. package/dist/docs/reference/geometry/circleContour.md +5 -1
  275. package/dist/docs/reference/geometry/closeToAxis.md +14 -5
  276. package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
  277. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +5 -1
  278. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -1
  279. package/dist/docs/reference/geometry/composeTransform3.md +7 -6
  280. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +5 -1
  281. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +11 -2
  282. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
  283. package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +5 -1
  284. package/dist/docs/reference/geometry/containsBounds.md +10 -9
  285. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
  286. package/dist/docs/reference/geometry/cross2.md +6 -5
  287. package/dist/docs/reference/geometry/cross3.md +7 -6
  288. package/dist/docs/reference/geometry/cylinderAnchor3.md +3 -2
  289. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
  290. package/dist/docs/reference/geometry/distance2.md +6 -5
  291. package/dist/docs/reference/geometry/distance3.md +6 -5
  292. package/dist/docs/reference/geometry/distributeAlongPath.md +5 -1
  293. package/dist/docs/reference/geometry/dot2.md +6 -5
  294. package/dist/docs/reference/geometry/dot3.md +6 -5
  295. package/dist/docs/reference/geometry/ellipseContour.md +5 -1
  296. package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
  297. package/dist/docs/reference/geometry/extrudeMesh.md +5 -1
  298. package/dist/docs/reference/geometry/fitBounds.md +10 -9
  299. package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
  300. package/dist/docs/reference/geometry/frameTransform3.md +5 -4
  301. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +5 -1
  302. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
  303. package/dist/docs/reference/geometry/gridPatternTransforms.md +4 -4
  304. package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
  305. package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +5 -1
  306. package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +5 -1
  307. package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
  308. package/dist/docs/reference/geometry/isGeometryError.md +5 -2
  309. package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
  310. package/dist/docs/reference/geometry/layoutRow.md +11 -7
  311. package/dist/docs/reference/geometry/length2.md +5 -4
  312. package/dist/docs/reference/geometry/length3.md +5 -4
  313. package/dist/docs/reference/geometry/lerp2.md +7 -6
  314. package/dist/docs/reference/geometry/lerp3.md +7 -6
  315. package/dist/docs/reference/geometry/linearPatternTransforms.md +4 -4
  316. package/dist/docs/reference/geometry/loftMesh.md +5 -1
  317. package/dist/docs/reference/geometry/matchProfiles.md +11 -2
  318. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
  319. package/dist/docs/reference/geometry/meshBounds.md +8 -4
  320. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +5 -1
  321. package/dist/docs/reference/geometry/normalize2.md +10 -6
  322. package/dist/docs/reference/geometry/normalize3.md +10 -6
  323. package/dist/docs/reference/geometry/normalizeContour.md +8 -4
  324. package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
  325. package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
  326. package/dist/docs/reference/geometry/optimizePlanarPatches.md +5 -1
  327. package/dist/docs/reference/geometry/path2.md +14 -2
  328. package/dist/docs/reference/geometry/path3.md +8 -1
  329. package/dist/docs/reference/geometry/pathPatternTransforms.md +9 -5
  330. package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
  331. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +11 -2
  332. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +13 -2
  333. package/dist/docs/reference/geometry/preflightSvgRegion.md +15 -2
  334. package/dist/docs/reference/geometry/preflightThreadedNut.md +12 -2
  335. package/dist/docs/reference/geometry/preflightThreadedRod.md +12 -2
  336. package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
  337. package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -4
  338. package/dist/docs/reference/geometry/rectangleContour.md +10 -3
  339. package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
  340. package/dist/docs/reference/geometry/regionArea.md +5 -1
  341. package/dist/docs/reference/geometry/regionBounds.md +8 -4
  342. package/dist/docs/reference/geometry/regularPolygonContour.md +8 -4
  343. package/dist/docs/reference/geometry/resamplePolyline2.md +8 -4
  344. package/dist/docs/reference/geometry/resamplePolyline3.md +8 -4
  345. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +1 -1
  346. package/dist/docs/reference/geometry/resolveArcSegments.md +1 -1
  347. package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
  348. package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
  349. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
  350. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +5 -1
  351. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
  352. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  353. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
  354. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
  355. package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
  356. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +5 -1
  357. package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
  358. package/dist/docs/reference/geometry/revolveMesh.md +5 -1
  359. package/dist/docs/reference/geometry/rotate2.md +6 -5
  360. package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
  361. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -4
  362. package/dist/docs/reference/geometry/sampleContour.md +12 -2
  363. package/dist/docs/reference/geometry/sampleCurve2.md +6 -3
  364. package/dist/docs/reference/geometry/sampleCurve3.md +5 -1
  365. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
  366. package/dist/docs/reference/geometry/sampleHelix.md +13 -5
  367. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
  368. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
  369. package/dist/docs/reference/geometry/sampleSideProfile.md +15 -5
  370. package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
  371. package/dist/docs/reference/geometry/sampleThreadHelices.md +5 -1
  372. package/dist/docs/reference/geometry/scale2.md +6 -5
  373. package/dist/docs/reference/geometry/scale3.md +6 -5
  374. package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
  375. package/dist/docs/reference/geometry/signedContourArea.md +5 -1
  376. package/dist/docs/reference/geometry/starContour.md +8 -4
  377. package/dist/docs/reference/geometry/strokeRegionData.md +5 -1
  378. package/dist/docs/reference/geometry/subtract2.md +7 -6
  379. package/dist/docs/reference/geometry/subtract3.md +7 -6
  380. package/dist/docs/reference/geometry/sweepMesh.md +5 -1
  381. package/dist/docs/reference/geometry/threadProfile.md +5 -1
  382. package/dist/docs/reference/geometry/transform2.md +14 -7
  383. package/dist/docs/reference/geometry/transform3.md +16 -7
  384. package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
  385. package/dist/docs/reference/geometry/transformRegionData.md +5 -1
  386. package/dist/docs/reference/geometry/transformTriangleMesh.md +5 -1
  387. package/dist/docs/reference/geometry/translationTransform3.md +7 -6
  388. package/dist/docs/reference/geometry/triangulateContour.md +5 -1
  389. package/dist/docs/reference/geometry/validateSolidMesh.md +9 -2
  390. package/dist/docs/reference/geometry/validateTransform3.md +6 -5
  391. package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
  392. package/dist/docs/reference/geometry/vector2.md +10 -2
  393. package/dist/docs/reference/geometry/vector3.md +10 -2
  394. package/dist/docs/reference/geometry.md +7 -5
  395. package/dist/docs/reference/model/Anchor3.md +6 -5
  396. package/dist/docs/reference/model/AttachOptions.md +2 -1
  397. package/dist/docs/reference/model/Bounds2-type.md +125 -0
  398. package/dist/docs/reference/model/Bounds2Data.md +44 -0
  399. package/dist/docs/reference/model/Bounds2Input.md +19 -0
  400. package/dist/docs/reference/model/Bounds3-type.md +125 -0
  401. package/dist/docs/reference/model/Bounds3Data.md +44 -0
  402. package/dist/docs/reference/model/Bounds3Input.md +19 -0
  403. package/dist/docs/reference/model/BoxEdge.md +1 -1
  404. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  405. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  406. package/dist/docs/reference/model/BoxOptions.md +3 -3
  407. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  408. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  409. package/dist/docs/reference/model/CircleOptions.md +1 -1
  410. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
  411. package/dist/docs/reference/model/Computed.md +6 -1
  412. package/dist/docs/reference/model/ComputedValue.md +5 -1
  413. package/dist/docs/reference/model/Contour.md +6 -4
  414. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  415. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  416. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  417. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  418. package/dist/docs/reference/model/CylinderOptions.md +1 -1
  419. package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
  420. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  421. package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
  422. package/dist/docs/reference/model/EllipseOptions.md +1 -1
  423. package/dist/docs/reference/model/EndTreatments.md +1 -1
  424. package/dist/docs/reference/model/ExtrudeOptions.md +1 -1
  425. package/dist/docs/reference/model/FinalizedModel.md +3 -3
  426. package/dist/docs/reference/model/FinalizedPart.md +1 -1
  427. package/dist/docs/reference/model/Frame3.md +6 -6
  428. package/dist/docs/reference/model/GenerateCallback.md +5 -1
  429. package/dist/docs/reference/model/GenerateContext.md +5 -1
  430. package/dist/docs/reference/model/GeneratedPart.md +5 -1
  431. package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
  432. package/dist/docs/reference/model/GenerationError.md +5 -1
  433. package/dist/docs/reference/model/GeometryResolution.md +1 -1
  434. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  435. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  436. package/dist/docs/reference/model/GridPatternOptions.md +5 -4
  437. package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
  438. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +2 -1
  439. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
  440. package/dist/docs/reference/model/HullOptions.md +1 -1
  441. package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
  442. package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
  443. package/dist/docs/reference/model/ImplicitOptions.md +6 -6
  444. package/dist/docs/reference/model/InternalThreadCutterOptions.md +2 -1
  445. package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
  446. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
  447. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +34 -0
  448. package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
  449. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
  450. package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
  451. package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
  452. package/dist/docs/reference/model/LinearPatternOptions.md +2 -1
  453. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  454. package/dist/docs/reference/model/LoftOptions.md +1 -1
  455. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  456. package/dist/docs/reference/model/LoftStation.md +1 -1
  457. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  458. package/dist/docs/reference/model/ModelProgram.md +5 -1
  459. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  460. package/dist/docs/reference/model/NumericArray.md +8 -1
  461. package/dist/docs/reference/model/PartGeometry.md +5 -1
  462. package/dist/docs/reference/model/PartOptions.md +5 -1
  463. package/dist/docs/reference/model/Path2-type.md +12 -8
  464. package/dist/docs/reference/model/Path2Data.md +40 -4
  465. package/dist/docs/reference/model/Path2Input.md +8 -3
  466. package/dist/docs/reference/model/Path3-type.md +12 -8
  467. package/dist/docs/reference/model/Path3Data.md +40 -4
  468. package/dist/docs/reference/model/Path3Input.md +8 -3
  469. package/dist/docs/reference/model/PathLocation.md +5 -1
  470. package/dist/docs/reference/model/PathNormalGuide.md +4 -4
  471. package/dist/docs/reference/model/PathOptions.md +5 -1
  472. package/dist/docs/reference/model/PathPatternOptions.md +2 -1
  473. package/dist/docs/reference/model/PathResamplingOptions.md +5 -1
  474. package/dist/docs/reference/model/PatternSource.md +2 -1
  475. package/dist/docs/reference/model/Pivot2Options.md +2 -1
  476. package/dist/docs/reference/model/Pivot3Options.md +2 -1
  477. package/dist/docs/reference/model/PlaneOptions.md +1 -1
  478. package/dist/docs/reference/model/PolygonData.md +3 -2
  479. package/dist/docs/reference/model/PolygonOptions.md +1 -1
  480. package/dist/docs/reference/model/PrimitiveAttachment.md +2 -1
  481. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +2 -1
  482. package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
  483. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
  484. package/dist/docs/reference/model/Profile.md +4 -2
  485. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  486. package/dist/docs/reference/model/ProfileContour2.md +4 -2
  487. package/dist/docs/reference/model/ProfileSpan2.md +3 -3
  488. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
  489. package/dist/docs/reference/model/RadialPatternOptions.md +2 -1
  490. package/dist/docs/reference/model/RadialSizing.md +1 -1
  491. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  492. package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
  493. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  494. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  495. package/dist/docs/reference/model/RectangleOptions.md +3 -3
  496. package/dist/docs/reference/model/RegionData.md +2 -2
  497. package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
  498. package/dist/docs/reference/model/RevolveOptions.md +1 -1
  499. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  500. package/dist/docs/reference/model/Section.md +9 -2
  501. package/dist/docs/reference/model/SectionHullOptions.md +1 -1
  502. package/dist/docs/reference/model/SectionInspection.md +4 -4
  503. package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
  504. package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
  505. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  506. package/dist/docs/reference/model/Solid.md +9 -2
  507. package/dist/docs/reference/model/SolidInspection.md +4 -4
  508. package/dist/docs/reference/model/SolidSegmentHit.md +4 -4
  509. package/dist/docs/reference/model/SphereOptions.md +1 -1
  510. package/dist/docs/reference/model/StarOptions.md +1 -1
  511. package/dist/docs/reference/model/StrokeCap.md +1 -1
  512. package/dist/docs/reference/model/StrokeJoin.md +1 -1
  513. package/dist/docs/reference/model/StrokeOptions.md +1 -1
  514. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  515. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  516. package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
  517. package/dist/docs/reference/model/SweepOptions.md +1 -1
  518. package/dist/docs/reference/model/SweepOrientation.md +1 -1
  519. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  520. package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
  521. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
  522. package/dist/docs/reference/model/ThreadHandedness.md +2 -1
  523. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
  524. package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
  525. package/dist/docs/reference/model/ThreadProfile.md +4 -3
  526. package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
  527. package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
  528. package/dist/docs/reference/model/ThreadedNutOptions.md +2 -1
  529. package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
  530. package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
  531. package/dist/docs/reference/model/ThreadedRodOptions.md +2 -1
  532. package/dist/docs/reference/model/TorusOptions.md +1 -1
  533. package/dist/docs/reference/model/Transform2-type.md +6 -5
  534. package/dist/docs/reference/model/Transform2Data.md +16 -0
  535. package/dist/docs/reference/model/Transform2Input.md +4 -3
  536. package/dist/docs/reference/model/Transform3-type.md +6 -5
  537. package/dist/docs/reference/model/Transform3Data.md +19 -0
  538. package/dist/docs/reference/model/Transform3Input.md +4 -3
  539. package/dist/docs/reference/model/TriangleMesh.md +1 -1
  540. package/dist/docs/reference/model/TriangleMeshAnalysis.md +3 -3
  541. package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
  542. package/dist/docs/reference/model/TubeOptions.md +1 -1
  543. package/dist/docs/reference/model/Vector2-type.md +6 -5
  544. package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
  545. package/dist/docs/reference/model/Vector2Input.md +4 -3
  546. package/dist/docs/reference/model/Vector3-type.md +6 -5
  547. package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
  548. package/dist/docs/reference/model/Vector3Input.md +4 -3
  549. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  550. package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
  551. package/dist/docs/reference/model/anchor.md +2 -1
  552. package/dist/docs/reference/model/bounds2.md +36 -0
  553. package/dist/docs/reference/model/bounds3.md +36 -0
  554. package/dist/docs/reference/model/box.md +2 -2
  555. package/dist/docs/reference/model/castSegment.md +1 -1
  556. package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
  557. package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
  558. package/dist/docs/reference/model/categories/bounds.md +36 -0
  559. package/dist/docs/reference/model/categories/contracts.md +4 -2
  560. package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
  561. package/dist/docs/reference/model/categories/explicit-profiles.md +6 -4
  562. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
  563. package/dist/docs/reference/model/categories/generation.md +11 -2
  564. package/dist/docs/reference/model/categories/hinges.md +38 -0
  565. package/dist/docs/reference/model/categories/inspection.md +9 -2
  566. package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
  567. package/dist/docs/reference/model/categories/paths.md +15 -7
  568. package/dist/docs/reference/model/categories/primitives.md +10 -4
  569. package/dist/docs/reference/model/categories/resolution.md +4 -2
  570. package/dist/docs/reference/model/categories/sections.md +10 -5
  571. package/dist/docs/reference/model/categories/threads.md +10 -7
  572. package/dist/docs/reference/model/categories/transforms-placement.md +17 -9
  573. package/dist/docs/reference/model/circle.md +1 -1
  574. package/dist/docs/reference/model/components.md +1 -1
  575. package/dist/docs/reference/model/compose.md +1 -1
  576. package/dist/docs/reference/model/cylinder.md +1 -1
  577. package/dist/docs/reference/model/distance.md +1 -1
  578. package/dist/docs/reference/model/ellipse.md +1 -1
  579. package/dist/docs/reference/model/extrude.md +1 -1
  580. package/dist/docs/reference/model/generate.md +5 -1
  581. package/dist/docs/reference/model/gridPattern.md +2 -1
  582. package/dist/docs/reference/model/heightfield.md +5 -2
  583. package/dist/docs/reference/model/hull.md +1 -1
  584. package/dist/docs/reference/model/immutableBuffer.md +5 -1
  585. package/dist/docs/reference/model/immutableMesh.md +5 -1
  586. package/dist/docs/reference/model/implicit.md +3 -3
  587. package/dist/docs/reference/model/inspectSection.md +1 -1
  588. package/dist/docs/reference/model/inspectSolid.md +1 -1
  589. package/dist/docs/reference/model/internalThreadCutter.md +2 -1
  590. package/dist/docs/reference/model/intersect.md +1 -1
  591. package/dist/docs/reference/model/isEmpty.md +1 -1
  592. package/dist/docs/reference/model/knuckleHinge.md +47 -0
  593. package/dist/docs/reference/model/linearPattern.md +2 -1
  594. package/dist/docs/reference/model/loft.md +1 -1
  595. package/dist/docs/reference/model/matchProfiles.md +1 -1
  596. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  597. package/dist/docs/reference/model/path2.md +14 -2
  598. package/dist/docs/reference/model/path3.md +8 -1
  599. package/dist/docs/reference/model/pathPattern.md +2 -1
  600. package/dist/docs/reference/model/polygon.md +5 -2
  601. package/dist/docs/reference/model/preflightInternalThreadCutter.md +8 -2
  602. package/dist/docs/reference/model/preflightThreadedNut.md +8 -2
  603. package/dist/docs/reference/model/preflightThreadedRod.md +8 -2
  604. package/dist/docs/reference/model/radialPattern.md +2 -1
  605. package/dist/docs/reference/model/rectangle.md +5 -2
  606. package/dist/docs/reference/model/regularPolygon.md +1 -1
  607. package/dist/docs/reference/model/revolve.md +1 -1
  608. package/dist/docs/reference/model/solidFromMesh.md +1 -1
  609. package/dist/docs/reference/model/sphere.md +1 -1
  610. package/dist/docs/reference/model/split.md +1 -1
  611. package/dist/docs/reference/model/splitByPlane.md +1 -1
  612. package/dist/docs/reference/model/star.md +1 -1
  613. package/dist/docs/reference/model/stroke.md +1 -1
  614. package/dist/docs/reference/model/svgPathSection.md +1 -1
  615. package/dist/docs/reference/model/svgSection.md +1 -1
  616. package/dist/docs/reference/model/sweep.md +1 -1
  617. package/dist/docs/reference/model/textSection.md +1 -1
  618. package/dist/docs/reference/model/threadRidge.md +2 -1
  619. package/dist/docs/reference/model/threadedNut.md +2 -1
  620. package/dist/docs/reference/model/threadedRod.md +2 -1
  621. package/dist/docs/reference/model/torus.md +1 -1
  622. package/dist/docs/reference/model/transform2.md +14 -7
  623. package/dist/docs/reference/model/transform3.md +16 -7
  624. package/dist/docs/reference/model/tube.md +1 -1
  625. package/dist/docs/reference/model/union.md +1 -1
  626. package/dist/docs/reference/model/vector2.md +10 -2
  627. package/dist/docs/reference/model/vector3.md +10 -2
  628. package/dist/docs/reference/model.md +15 -8
  629. package/dist/docs/reference/text/Bounds2Data.md +34 -0
  630. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
  631. package/dist/docs/reference/text/Vector2Data.md +7 -0
  632. package/dist/docs/reference/text/VectorFont.md +1 -1
  633. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  634. package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
  635. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  636. package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
  637. package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
  638. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  639. package/dist/docs/reference/text/categories/font-preparation.md +6 -4
  640. package/dist/docs/reference/text/prepareVectorFont.md +1 -1
  641. package/dist/docs/reference/text.md +4 -2
  642. package/dist/engine/construction-operations.js +1 -1
  643. package/dist/engine/knuckle-hinge-operation.js +85 -0
  644. package/dist/engine/loft-operations.js +1 -1
  645. package/dist/engine/mechanical-operations.js +3 -1
  646. package/dist/engine/modeling-context.js +8 -1
  647. package/dist/engine/recipe-realization.js +4 -2
  648. package/dist/engine/section-operations.js +1 -1
  649. package/dist/engine/transform-operations.js +3 -3
  650. package/dist/geometry/bounds-value.js +93 -0
  651. package/dist/geometry/bounds.js +10 -8
  652. package/dist/geometry/curves/sampling.js +1 -2
  653. package/dist/geometry/errors.js +1 -0
  654. package/dist/geometry/heightfield.js +12 -1
  655. package/dist/geometry/index.js +3 -1
  656. package/dist/geometry/math/immutable-value.js +1 -1
  657. package/dist/geometry/math/vector-value.js +11 -3
  658. package/dist/geometry/math/vector2.js +1 -0
  659. package/dist/geometry/math/vector3.js +1 -0
  660. package/dist/geometry/mechanical/index.js +1 -0
  661. package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
  662. package/dist/geometry/mechanical/thread-mesh-plan.js +7 -2
  663. package/dist/geometry/mechanical/thread-solids.js +29 -4
  664. package/dist/geometry/mesh/mesh-centroid.js +1 -0
  665. package/dist/geometry/mesh/mesh-solid.js +1 -0
  666. package/dist/geometry/paths/frames.js +1 -0
  667. package/dist/geometry/paths/helix.js +1 -0
  668. package/dist/geometry/paths/path-value.js +43 -27
  669. package/dist/geometry/paths/resampling.js +2 -2
  670. package/dist/geometry/patterns/placements.js +3 -3
  671. package/dist/geometry/patterns.js +3 -1
  672. package/dist/geometry/profiles/contour.js +1 -0
  673. package/dist/geometry/profiles/matched.js +1 -0
  674. package/dist/geometry/profiles/rectangle.js +10 -1
  675. package/dist/geometry/profiles/side-profile.js +2 -0
  676. package/dist/geometry/svg-import.js +8 -2
  677. package/dist/geometry/sweeps/options.js +1 -1
  678. package/dist/geometry/text-fitting.js +1 -0
  679. package/dist/geometry/transform-matrix.js +1 -1
  680. package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
  681. package/dist/index.js +2 -1
  682. package/dist/model/execution-binding.js +1 -1
  683. package/dist/model/geometry-recipes.js +1 -1
  684. package/dist/model/immutable-generation-data.js +4 -12
  685. package/dist/model/knuckle-hinge.js +1 -0
  686. package/dist/model/operations.js +57 -3
  687. package/dist/model/recipe-declaration.js +10 -2
  688. package/package.json +1 -1
  689. package/dist/docs/reference/geometry/Bounds2.md +0 -39
  690. package/dist/docs/reference/geometry/Bounds3.md +0 -39
  691. package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
  692. package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
  693. package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
  694. package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
  695. package/dist/docs/reference/model/Bounds2.md +0 -39
  696. package/dist/docs/reference/model/Bounds3.md +0 -39
  697. package/dist/docs/reference/model/Transform2Matrix.md +0 -15
  698. package/dist/docs/reference/model/Transform3Matrix.md +0 -18
  699. package/dist/docs/reference/text/Bounds2.md +0 -34
  700. package/dist/docs/reference/text/Vector2Tuple.md +0 -7
@@ -96,11 +96,30 @@ export const resolveCompensatedThreadSolidMesh = (options, role) => {
96
96
  });
97
97
  };
98
98
  const preflightCompensatedThreadSolid = (options, role) => preflightHelicalThreadSolidMesh(resolveCompensatedThreadSolidMesh(options, role).meshOptions);
99
- /** Preflights the exact compensated direct mesh used by the threaded rod constructor. */
99
+ /**
100
+ * Resolves compensated rod dimensions and checks conservative mesh estimates against output limits.
101
+ *
102
+ * This pure operation uses explicit resolution and limits or package defaults, without an active
103
+ * host execution. It creates planning data without mesh buffers or native objects; returned row
104
+ * and triangle counts are estimates. Mesh validity and native construction are checked later.
105
+ *
106
+ * @see {@link preflightHelicalThreadSolidMesh}
107
+ * @see {@link helicalThreadSolidMesh}
108
+ */
100
109
  export function preflightThreadedRodSolid(options) {
101
110
  return preflightCompensatedThreadSolid(options, "male");
102
111
  }
103
- /** Preflights the exact extended mesh used by the internal thread cutter constructor. */
112
+ /**
113
+ * Resolves compensated cutter dimensions and checks extended mesh estimates against output limits.
114
+ *
115
+ * This pure operation uses explicit resolution and limits or package defaults, without an active
116
+ * host execution. It includes the cutter's one-pitch extension beyond each requested face and
117
+ * creates planning data without mesh buffers or native objects. Row and triangle counts are
118
+ * estimates; mesh validity and native construction are checked later.
119
+ *
120
+ * @see {@link preflightHelicalThreadSolidMesh}
121
+ * @see {@link helicalThreadSolidMesh}
122
+ */
104
123
  export function preflightInternalThreadCutterSolid(options) {
105
124
  return preflightCompensatedThreadSolid(options, "female");
106
125
  }
@@ -222,8 +241,14 @@ export const resolveThreadedNutSolid = (options, operation) => {
222
241
  });
223
242
  };
224
243
  /**
225
- * Resolves a nut's exact body/cutter chamfer and preflights its extended thread mesh without
226
- * allocating Manifold WASM objects.
244
+ * Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
245
+ *
246
+ * This pure operation uses explicit resolution and limits or package defaults, without an active
247
+ * host execution. It resolves body/cutter dimensions without mesh buffers or native objects.
248
+ * `thread` contains conservative cutter estimates, excluding the body and Boolean result.
249
+ * Successful preflight leaves mesh validity, native construction, and manufacturing fit to later checks.
250
+ *
251
+ * @see {@link preflightHelicalThreadSolidMesh}
227
252
  */
228
253
  export function preflightThreadedNutSolid(options) {
229
254
  return resolveThreadedNutSolid(options, "preflightThreadedNutSolid").preflight;
@@ -2,6 +2,7 @@ import { GeometryError } from "../errors.js";
2
2
  import { analyzeTriangleMesh } from "./mesh.js";
3
3
  /**
4
4
  * Computes the uniform-density volume centroid of an oriented closed solid, including cavity shells.
5
+ *
5
6
  * Coordinates are millimetres. Indexed closure and positive aggregate volume are required; callers
6
7
  * may use validateSolidMesh first when geometric intersections and shell orientation are untrusted.
7
8
  * Fresh mutable input is inspected on every call, and buffers are never changed.
@@ -7,6 +7,7 @@ const MAXIMUM_TRIANGLES = 200_000;
7
7
  const MAXIMUM_TESTS = 2_000_000;
8
8
  /**
9
9
  * Checks closed indexed topology, triangle intersections, and alternating nested shell orientation.
10
+ *
10
11
  * Outward exterior shells and inward cavity shells are accepted. Separate shells must not touch,
11
12
  * intersect, or overlap as material. Indexed neighbours may share their own vertex or edge.
12
13
  *
@@ -50,6 +50,7 @@ const transportNormal = (normal, previousTangent, tangent) => {
50
50
  };
51
51
  /**
52
52
  * Builds rotation-minimizing frames by parallel-transporting the previous normal.
53
+ *
53
54
  * This avoids the sudden profile flips produced by picking a fresh up-vector per ring.
54
55
  * Paths exceeding maxPathPoints (default 100000) reject before frame allocation or guide evaluation.
55
56
  * Requires open path values; raw tuples are interpreted as an open path. Invalid paths throw GeometryError.
@@ -2,6 +2,7 @@ import { GeometryError } from "../errors.js";
2
2
  import { assertSamplingCount, resolveGeometrySamplingLimits, } from "../sampling-limits.js";
3
3
  /**
4
4
  * Creates `segments + 1` points including exact helix endpoints from finite positive dimensions.
5
+ *
5
6
  * Integrated weights must remain finite. The maxPathPoints ceiling defaults to 100000; excessive
6
7
  * exact counts reject before evaluating axial weights or allocating sample arrays.
7
8
  * Invalid inputs use GeometryError; exceptions thrown by axialWeight propagate unchanged.
@@ -1,10 +1,11 @@
1
+ import { bounds2, bounds3 } from "../bounds-value.js";
1
2
  import { GeometryError } from "../errors.js";
2
3
  import { immutableMathClass } from "../math/immutable-value.js";
3
4
  import { vector2, vector2Data, vector3, vector3Data, } from "../math/vector-value.js";
4
5
  import { assertSamplingCount, resolveGeometrySamplingLimits, } from "../sampling-limits.js";
5
6
  import { transformPath2, transformPath3 } from "../transform-geometry.js";
6
7
  import { closestPointOnValidatedPath } from "./closest-point.js";
7
- import { resamplePath2Data, resamplePath3Data } from "./resampling.js";
8
+ import { resamplePath2Points, resamplePath3Points } from "./resampling.js";
8
9
  const fail = (message, code = "INVALID_ARGUMENT") => {
9
10
  throw new GeometryError(code, message, { operation: "path" });
10
11
  };
@@ -19,9 +20,13 @@ function freezePoints(points) {
19
20
  Object.freeze(point);
20
21
  return Object.freeze(points);
21
22
  }
22
- function frozenArray(owner) {
23
+ function frozenData(owner) {
23
24
  const state = stateOf(owner);
24
- return (state.array ??= freezePoints(state.points.map((point) => [...point])));
25
+ return (state.data ??= Object.freeze({
26
+ dimension: owner.dimension,
27
+ closed: owner.closed,
28
+ points: freezePoints(state.points.map((point) => [...point])),
29
+ }));
25
30
  }
26
31
  function closedOption(closed) {
27
32
  if (closed !== undefined && typeof closed !== "boolean")
@@ -60,23 +65,25 @@ function validateClosure(points, closed) {
60
65
  function pathSource(input, closed, dimension) {
61
66
  if (Array.isArray(input))
62
67
  return { points: input, closed: closedOption(closed) };
63
- if (typeof input !== "object" ||
64
- input === null ||
65
- !("toArray" in input) ||
66
- typeof input.toArray !== "function" ||
67
- !("closed" in input) ||
68
- !("dimension" in input) ||
69
- input.dimension !== dimension)
70
- return fail("Expected a path or an array of coordinate tuples or vectors.");
71
- if (typeof input.closed !== "boolean")
72
- fail("Path closure metadata must be a boolean.");
73
- const sourceClosed = input.closed;
68
+ if (typeof input !== "object" || input === null)
69
+ return fail("Expected a path value, path data, or an array of vectors.");
70
+ const own = pathStates.get(input);
71
+ const method = Reflect.get(input, "toData");
72
+ const data = own !== undefined
73
+ ? input
74
+ : typeof method === "function"
75
+ ? Reflect.apply(method, input, [])
76
+ : input;
77
+ if (typeof data !== "object" || data === null)
78
+ return fail("Expected complete path data.");
79
+ const sourceDimension = Reflect.get(data, "dimension");
80
+ const sourceClosed = Reflect.get(data, "closed");
81
+ const points = own?.points ?? Reflect.get(data, "points");
82
+ if (sourceDimension !== dimension || typeof sourceClosed !== "boolean" || !Array.isArray(points))
83
+ return fail("Path data requires matching dimension, boolean closure, and an array of vectors.");
74
84
  if (closed !== undefined && closedOption(closed) !== sourceClosed)
75
85
  fail("The closed option conflicts with the path's closure.");
76
- const points = pathStates.get(input)?.points ?? input.toArray();
77
- if (!Array.isArray(points))
78
- fail("Path points must be an array of coordinate tuples or vectors.");
79
- return { points, closed: sourceClosed };
86
+ return { points: points, closed: sourceClosed };
80
87
  }
81
88
  function measuredLength(owner) {
82
89
  const state = stateOf(owner);
@@ -106,7 +113,9 @@ function measuredBounds(points) {
106
113
  max[axis] = Math.max(max[axis], point[axis]);
107
114
  }
108
115
  }
109
- return Object.freeze({ min: Object.freeze(min), max: Object.freeze(max) });
116
+ return min.length === 2
117
+ ? bounds2({ min: [min[0], min[1]], max: [max[0], max[1]] })
118
+ : bounds3({ min: [min[0], min[1], min[2]], max: [max[0], max[1], max[2]] });
110
119
  }
111
120
  function samplingOptions(options, closed) {
112
121
  if (typeof options !== "object" || options === null || Array.isArray(options))
@@ -123,8 +132,8 @@ const PlanarPath = /* @__PURE__ */ immutableMathClass(class PlanarPath {
123
132
  pathStates.set(this, { points });
124
133
  Object.freeze(this);
125
134
  }
126
- toArray() {
127
- return frozenArray(this);
135
+ toData() {
136
+ return frozenData(this);
128
137
  }
129
138
  length() {
130
139
  return measuredLength(this);
@@ -144,7 +153,7 @@ const PlanarPath = /* @__PURE__ */ immutableMathClass(class PlanarPath {
144
153
  }
145
154
  resample(options = {}) {
146
155
  const policy = samplingOptions(options, this.closed);
147
- return new PlanarPath(resamplePath2Data(points2(this), policy), this.closed);
156
+ return new PlanarPath(resamplePath2Points(points2(this), policy), this.closed);
148
157
  }
149
158
  });
150
159
  const SpatialPath = /* @__PURE__ */ immutableMathClass(class SpatialPath {
@@ -155,8 +164,8 @@ const SpatialPath = /* @__PURE__ */ immutableMathClass(class SpatialPath {
155
164
  pathStates.set(this, { points });
156
165
  Object.freeze(this);
157
166
  }
158
- toArray() {
159
- return frozenArray(this);
167
+ toData() {
168
+ return frozenData(this);
160
169
  }
161
170
  length() {
162
171
  return measuredLength(this);
@@ -176,16 +185,19 @@ const SpatialPath = /* @__PURE__ */ immutableMathClass(class SpatialPath {
176
185
  }
177
186
  resample(options = {}) {
178
187
  const policy = samplingOptions(options, this.closed);
179
- return new SpatialPath(resamplePath3Data(points3(this), policy), this.closed);
188
+ return new SpatialPath(resamplePath3Points(points3(this), policy), this.closed);
180
189
  }
181
190
  });
182
191
  /**
183
192
  * Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.
193
+ *
184
194
  * Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated
185
195
  * seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed.
186
196
  * Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement
187
197
  * overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError.
188
198
  * A path input retains its closure. Limits bound construction only; resampling takes its own limits.
199
+ *
200
+ * Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
189
201
  */
190
202
  export function path2(input, options = {}) {
191
203
  validateOptions(options);
@@ -198,6 +210,10 @@ export function path2(input, options = {}) {
198
210
  /**
199
211
  * Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam,
200
212
  * allocation and error rules as path2. Analytic curves must be sampled explicitly first.
213
+ *
214
+ * Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
215
+ *
216
+ * @see {@link path2} for shared construction rules.
201
217
  */
202
218
  export function path3(input, options = {}) {
203
219
  validateOptions(options);
@@ -233,7 +249,7 @@ export function path2InputData(input, closed, limits) {
233
249
  assertSamplingCount(source.points.length, "path", policy.maxPathPoints);
234
250
  return {
235
251
  points: input instanceof PlanarPath
236
- ? input.toArray()
252
+ ? input.toData().points
237
253
  : freezePoints(snapshot(source.points, 2, policy)),
238
254
  closed: source.closed,
239
255
  };
@@ -245,7 +261,7 @@ export function path3InputData(input, closed, limits) {
245
261
  assertSamplingCount(source.points.length, "path", policy.maxPathPoints);
246
262
  return {
247
263
  points: input instanceof SpatialPath
248
- ? input.toArray()
264
+ ? input.toData().points
249
265
  : freezePoints(snapshot(source.points, 3, policy)),
250
266
  closed: source.closed,
251
267
  };
@@ -126,7 +126,7 @@ export function resamplePolyline2(path, options = {}) {
126
126
  return resamplePolyline(path, 2, options, createPlanarSampleWriter);
127
127
  }
128
128
  /** Internal points-only writer; Path2 owns these mutable coordinates and freezes public interchange. */
129
- export function resamplePath2Data(path, options) {
129
+ export function resamplePath2Points(path, options) {
130
130
  const points = [];
131
131
  return resamplePolyline(path, 2, options, () => ({
132
132
  append: (point) => {
@@ -136,7 +136,7 @@ export function resamplePath2Data(path, options) {
136
136
  }), false);
137
137
  }
138
138
  /** Internal points-only writer; avoids calculating and allocating tangents discarded by Path3. */
139
- export function resamplePath3Data(path, options) {
139
+ export function resamplePath3Points(path, options) {
140
140
  const points = [];
141
141
  return resamplePolyline(path, 3, options, () => ({
142
142
  append: (point) => {
@@ -28,9 +28,9 @@ const finite = (value, operation) => {
28
28
  const coordinates = (input, operation) => {
29
29
  const value = typeof input === "object" &&
30
30
  input !== null &&
31
- "toArray" in input &&
32
- typeof input.toArray === "function"
33
- ? input.toArray()
31
+ "toData" in input &&
32
+ typeof input.toData === "function"
33
+ ? input.toData()
34
34
  : input;
35
35
  if (!Array.isArray(value) || (value.length !== 2 && value.length !== 3))
36
36
  fail(operation, "Pattern vectors require exact XY or XYZ coordinates.");
@@ -16,7 +16,9 @@ export function gridPatternTransforms(options) {
16
16
  return transforms(gridPatternPlan(options));
17
17
  }
18
18
  /**
19
- * Equal physical arc-length placements along a sampled XYZ path. Tangent orientation maps +Z
19
+ * Equal physical arc-length placements along a sampled XYZ path.
20
+ *
21
+ * Tangent orientation maps +Z
20
22
  * onto the local path tangent; fixed orientation only translates. Closed paths omit a repeated seam.
21
23
  * Explicit sampling ceilings bound both input points and output placements.
22
24
  */
@@ -9,6 +9,7 @@ function invalid(message) {
9
9
  }
10
10
  /**
11
11
  * Samples 2–32 connected line/cubic segments into a simple, nonzero-area, immutable CCW XY loop.
12
+ *
12
13
  * Physical scaling precedes adaptive curve sampling; the final end must repeat start exactly.
13
14
  * Shared anchors and the closing seam are emitted once. Winding normalization may change the
14
15
  * starting vertex. The sampled loop is checked for self-intersection and degeneracy by
@@ -64,6 +64,7 @@ const contours = (component) => [
64
64
  ];
65
65
  /**
66
66
  * Explicitly matches identified component/contour/span topology across a family.
67
+ *
67
68
  * Every paired span uses the maximum physical subdivision count requested by any member.
68
69
  * Cubics share a checked uniform parameter grid, including grids selected by exact paired requests.
69
70
  * Input order and winding are preserved. Collapsed spans retain repeated logical slots, which
@@ -79,7 +79,11 @@ export function rectangleCornerSegments(corner, limits) {
79
79
  }) / 4);
80
80
  }
81
81
  /**
82
- * Creates an immutable CCW rectangle loop. Round radius zero is square; tangent saturated endpoints occur once.
82
+ * Creates an immutable sampled CCW rectangle boundary. Round radius zero is square; tangent saturated endpoints occur once.
83
+ *
84
+ * Use [rectangle](/docs/reference/model/rectangle) for a filled Section.
85
+ *
86
+ * @see {@link rectangleProfile} for identified edge/corner spans used by matchProfiles.
83
87
  *
84
88
  * @example Rounded rectangle outline
85
89
  * ```ts
@@ -148,6 +152,11 @@ export function rectangleContour(options) {
148
152
  /**
149
153
  * Creates an identified rectangle whose edge/corner spans survive zero and saturated round radii. Outer winding is CCW.
150
154
  *
155
+ * Use [rectangle](/docs/reference/model/rectangle) for a filled Section.
156
+ *
157
+ * @see {@link matchProfiles} to sample a family with shared landmark correspondence.
158
+ * @see {@link rectangleContour} for sampled boundary coordinates.
159
+ *
151
160
  * @example Retain rectangle landmarks
152
161
  * ```ts
153
162
  * rectangleProfile({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
@@ -23,6 +23,7 @@ function distanceToChord(point, start, end) {
23
23
  }
24
24
  /**
25
25
  * Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline.
26
+ *
26
27
  * Anchors must progress strictly upward; nonnegative-radius cubic controls must have ordered
27
28
  * heights between their endpoints. Cubics use de Casteljau subdivision with a conservative
28
29
  * control-hull chord-error bound. Lines also obey the optional physical edge-length ceiling.
@@ -138,6 +139,7 @@ export function sampleSideProfile(curve, options = {}) {
138
139
  }
139
140
  /**
140
141
  * Closes an open, strictly upward [radius, height] side outline to the radius-zero axis.
142
+ *
141
143
  * Adds horizontal bottom/top edges at the endpoint heights, retaining axis endpoints once.
142
144
  * Returns a counterclockwise filled-boundary contour without a repeated seam vertex.
143
145
  * Radii must be nonnegative; the result must enclose nonzero area without touching itself.
@@ -476,7 +476,7 @@ function measureSvgRegion(region) {
476
476
  *
477
477
  * @param svg - Complete SVG XML source, limited to 256 KiB of UTF-8.
478
478
  * @param options - Physical flattening and viewport-origin controls.
479
- * @returns The exact normalized region used for import plus bounded review metrics and repairs.
479
+ * @returns The normalized sampled region plus bounded review metrics and repairs.
480
480
  * @throws {@link GeometryError} When XML, supported-feature, geometry, or complexity checks fail.
481
481
  */
482
482
  function createSvgRegionPreflight(svg, options = {}) {
@@ -643,11 +643,17 @@ function createSvgRegionPreflight(svg, options = {}) {
643
643
  });
644
644
  }
645
645
  /**
646
- * Preflights bounded SVG geometry without browser or Manifold dependencies.
646
+ * Parses and validates bounded SVG input, constructing its normalized sampled region and diagnostics.
647
+ *
648
+ * This pure operation performs curve flattening, fill and stroke construction, and polygon union;
649
+ * it needs no browser or engine. Geometry counts measure the returned region at the selected
650
+ * resolution, rather than predicting later mesh allocation. The region may be empty; tiny-island
651
+ * and short-edge indicators do not establish manufacturability or later solid validity.
647
652
  *
648
653
  * @param svg - Complete SVG XML source, limited to 256 KiB of UTF-8.
649
654
  * @param options - Physical flattening and viewport-origin controls.
650
655
  * @returns The canonical normalized region plus bounded source, topology, and safe-repair facts.
656
+ * @throws {@link GeometryError} When XML, supported-feature, geometry, or complexity checks fail.
651
657
  */
652
658
  export function preflightSvgRegion(svg, options = {}) {
653
659
  return createSvgRegionPreflight(svg, options);
@@ -18,7 +18,7 @@ export function resolveSweepScales(scale, stationCount) {
18
18
  };
19
19
  if (scale === undefined ||
20
20
  typeof scale === "number" ||
21
- (typeof scale === "object" && scale !== null && "toArray" in scale) ||
21
+ (typeof scale === "object" && scale !== null && "toData" in scale) ||
22
22
  (Array.isArray(scale) && typeof scale[0] === "number")) {
23
23
  const value = pair(scale ?? 1);
24
24
  return Array.from({ length: stationCount }, () => value);
@@ -6,6 +6,7 @@ function fail(message) {
6
6
  }
7
7
  /**
8
8
  * Uniformly fits visible text ink inside finite XY bounds, centering it on the target.
9
+ *
9
10
  * Transforms retained vector paths before sampling, so later textSection/sampleTextContours
10
11
  * resolution remains in final millimetres. Logical advances scale without translation;
11
12
  * line count is unchanged. The input layout is preserved.
@@ -2,7 +2,7 @@ import { GeometryError } from "./errors.js";
2
2
  export function readTransformMatrix(input, dimension) {
3
3
  let matrix = input;
4
4
  if (typeof input === "object" && input !== null && !Array.isArray(input)) {
5
- const method = Reflect.get(input, "toMatrix");
5
+ const method = Reflect.get(input, "toData");
6
6
  if (typeof method === "function")
7
7
  matrix = Reflect.apply(method, input, []);
8
8
  }
@@ -89,7 +89,7 @@ const Placement3 = /* @__PURE__ */ immutableMathClass(class Placement3 {
89
89
  applyNormal(normal) {
90
90
  return vector3(applyNormal(this, this.matrix, vector3Data(normal)));
91
91
  }
92
- toMatrix() {
92
+ toData() {
93
93
  return this.matrix;
94
94
  }
95
95
  to2D() {
@@ -101,7 +101,7 @@ const Placement2 = /* @__PURE__ */ immutableMathClass(class Placement2 {
101
101
  matrix;
102
102
  constructor(spatial) {
103
103
  this.spatial = spatial;
104
- this.matrix = restrictTransform3(spatial.toMatrix());
104
+ this.matrix = restrictTransform3(spatial.toData());
105
105
  Object.freeze(this);
106
106
  }
107
107
  translate(offset) {
@@ -124,15 +124,15 @@ const Placement2 = /* @__PURE__ */ immutableMathClass(class Placement2 {
124
124
  return new Placement2(this.spatial.inverse());
125
125
  }
126
126
  applyPoint(point) {
127
- return vector2(xy(applyValidatedTransformPoint3(this.spatial.toMatrix(), xyz(vector2Data(point)))));
127
+ return vector2(xy(applyValidatedTransformPoint3(this.spatial.toData(), xyz(vector2Data(point)))));
128
128
  }
129
129
  applyDirection(direction) {
130
- return vector2(xy(applyValidatedTransformDirection3(this.spatial.toMatrix(), xyz(vector2Data(direction)))));
130
+ return vector2(xy(applyValidatedTransformDirection3(this.spatial.toData(), xyz(vector2Data(direction)))));
131
131
  }
132
132
  applyNormal(normal) {
133
- return vector2(xy(applyNormal(this, this.spatial.toMatrix(), xyz(vector2Data(normal)))));
133
+ return vector2(xy(applyNormal(this, this.spatial.toData(), xyz(vector2Data(normal)))));
134
134
  }
135
- toMatrix() {
135
+ toData() {
136
136
  return this.matrix;
137
137
  }
138
138
  to3D() {
@@ -140,33 +140,42 @@ const Placement2 = /* @__PURE__ */ immutableMathClass(class Placement2 {
140
140
  }
141
141
  });
142
142
  /**
143
- * Creates an immutable XY transform, identity by default. Matrices are copied and validated.
143
+ * Creates an immutable XY transform, identity by default.
144
+ *
145
+ * Values and data are copied and validated.
144
146
  * Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ.
145
147
  * Zero scales and singular matrices throw GeometryError; negative scales reflect.
146
148
  *
149
+ * Use `toData()` for frozen matrix interchange.
150
+ *
147
151
  * @example
148
152
  * ```ts
149
153
  * const placement = transform2().rotate(90).translate([10, 0]);
150
- * placement.applyPoint([1, 0]).toArray(); // approximately [10, 1]
154
+ * placement.applyPoint([1, 0]).toData(); // approximately [10, 1]
151
155
  * ```
152
156
  */
153
- export function transform2(matrix) {
154
- return new Placement2(matrix === undefined
157
+ export function transform2(input) {
158
+ return new Placement2(input === undefined
155
159
  ? new Placement3(IDENTITY_TRANSFORM3)
156
- : new Placement3(embedTransform2(matrix)));
160
+ : new Placement3(embedTransform2(readTransformMatrix(input, 2))));
157
161
  }
158
162
  /**
159
- * Creates an immutable XYZ transform, identity by default. Matrices are copied and validated.
163
+ * Creates an immutable XYZ transform, identity by default.
164
+ *
165
+ * Values and data are copied and validated.
160
166
  * Calls apply in written order; rotations use degrees and pivots use current world coordinates.
161
167
  * Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
162
168
  * Use frameTransform3(frame) as the input for existing orthonormal frame placement.
163
169
  *
170
+ * Use `toData()` for frozen matrix interchange.
171
+ * [composeTransform3](/docs/reference/geometry/composeTransform3) takes matrices in after, before order.
172
+ *
164
173
  * @example
165
174
  * ```ts
166
175
  * const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
167
- * placement.applyPoint([1, 0, 0]).toArray(); // approximately [10, 1, 0]
176
+ * placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
168
177
  * ```
169
178
  */
170
- export function transform3(matrix = IDENTITY_TRANSFORM3) {
171
- return new Placement3(snapshotTransform3(matrix));
179
+ export function transform3(input = IDENTITY_TRANSFORM3) {
180
+ return new Placement3(snapshotTransform3(readTransformMatrix(input, 3)));
172
181
  }
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  /** Immutable modeling recipes and math values; the host owns geometry evaluation. @packageDocumentation */
2
- export { transform2, transform3, } from "./geometry/transform-chain.js";
2
+ export { bounds2, bounds3, } from "./geometry/bounds-value.js";
3
+ export { transform2, transform3, } from "./geometry/transform-value.js";
3
4
  export { vector2, vector3, } from "./geometry/math/vector-value.js";
4
5
  export { path2, path3, } from "./geometry/paths/path-value.js";
5
6
  export * from "./model/operations.js";
@@ -1,7 +1,7 @@
1
1
  import { GeometryError } from "../geometry/errors.js";
2
2
  // One protocol key lets locally bundled operation wrappers resolve the host's execution
3
3
  // without depending on package instances, class identity, or initializing a native runtime.
4
- const executionKey = Symbol.for("@metamesh/modeling/execution/7");
4
+ const executionKey = Symbol.for("@metamesh/modeling/execution/8");
5
5
  const bindings = globalThis;
6
6
  /** Internal host binding. Executable callbacks are synchronous and may not nest executions. */
7
7
  export function bindModelContext(context, build) {
@@ -1,7 +1,7 @@
1
1
  import { createSectionHandle, createSolidHandle } from "./shape-handles.js";
2
2
  // One realm protocol lets bundled authoring code declare recipes before a host is initialized.
3
3
  // The payload contains no native handles and the engine remains responsible for realization.
4
- const recipeKey = Symbol.for("@metamesh/modeling/recipe/7");
4
+ const recipeKey = Symbol.for("@metamesh/modeling/recipe/8");
5
5
  /** Reads private recipe metadata without requiring an execution context. */
6
6
  export const geometryRecipe = (value) => Object.getOwnPropertyDescriptor(value, recipeKey)?.value;
7
7
  /** Recognizes only opaque recipe handles issued by this engine. */
@@ -185,18 +185,10 @@ export function compareGenerationValues(left, right) {
185
185
  return compare(left, right);
186
186
  }
187
187
  function mathValueData(value) {
188
- for (const name of ["toArray", "toMatrix"]) {
189
- const method = Reflect.get(value, name);
190
- if (typeof method === "function") {
191
- const data = Reflect.apply(method, value, []);
192
- // Closure and dimension change path behavior; tuple interchange omits both for empty paths.
193
- const closed = Reflect.get(value, "closed");
194
- return typeof closed === "boolean"
195
- ? { dimension: Reflect.get(value, "dimension"), points: data, closed }
196
- : data;
197
- }
198
- }
199
- throw new TypeError("Immutable math values must expose their canonical numeric data.");
188
+ const method = Reflect.get(value, "toData");
189
+ if (typeof method !== "function")
190
+ throw new TypeError("Immutable math values must expose canonical data through toData().");
191
+ return Reflect.apply(method, value, []);
200
192
  }
201
193
  function captureValue(value, mode, readerAllowed = () => false, validated) {
202
194
  const recipeInputs = mode === "recipe";
@@ -0,0 +1 @@
1
+ export {};