@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
@@ -1,93 +0,0 @@
1
- # preflightInternalThreadCutter
2
-
3
- Checks compensated cutter dimensions and conservative mesh estimates against host output limits.
4
-
5
- **preflightInternalThreadCutter**(`options`: [`InternalThreadCutterOptions`](../geometry/InternalThreadCutterOptions.md)): [`ThreadSolidPreflight`](../geometry/ThreadSolidPreflight.md)
6
-
7
-
8
-
9
- Requires active synchronous model execution and uses its resolution and limits. Estimates include
10
- the one-pitch extension beyond each requested face, without mesh buffers or native objects.
11
- Mesh validity, native construction, and aggregate output limits are checked later.
12
-
13
- ## Parameters
14
-
15
- <a id="options"></a>
16
-
17
- **`options`** · [`InternalThreadCutterOptions`](../geometry/InternalThreadCutterOptions.md) · Required
18
-
19
- - [`nominalMajorDiameter`](../geometry/InternalThreadCutterOptions.md#nominalmajordiameter) · `number` · Required
20
-
21
- Nominal major diameter before female compensation and faceting correction.
22
-
23
- - [`length`](../geometry/InternalThreadCutterOptions.md#length) · `number` · Required
24
-
25
- Total threaded axial length in millimetres.
26
-
27
- - [`profile`](../geometry/InternalThreadCutterOptions.md#profile) · [`ThreadProfile`](../geometry/ThreadProfile-type.md) · Required
28
-
29
- Validated periodic profile repeated around the shaft.
30
-
31
- - [`fit`](../geometry/InternalThreadCutterOptions.md#fit) · [`PrintableThreadFit`](../geometry/PrintableThreadFit.md) \| [`PrintableThreadFitPolicy`](../geometry/PrintableThreadFitPolicy.md) · Optional
32
-
33
- Printable fit or caller-calibrated allowances. Default: `normal`.
34
-
35
- - [`bevel`](../geometry/InternalThreadCutterOptions.md#bevel) · [`Bevel`](../geometry/Bevel.md) · Optional
36
-
37
- Bottom/top sizes in millimetres. Omitted disables both. Auto uses profile depth for standard/tapered ends,
38
- or one sixth of the compensated male minor/female major radius for blunt ends.
39
-
40
- - [`ends`](../geometry/InternalThreadCutterOptions.md#ends) · [`ThreadEndTreatmentOptions`](../geometry/ThreadEndTreatmentOptions.md) · Optional
41
-
42
- Optional bottom/top ridge-end treatments. Standalone ridges honor the requested boundaries;
43
- BOSL2-style non-cut lead-in scaling is available on complete thread solids.
44
-
45
- - [`handedness`](../geometry/InternalThreadCutterOptions.md#handedness) · [`ThreadHandedness`](../geometry/ThreadHandedness.md) · Optional
46
-
47
- Helix direction. Default: `right`.
48
-
49
- - [`limits`](../geometry/InternalThreadCutterOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
50
-
51
- Explicit output and circular allocation ceilings.
52
-
53
- - [`phase`](../geometry/InternalThreadCutterOptions.md#phase) · `number` · Optional
54
-
55
- Angular offset of the first start in degrees. Default: `0`.
56
-
57
- - [`resolution`](../geometry/InternalThreadCutterOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
58
-
59
- Optional circular-resolution policy.
60
-
61
- - [`starts`](../geometry/InternalThreadCutterOptions.md#starts) · `number` · Optional
62
-
63
- Number of evenly phased starts. Default: `1`.
64
-
65
- - [`tolerance`](../geometry/InternalThreadCutterOptions.md#tolerance) · [`GeometryToleranceOptions`](../geometry/GeometryToleranceOptions.md) · Optional
66
-
67
- Optional numerical tolerance overrides.
68
-
69
-
70
-
71
- ## Returns
72
-
73
- [`ThreadSolidPreflight`](../geometry/ThreadSolidPreflight.md)
74
-
75
-
76
- ## Related APIs
77
-
78
- - [InternalThreadCutterOptions](../geometry/InternalThreadCutterOptions.md)
79
- - [ThreadSolidPreflight](../geometry/ThreadSolidPreflight.md)
80
- - [internalThreadCutter](internalThreadCutter.md)
81
-
82
- ## Guides
83
-
84
- - [Build printable threads](https://metamesh.studio/docs/develop/printable-threads#build-the-first-mating-pair)
85
- - [Preflight guarantees and host settings](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
86
-
87
- ## Supported imports
88
-
89
- ```ts
90
- import { preflightInternalThreadCutter } from "@metamesh/modeling";
91
- ```
92
-
93
- Package: `@metamesh/modeling@0.19.0`.
@@ -1,109 +0,0 @@
1
- # preflightThreadedNut
2
-
3
- Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
4
-
5
- **preflightThreadedNut**(`options`: [`ThreadedNutOptions`](../geometry/ThreadedNutOptions.md)): [`ThreadedNutPreflight`](../geometry/ThreadedNutPreflight.md)
6
-
7
-
8
-
9
- Requires active synchronous model execution and uses its resolution and limits, without mesh
10
- buffers or native objects. Returned thread estimates cover the cutter, excluding the body and
11
- Boolean result. Mesh validity, native construction, and aggregate output limits are checked later.
12
-
13
- ## Parameters
14
-
15
- <a id="options"></a>
16
-
17
- **`options`** · [`ThreadedNutOptions`](../geometry/ThreadedNutOptions.md) · Required
18
-
19
- - [`nominalMajorDiameter`](../geometry/ThreadedNutOptions.md#nominalmajordiameter) · `number` · Required
20
-
21
- Nominal major diameter before female compensation and faceting correction.
22
-
23
- - [`shape`](../geometry/ThreadedNutOptions.md#shape) · [`ThreadedNutShape`](../geometry/ThreadedNutShape.md) · Required
24
-
25
- Nut body shape.
26
-
27
- - [`thickness`](../geometry/ThreadedNutOptions.md#thickness) · `number` · Required
28
-
29
- Nut thickness along +Z in millimetres.
30
-
31
- - [`width`](../geometry/ThreadedNutOptions.md#width) · `number` · Required
32
-
33
- Across-flats width for hex/square or diameter for round, in millimetres.
34
-
35
- - [`profile`](../geometry/ThreadedNutOptions.md#profile) · [`ThreadProfile`](../geometry/ThreadProfile-type.md) · Required
36
-
37
- Validated periodic profile repeated around the shaft.
38
-
39
- - [`fit`](../geometry/ThreadedNutOptions.md#fit) · [`PrintableThreadFit`](../geometry/PrintableThreadFit.md) \| [`PrintableThreadFitPolicy`](../geometry/PrintableThreadFitPolicy.md) · Optional
40
-
41
- Printable fit or caller-calibrated allowances. Default: `normal`.
42
-
43
- - [`innerBevel`](../geometry/ThreadedNutOptions.md#innerbevel) · [`Bevel`](../geometry/Bevel.md) · Optional
44
-
45
- Opening bevels in [bottom, top] order. Omitted or auto uses min(profile.depth, thickness/4); zero disables.
46
-
47
- - [`outerBevel`](../geometry/ThreadedNutOptions.md#outerbevel) · [`Bevel`](../geometry/Bevel.md) · Optional
48
-
49
- Body bevels in [bottom, top] order. Omitted or auto uses min(profile.depth, thickness/4).
50
- Use [0, "auto"] to keep the outside bottom flat without disabling its inner opening bevel.
51
-
52
- - [`bodyResolution`](../geometry/ThreadedNutOptions.md#bodyresolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
53
-
54
- Optional physical policy for a round body, independent of the thread's matched facet grid.
55
-
56
- - [`ends`](../geometry/ThreadedNutOptions.md#ends) · [`ThreadEndTreatmentOptions`](../geometry/ThreadEndTreatmentOptions.md) · Optional
57
-
58
- Optional bottom/top ridge-end treatments. Standalone ridges honor the requested boundaries;
59
- BOSL2-style non-cut lead-in scaling is available on complete thread solids.
60
-
61
- - [`handedness`](../geometry/ThreadedNutOptions.md#handedness) · [`ThreadHandedness`](../geometry/ThreadHandedness.md) · Optional
62
-
63
- Helix direction. Default: `right`.
64
-
65
- - [`limits`](../geometry/ThreadedNutOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
66
-
67
- Explicit output and circular allocation ceilings.
68
-
69
- - [`phase`](../geometry/ThreadedNutOptions.md#phase) · `number` · Optional
70
-
71
- Angular offset of the first start in degrees. Default: `0`.
72
-
73
- - [`resolution`](../geometry/ThreadedNutOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
74
-
75
- Optional circular-resolution policy.
76
-
77
- - [`starts`](../geometry/ThreadedNutOptions.md#starts) · `number` · Optional
78
-
79
- Number of evenly phased starts. Default: `1`.
80
-
81
- - [`tolerance`](../geometry/ThreadedNutOptions.md#tolerance) · [`GeometryToleranceOptions`](../geometry/GeometryToleranceOptions.md) · Optional
82
-
83
- Optional numerical tolerance overrides.
84
-
85
-
86
-
87
- ## Returns
88
-
89
- [`ThreadedNutPreflight`](../geometry/ThreadedNutPreflight.md)
90
-
91
-
92
- ## Related APIs
93
-
94
- - [ThreadedNutOptions](../geometry/ThreadedNutOptions.md)
95
- - [ThreadedNutPreflight](../geometry/ThreadedNutPreflight.md)
96
- - [threadedNut](threadedNut.md)
97
-
98
- ## Guides
99
-
100
- - [Build printable threads](https://metamesh.studio/docs/develop/printable-threads#build-the-first-mating-pair)
101
- - [Preflight guarantees and host settings](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
102
-
103
- ## Supported imports
104
-
105
- ```ts
106
- import { preflightThreadedNut } from "@metamesh/modeling";
107
- ```
108
-
109
- Package: `@metamesh/modeling@0.19.0`.
@@ -1,93 +0,0 @@
1
- # preflightThreadedRod
2
-
3
- Checks compensated rod dimensions and conservative mesh estimates against host output limits.
4
-
5
- **preflightThreadedRod**(`options`: [`ThreadedRodOptions`](../geometry/ThreadedRodOptions.md)): [`ThreadSolidPreflight`](../geometry/ThreadSolidPreflight.md)
6
-
7
-
8
-
9
- Requires active synchronous model execution and uses its resolution and limits. Returns selected
10
- sampling and conservative row/triangle estimates without mesh buffers or native objects.
11
- Mesh validity, native construction, and aggregate output limits are checked later.
12
-
13
- ## Parameters
14
-
15
- <a id="options"></a>
16
-
17
- **`options`** · [`ThreadedRodOptions`](../geometry/ThreadedRodOptions.md) · Required
18
-
19
- - [`nominalMajorDiameter`](../geometry/ThreadedRodOptions.md#nominalmajordiameter) · `number` · Required
20
-
21
- Nominal major diameter before male compensation.
22
-
23
- - [`length`](../geometry/ThreadedRodOptions.md#length) · `number` · Required
24
-
25
- Total threaded axial length in millimetres.
26
-
27
- - [`profile`](../geometry/ThreadedRodOptions.md#profile) · [`ThreadProfile`](../geometry/ThreadProfile-type.md) · Required
28
-
29
- Validated periodic profile repeated around the shaft.
30
-
31
- - [`bevel`](../geometry/ThreadedRodOptions.md#bevel) · [`Bevel`](../geometry/Bevel.md) · Optional
32
-
33
- Bottom/top sizes in millimetres. Omitted disables both. Auto uses profile depth for standard/tapered ends,
34
- or one sixth of the compensated male minor/female major radius for blunt ends.
35
-
36
- - [`fit`](../geometry/ThreadedRodOptions.md#fit) · [`PrintableThreadFit`](../geometry/PrintableThreadFit.md) \| [`PrintableThreadFitPolicy`](../geometry/PrintableThreadFitPolicy.md) · Optional
37
-
38
- Printable fit or caller-calibrated allowances. Default: `normal`.
39
-
40
- - [`ends`](../geometry/ThreadedRodOptions.md#ends) · [`ThreadEndTreatmentOptions`](../geometry/ThreadEndTreatmentOptions.md) · Optional
41
-
42
- Optional bottom/top ridge-end treatments. Standalone ridges honor the requested boundaries;
43
- BOSL2-style non-cut lead-in scaling is available on complete thread solids.
44
-
45
- - [`handedness`](../geometry/ThreadedRodOptions.md#handedness) · [`ThreadHandedness`](../geometry/ThreadHandedness.md) · Optional
46
-
47
- Helix direction. Default: `right`.
48
-
49
- - [`limits`](../geometry/ThreadedRodOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
50
-
51
- Explicit output and circular allocation ceilings.
52
-
53
- - [`phase`](../geometry/ThreadedRodOptions.md#phase) · `number` · Optional
54
-
55
- Angular offset of the first start in degrees. Default: `0`.
56
-
57
- - [`resolution`](../geometry/ThreadedRodOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
58
-
59
- Optional circular-resolution policy.
60
-
61
- - [`starts`](../geometry/ThreadedRodOptions.md#starts) · `number` · Optional
62
-
63
- Number of evenly phased starts. Default: `1`.
64
-
65
- - [`tolerance`](../geometry/ThreadedRodOptions.md#tolerance) · [`GeometryToleranceOptions`](../geometry/GeometryToleranceOptions.md) · Optional
66
-
67
- Optional numerical tolerance overrides.
68
-
69
-
70
-
71
- ## Returns
72
-
73
- [`ThreadSolidPreflight`](../geometry/ThreadSolidPreflight.md)
74
-
75
-
76
- ## Related APIs
77
-
78
- - [ThreadedRodOptions](../geometry/ThreadedRodOptions.md)
79
- - [ThreadSolidPreflight](../geometry/ThreadSolidPreflight.md)
80
- - [threadedRod](threadedRod.md)
81
-
82
- ## Guides
83
-
84
- - [Build printable threads](https://metamesh.studio/docs/develop/printable-threads#build-the-first-mating-pair)
85
- - [Preflight guarantees and host settings](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
86
-
87
- ## Supported imports
88
-
89
- ```ts
90
- import { preflightThreadedRod } from "@metamesh/modeling";
91
- ```
92
-
93
- Package: `@metamesh/modeling@0.19.0`.
@@ -1,47 +0,0 @@
1
- import { gridPatternPlan, linearPatternPlan, pathPatternPlan, radialPatternPlan, } from "../../geometry/patterns/placements.js";
2
- import { assertSamplingCount } from "../../geometry/sampling-limits.js";
3
- import { restrictTransform3 } from "../../geometry/transform2.js";
4
- import { IDENTITY_TRANSFORM3 } from "../../geometry/transform3.js";
5
- /** Private pattern owner; all copies use the shared transform/metadata/lifetime path. */
6
- export function createPatternOperations(environment, transforms) {
7
- const apply = (source, makePlan, operation) => {
8
- environment.assertActive();
9
- const plan = makePlan();
10
- let vertices = 0, triangles = 0;
11
- let kind;
12
- const budget = (shape, multiplier) => {
13
- const native = environment.resolveHandle(shape);
14
- if (kind !== undefined && native.kind !== kind)
15
- environment.throwGeometryError("INVALID_ARGUMENT", operation, "Pattern factories must return one shape dimension.");
16
- kind = native.kind;
17
- vertices += native.value.numVert() * multiplier;
18
- if (native.kind === "solid")
19
- triangles += native.value.numTri() * multiplier;
20
- else
21
- assertSamplingCount(vertices, operation, environment.limits.maxProfilePoints);
22
- environment.assertMeshAllocation(vertices, triangles, (vertices + triangles) * 12, operation);
23
- };
24
- if (typeof source !== "function")
25
- budget(source, plan.count);
26
- const copies = [];
27
- for (let index = 0; index < plan.count; index++) {
28
- const shape = typeof source === "function" ? source(index) : source;
29
- if (typeof source === "function")
30
- budget(shape, 1);
31
- const matrix = plan.transformAt(index, kind === "section" ? 2 : 3);
32
- copies.push(matrix.every((value, i) => value === IDENTITY_TRANSFORM3[i])
33
- ? shape
34
- : kind === "section"
35
- ? transforms.operations.transform(shape, restrictTransform3(matrix))
36
- : transforms.operations.transform(shape, matrix));
37
- }
38
- return copies;
39
- };
40
- const operations = {
41
- linearPattern: ((source, options) => apply(source, () => linearPatternPlan(options), "linearPattern")),
42
- radialPattern: ((source, options) => apply(source, () => radialPatternPlan(options), "radialPattern")),
43
- gridPattern: ((source, options) => apply(source, () => gridPatternPlan(options), "gridPattern")),
44
- pathPattern: ((source, path, options) => apply(source, () => pathPatternPlan(path, options, environment.limits), "pathPattern")),
45
- };
46
- return operations;
47
- }
@@ -1,105 +0,0 @@
1
- import { GeometryError } from "../errors.js";
2
- import { resolveExtrusionControls, resolveExtrusionDivisions, } from "../extrusion.js";
3
- import { assertMeshAllocationWithinLimits, resolveModelingLimits } from "../model-limits.js";
4
- import { capturePath2Input, path2InputData } from "../paths/path-value.js";
5
- import { assertSamplingCount } from "../sampling-limits.js";
6
- import { pointLoftProfile, prepareLoftGeometry } from "./loft-geometry.js";
7
- import {} from "./loft-options.js";
8
- import { simpleLoftMesh } from "./loft-simple-mesh.js";
9
- export { triangulateContour } from "./loft-triangulation.js";
10
- /**
11
- * Lofts simple point loops at z heights or explicit right-handed frames, in input order.
12
- *
13
- * Correspondence defaults to direct. CCW-normalized loops retain their
14
- * seam and original vertices; unequal counts gain subdivisions or repeated fan slots.
15
- * Both ends use ear-clipped caps, supporting concave profiles without center fans.
16
- * Intermediate slices interpolate placed world vertices, never frame axes.
17
- * Transformed coordinates must fit finite Float32 mesh storage.
18
- * Path2 profiles must be closed; raw point collections are interpreted as closed.
19
- *
20
- * @example Loft with explicit point correspondence
21
- * ```ts
22
- * const bottom = rectangleContour({ size: [20, 12] });
23
- * const top = rectangleContour({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
24
- * mesh.loft([{ profile: bottom, z: 0 }, { profile: top, z: 30 }], { correspondence: "reindex" });
25
- * ```
26
- */
27
- export function loftMesh(stations, options = {}) {
28
- if (typeof options !== "object" || options === null || Array.isArray(options))
29
- throw new GeometryError("INVALID_ARGUMENT", "Loft options must be an object.", {
30
- operation: "loftMesh",
31
- });
32
- const limits = resolveModelingLimits(options.limits);
33
- if (!Array.isArray(stations) || stations.length < 2)
34
- throw new GeometryError("INVALID_ARGUMENT", "Loft requires at least two stations.", {
35
- operation: "loftMesh",
36
- });
37
- assertSamplingCount(stations.length, "loftMesh", limits.maxPathPoints);
38
- const inputs = stations;
39
- const input = inputs.map(({ profile, ...placement }) => ({
40
- ...placement,
41
- source: capturePath2Input(profile, true),
42
- }));
43
- assertSamplingCount(input.reduce((sum, station) => sum + station.source.count, 0), "loftMesh", 1_000_000);
44
- let remaining = 1_000_000;
45
- const profiles = input.map(({ source, ...placement }) => {
46
- const points = path2InputData(source.input, true, {
47
- maxPathPoints: Math.max(1, Math.min(limits.maxProfilePoints, remaining)),
48
- }).points;
49
- assertSamplingCount(points.length, "loftMesh", remaining);
50
- remaining -= points.length;
51
- return { ...placement, profile: pointLoftProfile(points) };
52
- });
53
- return simpleLoftMesh(prepareLoftGeometry(profiles, options, limits, false), limits);
54
- }
55
- /**
56
- * Linearly extrudes one simple profile along +Z with robust ear-clipped caps.
57
- * Path2 profiles must be closed; raw point collections have an implicit closing edge.
58
- * End treatments are unsupported and reject at runtime. Use Section.extrude for finished ends.
59
- *
60
- * @example Extrude point data without an engine
61
- * ```ts
62
- * const outline = rectangleContour({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
63
- * mesh.extrude(outline, { height: 8 });
64
- * ```
65
- */
66
- export function extrudeMesh(input, options) {
67
- const { height } = options;
68
- const { center, scales, twist } = resolveExtrusionControls(height, options, "extrudeMesh");
69
- if ("ends" in options)
70
- throw new GeometryError("INVALID_ARGUMENT", "extrudeMesh does not support end treatments. Use Section.extrude instead.", { operation: "extrudeMesh" });
71
- if (!Number.isFinite(height) || height <= 0) {
72
- throw new GeometryError("INVALID_ARGUMENT", "Extrusion height must be finite and positive.", {
73
- operation: "extrudeMesh",
74
- details: { height },
75
- });
76
- }
77
- const bottom = center ? -height / 2 : 0;
78
- const limits = resolveModelingLimits(options.limits);
79
- const profile = path2InputData(input, true, { maxPathPoints: limits.maxProfilePoints }).points;
80
- assertSamplingCount(profile.length, "extrudeMesh", limits.maxProfilePoints);
81
- const divisions = resolveExtrusionDivisions(profile, height, options);
82
- const count = profile.length * (divisions + 2);
83
- const triangles = (divisions + 1) * profile.length * 2 + (profile.length - 2) * 2;
84
- assertMeshAllocationWithinLimits(count, triangles, (count + triangles) * 12, "extrudeMesh", limits);
85
- const frame = (amount) => ({
86
- origin: [0, 0, bottom + height * amount],
87
- xAxis: [1, 0, 0],
88
- yAxis: [0, 1, 0],
89
- zAxis: [0, 0, 1],
90
- });
91
- const stations = Array.from({ length: divisions + 2 }, (_, index) => {
92
- const amount = index / (divisions + 1);
93
- const angle = ((twist * Math.PI) / 180) * amount;
94
- const cosine = Math.cos(angle), sine = Math.sin(angle);
95
- const sx = 1 + (scales[0] - 1) * amount, sy = 1 + (scales[1] - 1) * amount;
96
- return {
97
- frame: frame(amount),
98
- profile: profile.map(([x, y]) => [
99
- x * sx * cosine - y * sy * sine,
100
- x * sx * sine + y * sy * cosine,
101
- ]),
102
- };
103
- });
104
- return loftMesh(stations, { correspondence: "direct", limits });
105
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Runtime-neutral, opt-in mechanical geometry helpers and standards data.
3
- *
4
- * @packageDocumentation
5
- */
6
- export { minimumCylindricalGearToothCountWithoutUndercut, resolveCylindricalGear, resolveCylindricalGearPair, resolveRackPitch, sampleCylindricalGearOutline, sampleInternalCylindricalGearSpaceOutline, sampleRackToothPath, } from "./gears.js";
7
- export { measureInternalCylindricalGearPairMotion } from "./gear-motion.js";
8
- export { threadRidgeMesh, threadSolidMesh } from "./threads/mesh.js";
9
- export { compensateThreadProfileAxially, compensateThreadProfileForFaceting, threadProfile, } from "./threads/profiles.js";
10
- export { preflightThreadSolidMesh } from "./threads/mesh-plan.js";
11
- export { sampleConventionalThreadHelices as sampleThreadHelices } from "./threads/helices.js";
12
- export { compensateThreadDiameters, PRINTABLE_THREAD_FIT_POLICIES, resolvePrintableThreadFitPolicy, resolveThreadCircularSegments, } from "./threads/fit.js";
13
- export { getMetricClearanceHoleDiameter, getMetricFastenerStandard, METRIC_FASTENER_STANDARDS, } from "./standards.js";
14
- export { resolveKnuckleHinge, } from "./knuckle-hinge.js";
@@ -1,20 +0,0 @@
1
- import { GeometryError } from "./errors.js";
2
- import { resolveCircularSegments } from "./resolution.js";
3
- import { assertSamplingCount, resolveGeometrySamplingLimits } from "./sampling-limits.js";
4
- /**
5
- * Resolves a circular primitive's exact or adaptive segment count.
6
- *
7
- * @internal Exact counts override physical sampling, while explicit allocation ceilings still apply.
8
- */
9
- export function resolveCircularPrimitiveSegments(radius, options, operation) {
10
- if (options.segments === undefined) {
11
- return resolveCircularSegments(radius, {
12
- ...options.resolution,
13
- sizing: options.sizing ?? "vertex",
14
- }, options.limits);
15
- }
16
- if (!Number.isSafeInteger(options.segments) || options.segments < 3)
17
- throw new GeometryError("INVALID_ARGUMENT", "segments must be a safe integer of at least three.", { operation, details: { value: options.segments } });
18
- assertSamplingCount(options.segments, operation, resolveGeometrySamplingLimits(options.limits).maxCircularSegments);
19
- return options.segments;
20
- }
@@ -1 +0,0 @@
1
- export { parseSvgPath } from "./parser.js";
@@ -1,29 +0,0 @@
1
- import { GeometryError } from "../errors.js";
2
- import { vector2Data } from "../math/vector-value.js";
3
- /** @internal Validates local scales before any manufacturing buffer allocation. */
4
- export function resolveSweepScales(scale, stationCount) {
5
- const fail = () => {
6
- throw new GeometryError("INVALID_ARGUMENT", "Sweep scales must be positive finite XY pairs, with one pair per station when varying.", { operation: "sweep" });
7
- };
8
- const pair = (value) => {
9
- if (typeof value === "number") {
10
- if (!(value > 0) || !Number.isFinite(value))
11
- fail();
12
- return [value, value];
13
- }
14
- const coordinates = vector2Data(value);
15
- if (!coordinates.every((n) => typeof n === "number" && Number.isFinite(n) && n > 0))
16
- fail();
17
- return coordinates;
18
- };
19
- if (scale === undefined ||
20
- typeof scale === "number" ||
21
- (typeof scale === "object" && scale !== null && "toData" in scale) ||
22
- (Array.isArray(scale) && typeof scale[0] === "number")) {
23
- const value = pair(scale ?? 1);
24
- return Array.from({ length: stationCount }, () => value);
25
- }
26
- if (!Array.isArray(scale) || scale.length !== stationCount)
27
- fail();
28
- return scale.map(pair);
29
- }
@@ -1,96 +0,0 @@
1
- import { GeometryError } from "../errors.js";
2
- import { add3, rotateAroundAxis3Radians, scale3 } from "../math/vector3.js";
3
- import { validateTriangleMesh } from "../mesh/mesh.js";
4
- import { resolveGeometryTolerance } from "../tolerance.js";
5
- import { resolveSweepScales } from "./options.js";
6
- import { computeSweepFrames, validateSweepOptions } from "./orientation.js";
7
- import { planSweepStations, refineSweepStations } from "./stations.js";
8
- import { assertSweepAllocation, normalizeSweepPath, normalizeSweepProfile, writeSweepVertex, } from "./validation.js";
9
- /** @internal Checks host allocation policy before frames or manufacturing buffers. */
10
- export const buildClosedSweepMesh = (profile, path, options = {}) => {
11
- const operation = "sweep";
12
- validateSweepOptions(options);
13
- profile = normalizeSweepProfile(profile, operation, options.limits);
14
- path = normalizeSweepPath(path, true, operation, options.limits);
15
- assertSweepAllocation(path.length, profile.length, true, operation, options.limits);
16
- let scales = resolveSweepScales(options.scale, path.length);
17
- const seamProfileOffset = options.seamProfileOffset ?? 0;
18
- if (!Number.isSafeInteger(seamProfileOffset)) {
19
- throw new GeometryError("INVALID_ARGUMENT", "seamProfileOffset must be a safe integer.", {
20
- operation,
21
- });
22
- }
23
- const twistRadians = ((options.twist ?? 0) / 180) * Math.PI;
24
- if (!Number.isFinite(twistRadians)) {
25
- throw new GeometryError("NON_FINITE_VALUE", "Sweep twist must be finite.", {
26
- operation,
27
- });
28
- }
29
- const ringVertexCount = profile.length;
30
- const normalizedSeamProfileOffset = ((seamProfileOffset % ringVertexCount) + ringVertexCount) % ringVertexCount;
31
- const profileScale = profile.reduce((extent, [x, y]) => Math.max(extent, Math.abs(x), Math.abs(y)), 1);
32
- const seamTolerance = resolveGeometryTolerance(profileScale).linear;
33
- const cosine = Math.cos(twistRadians);
34
- const sine = Math.sin(twistRadians);
35
- for (let index = 0; index < profile.length; index++) {
36
- const [profileX, profileY] = profile[index];
37
- const [scaleX, scaleY] = scales[0];
38
- const x = profileX * scaleX;
39
- const y = profileY * scaleY;
40
- const target = profile[(index + normalizedSeamProfileOffset) % profile.length];
41
- if (Math.hypot(x * cosine - y * sine - target[0] * scaleX, x * sine + y * cosine - target[1] * scaleY) > seamTolerance) {
42
- throw new GeometryError("INVALID_TOPOLOGY", "Sweep twist must end at the seam's corresponding profile orientation.", { operation });
43
- }
44
- }
45
- if (twistRadians !== 0) {
46
- const plan = planSweepStations([profile], path, scales, options);
47
- assertSweepAllocation(plan.stationCount, profile.length, true, operation, options.limits);
48
- }
49
- let transportedFrames = computeSweepFrames(path, options);
50
- let twists;
51
- if (twistRadians !== 0) {
52
- const plan = planSweepStations([profile], path, scales, options, transportedFrames);
53
- assertSweepAllocation(plan.stationCount, profile.length, true, operation, options.limits);
54
- const refined = refineSweepStations(path, scales, transportedFrames, options, plan);
55
- path = refined.path;
56
- scales = refined.scales;
57
- transportedFrames = refined.frames;
58
- twists = refined.twists;
59
- }
60
- const positions = new Float32Array(path.length * ringVertexCount * 3);
61
- for (let ring = 0; ring < path.length; ring += 1) {
62
- const point = path[ring];
63
- const tangent = transportedFrames[ring].tangent;
64
- const twist = twists?.[ring] ?? twistRadians * (ring / path.length);
65
- const baseNormal = transportedFrames[ring].normal;
66
- const normal = rotateAroundAxis3Radians(baseNormal, tangent, twist);
67
- const binormal = rotateAroundAxis3Radians(transportedFrames[ring].binormal, tangent, twist);
68
- const [scaleX, scaleY] = scales[ring];
69
- for (let profileIndex = 0; profileIndex < profile.length; profileIndex += 1) {
70
- const [x, y] = profile[profileIndex];
71
- const vertex = add3(point, add3(scale3(normal, x * scaleX), scale3(binormal, y * scaleY)));
72
- writeSweepVertex(positions, (ring * ringVertexCount + profileIndex) * 3, vertex, operation);
73
- }
74
- }
75
- const indices = new Uint32Array(path.length * ringVertexCount * 2 * 3);
76
- let cursor = 0;
77
- for (let ring = 0; ring < path.length; ring += 1) {
78
- const nextRing = (ring + 1) % path.length;
79
- const nextProfileOffset = nextRing === 0 ? normalizedSeamProfileOffset : 0;
80
- for (let profileIndex = 0; profileIndex < ringVertexCount; profileIndex += 1) {
81
- const following = (profileIndex + 1) % ringVertexCount;
82
- const a = ring * ringVertexCount + profileIndex;
83
- const b = ring * ringVertexCount + following;
84
- const c = nextRing * ringVertexCount + ((following + nextProfileOffset) % ringVertexCount);
85
- const d = nextRing * ringVertexCount + ((profileIndex + nextProfileOffset) % ringVertexCount);
86
- indices[cursor] = a;
87
- indices[cursor + 1] = b;
88
- indices[cursor + 2] = c;
89
- indices[cursor + 3] = a;
90
- indices[cursor + 4] = c;
91
- indices[cursor + 5] = d;
92
- cursor += 6;
93
- }
94
- }
95
- return validateTriangleMesh({ indices, positions });
96
- };
@@ -1,32 +0,0 @@
1
- import { GeometryError } from "../errors.js";
2
- import { resolveModelingLimits } from "../model-limits.js";
3
- import { path2InputData, path3InputData, } from "../paths/path-value.js";
4
- import { validateSweepOptions } from "./orientation.js";
5
- import { buildClosedSweepMesh } from "./sweep-closed.js";
6
- import { buildOpenSweepMesh } from "./sweep-open.js";
7
- /**
8
- * Sweeps one explicitly ordered point loop, with caps or a geometrically matching closed seam.
9
- *
10
- * @example Sweep point data along a bent path
11
- * ```ts
12
- * const profile = rectangleContour({ size: [6, 3] });
13
- * mesh.sweep(profile, [[0, 0, 0], [0, 0, 15], [10, 0, 25]], {
14
- * orientation: { kind: "transport", initialNormal: [0, 1, 0] },
15
- * });
16
- * ```
17
- */
18
- export function sweepMesh(profile, path, options = {}) {
19
- validateSweepOptions(options);
20
- const limits = resolveModelingLimits(options.limits);
21
- const outline = path2InputData(profile, true, { maxPathPoints: limits.maxProfilePoints }).points;
22
- const data = path3InputData(path, options.closed, limits);
23
- const selected = { ...options, closed: data.closed };
24
- if (data.closed) {
25
- return buildClosedSweepMesh(outline, data.points, selected);
26
- }
27
- if ((options.seamProfileOffset ?? 0) !== 0)
28
- throw new GeometryError("INVALID_ARGUMENT", "A seamProfileOffset requires a closed path.", {
29
- operation: "sweep",
30
- });
31
- return buildOpenSweepMesh(outline, data.points, selected);
32
- }
File without changes