@metamesh/modeling 0.19.0 → 0.20.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 (789) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +34 -18
  3. package/dist/api/engine.d.ts +217 -121
  4. package/dist/api/export.d.ts +123 -79
  5. package/dist/api/geometry.d.ts +406 -2102
  6. package/dist/api/index.d.ts +472 -1798
  7. package/dist/api/math.d.ts +315 -0
  8. package/dist/api/mechanical.d.ts +1041 -0
  9. package/dist/api/mesh.d.ts +360 -88
  10. package/dist/api/text.d.ts +24 -44
  11. package/dist/docs/guides/concepts.md +67 -33
  12. package/dist/docs/guides/exporting.md +88 -0
  13. package/dist/docs/guides/fonts.md +5 -3
  14. package/dist/docs/guides/fundamentals.md +12 -24
  15. package/dist/docs/guides/generation.md +24 -16
  16. package/dist/docs/guides/geometry-values.md +192 -134
  17. package/dist/docs/guides/hosting.md +51 -96
  18. package/dist/docs/guides/profiles-and-extrusion.md +159 -11
  19. package/dist/docs/guides/recipes.md +121 -28
  20. package/dist/docs/guides/resolution-and-inspection.md +43 -23
  21. package/dist/docs/guides/solid-joins.md +12 -2
  22. package/dist/docs/guides/standalone-model.md +4 -2
  23. package/dist/docs/guides/svg-and-text.md +76 -39
  24. package/dist/docs/guides/sweeps-and-lofts.md +88 -44
  25. package/dist/docs/guides/transforms-and-placement.md +113 -103
  26. package/dist/docs/guides/workers.md +166 -0
  27. package/dist/docs/manifest.json +4133 -4153
  28. package/dist/docs/reference/engine/GenerationOptions.md +2 -3
  29. package/dist/docs/reference/engine/GeometryResource.md +6 -6
  30. package/dist/docs/reference/engine/ModelDependencies.md +2 -2
  31. package/dist/docs/reference/engine/ModelEngine.md +2 -3
  32. package/dist/docs/reference/engine/ModelEngineOptions.md +2 -7
  33. package/dist/docs/reference/engine/ModelPart.md +6 -6
  34. package/dist/docs/reference/engine/ModelResult.md +2 -2
  35. package/dist/docs/reference/engine/ModelRunArguments.md +2 -2
  36. package/dist/docs/reference/engine/ModelRunOptions.md +2 -3
  37. package/dist/docs/reference/engine/ModelSession.md +2 -2
  38. package/dist/docs/reference/engine/SessionOptions.md +2 -3
  39. package/dist/docs/reference/engine/categories/host-lifecycle.md +9 -3
  40. package/dist/docs/reference/engine/checkModel.md +6 -2
  41. package/dist/docs/reference/engine/createModelEngine.md +5 -3
  42. package/dist/docs/reference/engine/defaultModelingLimits.md +4 -11
  43. package/dist/docs/reference/engine/modelingWasmUrl.md +2 -2
  44. package/dist/docs/reference/engine.md +7 -1
  45. package/dist/docs/reference/export/Export3mfOptions.md +2 -6
  46. package/dist/docs/reference/export/ExportDiagnostic.md +2 -14
  47. package/dist/docs/reference/export/ExportFormat.md +2 -14
  48. package/dist/docs/reference/export/ExportGeometry.md +3 -15
  49. package/dist/docs/reference/export/ExportGlbOptions.md +14 -18
  50. package/dist/docs/reference/export/ExportLimits.md +2 -14
  51. package/dist/docs/reference/export/ExportMaterial.md +2 -14
  52. package/dist/docs/reference/export/ExportOptions.md +2 -14
  53. package/dist/docs/reference/export/ExportPart.md +2 -14
  54. package/dist/docs/reference/export/ExportReport.md +2 -14
  55. package/dist/docs/reference/export/ExportSink.md +5 -15
  56. package/dist/docs/reference/export/ExportStlOptions.md +2 -6
  57. package/dist/docs/reference/export/ExportedFile.md +14 -26
  58. package/dist/docs/reference/export/categories/mesh-serialization.md +9 -3
  59. package/dist/docs/reference/export/defaultExportLimits.md +2 -2
  60. package/dist/docs/reference/export/export3mf.md +4 -6
  61. package/dist/docs/reference/export/exportGlb.md +8 -10
  62. package/dist/docs/reference/export/exportStl.md +4 -6
  63. package/dist/docs/reference/export/write3mf.md +6 -6
  64. package/dist/docs/reference/export/writeGlb.md +10 -10
  65. package/dist/docs/reference/export/writeStl.md +6 -6
  66. package/dist/docs/reference/export.md +9 -3
  67. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
  68. package/dist/docs/reference/geometry/Anchor3-type.md +3 -7
  69. package/dist/docs/reference/geometry/Anchor3Options.md +70 -0
  70. package/dist/docs/reference/geometry/ArcCurve2.md +3 -3
  71. package/dist/docs/reference/geometry/ArcCurve3.md +3 -3
  72. package/dist/docs/reference/geometry/AttachOptions.md +4 -9
  73. package/dist/docs/reference/geometry/Bounds2-type.md +9 -30
  74. package/dist/docs/reference/geometry/Bounds2Data.md +2 -19
  75. package/dist/docs/reference/geometry/Bounds2Input.md +2 -10
  76. package/dist/docs/reference/geometry/Bounds2Options.md +2 -6
  77. package/dist/docs/reference/geometry/Bounds3-type.md +9 -30
  78. package/dist/docs/reference/geometry/Bounds3Data.md +2 -15
  79. package/dist/docs/reference/geometry/Bounds3Input.md +2 -10
  80. package/dist/docs/reference/geometry/Bounds3Options.md +2 -6
  81. package/dist/docs/reference/geometry/BoundsFit2.md +2 -2
  82. package/dist/docs/reference/geometry/BoundsFit3.md +2 -2
  83. package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -2
  84. package/dist/docs/reference/geometry/BoxAnchorFace.md +3 -3
  85. package/dist/docs/reference/geometry/BoxAnchorOptions.md +3 -3
  86. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +3 -7
  87. package/dist/docs/reference/geometry/CircleContourOptions.md +3 -7
  88. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +3 -12
  89. package/dist/docs/reference/geometry/CircularResolutionOptions.md +2 -2
  90. package/dist/docs/reference/geometry/CircularSampling.md +2 -2
  91. package/dist/docs/reference/geometry/CircularSamplingOptions.md +2 -2
  92. package/dist/docs/reference/geometry/Contour.md +4 -9
  93. package/dist/docs/reference/geometry/ContourCurve.md +3 -3
  94. package/dist/docs/reference/geometry/ContourPoint.md +3 -3
  95. package/dist/docs/reference/geometry/ContourSegment.md +3 -3
  96. package/dist/docs/reference/geometry/CorrespondingComponent.md +3 -7
  97. package/dist/docs/reference/geometry/CorrespondingContour.md +3 -7
  98. package/dist/docs/reference/geometry/CorrespondingProfile.md +3 -7
  99. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +4 -8
  100. package/dist/docs/reference/geometry/CubicBezierCurve2.md +3 -3
  101. package/dist/docs/reference/geometry/CubicBezierCurve3.md +3 -3
  102. package/dist/docs/reference/geometry/Curve2.md +3 -3
  103. package/dist/docs/reference/geometry/Curve3.md +3 -3
  104. package/dist/docs/reference/geometry/CurveSamplingOptions.md +3 -11
  105. package/dist/docs/reference/geometry/CylinderAnchorFace.md +3 -3
  106. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -4
  107. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +2 -2
  108. package/dist/docs/reference/geometry/EdgeTreatment.md +2 -6
  109. package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -7
  110. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -18
  111. package/dist/docs/reference/geometry/FittedTextLayout.md +2 -2
  112. package/dist/docs/reference/geometry/{Frame3.md → Frame3-type.md} +4 -11
  113. package/dist/docs/reference/geometry/Frame3Options.md +69 -0
  114. package/dist/docs/reference/geometry/GeometryError.md +2 -6
  115. package/dist/docs/reference/geometry/GeometryErrorCode.md +2 -6
  116. package/dist/docs/reference/geometry/GeometryErrorContext.md +2 -6
  117. package/dist/docs/reference/geometry/GeometryResolution.md +2 -10
  118. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +3 -11
  119. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +3 -11
  120. package/dist/docs/reference/geometry/GridPatternOptions.md +7 -9
  121. package/dist/docs/reference/geometry/ImmutableBuffer-type.md +2 -10
  122. package/dist/docs/reference/geometry/LineCurve2.md +3 -3
  123. package/dist/docs/reference/geometry/LineCurve3.md +3 -3
  124. package/dist/docs/reference/geometry/LinearPatternOptions.md +2 -6
  125. package/dist/docs/reference/geometry/LoftPlacement.md +13 -21
  126. package/dist/docs/reference/geometry/MatchProfilesOptions.md +3 -7
  127. package/dist/docs/reference/geometry/ModelingLimits.md +2 -14
  128. package/dist/docs/reference/geometry/NumericArray.md +2 -10
  129. package/dist/docs/reference/geometry/Path2-type.md +153 -12
  130. package/dist/docs/reference/geometry/Path2Data.md +3 -11
  131. package/dist/docs/reference/geometry/Path2Input.md +3 -11
  132. package/dist/docs/reference/geometry/Path3-type.md +153 -12
  133. package/dist/docs/reference/geometry/Path3Data.md +3 -11
  134. package/dist/docs/reference/geometry/Path3Input.md +3 -11
  135. package/dist/docs/reference/geometry/PathFrame.md +3 -3
  136. package/dist/docs/reference/geometry/PathLocation.md +3 -11
  137. package/dist/docs/reference/geometry/PathNormalGuide.md +4 -12
  138. package/dist/docs/reference/geometry/PathOptions.md +3 -7
  139. package/dist/docs/reference/geometry/PathPatternOptions.md +3 -7
  140. package/dist/docs/reference/geometry/PathPlacement.md +5 -5
  141. package/dist/docs/reference/geometry/PathResamplingOptions.md +3 -11
  142. package/dist/docs/reference/geometry/PathStation.md +87 -0
  143. package/dist/docs/reference/geometry/PathSubdivisionOptions.md +44 -0
  144. package/dist/docs/reference/geometry/Pivot2Options.md +3 -11
  145. package/dist/docs/reference/geometry/Pivot3Options.md +3 -11
  146. package/dist/docs/reference/geometry/PolygonData.md +4 -8
  147. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +3 -3
  148. package/dist/docs/reference/geometry/Profile.md +3 -4
  149. package/dist/docs/reference/geometry/ProfileComponent2.md +3 -7
  150. package/dist/docs/reference/geometry/ProfileContour2.md +3 -7
  151. package/dist/docs/reference/geometry/ProfileSpan2.md +3 -7
  152. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +5 -8
  153. package/dist/docs/reference/geometry/RadialPatternOptions.md +2 -6
  154. package/dist/docs/reference/geometry/RadialSizing.md +2 -6
  155. package/dist/docs/reference/geometry/RadialSizingOptions.md +2 -6
  156. package/dist/docs/reference/geometry/RectangleContourOptions.md +4 -7
  157. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +3 -7
  158. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +3 -7
  159. package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
  160. package/dist/docs/reference/geometry/RegionData.md +3 -7
  161. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +3 -3
  162. package/dist/docs/reference/geometry/ResolvedGeometryResolution.md +71 -0
  163. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +2 -2
  164. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +2 -6
  165. package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -2
  166. package/dist/docs/reference/geometry/SampleContourOptions.md +3 -3
  167. package/dist/docs/reference/geometry/SampleHelixOptions.md +3 -3
  168. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +3 -3
  169. package/dist/docs/reference/geometry/SampledCurve2.md +3 -3
  170. package/dist/docs/reference/geometry/SampledCurve3.md +3 -3
  171. package/dist/docs/reference/geometry/SideProfileCurve.md +3 -3
  172. package/dist/docs/reference/geometry/SideProfilePoint.md +3 -3
  173. package/dist/docs/reference/geometry/SideProfileSegment.md +3 -3
  174. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +2 -6
  175. package/dist/docs/reference/geometry/SplineOptions.md +69 -0
  176. package/dist/docs/reference/geometry/StarContourOptions.md +7 -7
  177. package/dist/docs/reference/geometry/StrokeCap.md +2 -6
  178. package/dist/docs/reference/geometry/StrokeJoin.md +2 -6
  179. package/dist/docs/reference/geometry/StrokeOptions.md +3 -7
  180. package/dist/docs/reference/geometry/SvgImportOptions.md +4 -4
  181. package/dist/docs/reference/geometry/SvgRegionPreflight.md +2 -2
  182. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +2 -2
  183. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +2 -2
  184. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +2 -2
  185. package/dist/docs/reference/geometry/Transform2-type.md +3 -11
  186. package/dist/docs/reference/geometry/Transform2Data.md +3 -11
  187. package/dist/docs/reference/geometry/Transform2Input.md +3 -11
  188. package/dist/docs/reference/geometry/Transform3-type.md +4 -12
  189. package/dist/docs/reference/geometry/Transform3Data.md +3 -11
  190. package/dist/docs/reference/geometry/Transform3Input.md +6 -13
  191. package/dist/docs/reference/geometry/Vector2-type.md +3 -11
  192. package/dist/docs/reference/geometry/Vector2Data.md +3 -15
  193. package/dist/docs/reference/geometry/Vector2Input.md +3 -11
  194. package/dist/docs/reference/geometry/Vector3-type.md +27 -11
  195. package/dist/docs/reference/geometry/Vector3Data.md +3 -11
  196. package/dist/docs/reference/geometry/Vector3Input.md +3 -11
  197. package/dist/docs/reference/geometry/VectorTextLayout.md +2 -10
  198. package/dist/docs/reference/geometry/VectorTextMetrics.md +3 -11
  199. package/dist/docs/reference/geometry/anchor3.md +17 -26
  200. package/dist/docs/reference/geometry/anchorFrame3.md +6 -6
  201. package/dist/docs/reference/geometry/attachmentTransform3.md +8 -8
  202. package/dist/docs/reference/geometry/bounds2.md +6 -8
  203. package/dist/docs/reference/geometry/bounds3.md +4 -6
  204. package/dist/docs/reference/geometry/boundsCenter.md +2 -2
  205. package/dist/docs/reference/geometry/boundsSize.md +2 -2
  206. package/dist/docs/reference/geometry/boxAnchor3.md +3 -3
  207. package/dist/docs/reference/geometry/categories/bounds-layout.md +9 -3
  208. package/dist/docs/reference/geometry/categories/curves-paths.md +24 -13
  209. package/dist/docs/reference/geometry/categories/immutable-data.md +40 -0
  210. package/dist/docs/reference/geometry/categories/pattern-placement.md +10 -4
  211. package/dist/docs/reference/geometry/categories/primitive-options.md +8 -13
  212. package/dist/docs/reference/geometry/categories/profiles-regions.md +11 -5
  213. package/dist/docs/reference/geometry/categories/resolution-errors.md +8 -1
  214. package/dist/docs/reference/geometry/categories/transforms-math.md +20 -51
  215. package/dist/docs/reference/geometry/categories/vector-import.md +7 -4
  216. package/dist/docs/reference/geometry/circleContour.md +3 -3
  217. package/dist/docs/reference/geometry/closeToAxis.md +7 -3
  218. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +9 -6
  219. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +13 -6
  220. package/dist/docs/reference/geometry/contourContainsPoint.md +7 -3
  221. package/dist/docs/reference/geometry/cylinderAnchor3.md +5 -5
  222. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +3 -3
  223. package/dist/docs/reference/geometry/distributeAlongPath.md +16 -11
  224. package/dist/docs/reference/geometry/ellipseContour.md +3 -3
  225. package/dist/docs/reference/geometry/fitBounds.md +10 -2
  226. package/dist/docs/reference/geometry/fitTextLayout.md +5 -5
  227. package/dist/docs/reference/geometry/frame3.md +66 -0
  228. package/dist/docs/reference/geometry/gridPatternTransforms.md +6 -6
  229. package/dist/docs/reference/geometry/immutableBuffer.md +5 -7
  230. package/dist/docs/reference/geometry/isGeometryError.md +2 -6
  231. package/dist/docs/reference/geometry/layoutRow.md +4 -2
  232. package/dist/docs/reference/geometry/linearPatternTransforms.md +6 -6
  233. package/dist/docs/reference/geometry/matchProfiles.md +5 -3
  234. package/dist/docs/reference/geometry/normalizeContour.md +8 -4
  235. package/dist/docs/reference/geometry/normalizePolygon.md +5 -3
  236. package/dist/docs/reference/geometry/normalizeRegion.md +5 -3
  237. package/dist/docs/reference/geometry/path2.md +7 -7
  238. package/dist/docs/reference/geometry/path3.md +7 -7
  239. package/dist/docs/reference/geometry/pathPatternTransforms.md +12 -8
  240. package/dist/docs/reference/geometry/preflightSvgRegion.md +5 -5
  241. package/dist/docs/reference/geometry/radialPatternTransforms.md +5 -5
  242. package/dist/docs/reference/geometry/rectangleContour.md +3 -3
  243. package/dist/docs/reference/geometry/rectangleProfile.md +3 -4
  244. package/dist/docs/reference/geometry/regionArea.md +3 -3
  245. package/dist/docs/reference/geometry/regionBounds.md +6 -4
  246. package/dist/docs/reference/geometry/regularPolygonContour.md +3 -3
  247. package/dist/docs/reference/geometry/resamplePolyline2.md +7 -3
  248. package/dist/docs/reference/geometry/resamplePolyline3.md +7 -3
  249. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +5 -5
  250. package/dist/docs/reference/geometry/resolveArcSegments.md +8 -6
  251. package/dist/docs/reference/geometry/resolveCircularSampling.md +2 -2
  252. package/dist/docs/reference/geometry/resolveCircularSegments.md +5 -3
  253. package/dist/docs/reference/geometry/{resolveExtrusionDivisions.md → resolveExtrusionSlices.md} +16 -15
  254. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -3
  255. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +3 -3
  256. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -5
  257. package/dist/docs/reference/geometry/sampleContour.md +5 -5
  258. package/dist/docs/reference/geometry/sampleCurve2.md +7 -3
  259. package/dist/docs/reference/geometry/sampleCurve3.md +7 -3
  260. package/dist/docs/reference/geometry/sampleHelix.md +3 -3
  261. package/dist/docs/reference/geometry/sampleSideProfile.md +5 -5
  262. package/dist/docs/reference/geometry/sampleTextContours.md +3 -3
  263. package/dist/docs/reference/geometry/signedContourArea.md +5 -3
  264. package/dist/docs/reference/geometry/spline2.md +68 -0
  265. package/dist/docs/reference/geometry/spline3.md +62 -0
  266. package/dist/docs/reference/geometry/starContour.md +3 -3
  267. package/dist/docs/reference/geometry/strokeRegionData.md +8 -5
  268. package/dist/docs/reference/geometry/transform2.md +5 -7
  269. package/dist/docs/reference/geometry/transform3.md +23 -10
  270. package/dist/docs/reference/geometry/transformRegionData.md +7 -3
  271. package/dist/docs/reference/geometry/triangulateContour.md +6 -4
  272. package/dist/docs/reference/geometry/vector2.md +6 -8
  273. package/dist/docs/reference/geometry/vector3.md +8 -8
  274. package/dist/docs/reference/geometry.md +13 -18
  275. package/dist/docs/reference/{geometry → math}/AxisAngleRotation3.md +4 -5
  276. package/dist/docs/reference/math/IDENTITY_TRANSFORM3.md +20 -0
  277. package/dist/docs/reference/math/add2.md +38 -0
  278. package/dist/docs/reference/math/add3.md +46 -0
  279. package/dist/docs/reference/math/applyTransformDirection3.md +46 -0
  280. package/dist/docs/reference/math/applyTransformPoint3.md +44 -0
  281. package/dist/docs/reference/math/categories/tuple-matrix.md +67 -0
  282. package/dist/docs/reference/math/cross2.md +38 -0
  283. package/dist/docs/reference/math/cross3.md +44 -0
  284. package/dist/docs/reference/math/distance2.md +38 -0
  285. package/dist/docs/reference/math/distance3.md +38 -0
  286. package/dist/docs/reference/math/dot2.md +38 -0
  287. package/dist/docs/reference/math/dot3.md +44 -0
  288. package/dist/docs/reference/math/eulerTransform3.md +43 -0
  289. package/dist/docs/reference/math/inverseTransform3.md +36 -0
  290. package/dist/docs/reference/math/length2.md +32 -0
  291. package/dist/docs/reference/math/length3.md +32 -0
  292. package/dist/docs/reference/math/lerp2.md +46 -0
  293. package/dist/docs/reference/math/lerp3.md +46 -0
  294. package/dist/docs/reference/math/multiplyTransform3.md +46 -0
  295. package/dist/docs/reference/math/normalize2.md +45 -0
  296. package/dist/docs/reference/math/normalize3.md +45 -0
  297. package/dist/docs/reference/math/projectOntoPlane3.md +40 -0
  298. package/dist/docs/reference/math/rotate2.md +40 -0
  299. package/dist/docs/reference/math/rotationTransform3.md +56 -0
  300. package/dist/docs/reference/math/scale2.md +38 -0
  301. package/dist/docs/reference/math/scale3.md +44 -0
  302. package/dist/docs/reference/math/scaleTransform3.md +39 -0
  303. package/dist/docs/reference/math/subtract2.md +38 -0
  304. package/dist/docs/reference/math/subtract3.md +44 -0
  305. package/dist/docs/reference/math/transformDeterminant3.md +38 -0
  306. package/dist/docs/reference/math/translationTransform3.md +36 -0
  307. package/dist/docs/reference/math/validateRigidTransform3.md +38 -0
  308. package/dist/docs/reference/math/validateTransform3.md +48 -0
  309. package/dist/docs/reference/math.md +22 -0
  310. package/dist/docs/reference/{geometry → mechanical}/AcmeThreadProfileSpec.md +4 -13
  311. package/dist/docs/reference/{geometry → mechanical}/Bevel.md +3 -11
  312. package/dist/docs/reference/{geometry → mechanical}/BevelSize.md +3 -11
  313. package/dist/docs/reference/{geometry → mechanical}/ButtressPressureFlankSide.md +3 -11
  314. package/dist/docs/reference/{geometry → mechanical}/ButtressThreadProfileSpec.md +4 -13
  315. package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleDimensions.md +3 -3
  316. package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleFit.md +3 -3
  317. package/dist/docs/reference/{geometry → mechanical}/CompensatedThreadDiameters.md +3 -3
  318. package/dist/docs/reference/{geometry → mechanical}/CustomThreadProfileSpec.md +5 -15
  319. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearDimensions.md +3 -3
  320. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearMeshKind.md +3 -3
  321. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearOutlineOptions.md +5 -10
  322. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairDimensions.md +3 -3
  323. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionOptions.md +3 -3
  324. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionReport.md +3 -3
  325. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairSpec.md +3 -3
  326. package/dist/docs/reference/{geometry → mechanical}/CylindricalGearSpec.md +3 -3
  327. package/dist/docs/reference/{geometry → mechanical}/InternalThreadCutterOptions.md +6 -13
  328. package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeBaseSpec.md +3 -7
  329. package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeDimensions.md +4 -5
  330. package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeInterval.md +3 -3
  331. package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSamplingOptions.md +5 -14
  332. package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSpec.md +3 -7
  333. package/dist/docs/reference/{geometry → mechanical}/METRIC_FASTENER_STANDARDS.md +3 -3
  334. package/dist/docs/reference/{geometry → mechanical}/MetricFastenerSize.md +3 -3
  335. package/dist/docs/reference/{geometry → mechanical}/MetricFastenerStandard.md +3 -3
  336. package/dist/docs/reference/{geometry → mechanical}/MetricHexNutDimensions.md +3 -3
  337. package/dist/docs/reference/{geometry → mechanical}/MetricSocketCapHeadDimensions.md +3 -3
  338. package/dist/docs/reference/{geometry → mechanical}/PRINTABLE_THREAD_FIT_POLICIES.md +3 -3
  339. package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFit.md +3 -7
  340. package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFitPolicy.md +3 -7
  341. package/dist/docs/reference/{geometry → mechanical}/RackPitchDimensions.md +3 -3
  342. package/dist/docs/reference/{geometry → mechanical}/RackPitchSpec.md +3 -3
  343. package/dist/docs/reference/{geometry → mechanical}/SampledThreadHelices.md +4 -8
  344. package/dist/docs/reference/{geometry → mechanical}/SquareThreadProfileSpec.md +4 -13
  345. package/dist/docs/reference/{geometry → mechanical}/ThreadBevelOptions.md +3 -7
  346. package/dist/docs/reference/{geometry → mechanical}/ThreadCircularSegmentsOptions.md +5 -7
  347. package/dist/docs/reference/{geometry → mechanical}/ThreadCompensationOptions.md +4 -5
  348. package/dist/docs/reference/{geometry → mechanical}/ThreadEndStyle.md +3 -11
  349. package/dist/docs/reference/{geometry → mechanical}/ThreadEndTreatmentOptions.md +3 -11
  350. package/dist/docs/reference/{geometry → mechanical}/ThreadHandedness.md +3 -11
  351. package/dist/docs/reference/{geometry → mechanical}/ThreadHelixOptions.md +5 -7
  352. package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInEnvelope.md +3 -11
  353. package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInShape.md +3 -11
  354. package/dist/docs/reference/{geometry → mechanical}/ThreadProfile-type.md +5 -17
  355. package/dist/docs/reference/{geometry → mechanical}/ThreadProfileBaseSpec.md +4 -13
  356. package/dist/docs/reference/{geometry → mechanical}/ThreadProfileSpec.md +3 -11
  357. package/dist/docs/reference/{geometry → mechanical}/ThreadRidgeOptions.md +7 -18
  358. package/dist/docs/reference/{geometry → mechanical}/ThreadRole.md +3 -3
  359. package/dist/docs/reference/{geometry → mechanical}/ThreadSolidOptions.md +8 -15
  360. package/dist/docs/reference/{geometry → mechanical}/ThreadSolidPreflight.md +3 -11
  361. package/dist/docs/reference/{geometry → mechanical}/ThreadedNutOptions.md +7 -14
  362. package/dist/docs/reference/{geometry → mechanical}/ThreadedNutPreflight.md +3 -7
  363. package/dist/docs/reference/{geometry → mechanical}/ThreadedNutShape.md +3 -7
  364. package/dist/docs/reference/{geometry → mechanical}/ThreadedRodOptions.md +6 -13
  365. package/dist/docs/reference/{geometry → mechanical}/TrapezoidalThreadProfileSpec.md +4 -13
  366. package/dist/docs/reference/{geometry → mechanical}/TriangularThreadProfileSpec.md +4 -13
  367. package/dist/docs/reference/{geometry → mechanical}/categories/mechanical.md +8 -2
  368. package/dist/docs/reference/{geometry → mechanical}/compensateThreadDiameters.md +4 -4
  369. package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileAxially.md +12 -6
  370. package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileForFaceting.md +13 -3
  371. package/dist/docs/reference/{geometry → mechanical}/getMetricClearanceHoleDiameter.md +3 -3
  372. package/dist/docs/reference/{geometry → mechanical}/getMetricFastenerStandard.md +3 -3
  373. package/dist/docs/reference/{geometry → mechanical}/measureInternalCylindricalGearPairMotion.md +9 -7
  374. package/dist/docs/reference/{geometry → mechanical}/minimumCylindricalGearToothCountWithoutUndercut.md +5 -3
  375. package/dist/docs/reference/{geometry → mechanical}/preflightInternalThreadCutter.md +8 -6
  376. package/dist/docs/reference/{geometry → mechanical}/preflightThreadedNut.md +9 -7
  377. package/dist/docs/reference/{geometry → mechanical}/preflightThreadedRod.md +8 -6
  378. package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGear.md +5 -3
  379. package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGearPair.md +5 -3
  380. package/dist/docs/reference/{geometry → mechanical}/resolveKnuckleHinge.md +9 -7
  381. package/dist/docs/reference/{geometry → mechanical}/resolvePrintableThreadFitPolicy.md +5 -3
  382. package/dist/docs/reference/{geometry → mechanical}/resolveRackPitch.md +5 -3
  383. package/dist/docs/reference/{geometry → mechanical}/resolveThreadCircularSegments.md +7 -5
  384. package/dist/docs/reference/{geometry → mechanical}/sampleCylindricalGearOutline.md +9 -8
  385. package/dist/docs/reference/{geometry → mechanical}/sampleInternalCylindricalGearSpaceOutline.md +9 -8
  386. package/dist/docs/reference/{geometry → mechanical}/sampleRackToothPath.md +10 -8
  387. package/dist/docs/reference/{geometry → mechanical}/sampleThreadHelices.md +8 -6
  388. package/dist/docs/reference/{geometry → mechanical}/threadProfile.md +7 -3
  389. package/dist/docs/reference/mechanical.md +19 -0
  390. package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +128 -0
  391. package/dist/docs/reference/{geometry → mesh}/HeightfieldMeshLimits.md +5 -13
  392. package/dist/docs/reference/{geometry → mesh}/HeightfieldPreflight.md +3 -7
  393. package/dist/docs/reference/{geometry → mesh}/ImmutableTriangleMesh.md +5 -17
  394. package/dist/docs/reference/mesh/LoftMeshStation.md +32 -0
  395. package/dist/docs/reference/mesh/MeshRenderOptions.md +3 -3
  396. package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationFallbackReason.md +4 -8
  397. package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationOptions.md +4 -9
  398. package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationResult.md +4 -8
  399. package/dist/docs/reference/{geometry → mesh}/PlanarPatchQuality.md +4 -12
  400. package/dist/docs/reference/mesh/RenderMesh.md +19 -19
  401. package/dist/docs/reference/{geometry → mesh}/SolidMeshValidationOptions.md +4 -12
  402. package/dist/docs/reference/{geometry → mesh}/TriangleMesh.md +8 -12
  403. package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysis.md +5 -14
  404. package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysisOptions.md +4 -9
  405. package/dist/docs/reference/{geometry → mesh}/TriangleMeshInput.md +3 -7
  406. package/dist/docs/reference/{geometry → mesh}/TriangleMeshMeasurements.md +5 -14
  407. package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityOptions.md +4 -9
  408. package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityReport.md +3 -7
  409. package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignature.md +4 -9
  410. package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureOptions.md +3 -7
  411. package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureTolerances.md +3 -7
  412. package/dist/docs/reference/{geometry → mesh}/TriangleMeshTopologyAnalysis.md +5 -14
  413. package/dist/docs/reference/{geometry → mesh}/TriangleMeshValidationOptions.md +4 -9
  414. package/dist/docs/reference/mesh/analyze.md +26 -18
  415. package/dist/docs/reference/mesh/analyzeQuality.md +12 -12
  416. package/dist/docs/reference/mesh/bounds.md +5 -6
  417. package/dist/docs/reference/mesh/categories/operations.md +37 -4
  418. package/dist/docs/reference/mesh/centroid.md +5 -6
  419. package/dist/docs/reference/mesh/extrude.md +21 -20
  420. package/dist/docs/reference/mesh/heightfield.md +8 -8
  421. package/dist/docs/reference/mesh/immutable.md +7 -5
  422. package/dist/docs/reference/mesh/join.md +7 -7
  423. package/dist/docs/reference/mesh/loft.md +19 -18
  424. package/dist/docs/reference/mesh/optimizePlanarPatches.md +21 -21
  425. package/dist/docs/reference/mesh/preflightHeightfield.md +8 -8
  426. package/dist/docs/reference/mesh/preflightThreadSolid.md +22 -25
  427. package/dist/docs/reference/mesh/render.md +7 -5
  428. package/dist/docs/reference/mesh/reverse.md +7 -7
  429. package/dist/docs/reference/mesh/revolve.md +12 -14
  430. package/dist/docs/reference/mesh/signature.md +12 -12
  431. package/dist/docs/reference/mesh/sweep.md +96 -25
  432. package/dist/docs/reference/mesh/threadRidge.md +19 -18
  433. package/dist/docs/reference/mesh/threadSolid.md +23 -22
  434. package/dist/docs/reference/mesh/transform.md +8 -9
  435. package/dist/docs/reference/mesh/validate.md +11 -11
  436. package/dist/docs/reference/mesh/validateSolid.md +10 -10
  437. package/dist/docs/reference/mesh.md +8 -2
  438. package/dist/docs/reference/model/BoxEdge.md +23 -0
  439. package/dist/docs/reference/model/BoxEdgeSelection.md +27 -0
  440. package/dist/docs/reference/model/BoxEdgeTreatments.md +27 -0
  441. package/dist/docs/reference/{geometry → model}/BoxOptions.md +12 -12
  442. package/dist/docs/reference/model/CircleOptions.md +4 -5
  443. package/dist/docs/reference/model/CornerCutterOptions.md +93 -0
  444. package/dist/docs/reference/model/CornerCutterTreatment.md +53 -0
  445. package/dist/docs/reference/model/{HoleCutterOverrun.md → CutterOverrun.md} +8 -7
  446. package/dist/docs/reference/model/CylinderOptions.md +64 -0
  447. package/dist/docs/reference/model/DiagnosticOptions.md +2 -2
  448. package/dist/docs/reference/model/EdgeCutterOptions.md +129 -0
  449. package/dist/docs/reference/model/EllipseOptions.md +4 -5
  450. package/dist/docs/reference/model/EndTreatments.md +43 -0
  451. package/dist/docs/reference/model/ExtrudeOptions.md +153 -0
  452. package/dist/docs/reference/model/GenerateCallback.md +2 -2
  453. package/dist/docs/reference/model/GenerateContext.md +27 -3
  454. package/dist/docs/reference/model/GenerationDiagnostic.md +2 -2
  455. package/dist/docs/reference/model/GenerationError.md +2 -2
  456. package/dist/docs/reference/{geometry → model}/HeightfieldOptions.md +5 -23
  457. package/dist/docs/reference/model/HoleCutterOpening.md +27 -0
  458. package/dist/docs/reference/model/HoleCutterOptions.md +9 -22
  459. package/dist/docs/reference/model/HoleCutterRecess.md +5 -4
  460. package/dist/docs/reference/model/HullOptions.md +2 -3
  461. package/dist/docs/reference/model/ImmutableValue.md +2 -2
  462. package/dist/docs/reference/model/ImplicitOptions.md +3 -9
  463. package/dist/docs/reference/model/JoinOptions.md +2 -5
  464. package/dist/docs/reference/model/JoinTransition.md +2 -2
  465. package/dist/docs/reference/model/KnuckleHinge-type.md +2 -3
  466. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +2 -2
  467. package/dist/docs/reference/model/KnuckleHingeOptions.md +3 -5
  468. package/dist/docs/reference/model/KnuckleHingeWeb.md +2 -2
  469. package/dist/docs/reference/{geometry → model}/LoftCorrespondence.md +8 -11
  470. package/dist/docs/reference/{geometry → model}/LoftOptions.md +11 -16
  471. package/dist/docs/reference/model/LoftStation.md +4 -5
  472. package/dist/docs/reference/model/Memo.md +2 -2
  473. package/dist/docs/reference/model/ModelProgram.md +2 -2
  474. package/dist/docs/reference/model/PartDeclaration.md +4 -5
  475. package/dist/docs/reference/model/PartGeometry.md +3 -5
  476. package/dist/docs/reference/model/PartOptions.md +4 -5
  477. package/dist/docs/reference/model/PatternSource.md +4 -4
  478. package/dist/docs/reference/model/PlaneOptions.md +3 -7
  479. package/dist/docs/reference/model/PolygonOptions.md +2 -7
  480. package/dist/docs/reference/model/PrimitiveAttachment.md +50 -0
  481. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +111 -0
  482. package/dist/docs/reference/model/RectangleOptions.md +21 -26
  483. package/dist/docs/reference/model/RegularPolygonOptions.md +4 -37
  484. package/dist/docs/reference/{geometry → model}/RevolveOptions.md +15 -24
  485. package/dist/docs/reference/model/Section.md +115 -53
  486. package/dist/docs/reference/model/SectionHullOptions.md +2 -3
  487. package/dist/docs/reference/model/SectionInspection.md +2 -6
  488. package/dist/docs/reference/model/SectionOffsetJoin.md +2 -2
  489. package/dist/docs/reference/model/SectionOffsetOptions.md +2 -3
  490. package/dist/docs/reference/model/Solid.md +24 -12
  491. package/dist/docs/reference/model/SolidInspection.md +2 -6
  492. package/dist/docs/reference/model/SolidSegmentHit.md +2 -6
  493. package/dist/docs/reference/model/SphereOptions.md +27 -0
  494. package/dist/docs/reference/model/StarOptions.md +21 -23
  495. package/dist/docs/reference/model/SvgOrigin.md +2 -2
  496. package/dist/docs/reference/model/SvgPathSectionOptions.md +3 -5
  497. package/dist/docs/reference/model/SvgSectionOptions.md +3 -6
  498. package/dist/docs/reference/model/SweepOptions.md +109 -0
  499. package/dist/docs/reference/model/SweepOrientation.md +119 -0
  500. package/dist/docs/reference/model/SweepTransformOptions.md +105 -0
  501. package/dist/docs/reference/model/TextSectionOptions.md +2 -7
  502. package/dist/docs/reference/{geometry → model}/TorusOptions.md +11 -10
  503. package/dist/docs/reference/model/TubeOptions.md +84 -0
  504. package/dist/docs/reference/model/box.md +11 -10
  505. package/dist/docs/reference/model/categories/boolean-operations.md +9 -3
  506. package/dist/docs/reference/model/categories/bounded-surfaces.md +13 -1
  507. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +26 -7
  508. package/dist/docs/reference/model/categories/generation.md +11 -3
  509. package/dist/docs/reference/model/categories/hinges.md +7 -1
  510. package/dist/docs/reference/model/categories/mesh-inspection.md +7 -1
  511. package/dist/docs/reference/model/categories/primitives.md +34 -6
  512. package/dist/docs/reference/model/categories/sections.md +8 -2
  513. package/dist/docs/reference/model/categories/threads.md +8 -5
  514. package/dist/docs/reference/model/categories/transforms-placement.md +15 -10
  515. package/dist/docs/reference/model/circle.md +7 -3
  516. package/dist/docs/reference/model/cornerCutter.md +88 -0
  517. package/dist/docs/reference/model/cylinder.md +6 -5
  518. package/dist/docs/reference/model/edgeCutter.md +91 -0
  519. package/dist/docs/reference/model/ellipse.md +7 -3
  520. package/dist/docs/reference/model/extrude.md +29 -23
  521. package/dist/docs/reference/model/generate.md +4 -2
  522. package/dist/docs/reference/model/gridPattern.md +11 -4
  523. package/dist/docs/reference/model/heightfield.md +5 -5
  524. package/dist/docs/reference/model/holeCutter.md +26 -12
  525. package/dist/docs/reference/model/hull.md +2 -2
  526. package/dist/docs/reference/model/implicit.md +3 -3
  527. package/dist/docs/reference/model/internalThreadCutter.md +32 -21
  528. package/dist/docs/reference/model/intersect.md +7 -3
  529. package/dist/docs/reference/model/join.md +6 -2
  530. package/dist/docs/reference/model/knuckleHinge.md +2 -3
  531. package/dist/docs/reference/model/linearPattern.md +11 -4
  532. package/dist/docs/reference/model/loft.md +28 -24
  533. package/dist/docs/reference/model/minkowskiSum.md +3 -3
  534. package/dist/docs/reference/model/pathPattern.md +17 -8
  535. package/dist/docs/reference/model/polygon.md +8 -3
  536. package/dist/docs/reference/model/radialPattern.md +11 -4
  537. package/dist/docs/reference/model/rectangle.md +11 -7
  538. package/dist/docs/reference/model/regularPolygon.md +7 -3
  539. package/dist/docs/reference/model/revolve.md +18 -12
  540. package/dist/docs/reference/model/solidFromMesh.md +10 -6
  541. package/dist/docs/reference/model/sphere.md +7 -6
  542. package/dist/docs/reference/model/star.md +11 -7
  543. package/dist/docs/reference/model/stroke.md +12 -8
  544. package/dist/docs/reference/model/svgPathSection.md +10 -4
  545. package/dist/docs/reference/model/svgSection.md +10 -4
  546. package/dist/docs/reference/model/sweep.md +102 -25
  547. package/dist/docs/reference/model/textSection.md +7 -3
  548. package/dist/docs/reference/model/threadRidge.md +16 -17
  549. package/dist/docs/reference/model/threadedNut.md +25 -22
  550. package/dist/docs/reference/model/threadedRod.md +21 -18
  551. package/dist/docs/reference/model/torus.md +13 -12
  552. package/dist/docs/reference/model/tube.md +6 -5
  553. package/dist/docs/reference/model/union.md +7 -3
  554. package/dist/docs/reference/model.md +10 -5
  555. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +2 -2
  556. package/dist/docs/reference/text/VectorFont.md +38 -34
  557. package/dist/docs/reference/text/VectorFontOptions.md +2 -2
  558. package/dist/docs/reference/{geometry → text}/VectorTextArcBaseline.md +2 -11
  559. package/dist/docs/reference/{geometry → text}/VectorTextLayoutOptions.md +3 -11
  560. package/dist/docs/reference/{geometry → text}/VectorTextOptions.md +2 -10
  561. package/dist/docs/reference/text/categories/font-preparation.md +10 -1
  562. package/dist/docs/reference/text/prepareVectorFont.md +4 -2
  563. package/dist/docs/reference/text.md +7 -1
  564. package/dist/engine/execution.js +5 -3
  565. package/dist/engine/finalization.js +5 -5
  566. package/dist/engine/index.js +9 -4
  567. package/dist/engine/native/adapter.js +1 -1
  568. package/dist/engine/native/construction-mesh.js +15 -5
  569. package/dist/engine/native/context.js +10 -7
  570. package/dist/engine/native/index.js +1 -1
  571. package/dist/engine/native/material-components.js +2 -2
  572. package/dist/engine/native/mesh-observation.js +1 -1
  573. package/dist/engine/native/regions.js +44 -24
  574. package/dist/engine/native/scoped-primitives.js +3 -3
  575. package/dist/engine/native/scoped-threads.js +1 -13
  576. package/dist/engine/native/threads.js +2 -2
  577. package/dist/engine/native/transforms.js +2 -2
  578. package/dist/engine/operations/construction.js +77 -27
  579. package/dist/engine/operations/context.js +13 -6
  580. package/dist/engine/operations/cutters.js +112 -0
  581. package/dist/engine/operations/environment.js +2 -2
  582. package/dist/engine/operations/extrusion-finishing.js +42 -16
  583. package/dist/engine/operations/hole-cutter.js +125 -114
  584. package/dist/engine/operations/join-collar-profile.js +19 -19
  585. package/dist/engine/operations/join.js +86 -73
  586. package/dist/engine/operations/knuckle-hinge.js +25 -20
  587. package/dist/engine/operations/loft.js +9 -16
  588. package/dist/engine/operations/mechanical.js +4 -15
  589. package/dist/engine/operations/primitives/anchors.js +23 -19
  590. package/dist/engine/operations/primitives/construction.js +38 -12
  591. package/dist/engine/operations/primitives/correspondence.js +2 -2
  592. package/dist/engine/operations/primitives/profile-mesh.js +41 -80
  593. package/dist/engine/operations/primitives/profiles.js +5 -5
  594. package/dist/engine/operations/sections.js +8 -8
  595. package/dist/engine/operations/transforms.js +19 -39
  596. package/dist/engine/placement.js +3 -3
  597. package/dist/engine/recipe-realization.js +86 -30
  598. package/dist/engine/session/declarations.js +98 -0
  599. package/dist/engine/session/dependencies.js +81 -28
  600. package/dist/engine/session/graph.js +39 -137
  601. package/dist/engine/session/parameters.js +78 -0
  602. package/dist/engine/session/session.js +2 -2
  603. package/dist/engine/session/snapshot-cache.js +2 -2
  604. package/dist/engine/shape-anchors.js +13 -6
  605. package/dist/export/3mf.js +9 -2
  606. package/dist/export/capture.js +10 -6
  607. package/dist/export/glb.js +7 -2
  608. package/dist/export/stl.js +21 -6
  609. package/dist/geometry/{bounds.js → bounds/operations.js} +3 -1
  610. package/dist/geometry/{bounds-value.js → bounds/value.js} +20 -16
  611. package/dist/geometry/curves/evaluation.js +5 -6
  612. package/dist/geometry/curves/sampling.js +30 -6
  613. package/dist/geometry/{extrusion.js → extrusion/controls.js} +58 -35
  614. package/dist/geometry/extrusion/mesh.js +92 -0
  615. package/dist/geometry/extrusion/stations.js +35 -0
  616. package/dist/geometry/extrusion/twisted-chamfer.js +265 -0
  617. package/dist/geometry/immutable-buffer.js +7 -1
  618. package/dist/geometry/index.js +24 -32
  619. package/dist/geometry/{model-limits.js → limits.js} +1 -1
  620. package/dist/geometry/loft/{loft-correspondence.js → correspondence.js} +31 -20
  621. package/dist/geometry/loft/{loft-geometry.js → geometry.js} +15 -17
  622. package/dist/geometry/loft/mesh.js +53 -0
  623. package/dist/geometry/loft/{loft-options.js → options.js} +13 -11
  624. package/dist/geometry/loft/{loft-simple-mesh.js → simple-mesh.js} +26 -17
  625. package/dist/geometry/math/interpolation.js +9 -0
  626. package/dist/geometry/math/vector-value.js +12 -3
  627. package/dist/geometry/math/vector2.js +18 -5
  628. package/dist/geometry/math/vector3.js +28 -5
  629. package/dist/geometry/math-api.js +4 -0
  630. package/dist/geometry/mechanical/gear-motion.js +7 -5
  631. package/dist/geometry/mechanical/gears.js +21 -4
  632. package/dist/geometry/mechanical/knuckle-hinge.js +7 -5
  633. package/dist/geometry/mechanical/threads/fit.js +8 -2
  634. package/dist/geometry/mechanical/threads/helices.js +4 -2
  635. package/dist/geometry/mechanical/threads/mesh-plan.js +4 -2
  636. package/dist/geometry/mechanical/threads/mesh.js +12 -9
  637. package/dist/geometry/mechanical/threads/profiles.js +18 -4
  638. package/dist/geometry/mechanical/threads/solids.js +11 -2
  639. package/dist/geometry/mechanical-api.js +10 -0
  640. package/dist/geometry/mesh/{mesh-centroid.js → centroid.js} +2 -1
  641. package/dist/geometry/{heightfield.js → mesh/heightfield.js} +9 -5
  642. package/dist/geometry/{join-geometry.js → mesh/join-layers.js} +53 -59
  643. package/dist/geometry/mesh/{mesh.js → operations.js} +11 -18
  644. package/dist/geometry/mesh/{mesh-planar.js → planar.js} +8 -18
  645. package/dist/geometry/mesh/{mesh-quality.js → quality.js} +10 -42
  646. package/dist/geometry/mesh/{mesh-render.js → render-buffers.js} +22 -7
  647. package/dist/geometry/mesh/{mesh-signature.js → signature.js} +1 -1
  648. package/dist/geometry/mesh/{mesh-solid-intersections.js → solid-intersections.js} +2 -0
  649. package/dist/geometry/mesh/{mesh-solid.js → solid.js} +4 -4
  650. package/dist/geometry/mesh/triangle-quality.js +42 -0
  651. package/dist/geometry/mesh/winding.js +11 -0
  652. package/dist/geometry/{numeric.js → mesh/write-vertex.js} +1 -1
  653. package/dist/geometry/mesh-api.js +12 -11
  654. package/dist/geometry/paths/distribution.js +43 -0
  655. package/dist/geometry/paths/editing.js +76 -0
  656. package/dist/geometry/paths/frames.js +16 -11
  657. package/dist/geometry/paths/helix.js +1 -1
  658. package/dist/geometry/paths/resampling.js +46 -61
  659. package/dist/geometry/paths/{planar.js → rounding.js} +8 -67
  660. package/dist/geometry/paths/spline.js +116 -0
  661. package/dist/geometry/paths/traversal.js +107 -0
  662. package/dist/geometry/paths/{path-value.js → value.js} +97 -18
  663. package/dist/geometry/patterns/placements.js +20 -29
  664. package/dist/geometry/{patterns.js → patterns/transforms.js} +11 -7
  665. package/dist/geometry/primitives/cutters.js +70 -0
  666. package/dist/geometry/{cylinder.js → primitives/cylinder.js} +4 -4
  667. package/dist/geometry/{edge-finishing.js → primitives/edges.js} +5 -5
  668. package/dist/geometry/{primitive-resolvers.js → primitives/resolvers.js} +9 -9
  669. package/dist/geometry/primitives/sampling.js +41 -0
  670. package/dist/geometry/profiles/contour.js +19 -7
  671. package/dist/geometry/profiles/{match-profiles.js → matching.js} +9 -6
  672. package/dist/geometry/profiles/primitives/circle.js +1 -1
  673. package/dist/geometry/profiles/primitives/ellipse.js +2 -2
  674. package/dist/geometry/profiles/primitives/rectangle.js +8 -8
  675. package/dist/geometry/profiles/primitives/star.js +1 -1
  676. package/dist/geometry/profiles/side-profile.js +8 -5
  677. package/dist/geometry/profiles/validation.js +1 -1
  678. package/dist/geometry/{polygon-clipping.js → regions/clipping.js} +1 -1
  679. package/dist/geometry/{convex-offset.js → regions/convex-offset.js} +1 -1
  680. package/dist/geometry/{region-offset.js → regions/offset.js} +7 -5
  681. package/dist/geometry/{regions.js → regions/operations.js} +59 -22
  682. package/dist/geometry/{stroke-path.js → regions/stroke.js} +46 -20
  683. package/dist/geometry/{loft/loft-triangulation.js → regions/triangulation.js} +35 -2
  684. package/dist/geometry/revolve/{revolve-mesh.js → mesh.js} +9 -10
  685. package/dist/geometry/{circular-sampling.js → sampling/circular.js} +3 -3
  686. package/dist/geometry/{sampling-limits.js → sampling/limits.js} +6 -2
  687. package/dist/geometry/{resolution.js → sampling/resolution.js} +15 -14
  688. package/dist/geometry/svg/fill.js +4 -3
  689. package/dist/geometry/svg/import.js +47 -64
  690. package/dist/geometry/svg/path.js +3 -3
  691. package/dist/geometry/sweep/closed.js +55 -0
  692. package/dist/geometry/sweep/mesh.js +30 -0
  693. package/dist/geometry/{sweeps/sweep-open.js → sweep/open.js} +9 -24
  694. package/dist/geometry/{sweeps → sweep}/orientation.js +14 -11
  695. package/dist/geometry/sweep/seam.js +30 -0
  696. package/dist/geometry/{sweeps → sweep}/stations.js +75 -10
  697. package/dist/geometry/sweep/transforms.js +30 -0
  698. package/dist/geometry/{sweeps → sweep}/validation.js +4 -4
  699. package/dist/geometry/{text-contours.js → text/contours.js} +3 -3
  700. package/dist/geometry/{text-fitting.js → text/fitting.js} +4 -3
  701. package/dist/geometry/text/layout.js +1 -0
  702. package/dist/geometry/{transform3.js → transforms/affine3.js} +31 -46
  703. package/dist/geometry/{anchors.js → transforms/anchors.js} +43 -24
  704. package/dist/geometry/{transform-geometry.js → transforms/apply.js} +8 -5
  705. package/dist/geometry/{transform2.js → transforms/dimensions.js} +23 -19
  706. package/dist/geometry/transforms/frame.js +64 -0
  707. package/dist/geometry/{transform-matrix.js → transforms/matrix-input.js} +8 -1
  708. package/dist/geometry/{transform-value.js → transforms/value.js} +29 -11
  709. package/dist/index.js +3 -9
  710. package/dist/model/cutters.js +1 -0
  711. package/dist/model/execution-binding.js +3 -3
  712. package/dist/model/generation.js +2 -0
  713. package/dist/model/immutable-generation-data.js +2 -0
  714. package/dist/model/operations.js +130 -94
  715. package/dist/model/recipe-declaration.js +5 -7
  716. package/dist/text/index.js +3 -0
  717. package/dist/text/vector-text-layout.js +1 -0
  718. package/package.json +15 -17
  719. package/dist/api/export-3mf.d.ts +0 -2
  720. package/dist/api/export-glb.d.ts +0 -2
  721. package/dist/api/export-stl.d.ts +0 -2
  722. package/dist/docs/reference/geometry/BoxEdge.md +0 -17
  723. package/dist/docs/reference/geometry/BoxEdgeSelection.md +0 -24
  724. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +0 -25
  725. package/dist/docs/reference/geometry/CylinderOptions.md +0 -63
  726. package/dist/docs/reference/geometry/EndTreatments.md +0 -44
  727. package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +0 -144
  728. package/dist/docs/reference/geometry/ExtrudeOptions.md +0 -156
  729. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +0 -25
  730. package/dist/docs/reference/geometry/LoftMeshStation.md +0 -41
  731. package/dist/docs/reference/geometry/PrimitiveAttachment.md +0 -39
  732. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +0 -114
  733. package/dist/docs/reference/geometry/SphereOptions.md +0 -25
  734. package/dist/docs/reference/geometry/SweepOptions.md +0 -127
  735. package/dist/docs/reference/geometry/SweepOrientation.md +0 -127
  736. package/dist/docs/reference/geometry/TubeOptions.md +0 -72
  737. package/dist/docs/reference/geometry/add2.md +0 -43
  738. package/dist/docs/reference/geometry/add3.md +0 -49
  739. package/dist/docs/reference/geometry/applyTransformDirection3.md +0 -52
  740. package/dist/docs/reference/geometry/applyTransformPoint3.md +0 -50
  741. package/dist/docs/reference/geometry/categories/meshes.md +0 -68
  742. package/dist/docs/reference/geometry/composeTransform3.md +0 -51
  743. package/dist/docs/reference/geometry/cross2.md +0 -43
  744. package/dist/docs/reference/geometry/cross3.md +0 -49
  745. package/dist/docs/reference/geometry/distance2.md +0 -43
  746. package/dist/docs/reference/geometry/distance3.md +0 -43
  747. package/dist/docs/reference/geometry/dot2.md +0 -43
  748. package/dist/docs/reference/geometry/dot3.md +0 -49
  749. package/dist/docs/reference/geometry/eulerTransform3.md +0 -49
  750. package/dist/docs/reference/geometry/frameTransform3.md +0 -55
  751. package/dist/docs/reference/geometry/inverseTransform3.md +0 -41
  752. package/dist/docs/reference/geometry/length2.md +0 -37
  753. package/dist/docs/reference/geometry/length3.md +0 -37
  754. package/dist/docs/reference/geometry/lerp2.md +0 -49
  755. package/dist/docs/reference/geometry/lerp3.md +0 -49
  756. package/dist/docs/reference/geometry/normalize2.md +0 -46
  757. package/dist/docs/reference/geometry/normalize3.md +0 -46
  758. package/dist/docs/reference/geometry/projectOntoPlane3.md +0 -43
  759. package/dist/docs/reference/geometry/rotate2.md +0 -43
  760. package/dist/docs/reference/geometry/rotationTransform3.md +0 -60
  761. package/dist/docs/reference/geometry/scale2.md +0 -43
  762. package/dist/docs/reference/geometry/scale3.md +0 -49
  763. package/dist/docs/reference/geometry/scaleTransform3.md +0 -45
  764. package/dist/docs/reference/geometry/subtract2.md +0 -43
  765. package/dist/docs/reference/geometry/subtract3.md +0 -49
  766. package/dist/docs/reference/geometry/transformDeterminant3.md +0 -43
  767. package/dist/docs/reference/geometry/translationTransform3.md +0 -42
  768. package/dist/docs/reference/geometry/validateRigidTransform3.md +0 -41
  769. package/dist/docs/reference/geometry/validateTransform3.md +0 -54
  770. package/dist/docs/reference/model/Profile.md +0 -30
  771. package/dist/docs/reference/model/categories/explicit-profiles.md +0 -21
  772. package/dist/docs/reference/model/matchProfiles.md +0 -48
  773. package/dist/docs/reference/model/preflightInternalThreadCutter.md +0 -93
  774. package/dist/docs/reference/model/preflightThreadedNut.md +0 -109
  775. package/dist/docs/reference/model/preflightThreadedRod.md +0 -93
  776. package/dist/engine/operations/patterns.js +0 -47
  777. package/dist/geometry/loft/loft.js +0 -105
  778. package/dist/geometry/mechanical/index.js +0 -14
  779. package/dist/geometry/primitive-resolution.js +0 -20
  780. package/dist/geometry/svg/index.js +0 -1
  781. package/dist/geometry/sweeps/options.js +0 -29
  782. package/dist/geometry/sweeps/sweep-closed.js +0 -96
  783. package/dist/geometry/sweeps/sweep-mesh.js +0 -32
  784. /package/dist/geometry/mechanical/{standards.js → fastener-standards.js} +0 -0
  785. /package/dist/geometry/mesh/{mesh-edge-table.js → edge-table.js} +0 -0
  786. /package/dist/geometry/mesh/{mesh-types.js → types.js} +0 -0
  787. /package/dist/geometry/mesh/{mesh-view-cache.js → view-cache.js} +0 -0
  788. /package/dist/geometry/{primitive-options.js → primitives/options.js} +0 -0
  789. /package/dist/geometry/{text-layout.js → sweep/options.js} +0 -0
@@ -12,6 +12,8 @@ Returns the signed area of a non-duplicated loop; positive means CCW.
12
12
 
13
13
  **`loop`** · [`Contour`](Contour.md) · Required
14
14
 
15
+ XY loop in millimetres, with implicit closure; not validated.
16
+
15
17
 
16
18
 
17
19
  ## Returns
@@ -25,12 +27,12 @@ Returns the signed area of a non-duplicated loop; positive means CCW.
25
27
 
26
28
  ## Guides
27
29
 
28
- - [Choose a geometry representation](../../guides/geometry-values.md#geometry-vocabulary)
30
+ - [Choose a geometry representation](../../guides/geometry-values.md#material-boundaries-and-matching-profiles)
29
31
 
30
- ## Supported imports
32
+ ## Import
31
33
 
32
34
  ```ts
33
35
  import { signedContourArea } from "@metamesh/modeling/geometry";
34
36
  ```
35
37
 
36
- Package: `@metamesh/modeling@0.19.0`.
38
+ Package: `@metamesh/modeling@0.20.0`.
@@ -0,0 +1,68 @@
1
+ # spline2
2
+
3
+ Samples an immutable XY centripetal Catmull–Rom path through every waypoint in traversal order. Open endpoints use one-sided secants; closed paths are periodic and omit their repeated seam. Adjacent duplicate waypoints reject. The default physical policy bounds each cubic control hull; segmentsPerSpan instead selects exact uniform parameters per span. Sampling never coarsens to fit maxPathPoints. Invalid topology, nonfinite arithmetic, and exhausted budgets throw GeometryError.
4
+
5
+ **spline2**(`input`: [`Path2Input`](Path2Input.md), `options?`: [`SplineOptions`](SplineOptions.md)): [`Path2`](Path2-type.md)
6
+
7
+
8
+
9
+ ## Example
10
+
11
+ ```ts
12
+ const route = spline2([[0, 0], [10, 8], [25, 0]], { resolution: { maxChordError: 0.02 } });
13
+ ```
14
+
15
+ ## Parameters
16
+
17
+ <a id="input"></a>
18
+
19
+ **`input`** · [`Path2Input`](Path2Input.md) · Required
20
+
21
+ XY waypoints in millimetres; path values retain closure.
22
+
23
+
24
+
25
+ <a id="options"></a>
26
+
27
+ **`options`** · [`SplineOptions`](SplineOptions.md) · Optional
28
+
29
+ - [`closed`](SplineOptions.md#closed) · `boolean` · Optional
30
+
31
+ Closure defaults to path metadata or false for tuples. Closed inputs omit the repeated seam.
32
+
33
+ - [`segmentsPerSpan`](SplineOptions.md#segmentsperspan) · `number` · Optional
34
+
35
+ Exact parameter intervals per waypoint span; overrides physical sampling. Must be a positive safe integer.
36
+
37
+ - [`resolution`](SplineOptions.md#resolution) · [`GeometryResolution`](GeometryResolution.md) · Optional
38
+
39
+ Millimetre chord-error and maximum-segment-length policy, applied to every cubic control hull.
40
+
41
+ - [`limits`](SplineOptions.md#limits) · `Partial`\<[`GeometrySamplingLimits`](GeometrySamplingLimits.md)\> · Optional
42
+
43
+ Input and aggregate output ceilings; maxPathPoints defaults to 100000.
44
+
45
+
46
+
47
+ ## Returns
48
+
49
+ [`Path2`](Path2-type.md)
50
+
51
+
52
+ ## Related APIs
53
+
54
+ - [Path2](Path2-type.md)
55
+ - [Path2Input](Path2Input.md)
56
+ - [SplineOptions](SplineOptions.md)
57
+
58
+ ## Guides
59
+
60
+ - [Path queries and closure-preserving interchange](../../guides/geometry-values.md#keep-path-closure-and-traversal)
61
+
62
+ ## Import
63
+
64
+ ```ts
65
+ import { spline2 } from "@metamesh/modeling/geometry";
66
+ ```
67
+
68
+ Package: `@metamesh/modeling@0.20.0`.
@@ -0,0 +1,62 @@
1
+ # spline3
2
+
3
+ Samples an immutable XYZ centripetal Catmull–Rom path with the same interpolation, seam, sampling, and ceiling rules as spline2.
4
+
5
+ **spline3**(`input`: [`Path3Input`](Path3Input.md), `options?`: [`SplineOptions`](SplineOptions.md)): [`Path3`](Path3-type.md)
6
+
7
+
8
+
9
+ ## Parameters
10
+
11
+ <a id="input"></a>
12
+
13
+ **`input`** · [`Path3Input`](Path3Input.md) · Required
14
+
15
+ XYZ waypoints in millimetres; path values retain closure.
16
+
17
+
18
+
19
+ <a id="options"></a>
20
+
21
+ **`options`** · [`SplineOptions`](SplineOptions.md) · Optional
22
+
23
+ - [`closed`](SplineOptions.md#closed) · `boolean` · Optional
24
+
25
+ Closure defaults to path metadata or false for tuples. Closed inputs omit the repeated seam.
26
+
27
+ - [`segmentsPerSpan`](SplineOptions.md#segmentsperspan) · `number` · Optional
28
+
29
+ Exact parameter intervals per waypoint span; overrides physical sampling. Must be a positive safe integer.
30
+
31
+ - [`resolution`](SplineOptions.md#resolution) · [`GeometryResolution`](GeometryResolution.md) · Optional
32
+
33
+ Millimetre chord-error and maximum-segment-length policy, applied to every cubic control hull.
34
+
35
+ - [`limits`](SplineOptions.md#limits) · `Partial`\<[`GeometrySamplingLimits`](GeometrySamplingLimits.md)\> · Optional
36
+
37
+ Input and aggregate output ceilings; maxPathPoints defaults to 100000.
38
+
39
+
40
+
41
+ ## Returns
42
+
43
+ [`Path3`](Path3-type.md)
44
+
45
+
46
+ ## Related APIs
47
+
48
+ - [Path3](Path3-type.md)
49
+ - [Path3Input](Path3Input.md)
50
+ - [SplineOptions](SplineOptions.md)
51
+
52
+ ## Guides
53
+
54
+ - [Path queries and closure-preserving interchange](../../guides/geometry-values.md#keep-path-closure-and-traversal)
55
+
56
+ ## Import
57
+
58
+ ```ts
59
+ import { spline3 } from "@metamesh/modeling/geometry";
60
+ ```
61
+
62
+ Package: `@metamesh/modeling@0.20.0`.
@@ -52,12 +52,12 @@ readonly [`Vector2Data`](Vector2Data.md)[]
52
52
 
53
53
  ## Guides
54
54
 
55
- - [Choose a geometry representation](../../guides/geometry-values.md#geometry-vocabulary)
55
+ - [Choose a geometry representation](../../guides/geometry-values.md#material-boundaries-and-matching-profiles)
56
56
 
57
- ## Supported imports
57
+ ## Import
58
58
 
59
59
  ```ts
60
60
  import { starContour } from "@metamesh/modeling/geometry";
61
61
  ```
62
62
 
63
- Package: `@metamesh/modeling@0.19.0`.
63
+ Package: `@metamesh/modeling@0.20.0`.
@@ -8,8 +8,9 @@ Converts a sampled millimetre path into the filled region covered by a centered
8
8
 
9
9
  Closed paths omit a duplicated seam point. Zero-length sampled segments are ignored, while the
10
10
  effective path must still contain visible length. Round caps and joins use deterministic physical
11
- resolution. Bevels fill the outer corner triangle; miters extend the outer edges to their
12
- intersection, falling back to bevels above SVG's default miter limit of 4.
11
+ resolution. Caps are tangent-aligned semicircles with `ceil(circularSegments / 2)` intervals,
12
+ following [resolveArcSegments](resolveArcSegments.md). Bevels fill the outer corner triangle; miters extend the
13
+ outer edges to their intersection, falling back to bevels above SVG's default miter limit of 4.
13
14
 
14
15
  ## Parameters
15
16
 
@@ -17,6 +18,8 @@ intersection, falling back to bevels above SVG's default miter limit of 4.
17
18
 
18
19
  **`path`** · [`Path2Input`](Path2Input.md) · Required
19
20
 
21
+ Sampled XY path in millimetres; path values supply closure.
22
+
20
23
 
21
24
 
22
25
  <a id="options"></a>
@@ -45,7 +48,7 @@ intersection, falling back to bevels above SVG's default miter limit of 4.
45
48
 
46
49
  - [`resolution`](StrokeOptions.md#resolution) · [`GeometryResolution`](GeometryResolution.md) · Optional
47
50
 
48
- Physical tessellation policy for round caps and joins.
51
+ Physical tessellation for round features; caps use tangent-aligned 180-degree arcs.
49
52
 
50
53
 
51
54
 
@@ -64,10 +67,10 @@ intersection, falling back to bevels above SVG's default miter limit of 4.
64
67
 
65
68
  - [SVG preflight work and guarantees](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
66
69
 
67
- ## Supported imports
70
+ ## Import
68
71
 
69
72
  ```ts
70
73
  import { strokeRegionData } from "@metamesh/modeling/geometry";
71
74
  ```
72
75
 
73
- Package: `@metamesh/modeling@0.19.0`.
76
+ Package: `@metamesh/modeling@0.20.0`.
@@ -25,6 +25,8 @@ Use `toData()` for frozen matrix interchange.
25
25
 
26
26
  **`input`** · [`Transform2Input`](Transform2Input.md) · Optional
27
27
 
28
+ XY affine value or row-major 3x3 matrix; copied. Defaults to identity.
29
+
28
30
 
29
31
 
30
32
  ## Returns
@@ -40,16 +42,12 @@ Use `toData()` for frozen matrix interchange.
40
42
  ## Guides
41
43
 
42
44
  - [Reusable transforms and vector math](../../guides/transforms-and-placement.md#reuse-a-transform-across-shapes-and-coordinates)
43
- - [Fluent values and tuple kernels](../../guides/geometry-values.md#choose-fluent-values-or-standalone-algorithms)
44
-
45
- ## Supported imports
45
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
46
46
 
47
- ```ts
48
- import { transform2 } from "@metamesh/modeling";
49
- ```
47
+ ## Import
50
48
 
51
49
  ```ts
52
50
  import { transform2 } from "@metamesh/modeling/geometry";
53
51
  ```
54
52
 
55
- Package: `@metamesh/modeling@0.19.0`.
53
+ Package: `@metamesh/modeling@0.20.0`.
@@ -13,13 +13,28 @@ const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
13
13
  placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
14
14
  ```
15
15
 
16
- Values and data are copied and validated.
16
+ ## Example: Convert a coordinate frame to an affine value
17
+
18
+ ```ts
19
+ const local = frame3({
20
+ origin: [10, 0, 0],
21
+ xAxis: [0, 1, 0],
22
+ yAxis: [-1, 0, 0],
23
+ zAxis: [0, 0, 1],
24
+ });
25
+ const placement = transform3(local);
26
+ placement.applyPoint([2, 0, 0]).toData(); // [10, 2, 0]
27
+ ```
28
+
29
+ Values, matrices, and frames are copied and validated.
17
30
  Calls apply in written order; rotations use degrees and pivots use current world coordinates.
18
31
  Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
19
- Use frameTransform3(frame) as the input for existing orthonormal frame placement.
32
+ A frame supplies its origin in millimetres and right-handed orthonormal axes as local-to-world
33
+ columns. Invalid axes reject; unit-length roundoff is normalized within geometry tolerance.
20
34
 
21
35
  Use `toData()` for frozen matrix interchange.
22
- [composeTransform3](composeTransform3.md) takes matrices in after, before order.
36
+ [multiplyTransform3](../math/multiplyTransform3.md) multiplies left and right matrices;
37
+ the right factor acts first on column vectors.
23
38
 
24
39
  ## Parameters
25
40
 
@@ -27,6 +42,8 @@ Use `toData()` for frozen matrix interchange.
27
42
 
28
43
  **`input`** · [`Transform3Input`](Transform3Input.md) · Optional
29
44
 
45
+ XYZ affine value, row-major 4x4 matrix, or frame; copied. Defaults to identity.
46
+
30
47
 
31
48
 
32
49
  ## Returns
@@ -42,16 +59,12 @@ Use `toData()` for frozen matrix interchange.
42
59
  ## Guides
43
60
 
44
61
  - [Reusable transforms and vector math](../../guides/transforms-and-placement.md#reuse-a-transform-across-shapes-and-coordinates)
45
- - [Fluent values and tuple kernels](../../guides/geometry-values.md#choose-fluent-values-or-standalone-algorithms)
46
-
47
- ## Supported imports
62
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
48
63
 
49
- ```ts
50
- import { transform3 } from "@metamesh/modeling";
51
- ```
64
+ ## Import
52
65
 
53
66
  ```ts
54
67
  import { transform3 } from "@metamesh/modeling/geometry";
55
68
  ```
56
69
 
57
- Package: `@metamesh/modeling@0.19.0`.
70
+ Package: `@metamesh/modeling@0.20.0`.
@@ -12,12 +12,16 @@ Transforms serialized polygon data with reflection-safe winding, without an engi
12
12
 
13
13
  **`region`** · [`RegionData`](RegionData.md) · Required
14
14
 
15
+ Millimetre polygons whose boundaries are normalized before placement.
16
+
15
17
 
16
18
 
17
19
  <a id="transform"></a>
18
20
 
19
21
  **`transform`** · [`Transform2Input`](Transform2Input.md) · Required
20
22
 
23
+ Planar affine placement; reflections preserve winding.
24
+
21
25
 
22
26
 
23
27
  <a id="tolerance"></a>
@@ -39,12 +43,12 @@ Transforms serialized polygon data with reflection-safe winding, without an engi
39
43
 
40
44
  ## Guides
41
45
 
42
- - [Choose a geometry representation](../../guides/geometry-values.md#geometry-vocabulary)
46
+ - [Choose a geometry representation](../../guides/geometry-values.md#material-boundaries-and-matching-profiles)
43
47
 
44
- ## Supported imports
48
+ ## Import
45
49
 
46
50
  ```ts
47
51
  import { transformRegionData } from "@metamesh/modeling/geometry";
48
52
  ```
49
53
 
50
- Package: `@metamesh/modeling@0.19.0`.
54
+ Package: `@metamesh/modeling@0.20.0`.
@@ -1,6 +1,6 @@
1
1
  # triangulateContour
2
2
 
3
- Ear-clips one normalized simple CCW loop into stable local vertex indices.
3
+ Triangulates one simple loop into indices of its normalized CCW vertex order.
4
4
 
5
5
  **triangulateContour**(`loop`: [`Contour`](Contour.md)): `Uint32Array`
6
6
 
@@ -12,6 +12,8 @@ Ear-clips one normalized simple CCW loop into stable local vertex indices.
12
12
 
13
13
  **`loop`** · [`Contour`](Contour.md) · Required
14
14
 
15
+ Boundary to normalize; indices address its cleaned CCW order.
16
+
15
17
 
16
18
 
17
19
  ## Returns
@@ -25,12 +27,12 @@ Ear-clips one normalized simple CCW loop into stable local vertex indices.
25
27
 
26
28
  ## Guides
27
29
 
28
- - [Choose a geometry representation](../../guides/geometry-values.md#geometry-vocabulary)
30
+ - [Choose a geometry representation](../../guides/geometry-values.md#material-boundaries-and-matching-profiles)
29
31
 
30
- ## Supported imports
32
+ ## Import
31
33
 
32
34
  ```ts
33
35
  import { triangulateContour } from "@metamesh/modeling/geometry";
34
36
  ```
35
37
 
36
- Package: `@metamesh/modeling@0.19.0`.
38
+ Package: `@metamesh/modeling@0.20.0`.
@@ -11,7 +11,7 @@ and overflow throw `NON_FINITE_VALUE` GeometryError.
11
11
  Use transform2().applyDirection(value) for rotations and nonuniform scaling.
12
12
 
13
13
  Use `toData()` for frozen tuple interchange, or
14
- [normalize2](normalize2.md) for tuple-based normalization in numerical loops.
14
+ [normalize2](../math/normalize2.md) for tuple-based normalization in numerical loops.
15
15
 
16
16
  ## Parameters
17
17
 
@@ -19,6 +19,8 @@ Use `toData()` for frozen tuple interchange, or
19
19
 
20
20
  **`input`** · [`Vector2Input`](Vector2Input.md) · Required
21
21
 
22
+ Finite XY tuple or vector; coordinates are copied without changing their units.
23
+
22
24
 
23
25
 
24
26
  ## Returns
@@ -34,16 +36,12 @@ Use `toData()` for frozen tuple interchange, or
34
36
  ## Guides
35
37
 
36
38
  - [Reusable transforms and vector math](../../guides/transforms-and-placement.md#reuse-a-transform-across-shapes-and-coordinates)
37
- - [Fluent values and tuple kernels](../../guides/geometry-values.md#choose-fluent-values-or-standalone-algorithms)
38
-
39
- ## Supported imports
39
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
40
40
 
41
- ```ts
42
- import { vector2 } from "@metamesh/modeling";
43
- ```
41
+ ## Import
44
42
 
45
43
  ```ts
46
44
  import { vector2 } from "@metamesh/modeling/geometry";
47
45
  ```
48
46
 
49
- Package: `@metamesh/modeling@0.19.0`.
47
+ Package: `@metamesh/modeling@0.20.0`.
@@ -9,6 +9,8 @@ Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the
9
9
  ## Example
10
10
 
11
11
  ```ts
12
+ import { vector3 } from "@metamesh/modeling/geometry";
13
+
12
14
  const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
13
15
  const alignment = direction.dot([0, 0, 1]);
14
16
  ```
@@ -18,7 +20,7 @@ and overflow throw `NON_FINITE_VALUE` GeometryError.
18
20
  Use transform3().applyDirection(value) for rotations and nonuniform scaling.
19
21
 
20
22
  Use `toData()` for frozen tuple interchange, or
21
- [normalize3](normalize3.md) for tuple-based normalization in numerical loops.
23
+ [normalize3](../math/normalize3.md) for tuple-based normalization in numerical loops.
22
24
 
23
25
  ## Parameters
24
26
 
@@ -26,6 +28,8 @@ Use `toData()` for frozen tuple interchange, or
26
28
 
27
29
  **`input`** · [`Vector3Input`](Vector3Input.md) · Required
28
30
 
31
+ Finite XYZ tuple or vector; coordinates are copied without changing their units.
32
+
29
33
 
30
34
 
31
35
  ## Returns
@@ -41,16 +45,12 @@ Use `toData()` for frozen tuple interchange, or
41
45
  ## Guides
42
46
 
43
47
  - [Reusable transforms and vector math](../../guides/transforms-and-placement.md#reuse-a-transform-across-shapes-and-coordinates)
44
- - [Fluent values and tuple kernels](../../guides/geometry-values.md#choose-fluent-values-or-standalone-algorithms)
48
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
45
49
 
46
- ## Supported imports
47
-
48
- ```ts
49
- import { vector3 } from "@metamesh/modeling";
50
- ```
50
+ ## Import
51
51
 
52
52
  ```ts
53
53
  import { vector3 } from "@metamesh/modeling/geometry";
54
54
  ```
55
55
 
56
- Package: `@metamesh/modeling@0.19.0`.
56
+ Package: `@metamesh/modeling@0.20.0`.
@@ -1,32 +1,27 @@
1
1
  # Geometry foundations
2
2
 
3
- Pure curves, profiles, regions, meshes, transforms, and mechanical construction without initializing a native engine.
3
+ Pure geometry values, curves, profiles, regions, and placement algorithms without initializing a native engine.
4
4
 
5
- Use `@metamesh/modeling/geometry` for runtime-neutral calculations with curves, profiles, transforms, regions, meshes, SVG, and mechanical geometry. These helpers work without an SDK or native engine.
5
+ Use @metamesh/modeling/geometry for immutable vectors, transforms, bounds, paths, plain geometry descriptors, contours, identified profiles, regions, placement, sampling, and diagnostics. Pure calculations require no engine. Values accept matching data and expose toData() for frozen interchange. Descriptors remain plain readonly records.
6
6
 
7
- ```ts
8
- import { sampleCurve2, rectangleContour } from "@metamesh/modeling/geometry";
9
- const arc = sampleCurve2({ kind: "arc", center: [0, 0], radius: 10, sweepAngle: 90 });
10
- const contour = rectangleContour({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
11
- ```
12
-
13
- Lengths use millimetres. Winding and closing conventions are explicit. The [mesh module](mesh.md) constructs and processes ordinary triangle buffers; `mesh.join` concatenates without Boolean union. Mesh inspection reads mutable external arrays afresh. Predictable allocations are checked against limits before sampling.
14
-
15
- Use `bounds2`/`bounds3` for immutable measurement queries and `Bounds2Data`/`Bounds3Data` for min/max records. Standalone bounds helpers fit and arrange parts from either form. Fit text vector paths before sampling to retain physical tolerance.
16
-
17
- Choose [fluent values or standalone algorithms](../guides/geometry-values.md#choose-fluent-values-or-standalone-algorithms), compare [geometry representations](../guides/geometry-values.md#geometry-vocabulary), and check [preflight guarantees](../guides/resolution-and-inspection.md#check-preflight-guarantees).
7
+ Numerical tuple and matrix kernels live in /geometry/math; mechanical dimensions and preflights live in /geometry/mechanical; triangle-buffer operations live in /geometry/mesh. Every public value and type has one import path.
18
8
 
19
9
  ## Categories
20
10
 
21
- - [Mechanical foundations](geometry/categories/mechanical.md) — Resolve gears, knuckle joints, fastener standards, thread profiles, fit, and predictable allocations.
22
- - [Triangle meshes and surfaces](geometry/categories/meshes.md) — Data, options, and reports for triangle mesh construction and processing.
11
+ - [Immutable geometry data](geometry/categories/immutable-data.md) — Capture reusable numeric data and construction placement contracts.
23
12
  - [SVG and vector layouts](geometry/categories/vector-import.md) — Parse painted SVG within limits and work with explicitly prepared text geometry.
24
13
  - [Profiles and regions](geometry/categories/profiles-regions.md) — Define winding, holes, stable profile landmarks, and reusable planar boundaries.
25
- - [Curves and paths](geometry/categories/curves-paths.md) — Sample reusable lines, arcs, cubic curves, and path frames with explicit physical sampling settings.
14
+ - [Curves and paths](geometry/categories/curves-paths.md) — Query, edit, refine, and interpolate paths with explicit closure and physical sampling settings.
26
15
  - [Bounds and layout](geometry/categories/bounds-layout.md) — Measure finite bounds, test positioned containment, and fit or arrange geometry.
27
16
  - [Pattern placement](geometry/categories/pattern-placement.md) — Calculate pure linear, radial, grid, and path transforms.
28
- - [Transforms and vector math](geometry/categories/transforms-math.md) — Build reusable placements and calculate with immutable fluent vectors or tuple math.
17
+ - [Vectors, transforms, and attachment](geometry/categories/transforms-math.md) — Calculate with immutable values and place geometry using frames and anchors.
29
18
  - [Resolution and errors](geometry/categories/resolution-errors.md) — Set physical sampling and numerical tolerances, and understand errors in context.
30
19
  - [Primitive options](geometry/categories/primitive-options.md) — Configure dimensional primitives and edge treatments with shared options.
31
20
 
32
- Package: `@metamesh/modeling@0.19.0`.
21
+ ## Import
22
+
23
+ ```ts
24
+ import * as geometry from "@metamesh/modeling/geometry";
25
+ ```
26
+
27
+ Package: `@metamesh/modeling@0.20.0`.
@@ -61,13 +61,12 @@ Excluded when the angle is expressed in radians.
61
61
 
62
62
  ## Guides
63
63
 
64
- - [Reusable transforms and vector math](../../guides/transforms-and-placement.md#reuse-a-transform-across-shapes-and-coordinates)
65
- - [Fluent values and tuple kernels](../../guides/geometry-values.md#choose-fluent-values-or-standalone-algorithms)
64
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
66
65
 
67
- ## Supported imports
66
+ ## Import
68
67
 
69
68
  ```ts
70
- import type { AxisAngleRotation3 } from "@metamesh/modeling/geometry";
69
+ import type { AxisAngleRotation3 } from "@metamesh/modeling/geometry/math";
71
70
  ```
72
71
 
73
- Package: `@metamesh/modeling@0.19.0`.
72
+ Package: `@metamesh/modeling@0.20.0`.
@@ -0,0 +1,20 @@
1
+ # IDENTITY_TRANSFORM3
2
+
3
+ Identity transform, safe to share because it is frozen.
4
+
5
+ `const` **IDENTITY\_TRANSFORM3**: [`Transform3Data`](../geometry/Transform3Data.md)
6
+
7
+
8
+
9
+
10
+ ## Guides
11
+
12
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
13
+
14
+ ## Import
15
+
16
+ ```ts
17
+ import { IDENTITY_TRANSFORM3 } from "@metamesh/modeling/geometry/math";
18
+ ```
19
+
20
+ Package: `@metamesh/modeling@0.20.0`.
@@ -0,0 +1,38 @@
1
+ # add2
2
+
3
+ Adds two finite XY vectors component-wise.
4
+
5
+ `const` **add2**: (`a`: [`Vector2Data`](../geometry/Vector2Data.md), `b`: [`Vector2Data`](../geometry/Vector2Data.md)) => [`Vector2Data`](../geometry/Vector2Data.md)
6
+
7
+
8
+
9
+ ## Parameters
10
+
11
+ <a id="a"></a>
12
+
13
+ **`a`** · [`Vector2Data`](../geometry/Vector2Data.md) · Required
14
+
15
+
16
+
17
+ <a id="b"></a>
18
+
19
+ **`b`** · [`Vector2Data`](../geometry/Vector2Data.md) · Required
20
+
21
+
22
+
23
+ ## Returns
24
+
25
+ [`Vector2Data`](../geometry/Vector2Data.md)
26
+
27
+
28
+ ## Guides
29
+
30
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
31
+
32
+ ## Import
33
+
34
+ ```ts
35
+ import { add2 } from "@metamesh/modeling/geometry/math";
36
+ ```
37
+
38
+ Package: `@metamesh/modeling@0.20.0`.
@@ -0,0 +1,46 @@
1
+ # add3
2
+
3
+ Adds two finite XYZ vectors component-wise.
4
+
5
+ `const` **add3**: (`a`: [`Vector3Data`](../geometry/Vector3Data.md), `b`: [`Vector3Data`](../geometry/Vector3Data.md)) => [`Vector3Data`](../geometry/Vector3Data.md)
6
+
7
+
8
+
9
+ ## Example
10
+
11
+ ```ts
12
+ import { add3 } from "@metamesh/modeling/geometry/math";
13
+
14
+ add3([1, 2, 3], [4, 5, 6]); // [5, 7, 9]
15
+ ```
16
+
17
+ ## Parameters
18
+
19
+ <a id="a"></a>
20
+
21
+ **`a`** · [`Vector3Data`](../geometry/Vector3Data.md) · Required
22
+
23
+
24
+
25
+ <a id="b"></a>
26
+
27
+ **`b`** · [`Vector3Data`](../geometry/Vector3Data.md) · Required
28
+
29
+
30
+
31
+ ## Returns
32
+
33
+ [`Vector3Data`](../geometry/Vector3Data.md)
34
+
35
+
36
+ ## Guides
37
+
38
+ - [Fluent values and tuple kernels](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
39
+
40
+ ## Import
41
+
42
+ ```ts
43
+ import { add3 } from "@metamesh/modeling/geometry/math";
44
+ ```
45
+
46
+ Package: `@metamesh/modeling@0.20.0`.