@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
@@ -0,0 +1,91 @@
1
+ # edgeCutter
2
+
3
+ Creates a cutter for one straight convex edge along +Z, with its sharp reference at XY=0. Position it explicitly before subtraction; the included material angle defaults to 90 degrees.
4
+
5
+ **edgeCutter**(`options`: [`EdgeCutterOptions`](EdgeCutterOptions.md)): [`Solid`](Solid.md)
6
+
7
+
8
+
9
+ ## Example: Amber cutter · Blue rounded edge
10
+
11
+
12
+
13
+ ```ts
14
+ import { box, edgeCutter, generate } from "@metamesh/modeling";
15
+ import { transform3 } from "@metamesh/modeling/geometry";
16
+
17
+ const cutter = edgeCutter({ length: 18, treatment: { kind: "round", radius: 6 }, excess: 0 });
18
+ const result = box({ size: 18, center: false }).subtract(cutter);
19
+ // Turn the concave mask and convex result toward the viewer independently.
20
+ export default generate(({ part }) => [
21
+ part("cutter", { geometry: cutter.translate([-3, -3, 0]).rotate([0, 0, -90]), color: "#f6ad55", transform: transform3().translate([-11, -11, 0]) }),
22
+ part("result", { geometry: result.translate([-9, -9, 0]).rotate([0, 0, 90]), color: "#4f83a6", transform: transform3().translate([11, 11, 0]) }),
23
+ ]);
24
+ ```
25
+
26
+
27
+
28
+ ## Parameters
29
+
30
+ <a id="options"></a>
31
+
32
+ **`options`** · [`EdgeCutterOptions`](EdgeCutterOptions.md) · Required
33
+
34
+ - [`length`](EdgeCutterOptions.md#length) · `number` · Required
35
+
36
+ Positive nominal edge length along +Z from Z=0, in millimetres.
37
+
38
+ - [`treatment`](EdgeCutterOptions.md#treatment) · [`EdgeTreatment`](../geometry/EdgeTreatment.md) · Required
39
+
40
+ Profile from the first material face to the second; uses the shared surface-setback vocabulary.
41
+
42
+ - [`angle`](EdgeCutterOptions.md#angle) · `number` · Optional
43
+
44
+ Material angle counterclockwise from +X toward +Y, strictly between 0° and 180°; defaults to 90°.
45
+
46
+ - [`excess`](EdgeCutterOptions.md#excess) · `number` · Optional
47
+
48
+ Numerical extension outside the two material faces, in millimetres; defaults to 0.05. Does not change the treatment.
49
+
50
+ - [`overrun`](EdgeCutterOptions.md#overrun) · [`CutterOverrun`](CutterOverrun.md) · Optional
51
+
52
+ Numerical longitudinal extension; both ends default to zero.
53
+
54
+ - [`resolution`](EdgeCutterOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
55
+
56
+ Physical curve sampling; explicit treatment sampling overrides these defaults.
57
+
58
+ - [`limits`](EdgeCutterOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
59
+
60
+ Local allocation ceilings may only lower the evaluating host's limits.
61
+
62
+ - [`attachment`](EdgeCutterOptions.md#attachment) · [`PrimitiveAttachmentOptions`](PrimitiveAttachmentOptions.md) · Optional
63
+
64
+ Applied after local construction; Section attachment must preserve the XY plane.
65
+
66
+
67
+
68
+ ## Returns
69
+
70
+ [`Solid`](Solid.md)
71
+
72
+
73
+ ## Related APIs
74
+
75
+ - [EdgeCutterOptions](EdgeCutterOptions.md)
76
+ - [Solid](Solid.md)
77
+
78
+ ## Guides
79
+
80
+ - [Choose a primitive](../../guides/profiles-and-extrusion.md#choose-a-primitive)
81
+ - [Treated boxes, frustums, and mirrored arrays](../../guides/profiles-and-extrusion.md#treated-boxes-frustums-and-mirrored-arrays)
82
+ - [Finish a profile with a hole](../../guides/profiles-and-extrusion.md#finish-a-profile-with-a-hole)
83
+ - [Shape openings and local edges](../../guides/profiles-and-extrusion.md#shape-openings-and-local-edges)
84
+
85
+ ## Import
86
+
87
+ ```ts
88
+ import { edgeCutter } from "@metamesh/modeling";
89
+ ```
90
+
91
+ Package: `@metamesh/modeling@0.20.0`.
@@ -8,10 +8,14 @@ Centered elliptical section.
8
8
 
9
9
  ## Example: Ellipse by full dimensions
10
10
 
11
+
12
+
11
13
  ```ts
12
- ellipse({ size: [30, 20] });
14
+ ellipse({ size: [30, 20] }).extrude({ height: 3 });
13
15
  ```
14
16
 
17
+
18
+
15
19
  ## Parameters
16
20
 
17
21
  <a id="options"></a>
@@ -36,10 +40,10 @@ ellipse({ size: [30, 20] });
36
40
  - [SVG sections: fills and strokes are different inputs](../../guides/svg-and-text.md#svg-sections-fills-and-strokes-are-different-inputs)
37
41
  - [Text and font variability](../../guides/svg-and-text.md#text-and-font-variability)
38
42
 
39
- ## Supported imports
43
+ ## Import
40
44
 
41
45
  ```ts
42
46
  import { ellipse } from "@metamesh/modeling";
43
47
  ```
44
48
 
45
- Package: `@metamesh/modeling@0.19.0`.
49
+ Package: `@metamesh/modeling@0.20.0`.
@@ -2,63 +2,69 @@
2
2
 
3
3
  Extrudes a filled Section or explicit corresponding contours along +Z with degree twist and top scaling. Use `section.extrude(options)` in fluent sequences, or this function for generic profile inputs.
4
4
 
5
- **extrude**(`shape`: [`Section`](Section.md) \| [`CorrespondingProfile`](../geometry/CorrespondingProfile.md), `options`: [`ExtrudeOptions`](../geometry/ExtrudeOptions.md)): [`Solid`](Solid.md)
5
+ **extrude**(`shape`: [`Section`](Section.md) \| [`CorrespondingProfile`](../geometry/CorrespondingProfile.md), `options`: [`ExtrudeOptions`](ExtrudeOptions.md)): [`Solid`](Solid.md)
6
6
 
7
7
 
8
8
 
9
9
  ## Example: Extrude
10
10
 
11
+
12
+
11
13
  ```ts
12
- import { extrude, matchProfiles } from "@metamesh/modeling";
13
- import { rectangleProfile } from "@metamesh/modeling/geometry";
14
+ import { extrude } from "@metamesh/modeling";
15
+ import { matchProfiles, rectangleProfile } from "@metamesh/modeling/geometry";
14
16
 
15
17
  const [profile] = matchProfiles([rectangleProfile({ size: [30, 20] })]);
16
18
  extrude(profile!, { height: 8 });
17
19
  ```
18
20
 
21
+
22
+
19
23
  ## Parameters
20
24
 
21
25
  <a id="shape"></a>
22
26
 
23
27
  **`shape`** · [`Section`](Section.md) \| [`CorrespondingProfile`](../geometry/CorrespondingProfile.md) · Required
24
28
 
29
+ Filled XY profile in millimetres.
30
+
25
31
 
26
32
 
27
33
  <a id="options"></a>
28
34
 
29
- **`options`** · [`ExtrudeOptions`](../geometry/ExtrudeOptions.md) · Required
35
+ **`options`** · [`ExtrudeOptions`](ExtrudeOptions.md) · Required
30
36
 
31
- - [`height`](../geometry/ExtrudeOptions.md#height) · `number` · Required
37
+ - [`height`](ExtrudeOptions.md#height) · `number` · Required
32
38
 
33
39
  Positive extrusion height in millimetres.
34
40
 
35
- - [`center`](../geometry/ExtrudeOptions.md#center) · `boolean` · Optional
41
+ - [`slices`](ExtrudeOptions.md#slices) · `number` · Optional
36
42
 
37
- Center the extrusion on Z; otherwise its bottom is at zero. Defaults to false.
43
+ Positive longitudinal interval count; n slices create n + 1 profile layers. Overrides ordinary extrusion's physical sampling.
38
44
 
39
- - [`ends`](../geometry/ExtrudeOptions.md#ends) · [`EndTreatments`](../geometry/EndTreatments.md) · Optional
45
+ - [`limits`](ExtrudeOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
40
46
 
41
- Independent inward treatments on every material rim of a straight, topology-preserving extrusion.
47
+ Explicit output and sampling allocation ceilings.
42
48
 
43
- - [`divisions`](../geometry/ExtrudeOptions.md#divisions) · `number` · Optional
49
+ - [`resolution`](ExtrudeOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
44
50
 
45
- Exact number of intermediate profiles, nonnegative; overrides physical sampling.
51
+ Operation-level physical policy over the nearest model scope.
46
52
 
47
- - [`limits`](../geometry/ExtrudeOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
53
+ - [`scale`](ExtrudeOptions.md#scale) · `number` \| [`Vector2Input`](../geometry/Vector2Input.md) · Optional
48
54
 
49
- Explicit output and sampling allocation ceilings.
55
+ Final profile-local uniform or XY scale, interpolated from one before twisting. Both components must be positive or both zero for an apex of one simple boundary. Defaults to one.
50
56
 
51
- - [`resolution`](../geometry/ExtrudeOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
57
+ - [`twist`](ExtrudeOptions.md#twist) · `number` · Optional
52
58
 
53
- Operation-level physical policy over the nearest model scope.
59
+ Finite rotation of the top profile about +Z, in degrees; defaults to zero.
54
60
 
55
- - [`scaleTop`](../geometry/ExtrudeOptions.md#scaletop) · `number` \| [`Vector2Input`](../geometry/Vector2Input.md) · Optional
61
+ - [`ends`](ExtrudeOptions.md#ends) · [`EndTreatments`](EndTreatments.md) · Optional
56
62
 
57
- Finite uniform or XY scale of the top profile; defaults to one.
63
+ Independent inward treatments on every material rim. Twisted extrusions admit chamfers with cap and normal-section wall setbacks; other treatments require zero twist. Enabled treatments require unit scale and preserve boundary topology. The base slices grid is retained, with additional treatment/refinement rings where necessary.
58
64
 
59
- - [`twist`](../geometry/ExtrudeOptions.md#twist) · `number` · Optional
65
+ - [`center`](ExtrudeOptions.md#center) · `boolean` · Optional
60
66
 
61
- Finite rotation of the top profile about +Z, in degrees; defaults to zero.
67
+ Center the extrusion on Z; otherwise its bottom is at zero. Defaults to false.
62
68
 
63
69
 
64
70
 
@@ -69,23 +75,23 @@ extrude(profile!, { height: 8 });
69
75
 
70
76
  ## Related APIs
71
77
 
72
- - [CorrespondingProfile](../geometry/CorrespondingProfile.md)
73
- - [ExtrudeOptions](../geometry/ExtrudeOptions.md)
78
+ - [ExtrudeOptions](ExtrudeOptions.md)
74
79
  - [Section](Section.md)
75
80
  - [Solid](Solid.md)
76
81
 
77
82
  ## Guides
78
83
 
79
84
  - [Finish a profile with a hole](../../guides/profiles-and-extrusion.md#finish-a-profile-with-a-hole)
85
+ - [Chamfer a twisted extrusion](../../guides/profiles-and-extrusion.md#chamfer-a-twisted-extrusion)
80
86
  - [Revolve a radial profile](../../guides/profiles-and-extrusion.md#revolve-a-radial-profile)
81
87
  - [Rotation-minimizing path sweep](../../guides/sweeps-and-lofts.md#rotation-minimizing-path-sweep)
82
88
  - [Matched-section loft](../../guides/sweeps-and-lofts.md#matched-section-loft)
83
89
  - [Choose a modeling path](../../guides/recipes.md#choose-a-technique)
84
90
 
85
- ## Supported imports
91
+ ## Import
86
92
 
87
93
  ```ts
88
94
  import { extrude } from "@metamesh/modeling";
89
95
  ```
90
96
 
91
- Package: `@metamesh/modeling@0.19.0`.
97
+ Package: `@metamesh/modeling@0.20.0`.
@@ -31,6 +31,8 @@ const model = generate<{ height: number }>(({ params, part, assert }) => {
31
31
 
32
32
  **`callback`** · [`GenerateCallback`](GenerateCallback.md)\<`P`, `S`\> · Required
33
33
 
34
+ Synchronous callback returning one part or a readonly part array.
35
+
34
36
 
35
37
 
36
38
  ## Returns
@@ -47,10 +49,10 @@ const model = generate<{ height: number }>(({ params, part, assert }) => {
47
49
 
48
50
  - [Complete standalone model example](../../guides/standalone-model.md#minimal-model-entry)
49
51
 
50
- ## Supported imports
52
+ ## Import
51
53
 
52
54
  ```ts
53
55
  import { generate } from "@metamesh/modeling";
54
56
  ```
55
57
 
56
- Package: `@metamesh/modeling@0.19.0`.
58
+ Package: `@metamesh/modeling@0.20.0`.
@@ -12,10 +12,14 @@ XY or XYZ copies, optionally centered or placed in an explicit frame.
12
12
 
13
13
  ## Example: Centered XY grid
14
14
 
15
+
16
+
15
17
  ```ts
16
18
  gridPattern(box({ size: 4 }), { count: [3, 2], spacing: [10, 10], center: true });
17
19
  ```
18
20
 
21
+
22
+
19
23
  XY or XYZ copies, optionally centered or placed in an explicit frame.
20
24
 
21
25
  ### Parameters
@@ -24,6 +28,8 @@ XY or XYZ copies, optionally centered or placed in an explicit frame.
24
28
 
25
29
  **`source`** · [`PatternSource`](PatternSource.md) · Required
26
30
 
31
+ Recipe or factory called once per copy, in zero-based order.
32
+
27
33
 
28
34
 
29
35
  <a id="options"></a>
@@ -52,6 +58,8 @@ Repeats a filled Section on an XY grid; any explicit frame must preserve the XY
52
58
 
53
59
  **`source`** · [`PatternSource`](PatternSource.md)\<[`Section`](Section.md)\> · Required
54
60
 
61
+ Recipe or factory called once per copy, in zero-based order.
62
+
55
63
 
56
64
 
57
65
  <a id="options-1"></a>
@@ -67,7 +75,6 @@ readonly [`Section`](Section.md)[]
67
75
 
68
76
  ## Related APIs
69
77
 
70
- - [GridPatternOptions](../geometry/GridPatternOptions.md)
71
78
  - [PatternSource](PatternSource.md)
72
79
  - [Section](Section.md)
73
80
  - [Solid](Solid.md)
@@ -76,12 +83,12 @@ readonly [`Section`](Section.md)[]
76
83
 
77
84
  - [Named anchors and custom frames](../../guides/transforms-and-placement.md#named-anchors-and-custom-frames)
78
85
  - [Primitive booleans and repeated placement](../../guides/transforms-and-placement.md#primitive-booleans-and-repeated-placement)
79
- - [Fluent values and standalone algorithms](../../guides/geometry-values.md#choose-fluent-values-or-standalone-algorithms)
86
+ - [Fluent values and standalone algorithms](../../guides/geometry-values.md#fluent-values-plain-data-and-descriptors)
80
87
 
81
- ## Supported imports
88
+ ## Import
82
89
 
83
90
  ```ts
84
91
  import { gridPattern } from "@metamesh/modeling";
85
92
  ```
86
93
 
87
- Package: `@metamesh/modeling@0.19.0`.
94
+ Package: `@metamesh/modeling@0.20.0`.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Closed rectilinear top above a flat base, with uniform or explicit XY coordinates.
4
4
 
5
- **heightfield**(`options`: [`HeightfieldOptions`](../geometry/HeightfieldOptions.md)): [`Solid`](Solid.md)
5
+ **heightfield**(`options`: [`HeightfieldOptions`](HeightfieldOptions.md)): [`Solid`](Solid.md)
6
6
 
7
7
 
8
8
 
@@ -26,7 +26,7 @@ The retained callback must capture independent immutable inputs, not live sessio
26
26
 
27
27
  <a id="options"></a>
28
28
 
29
- **`options`** · [`HeightfieldOptions`](../geometry/HeightfieldOptions.md) · Required
29
+ **`options`** · [`HeightfieldOptions`](HeightfieldOptions.md) · Required
30
30
 
31
31
 
32
32
 
@@ -37,13 +37,13 @@ The retained callback must capture independent immutable inputs, not live sessio
37
37
 
38
38
  ## Related APIs
39
39
 
40
- - [HeightfieldOptions](../geometry/HeightfieldOptions.md)
40
+ - [HeightfieldOptions](HeightfieldOptions.md)
41
41
  - [Solid](Solid.md)
42
42
 
43
- ## Supported imports
43
+ ## Import
44
44
 
45
45
  ```ts
46
46
  import { heightfield } from "@metamesh/modeling";
47
47
  ```
48
48
 
49
- Package: `@metamesh/modeling@0.19.0`.
49
+ Package: `@metamesh/modeling@0.20.0`.
@@ -1,20 +1,32 @@
1
1
  # holeCutter
2
2
 
3
- Declares a +Z hole or blind-pocket cutter with explicit end overrun in millimetres.
3
+ Declares a +Z hole or blind-pocket cutter with independent opening treatments.
4
4
 
5
5
  **holeCutter**(`options`: [`HoleCutterOptions`](HoleCutterOptions.md)): [`Solid`](Solid.md)
6
6
 
7
7
 
8
8
 
9
- ## Example: A blind hex pocket with an open top
9
+ ## Example: Amber cutter · Blue blind hex pocket
10
10
 
11
11
 
12
12
 
13
13
  ```ts
14
- holeCutter({
15
- profile: regularPolygon({ sides: 6, radius: 3.5, sizing: "face", rotation: 30 }),
16
- height: 12, entryChamfer: 0.5, overrun: { top: 0.05 },
14
+ import { box, generate, holeCutter, regularPolygon } from "@metamesh/modeling";
15
+ import { transform3 } from "@metamesh/modeling/geometry";
16
+
17
+ const cutter = holeCutter({
18
+ profile: regularPolygon({ sides: 6, radius: 5, sizing: "face", rotation: 30 }),
19
+ height: 5,
20
+ openings: { top: { kind: "chamfer", distance: 1.5 } },
21
+ overrun: { top: 0.05 },
17
22
  });
23
+ // A 3 mm floor remains beneath the pocket. Display the cutter separately on the left.
24
+ const stock = box({ size: [22, 20, 8] }).translate([0, 0, 4]);
25
+ const result = stock.subtract(cutter.translate([0, 0, 3]));
26
+ export default generate(({ part }) => [
27
+ part("cutter", { geometry: cutter, color: "#f6ad55", transform: transform3().translate([-12, -12, 0]) }),
28
+ part("result", { geometry: result, color: "#4f83a6", transform: transform3().translate([12, 12, 0]) }),
29
+ ]);
18
30
  ```
19
31
 
20
32
 
@@ -33,11 +45,12 @@ holeCutter({
33
45
 
34
46
  ## Remarks
35
47
 
36
- Choose exactly one circular diameter or existing Section. A 45-degree entry chamfer
37
- supports one strictly convex contour without holes; plain profiles may have any topology.
38
- Circular entries retain nominal frustum radii; profile entries offset the supplied polygon edges.
39
- Circular head recesses are mutually exclusive with entryChamfer. Both overrun ends default
40
- to zero, so the nominal bottom remains at Z=0 and blind pocket floors are preserved.
48
+ Choose exactly one circular diameter or existing Section. Finished profiles require one
49
+ strictly convex contour without holes; plain profiles may have any topology. Opening treatments
50
+ widen the mouth while retaining a positive nominal throat. Circular openings also admit
51
+ counterbores and countersinks. An omitted opening leaves that end unchanged.
52
+ Overrun extends each terminal cross section outside Z=0..height; both ends default to zero,
53
+ preserving blind-pocket floors. It is independent of manufacturing clearance.
41
54
  Existing Section samples are authoritative; limits and unspecified circular sampling belong
42
55
  to the evaluating host.
43
56
 
@@ -52,11 +65,12 @@ to the evaluating host.
52
65
  - [Choose a primitive](../../guides/profiles-and-extrusion.md#choose-a-primitive)
53
66
  - [Treated boxes, frustums, and mirrored arrays](../../guides/profiles-and-extrusion.md#treated-boxes-frustums-and-mirrored-arrays)
54
67
  - [Finish a profile with a hole](../../guides/profiles-and-extrusion.md#finish-a-profile-with-a-hole)
68
+ - [Shape openings and local edges](../../guides/profiles-and-extrusion.md#shape-openings-and-local-edges)
55
69
 
56
- ## Supported imports
70
+ ## Import
57
71
 
58
72
  ```ts
59
73
  import { holeCutter } from "@metamesh/modeling";
60
74
  ```
61
75
 
62
- Package: `@metamesh/modeling@0.19.0`.
76
+ Package: `@metamesh/modeling@0.20.0`.
@@ -72,10 +72,10 @@ Convex filled XY hull of finite points or filled section recipes.
72
72
  - [Primitive booleans and repeated placement](../../guides/transforms-and-placement.md#primitive-booleans-and-repeated-placement)
73
73
  - [Join an independently modeled feature](../../guides/solid-joins.md#join-an-independently-modeled-feature)
74
74
 
75
- ## Supported imports
75
+ ## Import
76
76
 
77
77
  ```ts
78
78
  import { hull } from "@metamesh/modeling";
79
79
  ```
80
80
 
81
- Package: `@metamesh/modeling@0.19.0`.
81
+ Package: `@metamesh/modeling@0.20.0`.
@@ -14,7 +14,7 @@ Bounded positive-inside implicit field constructor. The retained callback must c
14
14
 
15
15
  - [`field`](ImplicitOptions.md#field) · (`point`: [`Vector3Data`](../geometry/Vector3Data.md)) => `number` · Required
16
16
 
17
- Positive-inside scalar field evaluated at finite XYZ points.
17
+ Positive-inside scalar field evaluated at finite XYZ points in millimetres.
18
18
 
19
19
  - [`bounds`](ImplicitOptions.md#bounds) · [`Bounds3Data`](../geometry/Bounds3Data.md) · Required
20
20
 
@@ -44,10 +44,10 @@ Bounded positive-inside implicit field constructor. The retained callback must c
44
44
  - [ImplicitOptions](ImplicitOptions.md)
45
45
  - [Solid](Solid.md)
46
46
 
47
- ## Supported imports
47
+ ## Import
48
48
 
49
49
  ```ts
50
50
  import { implicit } from "@metamesh/modeling";
51
51
  ```
52
52
 
53
- Package: `@metamesh/modeling@0.19.0`.
53
+ Package: `@metamesh/modeling@0.20.0`.
@@ -2,74 +2,86 @@
2
2
 
3
3
  Compensated internal threaded cutter.
4
4
 
5
- **internalThreadCutter**(`options`: [`InternalThreadCutterOptions`](../geometry/InternalThreadCutterOptions.md)): [`Solid`](Solid.md)
5
+ **internalThreadCutter**(`options`: [`InternalThreadCutterOptions`](../mechanical/InternalThreadCutterOptions.md)): [`Solid`](Solid.md)
6
6
 
7
7
 
8
8
 
9
- ## Example: Internal thread
9
+ ## Example: Amber thread cutter · Blue cutaway result
10
+
11
+
10
12
 
11
13
  ```ts
12
- import { cylinder, internalThreadCutter } from "@metamesh/modeling";
13
- import { threadProfile } from "@metamesh/modeling/geometry";
14
+ import { box, cylinder, generate, internalThreadCutter } from "@metamesh/modeling";
15
+ import { transform3 } from "@metamesh/modeling/geometry";
16
+ import { threadProfile } from "@metamesh/modeling/geometry/mechanical";
17
+
14
18
  const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
15
19
  const body = cylinder({ diameter: 20, height: 12, center: false });
16
20
  const cutter = internalThreadCutter({ nominalMajorDiameter: 12, length: 12, profile });
17
- body.subtract([cutter]);
21
+ // Remove the front quarter of the stock to expose the actual internal thread.
22
+ const cutaway = box({ size: [11, 11, 14], center: false }).translate([0, -11, -1]);
23
+ const result = body.subtract([cutter, cutaway]);
24
+ export default generate(({ part }) => [
25
+ part("cutter", { geometry: cutter, color: "#f6ad55", transform: transform3().translate([-12, -12, 0]) }),
26
+ part("result", { geometry: result, color: "#4f83a6", transform: transform3().translate([12, 12, 0]) }),
27
+ ]);
18
28
  ```
19
29
 
30
+
31
+
20
32
  ## Parameters
21
33
 
22
34
  <a id="options"></a>
23
35
 
24
- **`options`** · [`InternalThreadCutterOptions`](../geometry/InternalThreadCutterOptions.md) · Required
36
+ **`options`** · [`InternalThreadCutterOptions`](../mechanical/InternalThreadCutterOptions.md) · Required
25
37
 
26
- - [`nominalMajorDiameter`](../geometry/InternalThreadCutterOptions.md#nominalmajordiameter) · `number` · Required
38
+ - [`nominalMajorDiameter`](../mechanical/InternalThreadCutterOptions.md#nominalmajordiameter) · `number` · Required
27
39
 
28
40
  Nominal major diameter before female compensation and faceting correction.
29
41
 
30
- - [`length`](../geometry/InternalThreadCutterOptions.md#length) · `number` · Required
42
+ - [`length`](../mechanical/InternalThreadCutterOptions.md#length) · `number` · Required
31
43
 
32
44
  Total threaded axial length in millimetres.
33
45
 
34
- - [`profile`](../geometry/InternalThreadCutterOptions.md#profile) · [`ThreadProfile`](../geometry/ThreadProfile-type.md) · Required
46
+ - [`profile`](../mechanical/InternalThreadCutterOptions.md#profile) · [`ThreadProfile`](../mechanical/ThreadProfile-type.md) · Required
35
47
 
36
48
  Validated periodic profile repeated around the shaft.
37
49
 
38
- - [`fit`](../geometry/InternalThreadCutterOptions.md#fit) · [`PrintableThreadFit`](../geometry/PrintableThreadFit.md) \| [`PrintableThreadFitPolicy`](../geometry/PrintableThreadFitPolicy.md) · Optional
50
+ - [`fit`](../mechanical/InternalThreadCutterOptions.md#fit) · [`PrintableThreadFit`](../mechanical/PrintableThreadFit.md) \| [`PrintableThreadFitPolicy`](../mechanical/PrintableThreadFitPolicy.md) · Optional
39
51
 
40
52
  Printable fit or caller-calibrated allowances. Default: `normal`.
41
53
 
42
- - [`bevel`](../geometry/InternalThreadCutterOptions.md#bevel) · [`Bevel`](../geometry/Bevel.md) · Optional
54
+ - [`bevel`](../mechanical/InternalThreadCutterOptions.md#bevel) · [`Bevel`](../mechanical/Bevel.md) · Optional
43
55
 
44
56
  Bottom/top sizes in millimetres. Omitted disables both. Auto uses profile depth for standard/tapered ends,
45
57
  or one sixth of the compensated male minor/female major radius for blunt ends.
46
58
 
47
- - [`ends`](../geometry/InternalThreadCutterOptions.md#ends) · [`ThreadEndTreatmentOptions`](../geometry/ThreadEndTreatmentOptions.md) · Optional
59
+ - [`ends`](../mechanical/InternalThreadCutterOptions.md#ends) · [`ThreadEndTreatmentOptions`](../mechanical/ThreadEndTreatmentOptions.md) · Optional
48
60
 
49
61
  Optional bottom/top ridge-end treatments. Standalone ridges honor the requested boundaries;
50
62
  BOSL2-style non-cut lead-in scaling is available on complete thread solids.
51
63
 
52
- - [`handedness`](../geometry/InternalThreadCutterOptions.md#handedness) · [`ThreadHandedness`](../geometry/ThreadHandedness.md) · Optional
64
+ - [`handedness`](../mechanical/InternalThreadCutterOptions.md#handedness) · [`ThreadHandedness`](../mechanical/ThreadHandedness.md) · Optional
53
65
 
54
66
  Helix direction. Default: `right`.
55
67
 
56
- - [`limits`](../geometry/InternalThreadCutterOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
68
+ - [`limits`](../mechanical/InternalThreadCutterOptions.md#limits) · `Partial`\<[`ModelingLimits`](../geometry/ModelingLimits.md)\> · Optional
57
69
 
58
70
  Explicit output and circular allocation ceilings.
59
71
 
60
- - [`phase`](../geometry/InternalThreadCutterOptions.md#phase) · `number` · Optional
72
+ - [`phase`](../mechanical/InternalThreadCutterOptions.md#phase) · `number` · Optional
61
73
 
62
74
  Angular offset of the first start in degrees. Default: `0`.
63
75
 
64
- - [`resolution`](../geometry/InternalThreadCutterOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
76
+ - [`resolution`](../mechanical/InternalThreadCutterOptions.md#resolution) · [`GeometryResolution`](../geometry/GeometryResolution.md) · Optional
65
77
 
66
78
  Optional circular-resolution policy.
67
79
 
68
- - [`starts`](../geometry/InternalThreadCutterOptions.md#starts) · `number` · Optional
80
+ - [`starts`](../mechanical/InternalThreadCutterOptions.md#starts) · `number` · Optional
69
81
 
70
82
  Number of evenly phased starts. Default: `1`.
71
83
 
72
- - [`tolerance`](../geometry/InternalThreadCutterOptions.md#tolerance) · [`GeometryToleranceOptions`](../geometry/GeometryToleranceOptions.md) · Optional
84
+ - [`tolerance`](../mechanical/InternalThreadCutterOptions.md#tolerance) · [`GeometryToleranceOptions`](../geometry/GeometryToleranceOptions.md) · Optional
73
85
 
74
86
  Optional numerical tolerance overrides.
75
87
 
@@ -82,7 +94,6 @@ body.subtract([cutter]);
82
94
 
83
95
  ## Related APIs
84
96
 
85
- - [InternalThreadCutterOptions](../geometry/InternalThreadCutterOptions.md)
86
97
  - [Solid](Solid.md)
87
98
 
88
99
  ## Guides
@@ -90,10 +101,10 @@ body.subtract([cutter]);
90
101
  - [Build printable threads](https://metamesh.studio/docs/develop/printable-threads#build-the-first-mating-pair)
91
102
  - [Preflight guarantees and host settings](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
92
103
 
93
- ## Supported imports
104
+ ## Import
94
105
 
95
106
  ```ts
96
107
  import { internalThreadCutter } from "@metamesh/modeling";
97
108
  ```
98
109
 
99
- Package: `@metamesh/modeling@0.19.0`.
110
+ Package: `@metamesh/modeling@0.20.0`.
@@ -28,6 +28,8 @@ Robust intersection of one or more shapes; empty input rejects during declaratio
28
28
 
29
29
  **`solids`** · readonly [`Solid`](Solid.md)[] · Required
30
30
 
31
+ Operands in shared modeling coordinates.
32
+
31
33
 
32
34
 
33
35
  ### Returns
@@ -42,7 +44,7 @@ Robust intersection of one or more shapes; empty input rejects during declaratio
42
44
 
43
45
 
44
46
 
45
- Native filled section intersection; dimensions cannot be mixed.
47
+ Filled Section intersection; dimensions cannot be mixed.
46
48
 
47
49
  ### Parameters
48
50
 
@@ -50,6 +52,8 @@ Native filled section intersection; dimensions cannot be mixed.
50
52
 
51
53
  **`sections`** · readonly [`Section`](Section.md)[] · Required
52
54
 
55
+ Operands in shared XY coordinates.
56
+
53
57
 
54
58
 
55
59
  ### Returns
@@ -68,10 +72,10 @@ Native filled section intersection; dimensions cannot be mixed.
68
72
  - [Primitive booleans and repeated placement](../../guides/transforms-and-placement.md#primitive-booleans-and-repeated-placement)
69
73
  - [Join an independently modeled feature](../../guides/solid-joins.md#join-an-independently-modeled-feature)
70
74
 
71
- ## Supported imports
75
+ ## Import
72
76
 
73
77
  ```ts
74
78
  import { intersect } from "@metamesh/modeling";
75
79
  ```
76
80
 
77
- Package: `@metamesh/modeling@0.19.0`.
81
+ Package: `@metamesh/modeling@0.20.0`.
@@ -31,12 +31,16 @@ This operation promises neither a circular radius, a constant bevel angle, nor g
31
31
 
32
32
  **`base`** · [`Solid`](Solid.md) · Required
33
33
 
34
+ Support solid in shared modeling coordinates.
35
+
34
36
 
35
37
 
36
38
  <a id="feature"></a>
37
39
 
38
40
  **`feature`** · [`Solid`](Solid.md) · Required
39
41
 
42
+ Positioned feature that owns the source datum.
43
+
40
44
 
41
45
 
42
46
  <a id="options"></a>
@@ -80,10 +84,10 @@ This operation promises neither a circular radius, a constant bevel angle, nor g
80
84
  - [Primitive booleans and repeated placement](../../guides/transforms-and-placement.md#primitive-booleans-and-repeated-placement)
81
85
  - [Join an independently modeled feature](../../guides/solid-joins.md#join-an-independently-modeled-feature)
82
86
 
83
- ## Supported imports
87
+ ## Import
84
88
 
85
89
  ```ts
86
90
  import { join } from "@metamesh/modeling";
87
91
  ```
88
92
 
89
- Package: `@metamesh/modeling@0.19.0`.
93
+ Package: `@metamesh/modeling@0.20.0`.