@metamesh/modeling 0.12.0 → 0.14.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 (699) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +103 -72
  3. package/dist/api/engine.d.ts +123 -97
  4. package/dist/api/geometry.d.ts +4232 -3307
  5. package/dist/api/index.d.ts +2758 -2268
  6. package/dist/api/text.d.ts +119 -107
  7. package/dist/docs/guides/concepts.md +300 -0
  8. package/dist/docs/guides/fonts.md +59 -0
  9. package/dist/docs/guides/fundamentals.md +137 -0
  10. package/dist/docs/guides/generation.md +223 -0
  11. package/dist/docs/guides/hosting.md +91 -0
  12. package/dist/docs/guides/recipes.md +718 -0
  13. package/dist/docs/manifest.json +10703 -0
  14. package/dist/docs/reference/engine/Export3mfOptions.md +29 -0
  15. package/dist/docs/reference/engine/ExportMeshPart.md +65 -0
  16. package/dist/docs/reference/engine/GenerationOptions.md +62 -0
  17. package/dist/docs/reference/engine/GeometryResource.md +77 -0
  18. package/dist/docs/reference/engine/ModelDependencies.md +41 -0
  19. package/dist/docs/reference/engine/ModelEngine.md +103 -0
  20. package/dist/docs/reference/engine/ModelEngineOptions.md +33 -0
  21. package/dist/docs/reference/engine/ModelSession.md +96 -0
  22. package/dist/docs/reference/engine/ModelSnapshot.md +173 -0
  23. package/dist/docs/reference/engine/SessionOptions.md +123 -0
  24. package/dist/docs/reference/engine/SnapshotPart.md +130 -0
  25. package/dist/docs/reference/engine/categories/host-lifecycle.md +37 -0
  26. package/dist/docs/reference/engine/createModelEngine.md +56 -0
  27. package/dist/docs/reference/engine/defaultModelingLimits.md +7 -0
  28. package/dist/docs/reference/engine/modelingWasmUrl.md +7 -0
  29. package/dist/docs/reference/engine/validateModel.md +48 -0
  30. package/dist/docs/reference/engine.md +25 -0
  31. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +75 -0
  32. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +92 -0
  33. package/dist/docs/reference/geometry/Anchor3.md +53 -0
  34. package/dist/docs/reference/geometry/ArcCurve2.md +70 -0
  35. package/dist/docs/reference/geometry/ArcCurve3.md +94 -0
  36. package/dist/docs/reference/geometry/AttachTransformOptions.md +62 -0
  37. package/dist/docs/reference/geometry/AxisAngleRotation3.md +66 -0
  38. package/dist/docs/reference/geometry/Bounds2.md +39 -0
  39. package/dist/docs/reference/geometry/Bounds3.md +39 -0
  40. package/dist/docs/reference/geometry/BoundsFit2.md +52 -0
  41. package/dist/docs/reference/geometry/BoundsFit3.md +52 -0
  42. package/dist/docs/reference/geometry/BoundsFitOptions.md +23 -0
  43. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +23 -0
  44. package/dist/docs/reference/geometry/BoxAnchorFace.md +14 -0
  45. package/dist/docs/reference/geometry/BoxAnchorOptions.md +63 -0
  46. package/dist/docs/reference/geometry/BoxEdge.md +7 -0
  47. package/dist/docs/reference/geometry/BoxEdgeSelection.md +14 -0
  48. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +15 -0
  49. package/dist/docs/reference/geometry/BoxOptions.md +87 -0
  50. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +7 -0
  51. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +93 -0
  52. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +29 -0
  53. package/dist/docs/reference/geometry/CircleContourOptions.md +15 -0
  54. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +59 -0
  55. package/dist/docs/reference/geometry/CircularResolutionOptions.md +107 -0
  56. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +41 -0
  57. package/dist/docs/reference/geometry/ClearanceHoleFit.md +7 -0
  58. package/dist/docs/reference/geometry/ClosestPointOnPathOptions.md +34 -0
  59. package/dist/docs/reference/geometry/ClosestPointOnPathResult.md +65 -0
  60. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +53 -0
  61. package/dist/docs/reference/geometry/Contour.md +17 -0
  62. package/dist/docs/reference/geometry/ContourCurve.md +35 -0
  63. package/dist/docs/reference/geometry/ContourPoint.md +29 -0
  64. package/dist/docs/reference/geometry/ContourSegment.md +86 -0
  65. package/dist/docs/reference/geometry/CorrespondingComponent.md +46 -0
  66. package/dist/docs/reference/geometry/CorrespondingContour.md +46 -0
  67. package/dist/docs/reference/geometry/CorrespondingProfile.md +22 -0
  68. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +27 -0
  69. package/dist/docs/reference/geometry/CubicBezierCurve2.md +70 -0
  70. package/dist/docs/reference/geometry/CubicBezierCurve3.md +70 -0
  71. package/dist/docs/reference/geometry/Curve2.md +16 -0
  72. package/dist/docs/reference/geometry/Curve3.md +16 -0
  73. package/dist/docs/reference/geometry/CurveSamplingOptions.md +64 -0
  74. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +73 -0
  75. package/dist/docs/reference/geometry/CylinderAnchorFace.md +14 -0
  76. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +87 -0
  77. package/dist/docs/reference/geometry/CylinderOptions.md +53 -0
  78. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +209 -0
  79. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +7 -0
  80. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +71 -0
  81. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +82 -0
  82. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +34 -0
  83. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +41 -0
  84. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +47 -0
  85. package/dist/docs/reference/geometry/CylindricalGearSpec.md +82 -0
  86. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -0
  87. package/dist/docs/reference/geometry/EdgeTreatment.md +17 -0
  88. package/dist/docs/reference/geometry/EllipseContourOptions.md +15 -0
  89. package/dist/docs/reference/geometry/EndTreatments.md +34 -0
  90. package/dist/docs/reference/geometry/ExtrudeOptions.md +134 -0
  91. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +77 -0
  92. package/dist/docs/reference/geometry/FittedTextLayout.md +60 -0
  93. package/dist/docs/reference/geometry/Frame3.md +58 -0
  94. package/dist/docs/reference/geometry/GeometryError.md +97 -0
  95. package/dist/docs/reference/geometry/GeometryErrorCode.md +7 -0
  96. package/dist/docs/reference/geometry/GeometryErrorContext.md +29 -0
  97. package/dist/docs/reference/geometry/GeometryResolution.md +74 -0
  98. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +62 -0
  99. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +41 -0
  100. package/dist/docs/reference/geometry/GridPatternOptions.md +42 -0
  101. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +14 -0
  102. package/dist/docs/reference/geometry/HeightfieldOptions.md +67 -0
  103. package/dist/docs/reference/geometry/HeightfieldPreflight.md +53 -0
  104. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +141 -0
  105. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +265 -0
  106. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +53 -0
  107. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +18 -0
  108. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +242 -0
  109. package/dist/docs/reference/geometry/LineCurve2.md +46 -0
  110. package/dist/docs/reference/geometry/LineCurve3.md +46 -0
  111. package/dist/docs/reference/geometry/LinearPatternOptions.md +30 -0
  112. package/dist/docs/reference/geometry/LoftCorrespondence.md +19 -0
  113. package/dist/docs/reference/geometry/LoftMeshStation.md +27 -0
  114. package/dist/docs/reference/geometry/LoftOptions.md +84 -0
  115. package/dist/docs/reference/geometry/LoftPlacement.md +66 -0
  116. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +18 -0
  117. package/dist/docs/reference/geometry/MatchProfilesOptions.md +35 -0
  118. package/dist/docs/reference/geometry/MetricFastenerSize.md +7 -0
  119. package/dist/docs/reference/geometry/MetricFastenerStandard.md +72 -0
  120. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +29 -0
  121. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +41 -0
  122. package/dist/docs/reference/geometry/ModelingLimits.md +126 -0
  123. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +17 -0
  124. package/dist/docs/reference/geometry/Path2.md +14 -0
  125. package/dist/docs/reference/geometry/Path3.md +14 -0
  126. package/dist/docs/reference/geometry/PathFrame.md +46 -0
  127. package/dist/docs/reference/geometry/PathNormalGuide.md +38 -0
  128. package/dist/docs/reference/geometry/PathPatternOptions.md +46 -0
  129. package/dist/docs/reference/geometry/PathPlacement.md +34 -0
  130. package/dist/docs/reference/geometry/Pivot2Options.md +26 -0
  131. package/dist/docs/reference/geometry/Pivot3Options.md +26 -0
  132. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +7 -0
  133. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +156 -0
  134. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +120 -0
  135. package/dist/docs/reference/geometry/PlanarPatchQuality.md +190 -0
  136. package/dist/docs/reference/geometry/PolygonData.md +38 -0
  137. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +92 -0
  138. package/dist/docs/reference/geometry/PrimitivePlacement.md +31 -0
  139. package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +83 -0
  140. package/dist/docs/reference/geometry/PrintableThreadFit.md +7 -0
  141. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +45 -0
  142. package/dist/docs/reference/geometry/Profile.md +22 -0
  143. package/dist/docs/reference/geometry/ProfileComponent2.md +46 -0
  144. package/dist/docs/reference/geometry/ProfileContour2.md +34 -0
  145. package/dist/docs/reference/geometry/ProfileSpan2.md +47 -0
  146. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +36 -0
  147. package/dist/docs/reference/geometry/RackPitchDimensions.md +113 -0
  148. package/dist/docs/reference/geometry/RackPitchSpec.md +77 -0
  149. package/dist/docs/reference/geometry/RadialPatternOptions.md +62 -0
  150. package/dist/docs/reference/geometry/RadialSizing.md +7 -0
  151. package/dist/docs/reference/geometry/RadialSizingOptions.md +40 -0
  152. package/dist/docs/reference/geometry/RectangleContourOptions.md +66 -0
  153. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +34 -0
  154. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +14 -0
  155. package/dist/docs/reference/geometry/RectangleProfileOptions.md +94 -0
  156. package/dist/docs/reference/geometry/RegionData.md +14 -0
  157. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +84 -0
  158. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +65 -0
  159. package/dist/docs/reference/geometry/RevolveOptions.md +82 -0
  160. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +91 -0
  161. package/dist/docs/reference/geometry/RowLayoutOptions.md +23 -0
  162. package/dist/docs/reference/geometry/SampleContourOptions.md +71 -0
  163. package/dist/docs/reference/geometry/SampleHelixOptions.md +95 -0
  164. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +71 -0
  165. package/dist/docs/reference/geometry/SampledCurve2.md +34 -0
  166. package/dist/docs/reference/geometry/SampledCurve3.md +34 -0
  167. package/dist/docs/reference/geometry/SampledThreadHelices.md +58 -0
  168. package/dist/docs/reference/geometry/SideProfileCurve.md +35 -0
  169. package/dist/docs/reference/geometry/SideProfilePoint.md +29 -0
  170. package/dist/docs/reference/geometry/SideProfileSegment.md +86 -0
  171. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +71 -0
  172. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +34 -0
  173. package/dist/docs/reference/geometry/SphereOptions.md +15 -0
  174. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +75 -0
  175. package/dist/docs/reference/geometry/StrokePathCap.md +7 -0
  176. package/dist/docs/reference/geometry/StrokePathJoin.md +7 -0
  177. package/dist/docs/reference/geometry/StrokePathRegionOptions.md +85 -0
  178. package/dist/docs/reference/geometry/SvgImportOptions.md +60 -0
  179. package/dist/docs/reference/geometry/SvgRegionPreflight.md +61 -0
  180. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +118 -0
  181. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +65 -0
  182. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +53 -0
  183. package/dist/docs/reference/geometry/SweepOptions.md +109 -0
  184. package/dist/docs/reference/geometry/SweepOrientation.md +109 -0
  185. package/dist/docs/reference/geometry/ThreadBevelOptions.md +53 -0
  186. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +100 -0
  187. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +73 -0
  188. package/dist/docs/reference/geometry/ThreadEndStyle.md +7 -0
  189. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +113 -0
  190. package/dist/docs/reference/geometry/ThreadHandedness.md +7 -0
  191. package/dist/docs/reference/geometry/ThreadHelixOptions.md +120 -0
  192. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +7 -0
  193. package/dist/docs/reference/geometry/ThreadLeadInShape.md +7 -0
  194. package/dist/docs/reference/geometry/ThreadProfile.md +82 -0
  195. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +49 -0
  196. package/dist/docs/reference/geometry/ThreadProfileSpec.md +19 -0
  197. package/dist/docs/reference/geometry/ThreadRole.md +7 -0
  198. package/dist/docs/reference/geometry/ThreadedNutBevel.md +7 -0
  199. package/dist/docs/reference/geometry/ThreadedNutOptions.md +269 -0
  200. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +94 -0
  201. package/dist/docs/reference/geometry/ThreadedNutShape.md +7 -0
  202. package/dist/docs/reference/geometry/ThreadedRodOptions.md +242 -0
  203. package/dist/docs/reference/geometry/TorusOptions.md +105 -0
  204. package/dist/docs/reference/geometry/Transform2-type.md +255 -0
  205. package/dist/docs/reference/geometry/Transform2Input.md +19 -0
  206. package/dist/docs/reference/geometry/Transform2Matrix.md +14 -0
  207. package/dist/docs/reference/geometry/Transform3-type.md +295 -0
  208. package/dist/docs/reference/geometry/Transform3Input.md +19 -0
  209. package/dist/docs/reference/geometry/Transform3Matrix.md +17 -0
  210. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +91 -0
  211. package/dist/docs/reference/geometry/TriangleMesh.md +34 -0
  212. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +119 -0
  213. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +75 -0
  214. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +75 -0
  215. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +39 -0
  216. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +190 -0
  217. package/dist/docs/reference/geometry/TriangleMeshSignature.md +107 -0
  218. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +41 -0
  219. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +29 -0
  220. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +51 -0
  221. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +91 -0
  222. package/dist/docs/reference/geometry/TubeOptions.md +138 -0
  223. package/dist/docs/reference/geometry/Vector2-type.md +269 -0
  224. package/dist/docs/reference/geometry/Vector2Input.md +19 -0
  225. package/dist/docs/reference/geometry/Vector2Tuple.md +14 -0
  226. package/dist/docs/reference/geometry/Vector3-type.md +281 -0
  227. package/dist/docs/reference/geometry/Vector3Input.md +19 -0
  228. package/dist/docs/reference/geometry/Vector3Tuple.md +14 -0
  229. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +53 -0
  230. package/dist/docs/reference/geometry/VectorTextLayout.md +39 -0
  231. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +111 -0
  232. package/dist/docs/reference/geometry/VectorTextMetrics.md +94 -0
  233. package/dist/docs/reference/geometry/VectorTextOptions.md +50 -0
  234. package/dist/docs/reference/geometry/add2.md +36 -0
  235. package/dist/docs/reference/geometry/add3.md +42 -0
  236. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +57 -0
  237. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +52 -0
  238. package/dist/docs/reference/geometry/anchorFrame3.md +40 -0
  239. package/dist/docs/reference/geometry/applyTransformDirection3.md +45 -0
  240. package/dist/docs/reference/geometry/applyTransformPoint3.md +43 -0
  241. package/dist/docs/reference/geometry/attachTransform.md +77 -0
  242. package/dist/docs/reference/geometry/boundsCenter.md +62 -0
  243. package/dist/docs/reference/geometry/boundsFromSize.md +83 -0
  244. package/dist/docs/reference/geometry/boundsSize.md +62 -0
  245. package/dist/docs/reference/geometry/boxAnchor3.md +52 -0
  246. package/dist/docs/reference/geometry/buildHelicalThreadRidgeMesh.md +68 -0
  247. package/dist/docs/reference/geometry/buildHelicalThreadSolidMesh.md +102 -0
  248. package/dist/docs/reference/geometry/categories/bounds-layout.md +35 -0
  249. package/dist/docs/reference/geometry/categories/curves-paths.md +66 -0
  250. package/dist/docs/reference/geometry/categories/mechanical.md +101 -0
  251. package/dist/docs/reference/geometry/categories/meshes.md +73 -0
  252. package/dist/docs/reference/geometry/categories/pattern-placement.md +34 -0
  253. package/dist/docs/reference/geometry/categories/primitive-options.md +36 -0
  254. package/dist/docs/reference/geometry/categories/profiles-regions.md +74 -0
  255. package/dist/docs/reference/geometry/categories/resolution-errors.md +47 -0
  256. package/dist/docs/reference/geometry/categories/transforms-math.md +92 -0
  257. package/dist/docs/reference/geometry/categories/vector-import.md +40 -0
  258. package/dist/docs/reference/geometry/circleContour.md +33 -0
  259. package/dist/docs/reference/geometry/closeToAxis.md +34 -0
  260. package/dist/docs/reference/geometry/closestPointOnPath.md +110 -0
  261. package/dist/docs/reference/geometry/compensateThreadDiameters.md +51 -0
  262. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +42 -0
  263. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +56 -0
  264. package/dist/docs/reference/geometry/composeTransform3.md +44 -0
  265. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +45 -0
  266. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +47 -0
  267. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +31 -0
  268. package/dist/docs/reference/geometry/containsBounds.md +72 -0
  269. package/dist/docs/reference/geometry/contourContainsPoint.md +33 -0
  270. package/dist/docs/reference/geometry/createAnchor3.md +67 -0
  271. package/dist/docs/reference/geometry/createThreadProfile.md +37 -0
  272. package/dist/docs/reference/geometry/createTriangleMeshSignature.md +60 -0
  273. package/dist/docs/reference/geometry/cross2.md +36 -0
  274. package/dist/docs/reference/geometry/cross3.md +42 -0
  275. package/dist/docs/reference/geometry/cumulativePathLengths.md +33 -0
  276. package/dist/docs/reference/geometry/cylinderAnchor3.md +60 -0
  277. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +14 -0
  278. package/dist/docs/reference/geometry/distance2.md +36 -0
  279. package/dist/docs/reference/geometry/distance3.md +36 -0
  280. package/dist/docs/reference/geometry/distributeAlongPath.md +51 -0
  281. package/dist/docs/reference/geometry/dot2.md +36 -0
  282. package/dist/docs/reference/geometry/dot3.md +42 -0
  283. package/dist/docs/reference/geometry/ellipseContour.md +33 -0
  284. package/dist/docs/reference/geometry/eulerTransform3.md +42 -0
  285. package/dist/docs/reference/geometry/extrudeMesh.md +73 -0
  286. package/dist/docs/reference/geometry/fitBounds.md +95 -0
  287. package/dist/docs/reference/geometry/fitTextLayout.md +57 -0
  288. package/dist/docs/reference/geometry/frameTransform3.md +48 -0
  289. package/dist/docs/reference/geometry/getMetricClearanceHole.md +33 -0
  290. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +27 -0
  291. package/dist/docs/reference/geometry/gridPatternTransforms.md +31 -0
  292. package/dist/docs/reference/geometry/heightfieldMesh.md +43 -0
  293. package/dist/docs/reference/geometry/inverseTransform3.md +34 -0
  294. package/dist/docs/reference/geometry/isGeometryError.md +26 -0
  295. package/dist/docs/reference/geometry/joinTriangleMeshes.md +36 -0
  296. package/dist/docs/reference/geometry/layoutRow.md +43 -0
  297. package/dist/docs/reference/geometry/length2.md +30 -0
  298. package/dist/docs/reference/geometry/length3.md +30 -0
  299. package/dist/docs/reference/geometry/lerp2.md +42 -0
  300. package/dist/docs/reference/geometry/lerp3.md +42 -0
  301. package/dist/docs/reference/geometry/linearPatternTransforms.md +31 -0
  302. package/dist/docs/reference/geometry/loftMesh.md +72 -0
  303. package/dist/docs/reference/geometry/matchProfiles.md +51 -0
  304. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +48 -0
  305. package/dist/docs/reference/geometry/measureTriangleMesh.md +55 -0
  306. package/dist/docs/reference/geometry/meshBounds.md +35 -0
  307. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +29 -0
  308. package/dist/docs/reference/geometry/normalize2.md +36 -0
  309. package/dist/docs/reference/geometry/normalize3.md +36 -0
  310. package/dist/docs/reference/geometry/normalizeContour.md +45 -0
  311. package/dist/docs/reference/geometry/normalizePolygon.md +37 -0
  312. package/dist/docs/reference/geometry/normalizeRegion.md +33 -0
  313. package/dist/docs/reference/geometry/optimizePlanarPatches.md +91 -0
  314. package/dist/docs/reference/geometry/pathLength.md +33 -0
  315. package/dist/docs/reference/geometry/pathPatternTransforms.md +57 -0
  316. package/dist/docs/reference/geometry/preflightHeightfield.md +34 -0
  317. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +96 -0
  318. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +85 -0
  319. package/dist/docs/reference/geometry/preflightSvgRegion.md +56 -0
  320. package/dist/docs/reference/geometry/preflightThreadedNut.md +96 -0
  321. package/dist/docs/reference/geometry/preflightThreadedRod.md +85 -0
  322. package/dist/docs/reference/geometry/projectOntoPlane3.md +36 -0
  323. package/dist/docs/reference/geometry/radialPatternTransforms.md +47 -0
  324. package/dist/docs/reference/geometry/rectangleContour.md +49 -0
  325. package/dist/docs/reference/geometry/rectangleProfile.md +53 -0
  326. package/dist/docs/reference/geometry/regionArea.md +34 -0
  327. package/dist/docs/reference/geometry/regionBounds.md +27 -0
  328. package/dist/docs/reference/geometry/regularPolygonContour.md +53 -0
  329. package/dist/docs/reference/geometry/resamplePolyline2.md +64 -0
  330. package/dist/docs/reference/geometry/resamplePolyline3.md +67 -0
  331. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +83 -0
  332. package/dist/docs/reference/geometry/resolveArcSegments.md +67 -0
  333. package/dist/docs/reference/geometry/resolveCircularSegments.md +62 -0
  334. package/dist/docs/reference/geometry/resolveCylindricalGear.md +31 -0
  335. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +31 -0
  336. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +74 -0
  337. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +26 -0
  338. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +59 -0
  339. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +27 -0
  340. package/dist/docs/reference/geometry/resolveRackPitch.md +27 -0
  341. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +59 -0
  342. package/dist/docs/reference/geometry/reverseTriangleMesh.md +30 -0
  343. package/dist/docs/reference/geometry/revolveMesh.md +76 -0
  344. package/dist/docs/reference/geometry/rotate2.md +36 -0
  345. package/dist/docs/reference/geometry/rotationTransform3.md +53 -0
  346. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +50 -0
  347. package/dist/docs/reference/geometry/sampleContour.md +77 -0
  348. package/dist/docs/reference/geometry/sampleCurve2.md +61 -0
  349. package/dist/docs/reference/geometry/sampleCurve3.md +61 -0
  350. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +58 -0
  351. package/dist/docs/reference/geometry/sampleHelix.md +41 -0
  352. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +59 -0
  353. package/dist/docs/reference/geometry/sampleRackToothPath.md +39 -0
  354. package/dist/docs/reference/geometry/sampleSideProfile.md +73 -0
  355. package/dist/docs/reference/geometry/sampleTextContours.md +53 -0
  356. package/dist/docs/reference/geometry/sampleThreadHelices.md +63 -0
  357. package/dist/docs/reference/geometry/scale2.md +36 -0
  358. package/dist/docs/reference/geometry/scale3.md +42 -0
  359. package/dist/docs/reference/geometry/scaleTransform3.md +38 -0
  360. package/dist/docs/reference/geometry/signedContourArea.md +26 -0
  361. package/dist/docs/reference/geometry/starContour.md +51 -0
  362. package/dist/docs/reference/geometry/strokePathRegion.md +63 -0
  363. package/dist/docs/reference/geometry/subtract2.md +36 -0
  364. package/dist/docs/reference/geometry/subtract3.md +42 -0
  365. package/dist/docs/reference/geometry/sweepMesh.md +82 -0
  366. package/dist/docs/reference/geometry/transform2.md +38 -0
  367. package/dist/docs/reference/geometry/transform3.md +38 -0
  368. package/dist/docs/reference/geometry/transformContour.md +42 -0
  369. package/dist/docs/reference/geometry/transformDeterminant3.md +36 -0
  370. package/dist/docs/reference/geometry/transformPath2.md +40 -0
  371. package/dist/docs/reference/geometry/transformPath3.md +33 -0
  372. package/dist/docs/reference/geometry/transformRegionData.md +40 -0
  373. package/dist/docs/reference/geometry/transformTriangleMesh.md +42 -0
  374. package/dist/docs/reference/geometry/translationTransform3.md +35 -0
  375. package/dist/docs/reference/geometry/triangulateContour.md +26 -0
  376. package/dist/docs/reference/geometry/validateSolidMesh.md +52 -0
  377. package/dist/docs/reference/geometry/validateTransform3.md +47 -0
  378. package/dist/docs/reference/geometry/validateTriangleMesh.md +59 -0
  379. package/dist/docs/reference/geometry/vector2.md +31 -0
  380. package/dist/docs/reference/geometry/vector3.md +38 -0
  381. package/dist/docs/reference/geometry.md +30 -0
  382. package/dist/docs/reference/model/Anchor3.md +54 -0
  383. package/dist/docs/reference/model/AttachOptions.md +63 -0
  384. package/dist/docs/reference/model/Bounds2.md +39 -0
  385. package/dist/docs/reference/model/Bounds3.md +39 -0
  386. package/dist/docs/reference/model/BoxEdge.md +15 -0
  387. package/dist/docs/reference/model/BoxEdgeSelection.md +19 -0
  388. package/dist/docs/reference/model/BoxEdgeTreatments.md +20 -0
  389. package/dist/docs/reference/model/BoxOptions.md +92 -0
  390. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +35 -0
  391. package/dist/docs/reference/model/CircleContourOptions.md +21 -0
  392. package/dist/docs/reference/model/CircleOptions.md +21 -0
  393. package/dist/docs/reference/model/CircularPrimitiveOptions.md +64 -0
  394. package/dist/docs/reference/model/Computed.md +35 -0
  395. package/dist/docs/reference/model/ComputedValue.md +20 -0
  396. package/dist/docs/reference/model/Contour.md +22 -0
  397. package/dist/docs/reference/model/CorrespondingComponent.md +46 -0
  398. package/dist/docs/reference/model/CorrespondingContour.md +46 -0
  399. package/dist/docs/reference/model/CorrespondingProfile.md +22 -0
  400. package/dist/docs/reference/model/CorrespondingProfileStation.md +27 -0
  401. package/dist/docs/reference/model/CylinderOptions.md +58 -0
  402. package/dist/docs/reference/model/DiagnosticOptions.md +23 -0
  403. package/dist/docs/reference/model/EdgeTreatment.md +22 -0
  404. package/dist/docs/reference/model/EllipseContourOptions.md +21 -0
  405. package/dist/docs/reference/model/EllipseOptions.md +21 -0
  406. package/dist/docs/reference/model/EndTreatments.md +39 -0
  407. package/dist/docs/reference/model/ExtrudeOptions.md +140 -0
  408. package/dist/docs/reference/model/FinalizedModel.md +121 -0
  409. package/dist/docs/reference/model/FinalizedPart.md +87 -0
  410. package/dist/docs/reference/model/Frame3.md +63 -0
  411. package/dist/docs/reference/model/GenerateCallback.md +37 -0
  412. package/dist/docs/reference/model/GenerateContext.md +277 -0
  413. package/dist/docs/reference/model/GeneratedPart.md +93 -0
  414. package/dist/docs/reference/model/GenerationDiagnostic.md +41 -0
  415. package/dist/docs/reference/model/GenerationError.md +54 -0
  416. package/dist/docs/reference/model/GeometryResolution.md +70 -0
  417. package/dist/docs/reference/model/GeometrySamplingLimits.md +62 -0
  418. package/dist/docs/reference/model/GeometryToleranceOptions.md +46 -0
  419. package/dist/docs/reference/model/GridPatternOptions.md +43 -0
  420. package/dist/docs/reference/model/HeightfieldOptions.md +67 -0
  421. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +140 -0
  422. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +58 -0
  423. package/dist/docs/reference/model/HullOptions.md +72 -0
  424. package/dist/docs/reference/model/ImmutableBuffer-type.md +80 -0
  425. package/dist/docs/reference/model/ImmutableTriangleMesh.md +34 -0
  426. package/dist/docs/reference/model/ImplicitOptions.md +83 -0
  427. package/dist/docs/reference/model/InternalThreadCutterOptions.md +245 -0
  428. package/dist/docs/reference/model/LinearPatternOptions.md +31 -0
  429. package/dist/docs/reference/model/LoftCorrespondence.md +27 -0
  430. package/dist/docs/reference/model/LoftOptions.md +91 -0
  431. package/dist/docs/reference/model/LoftPlacement.md +73 -0
  432. package/dist/docs/reference/model/LoftStation.md +35 -0
  433. package/dist/docs/reference/model/MatchProfilesOptions.md +35 -0
  434. package/dist/docs/reference/model/ModelProgram.md +44 -0
  435. package/dist/docs/reference/model/ModelingLimits.md +126 -0
  436. package/dist/docs/reference/model/NumericArray.md +7 -0
  437. package/dist/docs/reference/model/PartGeometry.md +16 -0
  438. package/dist/docs/reference/model/PartOptions.md +65 -0
  439. package/dist/docs/reference/model/Path2.md +20 -0
  440. package/dist/docs/reference/model/PathNormalGuide.md +45 -0
  441. package/dist/docs/reference/model/PathPatternOptions.md +47 -0
  442. package/dist/docs/reference/model/PatternSource.md +26 -0
  443. package/dist/docs/reference/model/Pivot2Options.md +27 -0
  444. package/dist/docs/reference/model/Pivot3Options.md +27 -0
  445. package/dist/docs/reference/model/PlaneOptions.md +39 -0
  446. package/dist/docs/reference/model/PolygonData.md +43 -0
  447. package/dist/docs/reference/model/PolygonOptions.md +189 -0
  448. package/dist/docs/reference/model/PrimitivePlacement.md +40 -0
  449. package/dist/docs/reference/model/PrimitivePlacementOptions.md +88 -0
  450. package/dist/docs/reference/model/PrintableThreadFit.md +14 -0
  451. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +50 -0
  452. package/dist/docs/reference/model/Profile.md +22 -0
  453. package/dist/docs/reference/model/ProfileComponent2.md +46 -0
  454. package/dist/docs/reference/model/ProfileContour2.md +34 -0
  455. package/dist/docs/reference/model/ProfileSpan2.md +47 -0
  456. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +41 -0
  457. package/dist/docs/reference/model/RadialPatternOptions.md +63 -0
  458. package/dist/docs/reference/model/RadialSizing.md +15 -0
  459. package/dist/docs/reference/model/RadialSizingOptions.md +40 -0
  460. package/dist/docs/reference/model/RectangleContourOptions.md +72 -0
  461. package/dist/docs/reference/model/RectangleCornerTreatment.md +40 -0
  462. package/dist/docs/reference/model/RectangleCornerTreatments.md +20 -0
  463. package/dist/docs/reference/model/RectangleOptions.md +107 -0
  464. package/dist/docs/reference/model/RegionData.md +19 -0
  465. package/dist/docs/reference/model/RegularPolygonOptions.md +53 -0
  466. package/dist/docs/reference/model/RevolveOptions.md +89 -0
  467. package/dist/docs/reference/model/RoundedEdgeTreatment.md +96 -0
  468. package/dist/docs/reference/model/Section.md +490 -0
  469. package/dist/docs/reference/model/SectionHullOptions.md +72 -0
  470. package/dist/docs/reference/model/SectionInspection.md +98 -0
  471. package/dist/docs/reference/model/SectionOffsetJoin.md +16 -0
  472. package/dist/docs/reference/model/SectionOffsetOptions.md +65 -0
  473. package/dist/docs/reference/model/SmoothEdgeTreatment.md +76 -0
  474. package/dist/docs/reference/model/Solid.md +373 -0
  475. package/dist/docs/reference/model/SolidInspection.md +98 -0
  476. package/dist/docs/reference/model/SolidRayHit.md +58 -0
  477. package/dist/docs/reference/model/SphereOptions.md +20 -0
  478. package/dist/docs/reference/model/StarOptions.md +98 -0
  479. package/dist/docs/reference/model/StrokeOptions.md +91 -0
  480. package/dist/docs/reference/model/StrokePathCap.md +16 -0
  481. package/dist/docs/reference/model/StrokePathJoin.md +16 -0
  482. package/dist/docs/reference/model/SvgOrigin.md +16 -0
  483. package/dist/docs/reference/model/SvgPathSectionOptions.md +78 -0
  484. package/dist/docs/reference/model/SvgSectionOptions.md +66 -0
  485. package/dist/docs/reference/model/SweepOptions.md +116 -0
  486. package/dist/docs/reference/model/SweepOrientation.md +116 -0
  487. package/dist/docs/reference/model/TextSectionOptions.md +41 -0
  488. package/dist/docs/reference/model/ThreadEndStyle.md +14 -0
  489. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +117 -0
  490. package/dist/docs/reference/model/ThreadHandedness.md +14 -0
  491. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +14 -0
  492. package/dist/docs/reference/model/ThreadLeadInShape.md +14 -0
  493. package/dist/docs/reference/model/ThreadProfile.md +86 -0
  494. package/dist/docs/reference/model/ThreadRidgeOptions.md +18 -0
  495. package/dist/docs/reference/model/ThreadedNutBevel.md +14 -0
  496. package/dist/docs/reference/model/ThreadedNutOptions.md +273 -0
  497. package/dist/docs/reference/model/ThreadedNutPreflight.md +98 -0
  498. package/dist/docs/reference/model/ThreadedNutShape.md +14 -0
  499. package/dist/docs/reference/model/ThreadedRodOptions.md +245 -0
  500. package/dist/docs/reference/model/TorusOptions.md +110 -0
  501. package/dist/docs/reference/model/Transform2-type.md +256 -0
  502. package/dist/docs/reference/model/Transform2Input.md +20 -0
  503. package/dist/docs/reference/model/Transform2Matrix.md +15 -0
  504. package/dist/docs/reference/model/Transform3-type.md +296 -0
  505. package/dist/docs/reference/model/Transform3Input.md +20 -0
  506. package/dist/docs/reference/model/Transform3Matrix.md +18 -0
  507. package/dist/docs/reference/model/TriangleMesh.md +42 -0
  508. package/dist/docs/reference/model/TriangleMeshAnalysis.md +123 -0
  509. package/dist/docs/reference/model/TriangleMeshMeasurements.md +79 -0
  510. package/dist/docs/reference/model/TubeOptions.md +143 -0
  511. package/dist/docs/reference/model/Vector2-type.md +270 -0
  512. package/dist/docs/reference/model/Vector2Input.md +20 -0
  513. package/dist/docs/reference/model/Vector2Tuple.md +15 -0
  514. package/dist/docs/reference/model/Vector3-type.md +282 -0
  515. package/dist/docs/reference/model/Vector3Input.md +20 -0
  516. package/dist/docs/reference/model/Vector3Tuple.md +15 -0
  517. package/dist/docs/reference/model/VectorTextLayout.md +40 -0
  518. package/dist/docs/reference/model/VectorTextMetrics.md +100 -0
  519. package/dist/docs/reference/model/anchor.md +46 -0
  520. package/dist/docs/reference/model/box.md +62 -0
  521. package/dist/docs/reference/model/categories/boolean-operations.md +37 -0
  522. package/dist/docs/reference/model/categories/bounded-surfaces.md +26 -0
  523. package/dist/docs/reference/model/categories/contracts.md +16 -0
  524. package/dist/docs/reference/model/categories/core-values-errors.md +30 -0
  525. package/dist/docs/reference/model/categories/explicit-profiles.md +32 -0
  526. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +42 -0
  527. package/dist/docs/reference/model/categories/generation.md +44 -0
  528. package/dist/docs/reference/model/categories/inspection.md +23 -0
  529. package/dist/docs/reference/model/categories/mesh-inspection.md +29 -0
  530. package/dist/docs/reference/model/categories/primitives.md +61 -0
  531. package/dist/docs/reference/model/categories/resolution.md +18 -0
  532. package/dist/docs/reference/model/categories/sections.md +62 -0
  533. package/dist/docs/reference/model/categories/threads.md +50 -0
  534. package/dist/docs/reference/model/categories/transforms-placement.md +57 -0
  535. package/dist/docs/reference/model/circle.md +39 -0
  536. package/dist/docs/reference/model/components.md +71 -0
  537. package/dist/docs/reference/model/compose.md +31 -0
  538. package/dist/docs/reference/model/cylinder.md +52 -0
  539. package/dist/docs/reference/model/distance.md +45 -0
  540. package/dist/docs/reference/model/ellipse.md +39 -0
  541. package/dist/docs/reference/model/extrude.md +83 -0
  542. package/dist/docs/reference/model/generate.md +46 -0
  543. package/dist/docs/reference/model/gridPattern.md +80 -0
  544. package/dist/docs/reference/model/heightfield.md +40 -0
  545. package/dist/docs/reference/model/hull.md +74 -0
  546. package/dist/docs/reference/model/immutableBuffer.md +44 -0
  547. package/dist/docs/reference/model/immutableMesh.md +40 -0
  548. package/dist/docs/reference/model/implicit.md +47 -0
  549. package/dist/docs/reference/model/inspectSection.md +38 -0
  550. package/dist/docs/reference/model/inspectSolid.md +38 -0
  551. package/dist/docs/reference/model/internalThreadCutter.md +100 -0
  552. package/dist/docs/reference/model/intersect.md +70 -0
  553. package/dist/docs/reference/model/isEmpty.md +39 -0
  554. package/dist/docs/reference/model/linearPattern.md +80 -0
  555. package/dist/docs/reference/model/loft.md +137 -0
  556. package/dist/docs/reference/model/matchProfiles.md +42 -0
  557. package/dist/docs/reference/model/minkowskiSum.md +37 -0
  558. package/dist/docs/reference/model/pathPattern.md +118 -0
  559. package/dist/docs/reference/model/polygon.md +40 -0
  560. package/dist/docs/reference/model/preflightInternalThreadCutter.md +89 -0
  561. package/dist/docs/reference/model/preflightThreadedNut.md +100 -0
  562. package/dist/docs/reference/model/preflightThreadedRod.md +89 -0
  563. package/dist/docs/reference/model/radialPattern.md +113 -0
  564. package/dist/docs/reference/model/rayCast.md +40 -0
  565. package/dist/docs/reference/model/rectangle.md +59 -0
  566. package/dist/docs/reference/model/regularPolygon.md +39 -0
  567. package/dist/docs/reference/model/revolve.md +74 -0
  568. package/dist/docs/reference/model/solidFromMesh.md +42 -0
  569. package/dist/docs/reference/model/sphere.md +42 -0
  570. package/dist/docs/reference/model/split.md +54 -0
  571. package/dist/docs/reference/model/splitByPlane.md +66 -0
  572. package/dist/docs/reference/model/star.md +63 -0
  573. package/dist/docs/reference/model/stroke.md +74 -0
  574. package/dist/docs/reference/model/svgPathSection.md +65 -0
  575. package/dist/docs/reference/model/svgSection.md +64 -0
  576. package/dist/docs/reference/model/sweep.md +92 -0
  577. package/dist/docs/reference/model/textSection.md +57 -0
  578. package/dist/docs/reference/model/threadRidge.md +72 -0
  579. package/dist/docs/reference/model/threadedNut.md +110 -0
  580. package/dist/docs/reference/model/threadedRod.md +99 -0
  581. package/dist/docs/reference/model/toTriangleMesh.md +27 -0
  582. package/dist/docs/reference/model/torus.md +70 -0
  583. package/dist/docs/reference/model/transform2.md +39 -0
  584. package/dist/docs/reference/model/transform3.md +39 -0
  585. package/dist/docs/reference/model/tube.md +77 -0
  586. package/dist/docs/reference/model/union.md +72 -0
  587. package/dist/docs/reference/model/vector2.md +32 -0
  588. package/dist/docs/reference/model/vector3.md +39 -0
  589. package/dist/docs/reference/model.md +39 -0
  590. package/dist/docs/reference/text/Bounds2.md +34 -0
  591. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -0
  592. package/dist/docs/reference/text/Vector2Tuple.md +7 -0
  593. package/dist/docs/reference/text/VectorFont.md +186 -0
  594. package/dist/docs/reference/text/VectorFontOptions.md +17 -0
  595. package/dist/docs/reference/text/VectorTextArcBaseline.md +53 -0
  596. package/dist/docs/reference/text/VectorTextLayout.md +34 -0
  597. package/dist/docs/reference/text/VectorTextLayoutOptions.md +111 -0
  598. package/dist/docs/reference/text/VectorTextMetrics.md +94 -0
  599. package/dist/docs/reference/text/VectorTextOptions.md +50 -0
  600. package/dist/docs/reference/text/categories/font-preparation.md +38 -0
  601. package/dist/docs/reference/text/prepareVectorFont.md +46 -0
  602. package/dist/docs/reference/text.md +21 -0
  603. package/dist/engine/construction-operations.js +10 -3
  604. package/dist/engine/deferred-context.js +11 -172
  605. package/dist/engine/execution.js +1 -1
  606. package/dist/engine/export-3mf.js +2 -2
  607. package/dist/engine/finalization.js +3 -3
  608. package/dist/engine/loft-operations.js +4 -4
  609. package/dist/engine/native/adapter.js +1 -1
  610. package/dist/engine/native/regions.js +9 -9
  611. package/dist/engine/native/transforms.js +6 -1
  612. package/dist/engine/pattern-operations.js +24 -13
  613. package/dist/engine/placement.js +2 -2
  614. package/dist/engine/primitive-operations.js +10 -10
  615. package/dist/engine/primitive-profiles.js +1 -0
  616. package/dist/engine/profile-mesh.js +7 -7
  617. package/dist/engine/recipe-realization.js +29 -21
  618. package/dist/engine/section-operations.js +44 -17
  619. package/dist/engine/session-graph.js +6 -4
  620. package/dist/engine/session-native.js +1 -1
  621. package/dist/engine/session-snapshot.js +3 -2
  622. package/dist/engine/session.js +4 -5
  623. package/dist/engine/shape-anchors.js +3 -9
  624. package/dist/engine/transform-operations.js +42 -25
  625. package/dist/geometry/bounds.js +117 -0
  626. package/dist/geometry/cylinder.js +5 -1
  627. package/dist/geometry/edge-finishing.js +2 -2
  628. package/dist/geometry/heightfield.js +1 -1
  629. package/dist/geometry/index.js +20 -13
  630. package/dist/geometry/{loft-correspondence.js → loft/loft-correspondence.js} +3 -3
  631. package/dist/geometry/{loft-geometry.js → loft/loft-geometry.js} +8 -8
  632. package/dist/geometry/{loft-options.js → loft/loft-options.js} +2 -2
  633. package/dist/geometry/{loft-simple-mesh.js → loft/loft-simple-mesh.js} +6 -6
  634. package/dist/geometry/{loft-triangulation.js → loft/loft-triangulation.js} +6 -6
  635. package/dist/geometry/{loft.js → loft/loft.js} +8 -8
  636. package/dist/geometry/math/immutable-value.js +20 -0
  637. package/dist/geometry/math/vector-value.js +168 -0
  638. package/dist/geometry/math/vector2.js +80 -0
  639. package/dist/geometry/math/vector3.js +42 -8
  640. package/dist/geometry/mechanical/gear-motion.js +7 -4
  641. package/dist/geometry/mechanical/gears.js +2 -2
  642. package/dist/geometry/mechanical/thread-mesh.js +3 -3
  643. package/dist/geometry/mechanical/thread-profiles.js +2 -2
  644. package/dist/geometry/mechanical/thread-surface.js +14 -5
  645. package/dist/geometry/{mesh-centroid.js → mesh/mesh-centroid.js} +1 -1
  646. package/dist/geometry/{mesh-planar.js → mesh/mesh-planar.js} +1 -1
  647. package/dist/geometry/{mesh-quality.js → mesh/mesh-quality.js} +2 -2
  648. package/dist/geometry/{mesh-signature.js → mesh/mesh-signature.js} +2 -2
  649. package/dist/geometry/{mesh-solid-intersections.js → mesh/mesh-solid-intersections.js} +5 -1
  650. package/dist/geometry/{mesh-solid.js → mesh/mesh-solid.js} +2 -2
  651. package/dist/geometry/{mesh.js → mesh/mesh.js} +7 -8
  652. package/dist/geometry/paths/closest-point.js +74 -0
  653. package/dist/geometry/paths/frames.js +7 -8
  654. package/dist/geometry/patterns/options.js +1 -0
  655. package/dist/{engine/pattern-placements.js → geometry/patterns/placements.js} +22 -8
  656. package/dist/geometry/patterns.js +25 -0
  657. package/dist/geometry/primitive-resolution.js +4 -1
  658. package/dist/geometry/primitive-resolvers.js +9 -9
  659. package/dist/geometry/profiles/contour.js +3 -3
  660. package/dist/geometry/profiles/matched.js +3 -3
  661. package/dist/geometry/profiles/profiles.js +10 -10
  662. package/dist/geometry/profiles/rectangle.js +7 -7
  663. package/dist/geometry/profiles/shapes.js +9 -9
  664. package/dist/geometry/profiles/side-profile.js +37 -0
  665. package/dist/geometry/regions.js +15 -15
  666. package/dist/geometry/resolution.js +17 -5
  667. package/dist/geometry/revolve/revolve-mesh.js +5 -5
  668. package/dist/geometry/stroke-path.js +50 -46
  669. package/dist/geometry/svg/errors.js +0 -3
  670. package/dist/geometry/svg/fill.js +7 -7
  671. package/dist/geometry/svg/index.js +1 -1
  672. package/dist/geometry/svg/matrix.js +0 -114
  673. package/dist/geometry/svg/parser.js +1 -439
  674. package/dist/geometry/svg-import.js +3 -3
  675. package/dist/geometry/sweeps/stations.js +4 -4
  676. package/dist/geometry/sweeps/sweep-closed.js +4 -4
  677. package/dist/geometry/sweeps/sweep-mesh.js +1 -1
  678. package/dist/geometry/sweeps/sweep-open.js +6 -6
  679. package/dist/geometry/sweeps/validation.js +2 -2
  680. package/dist/geometry/text-fitting.js +85 -0
  681. package/dist/geometry/tolerance.js +2 -2
  682. package/dist/geometry/transform-chain.js +172 -0
  683. package/dist/geometry/transform-geometry.js +31 -27
  684. package/dist/geometry/transform-matrix.js +14 -0
  685. package/dist/geometry/transform2.js +60 -0
  686. package/dist/geometry/transform3.js +70 -26
  687. package/dist/index.js +3 -0
  688. package/dist/model/execution-binding.js +10 -5
  689. package/dist/model/generation.js +1 -1
  690. package/dist/model/geometry-recipes.js +15 -0
  691. package/dist/{engine → model}/immutable-generation-data.js +25 -3
  692. package/dist/model/operation-contracts.js +1 -0
  693. package/dist/model/operation-dispatch.js +13 -0
  694. package/dist/model/operations.js +40 -59
  695. package/dist/model/recipe-declaration.js +193 -0
  696. package/dist/model/shape-handles.js +15 -4
  697. package/package.json +10 -8
  698. package/dist/engine/geometry-recipes.js +0 -12
  699. /package/dist/geometry/{mesh-edge-table.js → mesh/mesh-edge-table.js} +0 -0
@@ -0,0 +1,73 @@
1
+ # Triangle meshes and surfaces
2
+
3
+ Build, transform, validate, analyze, and locally optimize copied indexed meshes.
4
+
5
+ Manufacturing meshes use Float32 XYZ positions and Uint32 triangle indices. Closed oriented edge validation does not establish absence of self-intersections. Analysis freshly inspects caller-owned arrays. Signatures add quantized topology and a regression hash. Predictable mesh constructors reject unsafe allocations before sampling. extrudeMesh, loftMesh, sweepMesh and revolveMesh construct TriangleMesh data without a host engine. loftMesh requires a selected direct, reindex, fast-distance or distance correspondence method; LoftOptions, SweepOptions and ExtrudeOptions share the filled modeling vocabulary. Loft stations specify exactly one z or frame, retain original vertices, and interpolate slices in world coordinates. Aggregate association and grid work is bounded without fidelity reduction. validateSolidMesh adds bounded floating-point intersection and nested-shell orientation checks, including legitimate cavity boundaries; contacts within tolerance reject conservatively and work exhaustion fails explicitly. computeTriangleMeshCentroid measures the uniform-density volume centroid of consistently oriented closed geometry, including cavities.
6
+
7
+ ## Functions
8
+
9
+ | API | Summary |
10
+ | --- | --- |
11
+ | [analyzeTriangleMesh](../analyzeTriangleMesh.md) | Validates and measures a mesh in one position and one triangle traversal. |
12
+ | [analyzeTriangleMeshQuality](../analyzeTriangleMeshQuality.md) | Measures triangle shape, edge topology, vertex concentration, and connected planar patches. |
13
+ | [heightfieldMesh](../heightfieldMesh.md) | Builds a closed indexed mesh from a rectilinear top, matched boundary walls, and flat base. Heights run once per grid point after preflight; center-error adds one evaluation per cell. Top winding is +Z, the base is -Z, and sides face outward. Coordinates and heights must fit Float32 storage. Explicit axes are captured before sampling; shared wall vertices prevent cracks. |
14
+ | [createTriangleMeshSignature](../createTriangleMeshSignature.md) | Creates an order-independent regression signature for a manufacturing mesh. |
15
+ | [joinTriangleMeshes](../joinTriangleMeshes.md) | Concatenates meshes into one indexed mesh without welding coincident vertices. |
16
+ | [extrudeMesh](../extrudeMesh.md) | Linearly extrudes one simple profile along +Z with robust ear-clipped caps. |
17
+ | [loftMesh](../loftMesh.md) | Lofts simple point loops at z heights or explicit right-handed frames, in input order. |
18
+ | [measureTriangleMesh](../measureTriangleMesh.md) | Measures bounds, surface area, and signed volume without changing the mesh. |
19
+ | [preflightHeightfield](../preflightHeightfield.md) | Checks grid dimensions, coordinate precision, and allocation bounds before evaluating heights. |
20
+ | [reverseTriangleMesh](../reverseTriangleMesh.md) | Returns a copy of a mesh with every triangle winding reversed. |
21
+ | [sweepMesh](../sweepMesh.md) | Sweeps one explicitly ordered point loop, with caps or a geometrically matching closed seam. |
22
+ | [transformTriangleMesh](../transformTriangleMesh.md) | Applies an affine transform to a mesh and preserves outward face orientation. |
23
+ | [validateTriangleMesh](../validateTriangleMesh.md) | Validates mesh buffers, indices, triangle area, and optionally closed topology. |
24
+ | [optimizePlanarPatches](../optimizePlanarPatches.md) | Improves pathological planar triangulation with bounded legal diagonal flips. |
25
+ | [resolveExtrusionDivisions](../resolveExtrusionDivisions.md) | Resolves intermediate profile copies for linear extrusion from physical curve resolution. |
26
+ | [validateSolidMesh](../validateSolidMesh.md) | Checks closed indexed topology, triangle intersections, and alternating nested shell orientation. Outward exterior shells and inward cavity shells are accepted. Separate shells must not touch, intersect, or overlap as material. Indexed neighbours may share their own vertex or edge. |
27
+ | [computeTriangleMeshCentroid](../computeTriangleMeshCentroid.md) | Computes the uniform-density volume centroid of an oriented closed solid, including cavity shells. Coordinates are millimetres. Indexed closure and positive aggregate volume are required; callers may use validateSolidMesh first when geometric intersections and shell orientation are untrusted. Fresh mutable input is inspected on every call, and buffers are never changed. |
28
+
29
+ ## Interfaces
30
+
31
+ | API | Summary |
32
+ | --- | --- |
33
+ | [HeightfieldPreflight](../HeightfieldPreflight.md) | Predictable rectilinear-grid allocation facts; this does not evaluate the height callback. |
34
+ | [PlanarMeshOptimizationOptions](../PlanarMeshOptimizationOptions.md) | Options controlling bounded, connectivity-only optimization of planar triangle patches. |
35
+ | [PlanarMeshOptimizationResult](../PlanarMeshOptimizationResult.md) | Outcome of bounded planar-patch optimization, including before/after diagnostics. |
36
+ | [RevolveOptions](../RevolveOptions.md) | Circumferential sampling and degree sweep shared by pure and filled revolution. |
37
+ | [SweepOptions](../SweepOptions.md) | Controls shared by pure mesh construction and filled modeling sweeps. |
38
+ | [TriangleMesh](../TriangleMesh.md) | A topology-preserving indexed triangle mesh with XYZ vertex positions. |
39
+ | [TriangleMeshAnalysis](../TriangleMeshAnalysis.md) | Measurements and optional edge-connected topology from one validated mesh traversal. |
40
+ | [TriangleMeshAnalysisOptions](../TriangleMeshAnalysisOptions.md) | Validation and optional connectivity controls for a shared mesh analysis. |
41
+ | [TriangleMeshMeasurements](../TriangleMeshMeasurements.md) | Geometric measurements derived from a validated, non-empty triangle mesh. |
42
+ | [TriangleMeshQualityOptions](../TriangleMeshQualityOptions.md) | Options controlling bounded triangle-mesh quality analysis. |
43
+ | [TriangleMeshQualityReport](../TriangleMeshQualityReport.md) | Structural, topological, and planar-patch measurements for one indexed triangle mesh. |
44
+ | [TriangleMeshSignature](../TriangleMeshSignature.md) | Immutable deterministic measurements for a closed, oriented triangle mesh. |
45
+ | [TriangleMeshSignatureOptions](../TriangleMeshSignatureOptions.md) | Options controlling deterministic triangle-mesh regression signatures. |
46
+ | [TriangleMeshSignatureTolerances](../TriangleMeshSignatureTolerances.md) | Absolute tolerances recorded in a triangle-mesh regression signature. |
47
+ | [TriangleMeshValidationOptions](../TriangleMeshValidationOptions.md) | Options controlling structural and manufacturing validation of a mesh. |
48
+ | [ExtrudeOptions](../ExtrudeOptions.md) | Dimensions and sampling shared by native and pure +Z extrusion. |
49
+ | [ExtrusionSamplingOptions](../ExtrusionSamplingOptions.md) | Shared sampling controls for a twisted or scaled linear extrusion. |
50
+ | [LoftOptions](../LoftOptions.md) | Shared controls for native and pure lofts. Point data and arbitrary Sections require explicit correspondence. |
51
+ | [PlanarPatchQuality](../PlanarPatchQuality.md) | Quality measurements for one edge-connected coplanar triangle patch. |
52
+ | [SolidMeshValidationOptions](../SolidMeshValidationOptions.md) | Bounded floating-point intersection and shell-orientation validation settings. |
53
+
54
+ ## Type aliases
55
+
56
+ | API | Summary |
57
+ | --- | --- |
58
+ | [HeightfieldMeshLimits](../HeightfieldMeshLimits.md) | Trusted output ceilings for pure construction; omitted fields use engine defaults. |
59
+ | [HeightfieldOptions](../HeightfieldOptions.md) | A closed rectilinear heightfield above a flat base, with uniform or explicit XY samples in millimetres. |
60
+ | [LoftMeshStation](../LoftMeshStation.md) | One point-data profile at a height or explicit right-handed spatial frame. |
61
+ | [PlanarMeshOptimizationFallbackReason](../PlanarMeshOptimizationFallbackReason.md) | Stable reason why planar optimization returned the original mesh unchanged. |
62
+ | [SweepOrientation](../SweepOrientation.md) | Explicit profile-X frame policy; all normals are directed, and selected singular policies reject. |
63
+ | [LoftCorrespondence](../LoftCorrespondence.md) | Associates ordered loft contours without inferring component identities or repairing topology. |
64
+ | [LoftPlacement](../LoftPlacement.md) | A horizontal XY station height, or an explicit right-handed spatial frame, never both. |
65
+
66
+ ## Values
67
+
68
+ | API | Summary |
69
+ | --- | --- |
70
+ | [meshBounds](../meshBounds.md) | Computes axis-aligned bounds for a non-empty mesh. |
71
+ | [revolveMesh](../revolveMesh.md) | Revolves a non-duplicated closed `[radius, z]` profile around +Z. |
72
+
73
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,34 @@
1
+ # Pattern Placement
2
+
3
+ Calculate pure linear, radial, grid, and path transforms.
4
+
5
+ Pure pattern transforms use the same counts, spacing, centering and frames as root pattern operations. Transform3Matrix values can place points, meshes or explicit geometry without a native engine. Linear and grid spacing use millimetres; radial angles use degrees. Paths use physical arc-length intervals and omit the seam when closed.
6
+
7
+ ## Functions
8
+
9
+ | API | Summary |
10
+ | --- | --- |
11
+ | [linearPatternTransforms](../linearPatternTransforms.md) | Equal linear placements in millimetres, including the original at the origin. |
12
+ | [radialPatternTransforms](../radialPatternTransforms.md) | Rotations about an explicit axis; angles use degrees and the first placement is identity. |
13
+ | [gridPatternTransforms](../gridPatternTransforms.md) | XY or XYZ grid placements in millimetres, in X-fastest order. |
14
+ | [pathPatternTransforms](../pathPatternTransforms.md) | Equal physical arc-length placements along a sampled XYZ path. Tangent orientation maps +Z onto the local path tangent; fixed orientation only translates. Closed paths omit a repeated seam. Explicit sampling ceilings bound both input points and output placements. |
15
+
16
+ ## Interfaces
17
+
18
+ | API | Summary |
19
+ | --- | --- |
20
+ | [RadialPatternOptions](../RadialPatternOptions.md) | Options for repeating one solid around an axis through a center point. |
21
+ | [PathPatternOptions](../PathPatternOptions.md) | Equal physical arc-length placements along an open or implicitly closed sampled path. |
22
+
23
+ ## Type aliases
24
+
25
+ | API | Summary |
26
+ | --- | --- |
27
+ | [LinearPatternOptions](../LinearPatternOptions.md) | Equal linear intervals determined by exactly two of count, spacing and total length. |
28
+ | [GridPatternOptions](../GridPatternOptions.md) | XY or XYZ grid with X varying fastest. The first item starts at the local origin. |
29
+
30
+ ## Guides
31
+
32
+ - [Primitive booleans and repeated placement](../../../guides/recipes.md#primitive-booleans-and-repeated-placement)
33
+
34
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,36 @@
1
+ # Primitive options
2
+
3
+ Share one option contract for dimensional primitives and edge treatments.
4
+
5
+ Dimensional shapes share object options, millimetre units and explicit placement. Boxes use scalar or XYZ size; cylinders use scalar or bottom/top radii and independent end treatments. Circular shapes share exact segments, physical resolution and vertex/face radial sizing where applicable. EdgeTreatment distinguishes circular radius from equal or unequal setbacks, smooth cubic transitions and exact custom setback profiles. PrimitivePlacementOptions maps a local anchor to a target with alignment, gap and degree spin.
6
+
7
+ ## Interfaces
8
+
9
+ | API | Summary |
10
+ | --- | --- |
11
+ | [BoxOptions](../BoxOptions.md) | Dimensions, placement, and uniform or independently selected finishing for an axis-aligned box. |
12
+ | [ChamferedEdgeTreatment](../ChamferedEdgeTreatment.md) | A planar edge or corner chamfer with equal or independent surface setbacks. |
13
+ | [CircularPrimitiveOptions](../CircularPrimitiveOptions.md) | Tessellation controls shared by circular primitives across Geometry entry points. |
14
+ | [RoundedEdgeTreatment](../RoundedEdgeTreatment.md) | A circular edge or corner roundover with explicit physical sampling. |
15
+ | [TorusOptions](../TorusOptions.md) | Dimensions and independent ring/profile tessellation for a torus around the Z axis. |
16
+ | [TubeOptions](../TubeOptions.md) | Dimensions, placement, and tessellation for a hollow Z-axis tube. |
17
+ | [EndTreatments](../EndTreatments.md) | Independent inward finishing on primitive or straight convex extrusion ends. Zero amounts leave the end untreated, including when all ends are disabled. |
18
+ | [PrimitivePlacement](../PrimitivePlacement.md) | Placement shared by solid and filled-section factories. |
19
+ | [PrimitivePlacementOptions](../PrimitivePlacementOptions.md) | Maps an explicit or named shape-local attachment anchor onto a world-space anchor. |
20
+ | [RadialSizingOptions](../RadialSizingOptions.md) | Nominal radial sizing shared by circular and regular polygon construction. |
21
+ | [SmoothEdgeTreatment](../SmoothEdgeTreatment.md) | A cubic corner transition with zero curvature at its straight tangent joins. |
22
+ | [ProfiledEdgeTreatment](../ProfiledEdgeTreatment.md) | A deliberately sampled, inward-only corner profile with exact polyline geometry. |
23
+
24
+ ## Type aliases
25
+
26
+ | API | Summary |
27
+ | --- | --- |
28
+ | [EdgeTreatment](../EdgeTreatment.md) | Uniform finishing vocabulary shared by applicable solid edges and profile corners. |
29
+ | [CylinderOptions](../CylinderOptions.md) | Dimensions, placement, independent end finishing, and tessellation for a Z-axis cylinder or frustum. |
30
+ | [SphereOptions](../SphereOptions.md) | Exactly one radius or diameter, placement, and tessellation for an origin-centered sphere. |
31
+ | [RadialSizing](../RadialSizing.md) | Radial dimensions refer to polygon vertices or compensate faceting to meet polygon faces. |
32
+ | [BoxEdge](../BoxEdge.md) | Box edges use +Z top, +Y front and +X right; vertical names list front/back first. |
33
+ | [BoxEdgeSelection](../BoxEdgeSelection.md) | Named individual edges or top/bottom rims and all four vertical edges. |
34
+ | [BoxEdgeTreatments](../BoxEdgeTreatments.md) | Independent treatments for disjoint named edge selections; overlapping selections fail. |
35
+
36
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,74 @@
1
+ # Profiles and regions
2
+
3
+ Define winding, holes, stable profile landmarks, and reusable planar boundaries.
4
+
5
+ Outer contours are counterclockwise and holes clockwise in Y-up coordinates, with implicit closing edges. The Loop factories return point data; regularPolygonContour uses degree rotation and explicit vertex/face sizing. transformContour and transformRegionData accept Transform2 placements or canonical Transform2Matrix data and retain reflection-safe winding. Use Section.transform for ordinary filled-shape authoring; transformRegionData serves serialized data preparation. `rectangleProfile({ size, treatment, id })` returns identified spans for family matching, not sampled points. Profile families preserve component, contour and span identities; matchProfiles returns CorrespondingProfile values with stable shared landmarks. No automatic topology guessing or reordering occurs. closeToAxis closes an open upward radius/height outline into a solid-body contour; hollow walls and bores require explicit material contours.
6
+
7
+ ## Functions
8
+
9
+ | API | Summary |
10
+ | --- | --- |
11
+ | [ellipseContour](../ellipseContour.md) | Creates an immutable centered CCW ellipse with +X seam within the selected sampling ceiling. |
12
+ | [contourContainsPoint](../contourContainsPoint.md) | Returns true when a point lies inside or on the boundary of a loop. |
13
+ | [matchProfiles](../matchProfiles.md) | Explicitly matches identified component/contour/span topology across a family. Every paired span uses the maximum physical subdivision count requested by any member. Cubics share a checked uniform parameter grid, including grids selected by exact paired requests. Input order and winding are preserved. Collapsed spans retain repeated logical slots, which the engine maps to shared physical vertices while omitting degenerate faces. |
14
+ | [normalizeContour](../normalizeContour.md) | Cleans and validates one closed loop. |
15
+ | [normalizePolygon](../normalizePolygon.md) | Validates explicit polygon topology and normalizes its winding. |
16
+ | [normalizeRegion](../normalizeRegion.md) | Validates a disjoint explicit region and returns immutable normalized data. Previously validated immutable results may be returned unchanged under the same tolerance policy. |
17
+ | [rectangleContour](../rectangleContour.md) | Creates an immutable CCW rectangle loop. Round radius zero is square; tangent saturated endpoints occur once. |
18
+ | [regionArea](../regionArea.md) | Returns the total filled area of a normalized region in square millimetres. |
19
+ | [regionBounds](../regionBounds.md) | Returns finite axis-aligned bounds for a non-empty region. |
20
+ | [rectangleProfile](../rectangleProfile.md) | Creates an identified rectangle whose edge/corner spans survive zero and saturated round radii. Outer winding is CCW. |
21
+ | [sampleSideProfile](../sampleSideProfile.md) | Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline. Anchors must progress strictly upward; nonnegative-radius cubic controls must have ordered heights between their endpoints. Cubics use de Casteljau subdivision with a conservative control-hull chord-error bound. Lines also obey the optional physical edge-length ceiling. Neither normalized coordinates nor editor metadata are required. Endpoints are retained once; no axis closure, winding normalization, or manufacturing repair is performed. |
22
+ | [sampleContour](../sampleContour.md) | Samples 2–32 connected line/cubic segments into a simple, nonzero-area, immutable CCW XY loop. Physical scaling precedes adaptive curve sampling; the final end must repeat start exactly. Shared anchors and the closing seam are emitted once. Winding normalization may change the starting vertex. The sampled loop is checked for self-intersection and degeneracy by `normalizeContour`; this is a single contour without holes. No editor modes or normalized coordinate range are required. No native engine, SDK, or ambient resolution is used. |
23
+ | [signedContourArea](../signedContourArea.md) | Returns the signed area of a non-duplicated loop; positive means CCW. |
24
+ | [transformContour](../transformContour.md) | Applies a canonical affine XY transform to a closed loop and preserves its original winding. |
25
+ | [transformRegionData](../transformRegionData.md) | Transforms serialized polygon data with reflection-safe winding, without an engine. Use Section.transform(placement) when authoring filled geometry; this utility serves pure data preparation. |
26
+ | [triangulateContour](../triangulateContour.md) | Ear-clips one normalized simple CCW loop into stable local vertex indices. |
27
+ | [closeToAxis](../closeToAxis.md) | Closes an open, strictly upward [radius, height] side outline to the radius-zero axis. Adds horizontal bottom/top edges at the endpoint heights, retaining axis endpoints once. Returns a counterclockwise filled-boundary contour without a repeated seam vertex. Radii must be nonnegative; the result must enclose nonzero area without touching itself. This is a solid-body closure, not a hollow-wall or mounting-bore construction. |
28
+
29
+ ## Interfaces
30
+
31
+ | API | Summary |
32
+ | --- | --- |
33
+ | [CorrespondingProfile](../CorrespondingProfile.md) | Shared logical contour sampling suitable for a loft or hollow sweep. |
34
+ | [MatchProfilesOptions](../MatchProfilesOptions.md) | Explicit family sampling settings; omitted values use physical package defaults. |
35
+ | [SideProfileCurve](../SideProfileCurve.md) | An open radius/height outline; consumers own closure, mounting geometry, and wall policy. |
36
+ | [ContourCurve](../ContourCurve.md) | One explicitly closed planar contour, independent of editor metadata and parameter contracts. |
37
+ | [ContourPoint](../ContourPoint.md) | Planar X and upward Y in millimetres, or in units converted by sampling scales. |
38
+ | [SideProfilePoint](../SideProfilePoint.md) | Radius and upward height in millimetres, or in units converted by sampling scales. |
39
+ | [PolygonData](../PolygonData.md) | One bounded two-dimensional polygon. |
40
+ | [Profile](../Profile.md) | An explicit component/contour/span topology, before shared family sampling. |
41
+ | [ProfileComponent2](../ProfileComponent2.md) | One component and its explicitly identified holes. |
42
+ | [ProfileContour2](../ProfileContour2.md) | Ordered, closed spans. Outer winding is CCW and hole winding is CW. |
43
+ | [RectangleContourOptions](../RectangleContourOptions.md) | Shared rectangle dimensions, origin and uniform or per-corner treatment. |
44
+ | [RectangleProfileOptions](../RectangleProfileOptions.md) | Shared rectangle options with an identified component for explicit profile families. |
45
+ | [SampleSideProfileOptions](../SampleSideProfileOptions.md) | Physical scaling and bounded adaptive subdivision for an open profile. |
46
+ | [SampleContourOptions](../SampleContourOptions.md) | Physical scaling, subdivision policy, and output ceilings for one closed contour. |
47
+ | [CorrespondingComponent](../CorrespondingComponent.md) | One sampled component retaining contour identities and logical point correspondence. |
48
+ | [CorrespondingContour](../CorrespondingContour.md) | A sampled contour retaining logical slots, including intentionally collapsed spans. |
49
+ | [RegularPolygonContourOptions](../RegularPolygonContourOptions.md) | Exact regular polygon dimensions and counterclockwise degree rotation. |
50
+
51
+ ## Type aliases
52
+
53
+ | API | Summary |
54
+ | --- | --- |
55
+ | [CircleContourOptions](../CircleContourOptions.md) | Circular profile dimensions with exactly one radius or diameter and explicit sampling. |
56
+ | [EllipseContourOptions](../EllipseContourOptions.md) | Ellipse dimensions with exactly one XY radii or full-size tuple and explicit sampling. |
57
+ | [Contour](../Contour.md) | A closed two-dimensional boundary whose first point is not repeated at the end. |
58
+ | [CorrespondingProfileStation](../CorrespondingProfileStation.md) | One already matched profile at an explicit height or right-handed spatial frame. |
59
+ | [ContourSegment](../ContourSegment.md) | Straight or cubic Bézier segment in one closed planar contour. |
60
+ | [SideProfileSegment](../SideProfileSegment.md) | One straight or cubic segment of an open, upward-progressing radius/height outline. |
61
+ | [ProfileSpan2](../ProfileSpan2.md) | An identified line, circular arc, or cubic Bézier between corresponding landmarks. |
62
+ | [RegionData](../RegionData.md) | A two-dimensional region represented by disjoint filled polygons. |
63
+ | [RectangleCornerTreatment](../RectangleCornerTreatment.md) | A rectangle corner, including an explicitly untreated corner in a treatment tuple. |
64
+ | [RectangleCornerTreatments](../RectangleCornerTreatments.md) | Corner treatments ordered top-right, top-left, bottom-left, bottom-right. |
65
+
66
+ ## Values
67
+
68
+ | API | Summary |
69
+ | --- | --- |
70
+ | [circleContour](../circleContour.md) | Creates an immutable centered CCW circle with +X seam and vertex or face radial sizing. |
71
+ | [regularPolygonContour](../regularPolygonContour.md) | Creates a centered CCW point loop with vertex or face radial sizing and an implicit seam. |
72
+ | [starContour](../starContour.md) | Creates a centered CCW alternating-radius star within the selected profile sampling ceiling. |
73
+
74
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,47 @@
1
+ # Resolution and errors
2
+
3
+ Resolve physical sampling, numerical tolerances, and contextual failures.
4
+
5
+ Defaults are 0.05 mm maximum circular chord error and 16–512 segments per complete circle. Face-sized circular sampling bounds outward radial excess and actual edge lengths. Exact local counts win. Algorithm limits fail explicitly. GeometryError supplies structured codes and operation context; no ambient resolution state exists.
6
+
7
+ ## Functions
8
+
9
+ | API | Summary |
10
+ | --- | --- |
11
+ | [isGeometryError](../isGeometryError.md) | Recognizes structured geometry errors from separately bundled Modeling copies in the same realm. Ordinary errors and unmarked code-shaped objects are rejected. The marker is execution-local and does not survive structured cloning; worker protocols carry their own serialized error envelope. |
12
+ | [resolveAlignedCircularSegments](../resolveAlignedCircularSegments.md) | Resolves a deterministic full-circle count aligned to reusable topology factors. |
13
+ | [resolveArcSegments](../resolveArcSegments.md) | Resolves the number of segments needed for a circular arc. |
14
+ | [resolveCircularSegments](../resolveCircularSegments.md) | Resolves a deterministic full-circle segment count for one radius. |
15
+ | [resolveGeometryTolerance](../resolveGeometryTolerance.md) | Resolves comparison tolerances for a characteristic model scale. |
16
+
17
+ ## Classes
18
+
19
+ | API | Summary |
20
+ | --- | --- |
21
+ | [GeometryError](../GeometryError.md) | Error raised when a geometry precondition or invariant is not satisfied. |
22
+
23
+ ## Interfaces
24
+
25
+ | API | Summary |
26
+ | --- | --- |
27
+ | [AlignedCircularSegmentsOptions](../AlignedCircularSegmentsOptions.md) | Controls full-circle sampling that must satisfy one or more topology alignments. |
28
+ | [CircularResolutionOptions](../CircularResolutionOptions.md) | Circular sampling measured from the nominal inscribed or circumscribed radius. |
29
+ | [GeometryErrorContext](../GeometryErrorContext.md) | Serializable context attached to a geometry failure. |
30
+ | [GeometryResolution](../GeometryResolution.md) | Tessellation policy for sampled geometry measured in millimetres. |
31
+ | [GeometryToleranceOptions](../GeometryToleranceOptions.md) | Optional overrides for MetaMesh's geometry comparison policy. |
32
+ | [ModelingLimits](../ModelingLimits.md) | Aggregate manufacturing output ceilings selected by a trusted host. |
33
+ | [ResolvedGeometryTolerance](../ResolvedGeometryTolerance.md) | Fully resolved tolerances for one operation and model scale. |
34
+
35
+ ## Type aliases
36
+
37
+ | API | Summary |
38
+ | --- | --- |
39
+ | [GeometryErrorCode](../GeometryErrorCode.md) | Stable categories for invalid inputs, topology, allocation, and runtime failures. |
40
+
41
+ ## Values
42
+
43
+ | API | Summary |
44
+ | --- | --- |
45
+ | [DEFAULT_GEOMETRY_TOLERANCE](../DEFAULT_GEOMETRY_TOLERANCE.md) | Default absolute, relative, and angular tolerances for millimetre-scale models. |
46
+
47
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,92 @@
1
+ # Transforms and vector math
2
+
3
+ Build immutable reusable placements and calculate with fluent vectors or tuple kernels.
4
+
5
+ Use immutable vector2/vector3 and transform2/transform3 values for ordinary authoring. Operations return new values; tuples remain convenient inputs. dot, length and distance return numbers; cross returns a signed scalar in 2D and a right-handed vector in 3D. Normalization rejects zero vectors; fluent values reject nonfinite inputs and results. Rotations use degrees and named optional `{ pivot }` points in world coordinates. Calls and andThen composition apply in execution order. Points include translation; directions exclude it and retain scale; normals use inverse-transpose normalization. Shape methods and path helpers accept matching transforms directly. toArray and toMatrix serve interchange using Vector2Tuple/Vector3Tuple and canonical Transform2Matrix/Transform3Matrix data. to3D/to2D convert dimensions explicitly; XY restriction requires a preserved plane. Raw tuple kernels avoid fluent object allocation in hot loops, and matrix constructors provide lower-level interoperability. rotationTransform3 requires an explicit degrees or radians object; composeTransform3(after, before) applies before first. Attachment matches source and target frames; physical clearance is an application decision.
6
+
7
+ ## Functions
8
+
9
+ | API | Summary |
10
+ | --- | --- |
11
+ | [transform2](../transform2.md) | Creates an immutable XY transform, identity by default. Matrices are copied and validated. Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ. Zero scales and singular matrices throw GeometryError; negative scales reflect. |
12
+ | [transform3](../transform3.md) | Creates an immutable XYZ transform, identity by default. Matrices are copied and validated. Calls apply in written order; rotations use degrees and pivots use current world coordinates. Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError. Use frameTransform3(frame) as the input for existing orthonormal frame placement. |
13
+ | [vector2](../vector2.md) | Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates. Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates and overflow throw `NON_FINITE_VALUE` GeometryError. Use transform2().applyDirection(value) for rotations and nonuniform scaling. |
14
+ | [vector3](../vector3.md) | Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates. Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates and overflow throw `NON_FINITE_VALUE` GeometryError. Use transform3().applyDirection(value) for rotations and nonuniform scaling. |
15
+ | [applyTransformDirection3](../applyTransformDirection3.md) | Applies only the linear component of an affine transform to a direction. |
16
+ | [applyTransformPoint3](../applyTransformPoint3.md) | Applies an affine transform to a point, including translation. |
17
+ | [attachTransform](../attachTransform.md) | Builds the transform that moves a source anchor onto a target anchor. |
18
+ | [boxAnchor3](../boxAnchor3.md) | Creates an outward face-center anchor using the same local origin convention as box(). |
19
+ | [composeTransform3](../composeTransform3.md) | Composes two affine transforms without mutating either matrix. |
20
+ | [createAnchor3](../createAnchor3.md) | Constructs a normalized immutable attachment anchor. |
21
+ | [cylinderAnchor3](../cylinderAnchor3.md) | Creates a cap-center or radial-side anchor using cylinder()'s construction origin. |
22
+ | [eulerTransform3](../eulerTransform3.md) | Creates an immutable right-handed XYZ Euler rotation transform. |
23
+ | [frameTransform3](../frameTransform3.md) | Converts a right-handed orthonormal frame into a local-to-world transform. |
24
+ | [inverseTransform3](../inverseTransform3.md) | Inverts a finite, non-singular affine transform. |
25
+ | [rotationTransform3](../rotationTransform3.md) | Creates a right-handed axis-angle rotation transform. |
26
+ | [scaleTransform3](../scaleTransform3.md) | Creates an immutable axis-aligned scale transform. |
27
+ | [transformDeterminant3](../transformDeterminant3.md) | Returns the determinant of a transform's linear 3x3 component. |
28
+ | [translationTransform3](../translationTransform3.md) | Creates an immutable translation transform. |
29
+ | [validateTransform3](../validateTransform3.md) | Validates that a transform is finite, affine, and non-singular. |
30
+
31
+ ## Interfaces
32
+
33
+ | API | Summary |
34
+ | --- | --- |
35
+ | [Transform2](../Transform2-type.md) | Immutable reusable XY placement. Methods apply in written order; angles are degrees. |
36
+ | [Transform3](../Transform3-type.md) | Immutable reusable XYZ placement. Methods apply in written order; angles are degrees. |
37
+ | [Pivot2Options](../Pivot2Options.md) | A fixed XY point in world coordinates; omitted pivots use the coordinate origin. |
38
+ | [Pivot3Options](../Pivot3Options.md) | A fixed XYZ point in world coordinates; omitted pivots use the coordinate origin. |
39
+ | [Vector2](../Vector2-type.md) | Immutable XY arithmetic; vector operations return new values and measurements return numbers. |
40
+ | [Vector3](../Vector3-type.md) | Immutable XYZ arithmetic; vector operations return new values and measurements return numbers. |
41
+ | [Anchor3](../Anchor3.md) | An attachment pose on a solid or assembly. |
42
+ | [AttachTransformOptions](../AttachTransformOptions.md) | Options controlling how one anchor is attached to another. |
43
+ | [BoxAnchorOptions](../BoxAnchorOptions.md) | Box dimensions and construction origin for one named face anchor. |
44
+ | [CylinderAnchorOptions](../CylinderAnchorOptions.md) | Cylinder dimensions and construction origin for one named face anchor. |
45
+
46
+ ## Type aliases
47
+
48
+ | API | Summary |
49
+ | --- | --- |
50
+ | [Transform2Input](../Transform2Input.md) | An immutable XY transform or its canonical row-major matrix for interchange. |
51
+ | [Transform3Input](../Transform3Input.md) | An immutable XYZ transform or its canonical row-major matrix for interchange. |
52
+ | [Vector2Input](../Vector2Input.md) | An XY tuple or immutable fluent vector accepted by vector operations. |
53
+ | [Vector3Input](../Vector3Input.md) | An XYZ tuple or immutable fluent vector accepted by vector operations. |
54
+ | [AxisAngleRotation3](../AxisAngleRotation3.md) | One explicitly unit-labelled right-handed axis-angle rotation. |
55
+ | [BoxAnchorFace](../BoxAnchorFace.md) | Named face on an axis-aligned box. |
56
+ | [CylinderAnchorFace](../CylinderAnchorFace.md) | Named face on a cylinder parallel to +Z. |
57
+ | [Transform2Matrix](../Transform2Matrix.md) | A row-major affine 3x3 XY matrix applied to column vectors. Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`. |
58
+ | [Transform3Matrix](../Transform3Matrix.md) | A row-major affine 4x4 matrix applied to column vectors. |
59
+ | [Vector2Tuple](../Vector2Tuple.md) | A two-dimensional Cartesian vector or point. |
60
+ | [Vector3Tuple](../Vector3Tuple.md) | A three-dimensional Cartesian vector or point. |
61
+
62
+ ## Values
63
+
64
+ | API | Summary |
65
+ | --- | --- |
66
+ | [add2](../add2.md) | Adds two finite XY vectors component-wise. |
67
+ | [add3](../add3.md) | Adds two finite XYZ vectors component-wise. |
68
+ | [cross3](../cross3.md) | Returns the right-handed cross product. |
69
+ | [cross2](../cross2.md) | Returns the signed scalar cross product; positive means `b` is counter-clockwise from `a`. |
70
+ | [distance2](../distance2.md) | Returns Euclidean point distance without allocating an intermediate difference vector. |
71
+ | [distance3](../distance3.md) | Returns Euclidean point distance without allocating an intermediate difference vector. |
72
+ | [dot3](../dot3.md) | Returns the scalar dot product. |
73
+ | [dot2](../dot2.md) | Returns the scalar dot product. |
74
+ | [IDENTITY_TRANSFORM3](../IDENTITY_TRANSFORM3.md) | Identity transform, safe to share because it is frozen. |
75
+ | [length3](../length3.md) | Returns Euclidean vector length in the vector's coordinate units. |
76
+ | [length2](../length2.md) | Returns Euclidean vector length in the vector's coordinate units. |
77
+ | [lerp3](../lerp3.md) | Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. |
78
+ | [lerp2](../lerp2.md) | Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. |
79
+ | [normalize3](../normalize3.md) | Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`). Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively. |
80
+ | [normalize2](../normalize2.md) | Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`). Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively. |
81
+ | [projectOntoPlane3](../projectOntoPlane3.md) | Removes the component parallel to a normalized plane normal. |
82
+ | [rotate2](../rotate2.md) | Rotates a finite vector counter-clockwise in XY by `degrees` about the origin. Throws `NON_FINITE_VALUE` for nonfinite coordinates, angles, or derived coordinates. |
83
+ | [scale3](../scale3.md) | Multiplies a vector by a dimensionless scalar. |
84
+ | [scale2](../scale2.md) | Multiplies a vector by a dimensionless scalar. |
85
+ | [subtract3](../subtract3.md) | Subtracts `b` from `a`. |
86
+ | [subtract2](../subtract2.md) | Subtracts `b` from `a` component-wise. |
87
+
88
+ ## Guides
89
+
90
+ - [Reusable transforms and vector math](../../../guides/concepts.md#reuse-a-transform-across-shapes-and-coordinates)
91
+
92
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,40 @@
1
+ # SVG and vector layouts
2
+
3
+ Parse bounded painted SVG and carry explicit prepared text geometry.
4
+
5
+ SVG input is bounded and rejects unsupported resources or content contextually. Transforms and physical unit conversion precede sampling; input Y-down coordinates convert to model Y-up. Font preparation belongs to the optional text entrypoint and never enters pure parsing or synchronous modeling. fitTextLayout uniformly fits and centers visible ink before sampling, preserving final millimetre tolerance. It rejects invisible layouts; maxScale: 1 prevents enlargement.
6
+
7
+ ## Functions
8
+
9
+ | API | Summary |
10
+ | --- | --- |
11
+ | [preflightSvgRegion](../preflightSvgRegion.md) | Preflights bounded SVG geometry without browser or Manifold dependencies. |
12
+ | [sampleTextContours](../sampleTextContours.md) | Samples a prepared text layout without shaping text again or loading a font. |
13
+ | [strokePathRegion](../strokePathRegion.md) | Converts a sampled millimetre path into the filled region covered by a centered stroke. |
14
+ | [fitTextLayout](../fitTextLayout.md) | Uniformly fits visible text ink inside finite XY bounds, centering it on the target. Transforms retained vector paths before sampling, so later textSection/sampleTextContours resolution remains in final millimetres. Logical advances scale without translation; line count is unchanged. The input layout is preserved. |
15
+
16
+ ## Interfaces
17
+
18
+ | API | Summary |
19
+ | --- | --- |
20
+ | [StrokePathRegionOptions](../StrokePathRegionOptions.md) | Physical stroke and topology controls shared by pure regions and native Sections. |
21
+ | [SvgImportOptions](../SvgImportOptions.md) | Sampling controls for deterministic SVG-to-region conversion. |
22
+ | [SvgRegionPreflight](../SvgRegionPreflight.md) | Exact normalized SVG region plus bounded source, geometry, and safe-repair diagnostics. |
23
+ | [SvgRegionPreflightRepairs](../SvgRegionPreflightRepairs.md) | Visible, appearance-preserving cleanup counters from bounded SVG import. |
24
+ | [VectorTextArcBaseline](../VectorTextArcBaseline.md) | A circular baseline centered at the XY origin, with rigid shaped glyph groups. |
25
+ | [VectorTextLayout](../VectorTextLayout.md) | Immutable vector layout with no browser, font parser, or kernel ownership. |
26
+ | [VectorTextLayoutOptions](../VectorTextLayoutOptions.md) | Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping. |
27
+ | [VectorTextOptions](../VectorTextOptions.md) | Shaping controls for a prepared exact font face; all lengths are in millimetres. |
28
+ | [SvgRegionPreflightGeometryMetrics](../SvgRegionPreflightGeometryMetrics.md) | Physical and final-topology facts for a normalized imported SVG region. |
29
+ | [SvgRegionPreflightSourceMetrics](../SvgRegionPreflightSourceMetrics.md) | Bounded source-complexity facts collected while parsing one SVG document. |
30
+ | [VectorTextMetrics](../VectorTextMetrics.md) | Text measurements from the same immutable layout that supplies geometry and SVG outlines. |
31
+ | [FittedTextLayout](../FittedTextLayout.md) | Fitted immutable text whose visible ink bounds are known to be present. |
32
+
33
+ ## Type aliases
34
+
35
+ | API | Summary |
36
+ | --- | --- |
37
+ | [StrokePathCap](../StrokePathCap.md) | End-cap treatment for an open stroked path. |
38
+ | [StrokePathJoin](../StrokePathJoin.md) | Join treatment where adjacent stroked path segments meet. |
39
+
40
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,33 @@
1
+ # circleContour
2
+
3
+ Creates an immutable centered CCW circle with +X seam and vertex or face radial sizing.
4
+
5
+ `const` **circleContour**: (`options`: [`CircleContourOptions`](CircleContourOptions.md)) => [`Contour`](Contour.md)
6
+
7
+
8
+
9
+ ## Example: Explicit circular point data
10
+
11
+ ```ts
12
+ circleContour({ diameter: 20, segments: 32 });
13
+ ```
14
+
15
+ ## Parameters
16
+
17
+ <a id="options"></a>
18
+
19
+ **`options`** · [`CircleContourOptions`](CircleContourOptions.md) · Required
20
+
21
+
22
+
23
+ ## Returns
24
+
25
+ [`Contour`](Contour.md)
26
+
27
+
28
+ ## Related APIs
29
+
30
+ - [CircleContourOptions](CircleContourOptions.md)
31
+ - [Contour](Contour.md)
32
+
33
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,34 @@
1
+ # closeToAxis
2
+
3
+ Closes an open, strictly upward [radius, height] side outline to the radius-zero axis. Adds horizontal bottom/top edges at the endpoint heights, retaining axis endpoints once. Returns a counterclockwise filled-boundary contour without a repeated seam vertex. Radii must be nonnegative; the result must enclose nonzero area without touching itself. This is a solid-body closure, not a hollow-wall or mounting-bore construction.
4
+
5
+ **closeToAxis**(`side`: readonly [`Vector2Tuple`](Vector2Tuple.md)[], `limits?`: `Partial`\<[`GeometrySamplingLimits`](GeometrySamplingLimits.md)\>): [`Contour`](Contour.md)
6
+
7
+
8
+
9
+ ## Parameters
10
+
11
+ <a id="side"></a>
12
+
13
+ **`side`** · readonly [`Vector2Tuple`](Vector2Tuple.md)[] · Required
14
+
15
+
16
+
17
+ <a id="limits"></a>
18
+
19
+ **`limits`** · `Partial`\<[`GeometrySamplingLimits`](GeometrySamplingLimits.md)\> · Optional
20
+
21
+
22
+
23
+ ## Returns
24
+
25
+ [`Contour`](Contour.md)
26
+
27
+
28
+ ## Related APIs
29
+
30
+ - [Contour](Contour.md)
31
+ - [GeometrySamplingLimits](GeometrySamplingLimits.md)
32
+ - [Vector2Tuple](Vector2Tuple.md)
33
+
34
+ Package: `@metamesh/modeling@0.14.0`.
@@ -0,0 +1,110 @@
1
+ # closestPointOnPath
2
+
3
+ Finds the closest position anywhere on an open XY path or closed contour.
4
+
5
+ ## Call Signature
6
+
7
+
8
+
9
+ **closestPointOnPath**(`path`: [`Path2`](Path2.md), `point`: [`Vector2Tuple`](Vector2Tuple.md), `options?`: [`ClosestPointOnPathOptions`](ClosestPointOnPathOptions.md)): [`ClosestPointOnPathResult`](ClosestPointOnPathResult.md)\<[`Vector2Tuple`](Vector2Tuple.md)\>
10
+
11
+
12
+
13
+ ## Example: Find a point on a closed boundary
14
+
15
+ ```ts
16
+ closestPointOnPath([[0, 0], [10, 0], [10, 10]], [4, -2], { closed: true });
17
+ ```
18
+
19
+ Finds the closest position anywhere on an open XY path or closed contour.
20
+
21
+ Open paths need two points; closed paths need three and omit the duplicated seam.
22
+ Repeated vertices are treated as zero-length edges. Inputs and derived distances must be
23
+ finite. Only the final result is allocated, so scanning a dense boundary creates no per-edge objects.
24
+ This measures the sampled boundary, not its filled interior or an underlying analytic curve.
25
+
26
+ ### Parameters
27
+
28
+ <a id="path"></a>
29
+
30
+ **`path`** · [`Path2`](Path2.md) · Required
31
+
32
+
33
+
34
+ <a id="point"></a>
35
+
36
+ **`point`** · [`Vector2Tuple`](Vector2Tuple.md) · Required
37
+
38
+
39
+
40
+ <a id="options"></a>
41
+
42
+ **`options`** · [`ClosestPointOnPathOptions`](ClosestPointOnPathOptions.md) · Optional
43
+
44
+ - [`closed`](ClosestPointOnPathOptions.md#closed) · `boolean` · Optional
45
+
46
+ Include the last-to-first edge without duplicating the seam point. Defaults to false.
47
+
48
+ - [`limits`](ClosestPointOnPathOptions.md#limits) · `Partial`\<[`GeometrySamplingLimits`](GeometrySamplingLimits.md)\> · Optional
49
+
50
+ Explicit path point ceiling; defaults to the package sampling limits.
51
+
52
+
53
+
54
+ ### Returns
55
+
56
+ [`ClosestPointOnPathResult`](ClosestPointOnPathResult.md)\<[`Vector2Tuple`](Vector2Tuple.md)\>
57
+
58
+ ## Call Signature
59
+
60
+
61
+
62
+ **closestPointOnPath**(`path`: [`Path3`](Path3.md), `point`: [`Vector3Tuple`](Vector3Tuple.md), `options?`: [`ClosestPointOnPathOptions`](ClosestPointOnPathOptions.md)): [`ClosestPointOnPathResult`](ClosestPointOnPathResult.md)\<[`Vector3Tuple`](Vector3Tuple.md)\>
63
+
64
+
65
+
66
+ Finds the closest position on an open XYZ path or explicitly closed spatial loop.
67
+
68
+ ### Parameters
69
+
70
+ <a id="path-1"></a>
71
+
72
+ **`path`** · [`Path3`](Path3.md) · Required
73
+
74
+
75
+
76
+ <a id="point-1"></a>
77
+
78
+ **`point`** · [`Vector3Tuple`](Vector3Tuple.md) · Required
79
+
80
+
81
+
82
+ <a id="options-1"></a>
83
+
84
+ **`options`** · [`ClosestPointOnPathOptions`](ClosestPointOnPathOptions.md) · Optional
85
+
86
+ - [`closed`](ClosestPointOnPathOptions.md#closed) · `boolean` · Optional
87
+
88
+ Include the last-to-first edge without duplicating the seam point. Defaults to false.
89
+
90
+ - [`limits`](ClosestPointOnPathOptions.md#limits) · `Partial`\<[`GeometrySamplingLimits`](GeometrySamplingLimits.md)\> · Optional
91
+
92
+ Explicit path point ceiling; defaults to the package sampling limits.
93
+
94
+
95
+
96
+ ### Returns
97
+
98
+ [`ClosestPointOnPathResult`](ClosestPointOnPathResult.md)\<[`Vector3Tuple`](Vector3Tuple.md)\>
99
+
100
+
101
+ ## Related APIs
102
+
103
+ - [ClosestPointOnPathOptions](ClosestPointOnPathOptions.md)
104
+ - [ClosestPointOnPathResult](ClosestPointOnPathResult.md)
105
+ - [Path2](Path2.md)
106
+ - [Path3](Path3.md)
107
+ - [Vector2Tuple](Vector2Tuple.md)
108
+ - [Vector3Tuple](Vector3Tuple.md)
109
+
110
+ Package: `@metamesh/modeling@0.14.0`.