@metamesh/modeling 0.13.0 → 0.15.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 (740) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +67 -9
  3. package/dist/api/engine.d.ts +14 -7
  4. package/dist/api/geometry.d.ts +787 -447
  5. package/dist/api/index.d.ts +637 -250
  6. package/dist/api/text.d.ts +6 -4
  7. package/dist/docs/guides/concepts.md +135 -17
  8. package/dist/docs/guides/fonts.md +8 -0
  9. package/dist/docs/guides/fundamentals.md +8 -3
  10. package/dist/docs/guides/generation.md +6 -4
  11. package/dist/docs/guides/hosting.md +27 -14
  12. package/dist/docs/guides/recipes.md +82 -11
  13. package/dist/docs/manifest.json +1911 -856
  14. package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
  15. package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
  16. package/dist/docs/reference/engine/GenerationOptions.md +1 -1
  17. package/dist/docs/reference/engine/GeometryResource.md +1 -1
  18. package/dist/docs/reference/engine/ModelDependencies.md +1 -1
  19. package/dist/docs/reference/engine/ModelEngine.md +1 -1
  20. package/dist/docs/reference/engine/ModelEngineOptions.md +4 -8
  21. package/dist/docs/reference/engine/ModelSession.md +1 -1
  22. package/dist/docs/reference/engine/ModelSnapshot.md +20 -9
  23. package/dist/docs/reference/engine/SessionOptions.md +1 -1
  24. package/dist/docs/reference/engine/SnapshotPart.md +4 -4
  25. package/dist/docs/reference/engine/categories/host-lifecycle.md +2 -2
  26. package/dist/docs/reference/engine/createModelEngine.md +3 -3
  27. package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
  28. package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
  29. package/dist/docs/reference/engine/validateModel.md +1 -1
  30. package/dist/docs/reference/engine.md +2 -2
  31. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +1 -1
  32. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +17 -4
  33. package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +9 -5
  34. package/dist/docs/reference/geometry/ArcCurve2.md +7 -7
  35. package/dist/docs/reference/geometry/ArcCurve3.md +9 -9
  36. package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +14 -5
  37. package/dist/docs/reference/geometry/AxisAngleRotation3.md +6 -1
  38. package/dist/docs/reference/geometry/Bounds2.md +4 -4
  39. package/dist/docs/reference/geometry/Bounds3.md +4 -4
  40. package/dist/docs/reference/geometry/BoundsFit2.md +3 -3
  41. package/dist/docs/reference/geometry/BoundsFit3.md +3 -3
  42. package/dist/docs/reference/geometry/BoundsFitOptions.md +1 -1
  43. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +1 -1
  44. package/dist/docs/reference/geometry/BoxAnchorFace.md +8 -1
  45. package/dist/docs/reference/geometry/BoxAnchorOptions.md +8 -4
  46. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  47. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  48. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  49. package/dist/docs/reference/geometry/BoxOptions.md +10 -10
  50. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +1 -1
  51. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +1 -1
  52. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  53. package/dist/docs/reference/geometry/CircleContourOptions.md +1 -1
  54. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
  55. package/dist/docs/reference/geometry/CircularResolutionOptions.md +107 -0
  56. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +1 -1
  57. package/dist/docs/reference/geometry/ClearanceHoleFit.md +1 -1
  58. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +1 -1
  59. package/dist/docs/reference/geometry/Contour.md +3 -3
  60. package/dist/docs/reference/geometry/ContourCurve.md +1 -1
  61. package/dist/docs/reference/geometry/ContourPoint.md +1 -1
  62. package/dist/docs/reference/geometry/ContourSegment.md +1 -1
  63. package/dist/docs/reference/geometry/CorrespondingComponent.md +1 -1
  64. package/dist/docs/reference/geometry/CorrespondingContour.md +1 -1
  65. package/dist/docs/reference/geometry/CorrespondingProfile.md +1 -1
  66. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +1 -1
  67. package/dist/docs/reference/geometry/CubicBezierCurve2.md +6 -6
  68. package/dist/docs/reference/geometry/CubicBezierCurve3.md +6 -6
  69. package/dist/docs/reference/geometry/Curve2.md +1 -1
  70. package/dist/docs/reference/geometry/Curve3.md +1 -1
  71. package/dist/docs/reference/geometry/CurveSamplingOptions.md +5 -3
  72. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +3 -3
  73. package/dist/docs/reference/geometry/CylinderAnchorFace.md +8 -1
  74. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +9 -5
  75. package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
  76. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +3 -3
  77. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +1 -1
  78. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +1 -1
  79. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +3 -3
  80. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +1 -1
  81. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +1 -1
  82. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +1 -1
  83. package/dist/docs/reference/geometry/CylindricalGearSpec.md +6 -6
  84. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  85. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  86. package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -3
  87. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  88. package/dist/docs/reference/geometry/ExtrudeOptions.md +6 -6
  89. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -5
  90. package/dist/docs/reference/geometry/FittedTextLayout.md +1 -1
  91. package/dist/docs/reference/geometry/Frame3.md +6 -6
  92. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  93. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  94. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  95. package/dist/docs/reference/geometry/GeometryResolution.md +14 -5
  96. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +1 -1
  97. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  98. package/dist/docs/reference/geometry/GridPatternOptions.md +11 -5
  99. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +1 -1
  100. package/dist/docs/reference/geometry/HeightfieldOptions.md +5 -5
  101. package/dist/docs/reference/geometry/HeightfieldPreflight.md +1 -1
  102. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +5 -5
  103. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +6 -6
  104. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +1 -1
  105. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +7 -3
  106. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +6 -6
  107. package/dist/docs/reference/geometry/LineCurve2.md +4 -4
  108. package/dist/docs/reference/geometry/LineCurve3.md +4 -4
  109. package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
  110. package/dist/docs/reference/geometry/LoftCorrespondence.md +1 -1
  111. package/dist/docs/reference/geometry/LoftMeshStation.md +4 -4
  112. package/dist/docs/reference/geometry/LoftOptions.md +1 -1
  113. package/dist/docs/reference/geometry/LoftPlacement.md +1 -1
  114. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +1 -1
  115. package/dist/docs/reference/geometry/MatchProfilesOptions.md +1 -1
  116. package/dist/docs/reference/geometry/MetricFastenerSize.md +1 -1
  117. package/dist/docs/reference/geometry/MetricFastenerStandard.md +1 -1
  118. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +1 -1
  119. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +1 -1
  120. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  121. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +1 -1
  122. package/dist/docs/reference/geometry/Path2-type.md +192 -0
  123. package/dist/docs/reference/geometry/Path2Data.md +14 -0
  124. package/dist/docs/reference/geometry/Path2Input.md +15 -0
  125. package/dist/docs/reference/geometry/Path3-type.md +192 -0
  126. package/dist/docs/reference/geometry/Path3Data.md +14 -0
  127. package/dist/docs/reference/geometry/Path3Input.md +15 -0
  128. package/dist/docs/reference/geometry/PathFrame.md +5 -5
  129. package/dist/docs/reference/geometry/PathLocation.md +65 -0
  130. package/dist/docs/reference/geometry/PathNormalGuide.md +6 -5
  131. package/dist/docs/reference/geometry/PathOptions.md +34 -0
  132. package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
  133. package/dist/docs/reference/geometry/PathPlacement.md +4 -4
  134. package/dist/docs/reference/geometry/PathResamplingOptions.md +80 -0
  135. package/dist/docs/reference/geometry/Pivot2Options.md +26 -0
  136. package/dist/docs/reference/geometry/Pivot3Options.md +26 -0
  137. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +1 -1
  138. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +22 -22
  139. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +1 -1
  140. package/dist/docs/reference/geometry/PlanarPatchQuality.md +3 -3
  141. package/dist/docs/reference/geometry/{Polygon.md → PolygonData.md} +2 -2
  142. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +4 -4
  143. package/dist/docs/reference/geometry/PrimitiveAttachment.md +31 -0
  144. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +104 -0
  145. package/dist/docs/reference/geometry/PrintableThreadFit.md +1 -1
  146. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +1 -1
  147. package/dist/docs/reference/geometry/Profile.md +1 -1
  148. package/dist/docs/reference/geometry/ProfileComponent2.md +1 -1
  149. package/dist/docs/reference/geometry/ProfileContour2.md +1 -1
  150. package/dist/docs/reference/geometry/ProfileSpan2.md +3 -3
  151. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
  152. package/dist/docs/reference/geometry/RackPitchDimensions.md +1 -1
  153. package/dist/docs/reference/geometry/RackPitchSpec.md +5 -5
  154. package/dist/docs/reference/geometry/RadialPatternOptions.md +17 -22
  155. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  156. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  157. package/dist/docs/reference/geometry/RectangleContourOptions.md +3 -3
  158. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +1 -1
  159. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +1 -1
  160. package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
  161. package/dist/docs/reference/geometry/RegionData.md +14 -0
  162. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +3 -3
  163. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  164. package/dist/docs/reference/geometry/RevolveOptions.md +9 -4
  165. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  166. package/dist/docs/reference/geometry/RowLayoutOptions.md +1 -1
  167. package/dist/docs/reference/geometry/SampleContourOptions.md +3 -3
  168. package/dist/docs/reference/geometry/SampleHelixOptions.md +1 -1
  169. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +3 -3
  170. package/dist/docs/reference/geometry/SampledCurve2.md +4 -4
  171. package/dist/docs/reference/geometry/SampledCurve3.md +4 -4
  172. package/dist/docs/reference/geometry/SampledThreadHelices.md +3 -3
  173. package/dist/docs/reference/geometry/SideProfileCurve.md +1 -1
  174. package/dist/docs/reference/geometry/SideProfilePoint.md +1 -1
  175. package/dist/docs/reference/geometry/SideProfileSegment.md +1 -1
  176. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  177. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +3 -3
  178. package/dist/docs/reference/geometry/SphereOptions.md +3 -3
  179. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +1 -1
  180. package/dist/docs/reference/geometry/StrokeCap.md +7 -0
  181. package/dist/docs/reference/geometry/StrokeJoin.md +7 -0
  182. package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +8 -8
  183. package/dist/docs/reference/geometry/SvgImportOptions.md +1 -1
  184. package/dist/docs/reference/geometry/SvgRegionPreflight.md +3 -3
  185. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +13 -13
  186. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +11 -11
  187. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +9 -9
  188. package/dist/docs/reference/geometry/SweepOptions.md +6 -6
  189. package/dist/docs/reference/geometry/SweepOrientation.md +7 -7
  190. package/dist/docs/reference/geometry/ThreadBevelOptions.md +1 -1
  191. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -5
  192. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +1 -1
  193. package/dist/docs/reference/geometry/ThreadEndStyle.md +1 -1
  194. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +1 -1
  195. package/dist/docs/reference/geometry/ThreadHandedness.md +1 -1
  196. package/dist/docs/reference/geometry/ThreadHelixOptions.md +3 -3
  197. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +1 -1
  198. package/dist/docs/reference/geometry/ThreadLeadInShape.md +1 -1
  199. package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +3 -3
  200. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +1 -1
  201. package/dist/docs/reference/geometry/ThreadProfileSpec.md +1 -1
  202. package/dist/docs/reference/geometry/ThreadRole.md +1 -1
  203. package/dist/docs/reference/geometry/ThreadedNutBevel.md +1 -1
  204. package/dist/docs/reference/geometry/ThreadedNutOptions.md +6 -6
  205. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +1 -1
  206. package/dist/docs/reference/geometry/ThreadedNutShape.md +1 -1
  207. package/dist/docs/reference/geometry/ThreadedRodOptions.md +6 -6
  208. package/dist/docs/reference/geometry/TorusOptions.md +8 -8
  209. package/dist/docs/reference/geometry/Transform2-type.md +255 -0
  210. package/dist/docs/reference/geometry/Transform2Input.md +19 -0
  211. package/dist/docs/reference/geometry/Transform2Matrix.md +14 -0
  212. package/dist/docs/reference/geometry/Transform3-type.md +295 -0
  213. package/dist/docs/reference/geometry/Transform3Input.md +19 -0
  214. package/dist/docs/reference/geometry/Transform3Matrix.md +17 -0
  215. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +5 -4
  216. package/dist/docs/reference/geometry/TriangleMesh.md +1 -1
  217. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +2 -2
  218. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +1 -1
  219. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +1 -1
  220. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +3 -3
  221. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +1 -1
  222. package/dist/docs/reference/geometry/TriangleMeshSignature.md +2 -2
  223. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +3 -3
  224. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +1 -1
  225. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +1 -1
  226. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +1 -1
  227. package/dist/docs/reference/geometry/TubeOptions.md +8 -8
  228. package/dist/docs/reference/geometry/Vector2-type.md +269 -0
  229. package/dist/docs/reference/geometry/Vector2Input.md +19 -0
  230. package/dist/docs/reference/geometry/Vector2Tuple.md +14 -0
  231. package/dist/docs/reference/geometry/Vector3-type.md +281 -0
  232. package/dist/docs/reference/geometry/Vector3Input.md +19 -0
  233. package/dist/docs/reference/geometry/Vector3Tuple.md +14 -0
  234. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +3 -3
  235. package/dist/docs/reference/geometry/VectorTextLayout.md +1 -1
  236. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +1 -1
  237. package/dist/docs/reference/geometry/VectorTextMetrics.md +1 -1
  238. package/dist/docs/reference/geometry/VectorTextOptions.md +1 -1
  239. package/dist/docs/reference/geometry/add2.md +36 -0
  240. package/dist/docs/reference/geometry/add3.md +10 -6
  241. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +1 -1
  242. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +2 -2
  243. package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +13 -9
  244. package/dist/docs/reference/geometry/anchorFrame3.md +5 -5
  245. package/dist/docs/reference/geometry/applyTransformDirection3.md +11 -7
  246. package/dist/docs/reference/geometry/applyTransformPoint3.md +11 -7
  247. package/dist/docs/reference/geometry/attachmentTransform3.md +77 -0
  248. package/dist/docs/reference/geometry/boundsCenter.md +7 -7
  249. package/dist/docs/reference/geometry/boundsFromSize.md +7 -7
  250. package/dist/docs/reference/geometry/boundsSize.md +7 -7
  251. package/dist/docs/reference/geometry/boxAnchor3.md +10 -6
  252. package/dist/docs/reference/geometry/categories/bounds-layout.md +1 -1
  253. package/dist/docs/reference/geometry/categories/curves-paths.md +15 -10
  254. package/dist/docs/reference/geometry/categories/mechanical.md +6 -6
  255. package/dist/docs/reference/geometry/categories/meshes.md +3 -4
  256. package/dist/docs/reference/geometry/categories/pattern-placement.md +7 -7
  257. package/dist/docs/reference/geometry/categories/primitive-options.md +4 -4
  258. package/dist/docs/reference/geometry/categories/profiles-regions.md +5 -6
  259. package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -2
  260. package/dist/docs/reference/geometry/categories/transforms-math.md +41 -12
  261. package/dist/docs/reference/geometry/categories/vector-import.md +5 -5
  262. package/dist/docs/reference/geometry/circleContour.md +1 -1
  263. package/dist/docs/reference/geometry/closeToAxis.md +4 -4
  264. package/dist/docs/reference/geometry/compensateThreadDiameters.md +1 -1
  265. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +5 -5
  266. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -5
  267. package/dist/docs/reference/geometry/composeTransform3.md +10 -6
  268. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +10 -6
  269. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -7
  270. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +4 -4
  271. package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +4 -4
  272. package/dist/docs/reference/geometry/containsBounds.md +1 -1
  273. package/dist/docs/reference/geometry/contourContainsPoint.md +4 -4
  274. package/dist/docs/reference/geometry/cross2.md +36 -0
  275. package/dist/docs/reference/geometry/cross3.md +10 -6
  276. package/dist/docs/reference/geometry/cylinderAnchor3.md +10 -6
  277. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +1 -1
  278. package/dist/docs/reference/geometry/distance2.md +36 -0
  279. package/dist/docs/reference/geometry/distance3.md +36 -0
  280. package/dist/docs/reference/geometry/distributeAlongPath.md +8 -6
  281. package/dist/docs/reference/geometry/dot2.md +36 -0
  282. package/dist/docs/reference/geometry/dot3.md +9 -5
  283. package/dist/docs/reference/geometry/ellipseContour.md +1 -1
  284. package/dist/docs/reference/geometry/eulerTransform3.md +10 -6
  285. package/dist/docs/reference/geometry/extrudeMesh.md +8 -8
  286. package/dist/docs/reference/geometry/fitBounds.md +1 -1
  287. package/dist/docs/reference/geometry/fitTextLayout.md +1 -1
  288. package/dist/docs/reference/geometry/frameTransform3.md +8 -4
  289. package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +3 -3
  290. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +1 -1
  291. package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
  292. package/dist/docs/reference/geometry/heightfieldMesh.md +1 -1
  293. package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +5 -5
  294. package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +5 -5
  295. package/dist/docs/reference/geometry/inverseTransform3.md +9 -5
  296. package/dist/docs/reference/geometry/isGeometryError.md +1 -1
  297. package/dist/docs/reference/geometry/joinTriangleMeshes.md +1 -1
  298. package/dist/docs/reference/geometry/layoutRow.md +4 -4
  299. package/dist/docs/reference/geometry/length2.md +30 -0
  300. package/dist/docs/reference/geometry/length3.md +8 -4
  301. package/dist/docs/reference/geometry/lerp2.md +42 -0
  302. package/dist/docs/reference/geometry/lerp3.md +10 -6
  303. package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
  304. package/dist/docs/reference/geometry/loftMesh.md +2 -1
  305. package/dist/docs/reference/geometry/matchProfiles.md +1 -1
  306. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +3 -2
  307. package/dist/docs/reference/geometry/meshBounds.md +1 -1
  308. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +3 -3
  309. package/dist/docs/reference/geometry/normalize2.md +36 -0
  310. package/dist/docs/reference/geometry/normalize3.md +10 -6
  311. package/dist/docs/reference/geometry/normalizeContour.md +4 -4
  312. package/dist/docs/reference/geometry/normalizePolygon.md +5 -5
  313. package/dist/docs/reference/geometry/normalizeRegion.md +5 -5
  314. package/dist/docs/reference/geometry/optimizePlanarPatches.md +11 -11
  315. package/dist/docs/reference/geometry/path2.md +42 -0
  316. package/dist/docs/reference/geometry/path3.md +42 -0
  317. package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -8
  318. package/dist/docs/reference/geometry/preflightHeightfield.md +1 -1
  319. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +3 -3
  320. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +3 -3
  321. package/dist/docs/reference/geometry/preflightSvgRegion.md +1 -1
  322. package/dist/docs/reference/geometry/preflightThreadedNut.md +3 -3
  323. package/dist/docs/reference/geometry/preflightThreadedRod.md +3 -3
  324. package/dist/docs/reference/geometry/projectOntoPlane3.md +10 -6
  325. package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
  326. package/dist/docs/reference/geometry/rectangleContour.md +2 -2
  327. package/dist/docs/reference/geometry/rectangleProfile.md +2 -2
  328. package/dist/docs/reference/geometry/regionArea.md +4 -4
  329. package/dist/docs/reference/geometry/regionBounds.md +4 -4
  330. package/dist/docs/reference/geometry/regularPolygonContour.md +5 -5
  331. package/dist/docs/reference/geometry/resamplePolyline2.md +5 -5
  332. package/dist/docs/reference/geometry/resamplePolyline3.md +5 -5
  333. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +8 -4
  334. package/dist/docs/reference/geometry/resolveArcSegments.md +6 -6
  335. package/dist/docs/reference/geometry/resolveCircularSegments.md +6 -5
  336. package/dist/docs/reference/geometry/resolveCylindricalGear.md +1 -1
  337. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +1 -1
  338. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +6 -6
  339. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +1 -1
  340. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  341. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +1 -1
  342. package/dist/docs/reference/geometry/resolveRackPitch.md +1 -1
  343. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +4 -4
  344. package/dist/docs/reference/geometry/reverseTriangleMesh.md +1 -1
  345. package/dist/docs/reference/geometry/revolveMesh.md +10 -10
  346. package/dist/docs/reference/geometry/rotate2.md +36 -0
  347. package/dist/docs/reference/geometry/rotationTransform3.md +10 -6
  348. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -6
  349. package/dist/docs/reference/geometry/sampleContour.md +3 -3
  350. package/dist/docs/reference/geometry/sampleCurve2.md +3 -3
  351. package/dist/docs/reference/geometry/sampleCurve3.md +2 -2
  352. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +1 -1
  353. package/dist/docs/reference/geometry/sampleHelix.md +5 -5
  354. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +1 -1
  355. package/dist/docs/reference/geometry/sampleRackToothPath.md +4 -4
  356. package/dist/docs/reference/geometry/sampleSideProfile.md +6 -6
  357. package/dist/docs/reference/geometry/sampleTextContours.md +1 -1
  358. package/dist/docs/reference/geometry/sampleThreadHelices.md +2 -2
  359. package/dist/docs/reference/geometry/scale2.md +36 -0
  360. package/dist/docs/reference/geometry/scale3.md +9 -5
  361. package/dist/docs/reference/geometry/scaleTransform3.md +10 -6
  362. package/dist/docs/reference/geometry/signedContourArea.md +1 -1
  363. package/dist/docs/reference/geometry/starContour.md +4 -4
  364. package/dist/docs/reference/geometry/strokeRegionData.md +63 -0
  365. package/dist/docs/reference/geometry/subtract2.md +36 -0
  366. package/dist/docs/reference/geometry/subtract3.md +10 -6
  367. package/dist/docs/reference/geometry/sweepMesh.md +9 -9
  368. package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +6 -6
  369. package/dist/docs/reference/geometry/transform2.md +38 -0
  370. package/dist/docs/reference/geometry/transform3.md +38 -0
  371. package/dist/docs/reference/geometry/transformDeterminant3.md +8 -4
  372. package/dist/docs/reference/geometry/transformRegionData.md +40 -0
  373. package/dist/docs/reference/geometry/transformTriangleMesh.md +6 -6
  374. package/dist/docs/reference/geometry/translationTransform3.md +10 -6
  375. package/dist/docs/reference/geometry/triangulateContour.md +1 -1
  376. package/dist/docs/reference/geometry/validateSolidMesh.md +2 -2
  377. package/dist/docs/reference/geometry/validateTransform3.md +9 -5
  378. package/dist/docs/reference/geometry/validateTriangleMesh.md +1 -1
  379. package/dist/docs/reference/geometry/vector2.md +31 -0
  380. package/dist/docs/reference/geometry/vector3.md +38 -0
  381. package/dist/docs/reference/geometry.md +3 -3
  382. package/dist/docs/reference/model/Anchor3.md +5 -5
  383. package/dist/docs/reference/model/AttachOptions.md +10 -5
  384. package/dist/docs/reference/model/Bounds2.md +4 -4
  385. package/dist/docs/reference/model/Bounds3.md +4 -4
  386. package/dist/docs/reference/model/BoxEdge.md +1 -1
  387. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  388. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  389. package/dist/docs/reference/model/BoxOptions.md +10 -10
  390. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  391. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  392. package/dist/docs/reference/model/CircleOptions.md +3 -3
  393. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
  394. package/dist/docs/reference/model/Computed.md +1 -1
  395. package/dist/docs/reference/model/ComputedValue.md +1 -1
  396. package/dist/docs/reference/model/Contour.md +3 -3
  397. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  398. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  399. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  400. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  401. package/dist/docs/reference/model/CylinderOptions.md +3 -3
  402. package/dist/docs/reference/model/DiagnosticOptions.md +1 -1
  403. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  404. package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
  405. package/dist/docs/reference/model/EllipseOptions.md +3 -3
  406. package/dist/docs/reference/model/EndTreatments.md +1 -1
  407. package/dist/docs/reference/model/ExtrudeOptions.md +6 -6
  408. package/dist/docs/reference/model/FinalizedModel.md +18 -8
  409. package/dist/docs/reference/model/FinalizedPart.md +1 -1
  410. package/dist/docs/reference/model/Frame3.md +6 -6
  411. package/dist/docs/reference/model/GenerateCallback.md +1 -1
  412. package/dist/docs/reference/model/GenerateContext.md +5 -5
  413. package/dist/docs/reference/model/GeneratedPart.md +6 -6
  414. package/dist/docs/reference/model/GenerationDiagnostic.md +1 -1
  415. package/dist/docs/reference/model/GenerationError.md +1 -1
  416. package/dist/docs/reference/model/GeometryResolution.md +5 -5
  417. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  418. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  419. package/dist/docs/reference/model/GridPatternOptions.md +11 -5
  420. package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
  421. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +3 -3
  422. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +1 -1
  423. package/dist/docs/reference/model/HullOptions.md +7 -7
  424. package/dist/docs/reference/model/ImmutableBuffer-type.md +1 -1
  425. package/dist/docs/reference/model/ImmutableTriangleMesh.md +1 -1
  426. package/dist/docs/reference/model/ImplicitOptions.md +4 -4
  427. package/dist/docs/reference/model/InternalThreadCutterOptions.md +4 -4
  428. package/dist/docs/reference/model/LinearPatternOptions.md +12 -5
  429. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  430. package/dist/docs/reference/model/LoftOptions.md +1 -1
  431. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  432. package/dist/docs/reference/model/LoftStation.md +4 -4
  433. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  434. package/dist/docs/reference/model/ModelProgram.md +1 -1
  435. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  436. package/dist/docs/reference/model/NumericArray.md +1 -1
  437. package/dist/docs/reference/model/PartGeometry.md +1 -1
  438. package/dist/docs/reference/model/PartOptions.md +6 -6
  439. package/dist/docs/reference/model/Path2-type.md +192 -0
  440. package/dist/docs/reference/model/Path2Data.md +14 -0
  441. package/dist/docs/reference/model/Path2Input.md +15 -0
  442. package/dist/docs/reference/model/Path3-type.md +192 -0
  443. package/dist/docs/reference/model/Path3Data.md +14 -0
  444. package/dist/docs/reference/model/Path3Input.md +15 -0
  445. package/dist/docs/reference/model/PathLocation.md +65 -0
  446. package/dist/docs/reference/model/PathNormalGuide.md +6 -5
  447. package/dist/docs/reference/model/PathOptions.md +34 -0
  448. package/dist/docs/reference/model/PathPatternOptions.md +3 -3
  449. package/dist/docs/reference/model/PathResamplingOptions.md +79 -0
  450. package/dist/docs/reference/model/PatternSource.md +2 -2
  451. package/dist/docs/reference/model/Pivot2Options.md +27 -0
  452. package/dist/docs/reference/model/Pivot3Options.md +27 -0
  453. package/dist/docs/reference/model/PlaneOptions.md +3 -3
  454. package/dist/docs/reference/model/{Polygon-type.md → PolygonData.md} +2 -2
  455. package/dist/docs/reference/model/PolygonOptions.md +85 -8
  456. package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +7 -7
  457. package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +41 -20
  458. package/dist/docs/reference/model/PrintableThreadFit.md +1 -1
  459. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +1 -1
  460. package/dist/docs/reference/model/Profile.md +1 -1
  461. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  462. package/dist/docs/reference/model/ProfileContour2.md +1 -1
  463. package/dist/docs/reference/model/ProfileSpan2.md +3 -3
  464. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
  465. package/dist/docs/reference/model/RadialPatternOptions.md +17 -22
  466. package/dist/docs/reference/model/RadialSizing.md +1 -1
  467. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  468. package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
  469. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  470. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  471. package/dist/docs/reference/model/RectangleOptions.md +10 -10
  472. package/dist/docs/reference/model/{Region.md → RegionData.md} +4 -4
  473. package/dist/docs/reference/model/RegularPolygonOptions.md +5 -5
  474. package/dist/docs/reference/model/RevolveOptions.md +9 -4
  475. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  476. package/dist/docs/reference/model/Section.md +81 -40
  477. package/dist/docs/reference/model/SectionHullOptions.md +7 -7
  478. package/dist/docs/reference/model/SectionInspection.md +10 -10
  479. package/dist/docs/reference/model/{RegionOffsetJoin.md → SectionOffsetJoin.md} +3 -3
  480. package/dist/docs/reference/model/{RegionOffsetOptions.md → SectionOffsetOptions.md} +4 -4
  481. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  482. package/dist/docs/reference/model/Solid.md +66 -26
  483. package/dist/docs/reference/model/SolidInspection.md +7 -7
  484. package/dist/docs/reference/model/{SolidRayHit.md → SolidSegmentHit.md} +6 -6
  485. package/dist/docs/reference/model/SphereOptions.md +3 -3
  486. package/dist/docs/reference/model/StarOptions.md +10 -10
  487. package/dist/docs/reference/model/StrokeCap.md +16 -0
  488. package/dist/docs/reference/model/StrokeJoin.md +16 -0
  489. package/dist/docs/reference/model/StrokeOptions.md +91 -0
  490. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  491. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  492. package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
  493. package/dist/docs/reference/model/SweepOptions.md +6 -6
  494. package/dist/docs/reference/model/SweepOrientation.md +7 -7
  495. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  496. package/dist/docs/reference/model/ThreadEndStyle.md +1 -1
  497. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +1 -1
  498. package/dist/docs/reference/model/ThreadHandedness.md +1 -1
  499. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +1 -1
  500. package/dist/docs/reference/model/ThreadLeadInShape.md +1 -1
  501. package/dist/docs/reference/model/ThreadProfile.md +3 -3
  502. package/dist/docs/reference/model/ThreadRidgeOptions.md +1 -1
  503. package/dist/docs/reference/model/ThreadedNutBevel.md +1 -1
  504. package/dist/docs/reference/model/ThreadedNutOptions.md +4 -4
  505. package/dist/docs/reference/model/ThreadedNutPreflight.md +1 -1
  506. package/dist/docs/reference/model/ThreadedNutShape.md +1 -1
  507. package/dist/docs/reference/model/ThreadedRodOptions.md +4 -4
  508. package/dist/docs/reference/model/TorusOptions.md +8 -8
  509. package/dist/docs/reference/model/Transform2-type.md +256 -0
  510. package/dist/docs/reference/model/Transform2Input.md +20 -0
  511. package/dist/docs/reference/model/Transform2Matrix.md +15 -0
  512. package/dist/docs/reference/model/Transform3-type.md +296 -0
  513. package/dist/docs/reference/model/Transform3Input.md +20 -0
  514. package/dist/docs/reference/model/{Transform3.md → Transform3Matrix.md} +3 -3
  515. package/dist/docs/reference/model/TriangleMesh.md +1 -1
  516. package/dist/docs/reference/model/TriangleMeshAnalysis.md +2 -2
  517. package/dist/docs/reference/model/TriangleMeshMeasurements.md +1 -1
  518. package/dist/docs/reference/model/TubeOptions.md +8 -8
  519. package/dist/docs/reference/model/Vector2-type.md +270 -0
  520. package/dist/docs/reference/model/Vector2Input.md +20 -0
  521. package/dist/docs/reference/model/{Vector2.md → Vector2Tuple.md} +3 -3
  522. package/dist/docs/reference/model/Vector3-type.md +282 -0
  523. package/dist/docs/reference/model/Vector3Input.md +20 -0
  524. package/dist/docs/reference/model/{Vector3.md → Vector3Tuple.md} +3 -3
  525. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  526. package/dist/docs/reference/model/VectorTextMetrics.md +1 -1
  527. package/dist/docs/reference/model/anchor.md +1 -1
  528. package/dist/docs/reference/model/box.md +4 -4
  529. package/dist/docs/reference/model/castSegment.md +40 -0
  530. package/dist/docs/reference/model/categories/boolean-operations.md +4 -4
  531. package/dist/docs/reference/model/categories/bounded-surfaces.md +3 -3
  532. package/dist/docs/reference/model/categories/contracts.md +2 -2
  533. package/dist/docs/reference/model/categories/core-values-errors.md +5 -5
  534. package/dist/docs/reference/model/categories/explicit-profiles.md +3 -3
  535. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +2 -2
  536. package/dist/docs/reference/model/categories/generation.md +1 -1
  537. package/dist/docs/reference/model/categories/inspection.md +7 -8
  538. package/dist/docs/reference/model/categories/mesh-inspection.md +2 -2
  539. package/dist/docs/reference/model/categories/paths.md +33 -0
  540. package/dist/docs/reference/model/categories/primitives.md +3 -3
  541. package/dist/docs/reference/model/categories/resolution.md +2 -2
  542. package/dist/docs/reference/model/categories/sections.md +10 -8
  543. package/dist/docs/reference/model/categories/threads.md +5 -5
  544. package/dist/docs/reference/model/categories/transforms-placement.md +27 -13
  545. package/dist/docs/reference/model/circle.md +1 -1
  546. package/dist/docs/reference/model/components.md +10 -7
  547. package/dist/docs/reference/model/compose.md +1 -1
  548. package/dist/docs/reference/model/cylinder.md +1 -1
  549. package/dist/docs/reference/model/distance.md +2 -2
  550. package/dist/docs/reference/model/ellipse.md +1 -1
  551. package/dist/docs/reference/model/extrude.md +3 -3
  552. package/dist/docs/reference/model/generate.md +1 -1
  553. package/dist/docs/reference/model/gridPattern.md +4 -4
  554. package/dist/docs/reference/model/heightfield.md +2 -2
  555. package/dist/docs/reference/model/hull.md +2 -2
  556. package/dist/docs/reference/model/immutableBuffer.md +1 -1
  557. package/dist/docs/reference/model/immutableMesh.md +1 -1
  558. package/dist/docs/reference/model/implicit.md +3 -3
  559. package/dist/docs/reference/model/inspectSection.md +1 -1
  560. package/dist/docs/reference/model/inspectSolid.md +1 -1
  561. package/dist/docs/reference/model/internalThreadCutter.md +4 -4
  562. package/dist/docs/reference/model/intersect.md +1 -1
  563. package/dist/docs/reference/model/isEmpty.md +2 -2
  564. package/dist/docs/reference/model/linearPattern.md +4 -4
  565. package/dist/docs/reference/model/loft.md +1 -1
  566. package/dist/docs/reference/model/matchProfiles.md +2 -2
  567. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  568. package/dist/docs/reference/model/path2.md +42 -0
  569. package/dist/docs/reference/model/path3.md +42 -0
  570. package/dist/docs/reference/model/pathPattern.md +13 -12
  571. package/dist/docs/reference/model/polygon.md +4 -4
  572. package/dist/docs/reference/model/preflightInternalThreadCutter.md +3 -3
  573. package/dist/docs/reference/model/preflightThreadedNut.md +3 -3
  574. package/dist/docs/reference/model/preflightThreadedRod.md +3 -3
  575. package/dist/docs/reference/model/radialPattern.md +5 -37
  576. package/dist/docs/reference/model/rectangle.md +4 -4
  577. package/dist/docs/reference/model/regularPolygon.md +1 -1
  578. package/dist/docs/reference/model/revolve.md +5 -4
  579. package/dist/docs/reference/model/solidFromMesh.md +1 -1
  580. package/dist/docs/reference/model/sphere.md +1 -1
  581. package/dist/docs/reference/model/split.md +1 -1
  582. package/dist/docs/reference/model/splitByPlane.md +1 -1
  583. package/dist/docs/reference/model/star.md +4 -4
  584. package/dist/docs/reference/model/stroke.md +74 -0
  585. package/dist/docs/reference/model/svgPathSection.md +1 -1
  586. package/dist/docs/reference/model/svgSection.md +1 -1
  587. package/dist/docs/reference/model/sweep.md +7 -7
  588. package/dist/docs/reference/model/textSection.md +1 -1
  589. package/dist/docs/reference/model/threadRidge.md +2 -2
  590. package/dist/docs/reference/model/threadedNut.md +4 -4
  591. package/dist/docs/reference/model/threadedRod.md +4 -4
  592. package/dist/docs/reference/model/torus.md +3 -3
  593. package/dist/docs/reference/model/transform2.md +39 -0
  594. package/dist/docs/reference/model/transform3.md +39 -0
  595. package/dist/docs/reference/model/tube.md +3 -3
  596. package/dist/docs/reference/model/union.md +1 -1
  597. package/dist/docs/reference/model/vector2.md +32 -0
  598. package/dist/docs/reference/model/vector3.md +39 -0
  599. package/dist/docs/reference/model.md +9 -8
  600. package/dist/docs/reference/text/Bounds2.md +4 -4
  601. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
  602. package/dist/docs/reference/text/Vector2Tuple.md +7 -0
  603. package/dist/docs/reference/text/VectorFont.md +2 -2
  604. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  605. package/dist/docs/reference/text/VectorTextArcBaseline.md +3 -3
  606. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  607. package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
  608. package/dist/docs/reference/text/VectorTextMetrics.md +1 -1
  609. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  610. package/dist/docs/reference/text/categories/font-preparation.md +4 -4
  611. package/dist/docs/reference/text/prepareVectorFont.md +2 -2
  612. package/dist/docs/reference/text.md +1 -1
  613. package/dist/engine/construction-operations.js +31 -14
  614. package/dist/engine/deferred-context.js +11 -181
  615. package/dist/engine/execution.js +39 -8
  616. package/dist/engine/extrusion-finishing.js +1 -1
  617. package/dist/engine/index.js +6 -1
  618. package/dist/engine/inspection-operations.js +13 -11
  619. package/dist/engine/loft-operations.js +35 -14
  620. package/dist/engine/model-summary.js +8 -5
  621. package/dist/engine/native/material-components.js +305 -0
  622. package/dist/engine/native/regions.js +2 -1
  623. package/dist/engine/native/threads.js +3 -3
  624. package/dist/engine/native/transforms.js +11 -8
  625. package/dist/engine/operation-environment.js +2 -2
  626. package/dist/engine/pattern-operations.js +3 -3
  627. package/dist/engine/placement.js +2 -2
  628. package/dist/engine/primitive-anchors.js +17 -17
  629. package/dist/engine/primitive-operations.js +1 -1
  630. package/dist/engine/primitive-profiles.js +8 -7
  631. package/dist/engine/profile-mesh.js +7 -7
  632. package/dist/engine/recipe-realization.js +35 -21
  633. package/dist/engine/section-operations.js +52 -11
  634. package/dist/engine/session-graph.js +1 -1
  635. package/dist/engine/session-native.js +1 -1
  636. package/dist/engine/session-snapshot.js +17 -6
  637. package/dist/engine/session.js +13 -8
  638. package/dist/engine/shape-anchors.js +5 -11
  639. package/dist/engine/transform-operations.js +66 -49
  640. package/dist/geometry/anchors.js +40 -33
  641. package/dist/geometry/curves/sampling.js +14 -14
  642. package/dist/geometry/edge-finishing.js +1 -1
  643. package/dist/geometry/extrusion.js +13 -16
  644. package/dist/geometry/index.js +13 -10
  645. package/dist/geometry/loft/loft-simple-mesh.js +6 -6
  646. package/dist/geometry/loft/loft.js +22 -13
  647. package/dist/geometry/math/immutable-value.js +20 -0
  648. package/dist/geometry/math/vector-value.js +168 -0
  649. package/dist/geometry/math/vector2.js +80 -0
  650. package/dist/geometry/math/vector3.js +37 -7
  651. package/dist/geometry/mechanical/gear-motion.js +8 -5
  652. package/dist/geometry/mechanical/gears.js +38 -38
  653. package/dist/geometry/mechanical/index.js +3 -3
  654. package/dist/geometry/mechanical/standards.js +1 -1
  655. package/dist/geometry/mechanical/thread-helices.js +2 -3
  656. package/dist/geometry/mechanical/thread-mesh-plan.js +4 -5
  657. package/dist/geometry/mechanical/thread-mesh.js +7 -7
  658. package/dist/geometry/mechanical/thread-profiles.js +5 -5
  659. package/dist/geometry/mechanical/thread-solids.js +2 -2
  660. package/dist/geometry/mechanical/thread-surface.js +1 -1
  661. package/dist/geometry/mechanical/threads.js +8 -8
  662. package/dist/geometry/mesh/mesh-planar.js +25 -27
  663. package/dist/geometry/mesh/mesh-quality.js +5 -5
  664. package/dist/geometry/mesh/mesh-signature.js +13 -13
  665. package/dist/geometry/mesh/mesh-solid-intersections.js +5 -1
  666. package/dist/geometry/mesh/mesh-solid.js +7 -7
  667. package/dist/geometry/mesh/mesh.js +4 -15
  668. package/dist/geometry/paths/closest-point.js +63 -0
  669. package/dist/geometry/paths/frames.js +44 -14
  670. package/dist/geometry/paths/helix.js +16 -6
  671. package/dist/geometry/paths/path-value.js +252 -0
  672. package/dist/geometry/paths/planar.js +36 -23
  673. package/dist/geometry/paths/resampling.js +27 -5
  674. package/dist/geometry/patterns/placements.js +100 -27
  675. package/dist/geometry/patterns.js +2 -2
  676. package/dist/geometry/polygon-clipping.js +17 -0
  677. package/dist/geometry/primitive-resolution.js +4 -1
  678. package/dist/geometry/profiles/contour.js +6 -6
  679. package/dist/geometry/profiles/matched.js +4 -4
  680. package/dist/geometry/profiles/profiles.js +4 -4
  681. package/dist/geometry/profiles/rectangle.js +4 -4
  682. package/dist/geometry/profiles/side-profile.js +7 -7
  683. package/dist/geometry/profiles/span-sampling.js +1 -1
  684. package/dist/geometry/resolution.js +51 -39
  685. package/dist/geometry/revolve/revolve-mesh.js +12 -7
  686. package/dist/geometry/stroke-path.js +57 -68
  687. package/dist/geometry/svg/fill.js +7 -21
  688. package/dist/geometry/svg-import.js +23 -23
  689. package/dist/geometry/sweeps/options.js +5 -4
  690. package/dist/geometry/sweeps/orientation.js +5 -5
  691. package/dist/geometry/sweeps/stations.js +14 -14
  692. package/dist/geometry/sweeps/sweep-closed.js +5 -5
  693. package/dist/geometry/sweeps/sweep-mesh.js +9 -3
  694. package/dist/geometry/sweeps/sweep-open.js +4 -4
  695. package/dist/geometry/sweeps/validation.js +4 -7
  696. package/dist/geometry/transform-chain.js +172 -0
  697. package/dist/geometry/transform-geometry.js +27 -30
  698. package/dist/geometry/transform-matrix.js +14 -0
  699. package/dist/geometry/transform2.js +60 -0
  700. package/dist/geometry/transform3.js +70 -26
  701. package/dist/index.js +4 -0
  702. package/dist/model/execution-binding.js +10 -5
  703. package/dist/model/geometry-recipes.js +15 -0
  704. package/dist/{engine → model}/immutable-generation-data.js +88 -6
  705. package/dist/model/operation-dispatch.js +10 -3
  706. package/dist/model/operations.js +45 -35
  707. package/dist/model/recipe-declaration.js +199 -0
  708. package/dist/model/shape-handles.js +17 -5
  709. package/dist/text/index.js +15 -9
  710. package/dist/text/vector-text-layout.js +31 -26
  711. package/package.json +1 -1
  712. package/dist/docs/reference/geometry/Path2.md +0 -14
  713. package/dist/docs/reference/geometry/Path3.md +0 -14
  714. package/dist/docs/reference/geometry/PrimitivePlacement.md +0 -31
  715. package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +0 -83
  716. package/dist/docs/reference/geometry/Region.md +0 -14
  717. package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
  718. package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
  719. package/dist/docs/reference/geometry/Transform3.md +0 -12
  720. package/dist/docs/reference/geometry/Vector2.md +0 -7
  721. package/dist/docs/reference/geometry/Vector3.md +0 -7
  722. package/dist/docs/reference/geometry/attachTransform.md +0 -73
  723. package/dist/docs/reference/geometry/cumulativePathLengths.md +0 -33
  724. package/dist/docs/reference/geometry/measureTriangleMesh.md +0 -55
  725. package/dist/docs/reference/geometry/pathLength.md +0 -33
  726. package/dist/docs/reference/geometry/rotateAroundAxis3.md +0 -38
  727. package/dist/docs/reference/geometry/strokePathRegion.md +0 -63
  728. package/dist/docs/reference/geometry/transformContour.md +0 -42
  729. package/dist/docs/reference/geometry/transformPath2.md +0 -40
  730. package/dist/docs/reference/geometry/transformPath3.md +0 -33
  731. package/dist/docs/reference/geometry/transformRegion.md +0 -40
  732. package/dist/docs/reference/model/Transform2.md +0 -15
  733. package/dist/docs/reference/model/fromRegion.md +0 -33
  734. package/dist/docs/reference/model/rayCast.md +0 -40
  735. package/dist/docs/reference/model/toRegion.md +0 -33
  736. package/dist/docs/reference/model/toTriangleMesh.md +0 -27
  737. package/dist/docs/reference/text/Vector2.md +0 -7
  738. package/dist/engine/geometry-recipes.js +0 -12
  739. package/dist/engine/pattern-transform.js +0 -9
  740. package/dist/geometry/paths/path.js +0 -32
@@ -0,0 +1,168 @@
1
+ import { GeometryError } from "../errors.js";
2
+ import { immutableMathClass } from "./immutable-value.js";
3
+ import { add2, cross2, distance2, dot2, length2, lerp2, normalize2, scale2, subtract2, } from "./vector2.js";
4
+ import { add3, cross3, distance3, dot3, length3, lerp3, normalize3, scale3, subtract3, } from "./vector3.js";
5
+ const finite = (value, operation) => {
6
+ if (!Number.isFinite(value)) {
7
+ throw new GeometryError("NON_FINITE_VALUE", "Vector coordinates and results must be finite.", {
8
+ operation,
9
+ });
10
+ }
11
+ return value;
12
+ };
13
+ const validateCoordinates = (values, operation) => {
14
+ for (const coordinate of values)
15
+ finite(coordinate, operation);
16
+ };
17
+ const operand2 = (input, operation) => {
18
+ const values = vector2Data(input);
19
+ validateCoordinates(values, operation);
20
+ return values;
21
+ };
22
+ const operand3 = (input, operation) => {
23
+ const values = vector3Data(input);
24
+ validateCoordinates(values, operation);
25
+ return values;
26
+ };
27
+ function invalidVector(dimensions) {
28
+ throw new GeometryError("INVALID_ARGUMENT", `Expected a ${dimensions}D vector or coordinate tuple.`, {
29
+ operation: `vector${dimensions}`,
30
+ });
31
+ }
32
+ const tupleData = (input, dimensions) => {
33
+ if (typeof input !== "object" || input === null)
34
+ return invalidVector(dimensions);
35
+ let values = input;
36
+ if (!Array.isArray(input)) {
37
+ const method = Reflect.get(input, "toArray");
38
+ if (typeof method !== "function")
39
+ return invalidVector(dimensions);
40
+ values = Reflect.apply(method, input, []);
41
+ }
42
+ if (!Array.isArray(values) || values.length !== dimensions)
43
+ return invalidVector(dimensions);
44
+ return values;
45
+ };
46
+ /** Internal tuple view; validates dimension and shape without allocating or checking finiteness. */
47
+ export const vector2Data = (input) => tupleData(input, 2);
48
+ /** Internal tuple view; validates dimension and shape without allocating or checking finiteness. */
49
+ export const vector3Data = (input) => tupleData(input, 3);
50
+ const PlanarVector = /* @__PURE__ */ immutableMathClass(class PlanarVector {
51
+ values;
52
+ constructor(values, operation = "vector2") {
53
+ this.values = values;
54
+ validateCoordinates(values, operation);
55
+ Object.freeze(values);
56
+ Object.freeze(this);
57
+ }
58
+ get x() {
59
+ return this.values[0];
60
+ }
61
+ get y() {
62
+ return this.values[1];
63
+ }
64
+ add(other) {
65
+ return new PlanarVector(add2(this.values, operand2(other, "vector2.add")), "vector2.add");
66
+ }
67
+ subtract(other) {
68
+ return new PlanarVector(subtract2(this.values, operand2(other, "vector2.subtract")), "vector2.subtract");
69
+ }
70
+ scale(factor) {
71
+ return new PlanarVector(scale2(this.values, finite(factor, "vector2.scale")), "vector2.scale");
72
+ }
73
+ normalize(epsilon) {
74
+ return new PlanarVector(normalize2(this.values, epsilon), "vector2.normalize");
75
+ }
76
+ lerp(other, t) {
77
+ return new PlanarVector(lerp2(this.values, operand2(other, "vector2.lerp"), finite(t, "vector2.lerp")), "vector2.lerp");
78
+ }
79
+ dot(other) {
80
+ return finite(dot2(this.values, operand2(other, "vector2.dot")), "vector2.dot");
81
+ }
82
+ cross(other) {
83
+ return finite(cross2(this.values, operand2(other, "vector2.cross")), "vector2.cross");
84
+ }
85
+ length() {
86
+ return finite(length2(this.values), "vector2.length");
87
+ }
88
+ distance(other) {
89
+ return finite(distance2(this.values, operand2(other, "vector2.distance")), "vector2.distance");
90
+ }
91
+ toArray() {
92
+ return this.values;
93
+ }
94
+ });
95
+ const SpatialVector = /* @__PURE__ */ immutableMathClass(class SpatialVector {
96
+ values;
97
+ constructor(values, operation = "vector3") {
98
+ this.values = values;
99
+ validateCoordinates(values, operation);
100
+ Object.freeze(values);
101
+ Object.freeze(this);
102
+ }
103
+ get x() {
104
+ return this.values[0];
105
+ }
106
+ get y() {
107
+ return this.values[1];
108
+ }
109
+ get z() {
110
+ return this.values[2];
111
+ }
112
+ add(other) {
113
+ return new SpatialVector(add3(this.values, operand3(other, "vector3.add")), "vector3.add");
114
+ }
115
+ subtract(other) {
116
+ return new SpatialVector(subtract3(this.values, operand3(other, "vector3.subtract")), "vector3.subtract");
117
+ }
118
+ scale(factor) {
119
+ return new SpatialVector(scale3(this.values, finite(factor, "vector3.scale")), "vector3.scale");
120
+ }
121
+ normalize(epsilon) {
122
+ return new SpatialVector(normalize3(this.values, epsilon), "vector3.normalize");
123
+ }
124
+ lerp(other, t) {
125
+ return new SpatialVector(lerp3(this.values, operand3(other, "vector3.lerp"), finite(t, "vector3.lerp")), "vector3.lerp");
126
+ }
127
+ dot(other) {
128
+ return finite(dot3(this.values, operand3(other, "vector3.dot")), "vector3.dot");
129
+ }
130
+ cross(other) {
131
+ return new SpatialVector(cross3(this.values, operand3(other, "vector3.cross")), "vector3.cross");
132
+ }
133
+ length() {
134
+ return finite(length3(this.values), "vector3.length");
135
+ }
136
+ distance(other) {
137
+ return finite(distance3(this.values, operand3(other, "vector3.distance")), "vector3.distance");
138
+ }
139
+ toArray() {
140
+ return this.values;
141
+ }
142
+ });
143
+ /**
144
+ * Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
145
+ * Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
146
+ * and overflow throw `NON_FINITE_VALUE` GeometryError.
147
+ * Use transform2().applyDirection(value) for rotations and nonuniform scaling.
148
+ */
149
+ export function vector2(input) {
150
+ const values = operand2(input, "vector2");
151
+ return new PlanarVector([values[0], values[1]]);
152
+ }
153
+ /**
154
+ * Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
155
+ * Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
156
+ * and overflow throw `NON_FINITE_VALUE` GeometryError.
157
+ * Use transform3().applyDirection(value) for rotations and nonuniform scaling.
158
+ *
159
+ * @example
160
+ * ```ts
161
+ * const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
162
+ * const alignment = direction.dot([0, 0, 1]);
163
+ * ```
164
+ */
165
+ export function vector3(input) {
166
+ const values = operand3(input, "vector3");
167
+ return new SpatialVector([values[0], values[1], values[2]]);
168
+ }
@@ -0,0 +1,80 @@
1
+ import { GeometryError } from "../errors.js";
2
+ /** Adds two finite XY vectors component-wise. */
3
+ export const add2 = (a, b) => [a[0] + b[0], a[1] + b[1]];
4
+ /** Subtracts `b` from `a` component-wise. */
5
+ export const subtract2 = (a, b) => [
6
+ a[0] - b[0],
7
+ a[1] - b[1],
8
+ ];
9
+ /** Multiplies a vector by a dimensionless scalar. */
10
+ export const scale2 = (vector, scale) => [
11
+ vector[0] * scale,
12
+ vector[1] * scale,
13
+ ];
14
+ /** Returns the scalar dot product. */
15
+ export const dot2 = (a, b) => a[0] * b[0] + a[1] * b[1];
16
+ /** Returns the signed scalar cross product; positive means `b` is counter-clockwise from `a`. */
17
+ export const cross2 = (a, b) => a[0] * b[1] - a[1] * b[0];
18
+ /** Returns Euclidean vector length in the vector's coordinate units. */
19
+ export const length2 = (vector) => Math.hypot(vector[0], vector[1]);
20
+ /** Returns Euclidean point distance without allocating an intermediate difference vector. */
21
+ export const distance2 = (a, b) => Math.hypot(a[0] - b[0], a[1] - b[1]);
22
+ /**
23
+ * Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).
24
+ * Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with
25
+ * `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.
26
+ */
27
+ export const normalize2 = (vector, epsilon = 1e-12) => {
28
+ const operation = "normalize2";
29
+ if (!Number.isFinite(epsilon) || epsilon < 0) {
30
+ throw new GeometryError("INVALID_TOLERANCE", "epsilon must be finite and non-negative.", {
31
+ operation,
32
+ });
33
+ }
34
+ const length = length2(vector);
35
+ if (!Number.isFinite(length)) {
36
+ throw new GeometryError("NON_FINITE_VALUE", "Cannot normalize a vector without finite length.", {
37
+ operation,
38
+ });
39
+ }
40
+ if (length <= epsilon) {
41
+ throw new GeometryError("DEGENERATE_GEOMETRY", "Cannot normalize a zero-length vector.", {
42
+ operation,
43
+ });
44
+ }
45
+ // Subnormal lengths lose relative precision; rescale only this rare case before division.
46
+ if (length < 2 ** -1022) {
47
+ const maximum = Math.max(Math.abs(vector[0]), Math.abs(vector[1]));
48
+ const x = vector[0] / maximum;
49
+ const y = vector[1] / maximum;
50
+ const scaledLength = Math.hypot(x, y);
51
+ return [x / scaledLength, y / scaledLength];
52
+ }
53
+ return [vector[0] / length, vector[1] / length];
54
+ };
55
+ /** Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. */
56
+ export const lerp2 = (a, b, t) => add2(a, scale2(subtract2(b, a), t));
57
+ /**
58
+ * Rotates a finite vector counter-clockwise in XY by `degrees` about the origin.
59
+ * Throws `NON_FINITE_VALUE` for nonfinite coordinates, angles, or derived coordinates.
60
+ */
61
+ export const rotate2 = (vector, degrees) => {
62
+ if (!Number.isFinite(vector[0]) || !Number.isFinite(vector[1]) || !Number.isFinite(degrees)) {
63
+ throw new GeometryError("NON_FINITE_VALUE", "Rotation coordinates and angle must be finite.", {
64
+ operation: "rotate2",
65
+ });
66
+ }
67
+ const radians = degrees * (Math.PI / 180);
68
+ const cosine = Math.cos(radians);
69
+ const sine = Math.sin(radians);
70
+ const rotated = [
71
+ vector[0] * cosine - vector[1] * sine,
72
+ vector[0] * sine + vector[1] * cosine,
73
+ ];
74
+ if (!Number.isFinite(rotated[0]) || !Number.isFinite(rotated[1])) {
75
+ throw new GeometryError("NON_FINITE_VALUE", "Rotated coordinates must remain finite.", {
76
+ operation: "rotate2",
77
+ });
78
+ }
79
+ return rotated;
80
+ };
@@ -1,3 +1,4 @@
1
+ import { GeometryError } from "../errors.js";
1
2
  /**
2
3
  * Adds two finite XYZ vectors component-wise.
3
4
  * @example
@@ -5,7 +6,11 @@
5
6
  * add3([1, 2, 3], [4, 5, 6]); // [5, 7, 9]
6
7
  * ```
7
8
  */
8
- export const add3 = (a, b) => [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
9
+ export const add3 = (a, b) => [
10
+ a[0] + b[0],
11
+ a[1] + b[1],
12
+ a[2] + b[2],
13
+ ];
9
14
  /**
10
15
  * Subtracts `b` from `a`.
11
16
  * @example
@@ -52,23 +57,48 @@ export const cross3 = (a, b) => [
52
57
  ];
53
58
  /** Returns Euclidean vector length in the vector's coordinate units. */
54
59
  export const length3 = (vector) => Math.hypot(vector[0], vector[1], vector[2]);
55
- /** Normalizes a finite vector and rejects nonfinite lengths or lengths at or below `epsilon`. */
60
+ /** Returns Euclidean point distance without allocating an intermediate difference vector. */
61
+ export const distance3 = (a, b) => Math.hypot(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
62
+ /**
63
+ * Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).
64
+ * Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with
65
+ * `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.
66
+ */
56
67
  export const normalize3 = (vector, epsilon = 1e-12) => {
68
+ const operation = "normalize3";
69
+ if (!Number.isFinite(epsilon) || epsilon < 0) {
70
+ throw new GeometryError("INVALID_TOLERANCE", "epsilon must be finite and non-negative.", {
71
+ operation,
72
+ });
73
+ }
57
74
  const length = length3(vector);
58
75
  if (!Number.isFinite(length)) {
59
- throw new Error("Cannot normalize a vector without finite length.");
76
+ throw new GeometryError("NON_FINITE_VALUE", "Cannot normalize a vector without finite length.", {
77
+ operation,
78
+ });
60
79
  }
61
80
  if (length <= epsilon) {
62
- throw new Error("Cannot normalize a zero-length vector.");
81
+ throw new GeometryError("DEGENERATE_GEOMETRY", "Cannot normalize a zero-length vector.", {
82
+ operation,
83
+ });
84
+ }
85
+ // Subnormal lengths lose relative precision; rescale only this rare case before division.
86
+ if (length < 2 ** -1022) {
87
+ const maximum = Math.max(Math.abs(vector[0]), Math.abs(vector[1]), Math.abs(vector[2]));
88
+ const x = vector[0] / maximum;
89
+ const y = vector[1] / maximum;
90
+ const z = vector[2] / maximum;
91
+ const scaledLength = Math.hypot(x, y, z);
92
+ return [x / scaledLength, y / scaledLength, z / scaledLength];
63
93
  }
64
- return scale3(vector, 1 / length);
94
+ return [vector[0] / length, vector[1] / length, vector[2] / length];
65
95
  };
66
96
  /** Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. */
67
97
  export const lerp3 = (a, b, t) => add3(a, scale3(subtract3(b, a), t));
68
98
  /** Removes the component parallel to a normalized plane normal. */
69
99
  export const projectOntoPlane3 = (vector, normal) => subtract3(vector, scale3(normal, dot3(vector, normal)));
70
- /** Rotates a vector right-handed around an axis by `angle` radians. */
71
- export const rotateAroundAxis3 = (vector, axis, angle) => {
100
+ /** Rotates a vector right-handed around a unit axis by `angle` radians. */
101
+ export const rotateAroundAxis3Radians = (vector, axis, angle) => {
72
102
  const cosine = Math.cos(angle);
73
103
  const sine = Math.sin(angle);
74
104
  return add3(add3(scale3(vector, cosine), scale3(cross3(axis, vector), sine)), scale3(axis, dot3(axis, vector) * (1 - cosine)));
@@ -50,7 +50,8 @@ const multiPolygonArea = (multiPolygon) => multiPolygon.reduce((total, polygon)
50
50
  /**
51
51
  * Measures sampled kinematic interference over one tooth cycle of an internal gear pair.
52
52
  *
53
- * The driver and ring rotate in the same direction at their resolved tooth-count ratio. Each
53
+ * The driver and ring start with half-tooth offsets for odd tooth counts, then rotate in the
54
+ * same direction at their resolved tooth-count ratio. Each
54
55
  * sampled pinion outline is subtracted from the ring's center-and-space opening; remaining area is
55
56
  * solid overlap. This catches involute, tip, and trimming interference that a single assembled pose
56
57
  * misses. It is a deterministic model check, not a certified gear-rating calculation.
@@ -70,12 +71,14 @@ export function measureInternalCylindricalGearPairMotion(spec, options = {}) {
70
71
  const ringSpace = sampleInternalCylindricalGearSpaceOutline(spec.driven, options.outline);
71
72
  const ringTipRadius = pair.driven.pitchRadius - pair.driven.addendum;
72
73
  const contactWindow = contactWindowPolygon(pair.centerDistance, pair.driver.outsideRadius, ringTipRadius);
73
- const initialRingPhase = pair.driven.toothCount % 2 === 0 ? 0 : pair.driven.angularPitch / 2;
74
+ const initialRingPhase = pair.driven.toothCount % 2 === 0 ? 0 : pair.driven.angularPitchRadians / 2;
75
+ const initialDriverPhase = pair.driver.toothCount % 2 === 0 ? 0 : pair.driver.angularPitchRadians / 2;
74
76
  let maximumOverlapArea = 0;
75
- let maximumPhase = 0;
77
+ let maximumPhase = initialDriverPhase;
76
78
  for (let sample = 0; sample < samples; sample += 1) {
77
- const driverPhase = (pair.driver.angularPitch * sample) / samples;
78
- const drivenPhase = initialRingPhase + driverPhase / pair.ratio;
79
+ const phase = (pair.driver.angularPitchRadians * sample) / samples;
80
+ const driverPhase = initialDriverPhase + phase;
81
+ const drivenPhase = initialRingPhase + phase / pair.ratio;
79
82
  const posedDriver = clippingPolygon(transformedLoop(driver, driverPhase));
80
83
  const posedSpace = clippingPolygon(transformedLoop(ringSpace, drivenPhase, pair.centerDistance));
81
84
  const contactDriver = polygonClipping.intersection(posedDriver, contactWindow);
@@ -33,22 +33,22 @@ const freezePoints = (points) => {
33
33
  * count `z_v = z / cos³(beta)`, so increasing helix angle can reduce the physical tooth count.
34
34
  */
35
35
  export function minimumCylindricalGearToothCountWithoutUndercut(spec = {}) {
36
- const pressureAngleDegrees = finite(spec.pressureAngleDegrees ?? DEFAULT_PRESSURE_ANGLE_DEGREES, "Pressure angle", "minimumCylindricalGearToothCountWithoutUndercut");
37
- const helixAngleDegrees = finite(spec.helixAngleDegrees ?? 0, "Helix angle", "minimumCylindricalGearToothCountWithoutUndercut");
38
- if (!(pressureAngleDegrees > 0 && pressureAngleDegrees < 45)) {
36
+ const pressureAngle = finite(spec.pressureAngle ?? DEFAULT_PRESSURE_ANGLE_DEGREES, "Pressure angle", "minimumCylindricalGearToothCountWithoutUndercut");
37
+ const helixAngle = finite(spec.helixAngle ?? 0, "Helix angle", "minimumCylindricalGearToothCountWithoutUndercut");
38
+ if (!(pressureAngle > 0 && pressureAngle < 45)) {
39
39
  throw new GeometryError("INVALID_ARGUMENT", "Pressure angle must be greater than 0 and less than 45 degrees.", {
40
40
  operation: "minimumCylindricalGearToothCountWithoutUndercut",
41
- details: { pressureAngleDegrees },
41
+ details: { pressureAngle },
42
42
  });
43
43
  }
44
- if (!(Math.abs(helixAngleDegrees) < 45)) {
44
+ if (!(Math.abs(helixAngle) < 45)) {
45
45
  throw new GeometryError("INVALID_ARGUMENT", "The absolute helix angle must be less than 45 degrees.", {
46
46
  operation: "minimumCylindricalGearToothCountWithoutUndercut",
47
- details: { helixAngleDegrees },
47
+ details: { helixAngle },
48
48
  });
49
49
  }
50
- const pressureAngleRadians = degreesToRadians(pressureAngleDegrees);
51
- const helixAngleRadians = degreesToRadians(helixAngleDegrees);
50
+ const pressureAngleRadians = degreesToRadians(pressureAngle);
51
+ const helixAngleRadians = degreesToRadians(helixAngle);
52
52
  const exact = (2 * Math.cos(helixAngleRadians) ** 3) / Math.sin(pressureAngleRadians) ** 2;
53
53
  // Exact boundary cases such as alpha=30° should not round up because of floating-point noise.
54
54
  return Math.ceil(exact - Math.max(1, Math.abs(exact)) * 1e-12);
@@ -64,7 +64,7 @@ const resolveSimpleInvoluteProfileFacts = (dimensions, operation) => {
64
64
  const halfAngleAtTip = halfAngleAt(dimensions.outsideRadius);
65
65
  if (!(startRadius <= dimensions.outsideRadius) ||
66
66
  !(halfAngleAtTip > 0) ||
67
- !(halfAngleAtStart < dimensions.angularPitch / 2)) {
67
+ !(halfAngleAtStart < dimensions.angularPitchRadians / 2)) {
68
68
  throw new GeometryError("DEGENERATE_GEOMETRY", "The selected tooth proportions cannot form a simple involute outline.", {
69
69
  operation,
70
70
  details: { halfAngleAtStart, halfAngleAtTip, startRadius },
@@ -73,7 +73,7 @@ const resolveSimpleInvoluteProfileFacts = (dimensions, operation) => {
73
73
  return Object.freeze({ halfAngleAt, halfAngleAtStart, halfAngleAtTip, startRadius });
74
74
  };
75
75
  const internalCylindricalGearSpaceDimensions = (dimensions) => {
76
- const circularPitch = dimensions.angularPitch * dimensions.pitchRadius;
76
+ const circularPitch = dimensions.angularPitchRadians * dimensions.pitchRadius;
77
77
  return Object.freeze({
78
78
  ...dimensions,
79
79
  outsideRadius: dimensions.pitchRadius + dimensions.dedendum,
@@ -90,8 +90,8 @@ const internalCylindricalGearSpaceDimensions = (dimensions) => {
90
90
  const resolveCylindricalGearDimensions = (spec, profile) => {
91
91
  const toothCount = finite(spec.toothCount, "Tooth count");
92
92
  const module = finite(spec.module, "Module");
93
- const pressureAngleDegrees = finite(spec.pressureAngleDegrees ?? DEFAULT_PRESSURE_ANGLE_DEGREES, "Pressure angle");
94
- const helixAngleDegrees = finite(spec.helixAngleDegrees ?? 0, "Helix angle");
93
+ const pressureAngle = finite(spec.pressureAngle ?? DEFAULT_PRESSURE_ANGLE_DEGREES, "Pressure angle");
94
+ const helixAngle = finite(spec.helixAngle ?? 0, "Helix angle");
95
95
  const backlash = finite(spec.backlash ?? 0, "Backlash");
96
96
  const clearanceFactor = finite(spec.clearanceFactor ?? DEFAULT_CLEARANCE_FACTOR, "Clearance factor");
97
97
  if (!Number.isInteger(toothCount) || toothCount < 6 || toothCount > MAXIMUM_TOOTH_COUNT) {
@@ -103,29 +103,29 @@ const resolveCylindricalGearDimensions = (spec, profile) => {
103
103
  details: { module },
104
104
  });
105
105
  }
106
- if (!(pressureAngleDegrees > 0 && pressureAngleDegrees < 45)) {
107
- throw new GeometryError("INVALID_ARGUMENT", "Pressure angle must be greater than 0 and less than 45 degrees.", { operation: "resolveCylindricalGear", details: { pressureAngleDegrees } });
106
+ if (!(pressureAngle > 0 && pressureAngle < 45)) {
107
+ throw new GeometryError("INVALID_ARGUMENT", "Pressure angle must be greater than 0 and less than 45 degrees.", { operation: "resolveCylindricalGear", details: { pressureAngle } });
108
108
  }
109
- if (!(Math.abs(helixAngleDegrees) < 45)) {
110
- throw new GeometryError("INVALID_ARGUMENT", "The absolute helix angle must be less than 45 degrees.", { operation: "resolveCylindricalGear", details: { helixAngleDegrees } });
109
+ if (!(Math.abs(helixAngle) < 45)) {
110
+ throw new GeometryError("INVALID_ARGUMENT", "The absolute helix angle must be less than 45 degrees.", { operation: "resolveCylindricalGear", details: { helixAngle } });
111
111
  }
112
112
  if (backlash < 0 || clearanceFactor < 0) {
113
113
  throw new GeometryError("INVALID_ARGUMENT", "Backlash and clearance factor must be non-negative.", { operation: "resolveCylindricalGear" });
114
114
  }
115
- const pressureAngleRadians = degreesToRadians(pressureAngleDegrees);
116
- const helixAngleRadians = degreesToRadians(helixAngleDegrees);
115
+ const pressureAngleRadians = degreesToRadians(pressureAngle);
116
+ const helixAngleRadians = degreesToRadians(helixAngle);
117
117
  const minimumToothCountWithoutUndercut = minimumCylindricalGearToothCountWithoutUndercut({
118
- helixAngleDegrees,
119
- pressureAngleDegrees,
118
+ helixAngle,
119
+ pressureAngle,
120
120
  });
121
121
  const virtualToothCount = toothCount / Math.cos(helixAngleRadians) ** 3;
122
122
  if (profile === "external" && toothCount < minimumToothCountWithoutUndercut) {
123
- throw new GeometryError("INVALID_ARGUMENT", `An unshifted full-depth external involute at ${pressureAngleDegrees}° pressure angle and ${Math.abs(helixAngleDegrees)}° helix angle requires at least ${minimumToothCountWithoutUndercut} teeth to avoid undercut; profile shift is not supported.`, {
123
+ throw new GeometryError("INVALID_ARGUMENT", `An unshifted full-depth external involute at ${pressureAngle}° pressure angle and ${Math.abs(helixAngle)}° helix angle requires at least ${minimumToothCountWithoutUndercut} teeth to avoid undercut; profile shift is not supported.`, {
124
124
  operation: "resolveCylindricalGear",
125
125
  details: {
126
- helixAngleDegrees,
126
+ helixAngle,
127
127
  minimumToothCountWithoutUndercut,
128
- pressureAngleDegrees,
128
+ pressureAngle,
129
129
  toothCount,
130
130
  virtualToothCount,
131
131
  },
@@ -151,7 +151,7 @@ const resolveCylindricalGearDimensions = (spec, profile) => {
151
151
  }
152
152
  const dimensions = Object.freeze({
153
153
  addendum,
154
- angularPitch: (Math.PI * 2) / toothCount,
154
+ angularPitchRadians: (Math.PI * 2) / toothCount,
155
155
  backlash,
156
156
  baseRadius: pitchRadius * Math.cos(transversePressureAngleRadians),
157
157
  dedendum,
@@ -199,12 +199,12 @@ export function resolveCylindricalGearPair(spec) {
199
199
  // separate tip/interference constraints are checked by the pair and coupled-motion validators.
200
200
  const driven = resolveCylindricalGearDimensions(spec.driven, spec.mesh);
201
201
  const epsilon = 1e-10;
202
- const driverHelixDegrees = spec.driver.helixAngleDegrees ?? 0;
203
- const drivenHelixDegrees = spec.driven.helixAngleDegrees ?? 0;
204
- const requiredDrivenHelixAngleDegrees = spec.mesh === "external" ? -driverHelixDegrees : driverHelixDegrees;
202
+ const driverHelixDegrees = spec.driver.helixAngle ?? 0;
203
+ const drivenHelixDegrees = spec.driven.helixAngle ?? 0;
204
+ const requiredDrivenHelixAngle = spec.mesh === "external" ? -driverHelixDegrees : driverHelixDegrees;
205
205
  if (Math.abs(driver.module - driven.module) > epsilon ||
206
206
  Math.abs(driver.pressureAngleRadians - driven.pressureAngleRadians) > epsilon ||
207
- Math.abs(drivenHelixDegrees - requiredDrivenHelixAngleDegrees) > epsilon) {
207
+ Math.abs(drivenHelixDegrees - requiredDrivenHelixAngle) > epsilon) {
208
208
  throw new GeometryError("INVALID_ARGUMENT", "Mating gears must share normal module and pressure angle with conjugate helix hands.", { operation: "resolveCylindricalGearPair" });
209
209
  }
210
210
  if (spec.mesh === "internal" && driven.pitchRadius <= driver.outsideRadius) {
@@ -218,7 +218,7 @@ export function resolveCylindricalGearPair(spec) {
218
218
  driven,
219
219
  drivenDirection: spec.mesh === "external" ? -1 : 1,
220
220
  ratio: driven.toothCount / driver.toothCount,
221
- requiredDrivenHelixAngleDegrees,
221
+ requiredDrivenHelixAngle,
222
222
  });
223
223
  }
224
224
  const exactSampleCount = (value, label, minimum, maximum, operation) => {
@@ -345,7 +345,7 @@ const sampleResolvedCylindricalGearOutline = (dimensions, options, operation) =>
345
345
  const { halfAngleAt, halfAngleAtStart, halfAngleAtTip, startRadius } = resolveSimpleInvoluteProfileFacts(dimensions, operation);
346
346
  const limits = resolveGeometrySamplingLimits(options.limits);
347
347
  const resolution = resolveGeometryResolution(options.resolution, limits);
348
- const rootArcAngle = dimensions.angularPitch / 2 - halfAngleAtStart;
348
+ const rootArcAngle = dimensions.angularPitchRadians / 2 - halfAngleAtStart;
349
349
  const rootArcSamples = options.rootArcSamples === undefined
350
350
  ? resolveAdaptiveArcSamples(dimensions.rootRadius, rootArcAngle, resolution, limits)
351
351
  : exactSampleCount(options.rootArcSamples, "Root arc samples", 1, limits.maxCircularSegments, operation);
@@ -361,10 +361,12 @@ const sampleResolvedCylindricalGearOutline = (dimensions, options, operation) =>
361
361
  : exactSampleCount(options.flankSamples, "Flank samples", 2, maximumFlankSamples, operation);
362
362
  const estimatedPoints = dimensions.toothCount * (flankSamples * 2 + fixedPerTooth);
363
363
  assertSamplingCount(estimatedPoints, operation, limits.maxProfilePoints);
364
- const points = [polarPoint(dimensions.rootRadius, -dimensions.angularPitch / 2)];
364
+ const points = [
365
+ polarPoint(dimensions.rootRadius, -dimensions.angularPitchRadians / 2),
366
+ ];
365
367
  for (let tooth = 0; tooth < dimensions.toothCount; tooth += 1) {
366
- const centerAngle = tooth * dimensions.angularPitch;
367
- const valleyBefore = centerAngle - dimensions.angularPitch / 2;
368
+ const centerAngle = tooth * dimensions.angularPitchRadians;
369
+ const valleyBefore = centerAngle - dimensions.angularPitchRadians / 2;
368
370
  const leftRootAngle = centerAngle - halfAngleAtStart;
369
371
  for (let sample = 1; sample <= rootArcSamples; sample += 1) {
370
372
  const amount = sample / rootArcSamples;
@@ -391,7 +393,7 @@ const sampleResolvedCylindricalGearOutline = (dimensions, options, operation) =>
391
393
  if (startRadius > dimensions.rootRadius) {
392
394
  points.push(polarPoint(dimensions.rootRadius, rightRootAngle));
393
395
  }
394
- const valleyAfter = centerAngle + dimensions.angularPitch / 2;
396
+ const valleyAfter = centerAngle + dimensions.angularPitchRadians / 2;
395
397
  for (let sample = 1; sample <= rootArcSamples; sample += 1) {
396
398
  const amount = sample / rootArcSamples;
397
399
  points.push(polarPoint(dimensions.rootRadius, rightRootAngle + (valleyAfter - rightRootAngle) * amount));
@@ -431,11 +433,9 @@ export function resolveRackPitch(spec) {
431
433
  const reference = resolveCylindricalGear({
432
434
  ...(spec.backlash === undefined ? {} : { backlash: spec.backlash }),
433
435
  ...(spec.clearanceFactor === undefined ? {} : { clearanceFactor: spec.clearanceFactor }),
434
- ...(spec.helixAngleDegrees === undefined ? {} : { helixAngleDegrees: spec.helixAngleDegrees }),
436
+ ...(spec.helixAngle === undefined ? {} : { helixAngle: spec.helixAngle }),
435
437
  module: spec.module,
436
- ...(spec.pressureAngleDegrees === undefined
437
- ? {}
438
- : { pressureAngleDegrees: spec.pressureAngleDegrees }),
438
+ ...(spec.pressureAngle === undefined ? {} : { pressureAngle: spec.pressureAngle }),
439
439
  // Rack pitch facts do not depend on this cylindrical reference count. Use the maximum so the
440
440
  // reference remains undercut-free for every supported normal pressure and helix angle.
441
441
  toothCount: MAXIMUM_TOOTH_COUNT,
@@ -5,9 +5,9 @@
5
5
  */
6
6
  export { minimumCylindricalGearToothCountWithoutUndercut, resolveCylindricalGear, resolveCylindricalGearPair, resolveRackPitch, sampleCylindricalGearOutline, sampleInternalCylindricalGearSpaceOutline, sampleRackToothPath, } from "./gears.js";
7
7
  export { measureInternalCylindricalGearPairMotion } from "./gear-motion.js";
8
- export { buildHelicalThreadRidgeMesh, buildHelicalThreadSolidMesh } from "./thread-mesh.js";
9
- export { compensateThreadProfileAxially, compensateThreadProfileForFaceting, createThreadProfile, } from "./thread-profiles.js";
8
+ export { helicalThreadRidgeMesh, helicalThreadSolidMesh } from "./thread-mesh.js";
9
+ export { compensateThreadProfileAxially, compensateThreadProfileForFaceting, threadProfile, } from "./thread-profiles.js";
10
10
  export { preflightHelicalThreadSolidMesh } from "./thread-mesh-plan.js";
11
11
  export { sampleConventionalThreadHelices as sampleThreadHelices } from "./thread-helices.js";
12
12
  export { compensateThreadDiameters, PRINTABLE_THREAD_FIT_POLICIES, resolvePrintableThreadFitPolicy, resolveThreadCircularSegments, } from "./threads.js";
13
- export { getMetricClearanceHole, getMetricFastenerStandard, METRIC_FASTENER_STANDARDS, } from "./standards.js";
13
+ export { getMetricClearanceHoleDiameter, getMetricFastenerStandard, METRIC_FASTENER_STANDARDS, } from "./standards.js";
@@ -50,7 +50,7 @@ export function getMetricFastenerStandard(size) {
50
50
  return METRIC_FASTENER_STANDARDS[size];
51
51
  }
52
52
  /** Returns one recommended metric clearance-hole diameter in millimetres. */
53
- export function getMetricClearanceHole(size, fit = "normal") {
53
+ export function getMetricClearanceHoleDiameter(size, fit = "normal") {
54
54
  const holes = getMetricFastenerStandard(size).clearanceHoles;
55
55
  const diameter = fit === "close"
56
56
  ? holes.close
@@ -29,10 +29,9 @@ export function sampleConventionalThreadHelices(options) {
29
29
  const count = Math.max(1, Math.ceil(turns * density));
30
30
  assertSamplingCount(starts * (count + 1), operation, resolveGeometrySamplingLimits(options.limits).maxPathPoints);
31
31
  const direction = handedness === "right" ? 1 : -1;
32
- const phase = assertFiniteThreadNumber((assertFiniteThreadNumber(options.phaseDegrees ?? 0, "phaseDegrees", operation) * Math.PI) /
33
- 180, "phase", operation);
32
+ const phaseRadians = assertFiniteThreadNumber((assertFiniteThreadNumber(options.phase ?? 0, "phase", operation) * Math.PI) / 180, "phase", operation);
34
33
  const paths = Object.freeze(Array.from({ length: starts }, (_, start) => {
35
- const initial = phase + (direction * 2 * Math.PI * start) / starts;
34
+ const initial = phaseRadians + (direction * 2 * Math.PI * start) / starts;
36
35
  return Object.freeze(Array.from({ length: count + 1 }, (_, index) => {
37
36
  const t = index / count;
38
37
  const z = length * t;
@@ -133,9 +133,9 @@ export const resolveHelicalThreadMeshOptions = (options, operation, circularSamp
133
133
  throw new GeometryError("INVALID_ARGUMENT", "Exact circularSegments must be divisible by the requested thread starts.", { operation, details: { circularSegments: base, starts } });
134
134
  }
135
135
  const segments = Math.ceil(base / starts) * starts;
136
- const maximumSegments = resolution.maximumSegments;
137
- if (segments > maximumSegments) {
138
- throw new GeometryError("COMPLEXITY_LIMIT", "Start-aligned thread tessellation exceeds the configured segment safety limit.", { operation, details: { maximumSegments, segments } });
136
+ const maxSegments = resolution.maxSegments;
137
+ if (segments > maxSegments) {
138
+ throw new GeometryError("COMPLEXITY_LIMIT", "Start-aligned thread tessellation exceeds the configured segment safety limit.", { operation, details: { maxSegments, segments } });
139
139
  }
140
140
  const handedness = options.handedness ?? "right";
141
141
  if (handedness !== "left" && handedness !== "right")
@@ -199,8 +199,7 @@ export const resolveHelicalThreadMeshOptions = (options, operation, circularSamp
199
199
  leadInLength,
200
200
  leadInShape,
201
201
  length,
202
- phase: (assertFiniteThreadNumber(options.phaseDegrees ?? 0, "phaseDegrees", operation) * Math.PI) /
203
- 180,
202
+ phase: (assertFiniteThreadNumber(options.phase ?? 0, "phase", operation) * Math.PI) / 180,
204
203
  section,
205
204
  segments,
206
205
  starts,
@@ -1,6 +1,6 @@
1
1
  /** Closed ridge and complete-solid mesh construction from resolved thread plans. */
2
2
  import { triangulateContour } from "../loft/loft.js";
3
- import { joinTriangleMeshes, measureTriangleMesh, reverseTriangleMesh, validateTriangleMesh, } from "../mesh/mesh.js";
3
+ import { analyzeTriangleMesh, joinTriangleMeshes, reverseTriangleMesh, validateTriangleMesh, } from "../mesh/mesh.js";
4
4
  import { assertMeshAllocationWithinLimits, resolveModelingLimits } from "../model-limits.js";
5
5
  import { resolveHelicalThreadMeshOptions, resolveHelicalThreadSolidMeshPreflight, } from "./thread-mesh-plan.js";
6
6
  import { buildThreadSurfaceColumn, stitchThreadSurfaceColumns } from "./thread-surface.js";
@@ -61,7 +61,7 @@ const buildThreadRidgeComponent = (options) => {
61
61
  indices: new Uint32Array(indices),
62
62
  };
63
63
  validateTriangleMesh(mesh, { requireClosed: true });
64
- if (measureTriangleMesh(mesh, { requireClosed: true }).signedVolume < 0)
64
+ if (analyzeTriangleMesh(mesh, { requireClosed: true }).signedVolume < 0)
65
65
  mesh = reverseTriangleMesh(mesh);
66
66
  return mesh;
67
67
  };
@@ -74,8 +74,8 @@ const buildThreadRidgeComponent = (options) => {
74
74
  * conservative pre-allocation estimate rejects excessive meshes before constructing position
75
75
  * arrays.
76
76
  */
77
- export function buildHelicalThreadSolidMesh(options) {
78
- const operation = "buildHelicalThreadSolidMesh";
77
+ export function helicalThreadSolidMesh(options) {
78
+ const operation = "helicalThreadSolidMesh";
79
79
  const { maximumAxialSegmentLength, resolved } = resolveHelicalThreadSolidMeshPreflight(options, operation);
80
80
  const positions = [];
81
81
  const columns = Array.from({ length: resolved.segments }, (_, column) => buildThreadSurfaceColumn(options.profile, resolved, options, resolved.phase + (column * 2 * Math.PI) / resolved.segments, maximumAxialSegmentLength, positions));
@@ -103,7 +103,7 @@ export function buildHelicalThreadSolidMesh(options) {
103
103
  indices: new Uint32Array(indices),
104
104
  };
105
105
  validateTriangleMesh(mesh, { requireClosed: true });
106
- if (measureTriangleMesh(mesh, { requireClosed: true }).signedVolume < 0) {
106
+ if (analyzeTriangleMesh(mesh, { requireClosed: true }).signedVolume < 0) {
107
107
  mesh = reverseTriangleMesh(mesh);
108
108
  }
109
109
  return mesh;
@@ -113,8 +113,8 @@ export function buildHelicalThreadSolidMesh(options) {
113
113
  * shaft's radial/axial frame. The mesh is intended for union with its
114
114
  * minor-envelope cylinder and never owns WASM objects.
115
115
  */
116
- export function buildHelicalThreadRidgeMesh(options) {
117
- const operation = "buildHelicalThreadRidgeMesh";
116
+ export function helicalThreadRidgeMesh(options) {
117
+ const operation = "helicalThreadRidgeMesh";
118
118
  const resolved = resolveHelicalThreadMeshOptions(options, operation);
119
119
  const z0 = resolved.bottomBoundary - resolved.section[0][0];
120
120
  const z1 = resolved.topBoundary - resolved.section.at(-1)[0];