@metamesh/modeling 0.14.0 → 0.16.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 (775) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +55 -13
  3. package/dist/api/engine.d.ts +15 -7
  4. package/dist/api/geometry.d.ts +853 -562
  5. package/dist/api/index.d.ts +604 -227
  6. package/dist/api/text.d.ts +9 -7
  7. package/dist/docs/guides/concepts.md +295 -91
  8. package/dist/docs/guides/fonts.md +9 -8
  9. package/dist/docs/guides/fundamentals.md +22 -23
  10. package/dist/docs/guides/generation.md +24 -23
  11. package/dist/docs/guides/hosting.md +26 -11
  12. package/dist/docs/guides/recipes.md +74 -48
  13. package/dist/docs/guides/standalone-model.md +42 -0
  14. package/dist/docs/manifest.json +1555 -749
  15. package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
  16. package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
  17. package/dist/docs/reference/engine/GenerationOptions.md +1 -1
  18. package/dist/docs/reference/engine/GeometryResource.md +1 -1
  19. package/dist/docs/reference/engine/ModelDependencies.md +1 -1
  20. package/dist/docs/reference/engine/ModelEngine.md +1 -1
  21. package/dist/docs/reference/engine/ModelEngineOptions.md +4 -8
  22. package/dist/docs/reference/engine/ModelSession.md +1 -1
  23. package/dist/docs/reference/engine/ModelSnapshot.md +21 -10
  24. package/dist/docs/reference/engine/SessionOptions.md +1 -1
  25. package/dist/docs/reference/engine/SnapshotPart.md +6 -3
  26. package/dist/docs/reference/engine/categories/host-lifecycle.md +7 -2
  27. package/dist/docs/reference/engine/createModelEngine.md +3 -3
  28. package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
  29. package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
  30. package/dist/docs/reference/engine/validateModel.md +1 -1
  31. package/dist/docs/reference/engine.md +6 -2
  32. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +5 -1
  33. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
  34. package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +6 -5
  35. package/dist/docs/reference/geometry/ArcCurve2.md +11 -7
  36. package/dist/docs/reference/geometry/ArcCurve3.md +13 -9
  37. package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +11 -5
  38. package/dist/docs/reference/geometry/AxisAngleRotation3.md +2 -1
  39. package/dist/docs/reference/geometry/Bounds2-type.md +127 -0
  40. package/dist/docs/reference/geometry/Bounds2Data.md +45 -0
  41. package/dist/docs/reference/geometry/Bounds2Input.md +21 -0
  42. package/dist/docs/reference/geometry/Bounds3-type.md +127 -0
  43. package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
  44. package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
  45. package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
  46. package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
  47. package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
  48. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +2 -1
  49. package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
  50. package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
  51. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  52. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  53. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  54. package/dist/docs/reference/geometry/BoxOptions.md +10 -10
  55. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
  56. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
  57. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  58. package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
  59. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
  60. package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -7
  61. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
  62. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
  63. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
  64. package/dist/docs/reference/geometry/Contour.md +10 -4
  65. package/dist/docs/reference/geometry/ContourCurve.md +5 -1
  66. package/dist/docs/reference/geometry/ContourPoint.md +6 -1
  67. package/dist/docs/reference/geometry/ContourSegment.md +5 -1
  68. package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
  69. package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
  70. package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
  71. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
  72. package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
  73. package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
  74. package/dist/docs/reference/geometry/Curve2.md +5 -1
  75. package/dist/docs/reference/geometry/Curve3.md +5 -1
  76. package/dist/docs/reference/geometry/CurveSamplingOptions.md +9 -3
  77. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
  78. package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
  79. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +6 -5
  80. package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
  81. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -3
  82. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
  83. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
  84. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +7 -3
  85. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
  86. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
  87. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
  88. package/dist/docs/reference/geometry/CylindricalGearSpec.md +11 -6
  89. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  90. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  91. package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
  92. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  93. package/dist/docs/reference/geometry/ExtrudeOptions.md +10 -6
  94. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -5
  95. package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
  96. package/dist/docs/reference/geometry/Frame3.md +10 -6
  97. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  98. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  99. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  100. package/dist/docs/reference/geometry/GeometryResolution.md +5 -5
  101. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
  102. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  103. package/dist/docs/reference/geometry/GridPatternOptions.md +11 -5
  104. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
  105. package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
  106. package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
  107. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +9 -5
  108. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +10 -6
  109. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
  110. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
  111. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +10 -6
  112. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
  113. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
  114. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
  115. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
  116. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
  117. package/dist/docs/reference/geometry/LineCurve2.md +8 -4
  118. package/dist/docs/reference/geometry/LineCurve3.md +8 -4
  119. package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
  120. package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
  121. package/dist/docs/reference/geometry/LoftMeshStation.md +8 -4
  122. package/dist/docs/reference/geometry/LoftOptions.md +5 -1
  123. package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
  124. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
  125. package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
  126. package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
  127. package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
  128. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
  129. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
  130. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  131. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
  132. package/dist/docs/reference/geometry/Path2-type.md +196 -0
  133. package/dist/docs/reference/geometry/Path2Data.md +50 -0
  134. package/dist/docs/reference/geometry/Path2Input.md +20 -0
  135. package/dist/docs/reference/geometry/Path3-type.md +196 -0
  136. package/dist/docs/reference/geometry/Path3Data.md +50 -0
  137. package/dist/docs/reference/geometry/Path3Input.md +20 -0
  138. package/dist/docs/reference/geometry/PathFrame.md +9 -5
  139. package/dist/docs/reference/geometry/PathLocation.md +69 -0
  140. package/dist/docs/reference/geometry/PathNormalGuide.md +10 -5
  141. package/dist/docs/reference/geometry/PathOptions.md +38 -0
  142. package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
  143. package/dist/docs/reference/geometry/PathPlacement.md +8 -4
  144. package/dist/docs/reference/geometry/PathResamplingOptions.md +84 -0
  145. package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
  146. package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
  147. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
  148. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +26 -22
  149. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
  150. package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
  151. package/dist/docs/reference/geometry/PolygonData.md +7 -2
  152. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -4
  153. package/dist/docs/reference/geometry/PrimitiveAttachment.md +31 -0
  154. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +104 -0
  155. package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
  156. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
  157. package/dist/docs/reference/geometry/Profile.md +8 -2
  158. package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
  159. package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
  160. package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
  161. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
  162. package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
  163. package/dist/docs/reference/geometry/RackPitchSpec.md +10 -5
  164. package/dist/docs/reference/geometry/RadialPatternOptions.md +17 -22
  165. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  166. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  167. package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
  168. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
  169. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
  170. package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
  171. package/dist/docs/reference/geometry/RegionData.md +6 -2
  172. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +7 -3
  173. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  174. package/dist/docs/reference/geometry/RevolveOptions.md +13 -4
  175. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  176. package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
  177. package/dist/docs/reference/geometry/SampleContourOptions.md +7 -3
  178. package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
  179. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +7 -3
  180. package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
  181. package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
  182. package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
  183. package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
  184. package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
  185. package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
  186. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  187. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +7 -3
  188. package/dist/docs/reference/geometry/SphereOptions.md +3 -3
  189. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
  190. package/dist/docs/reference/geometry/StrokeCap.md +14 -0
  191. package/dist/docs/reference/geometry/StrokeJoin.md +14 -0
  192. package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +11 -7
  193. package/dist/docs/reference/geometry/SvgImportOptions.md +5 -1
  194. package/dist/docs/reference/geometry/SvgRegionPreflight.md +6 -2
  195. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +19 -15
  196. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +16 -11
  197. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +14 -9
  198. package/dist/docs/reference/geometry/SweepOptions.md +10 -6
  199. package/dist/docs/reference/geometry/SweepOrientation.md +11 -7
  200. package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
  201. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +9 -5
  202. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
  203. package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
  204. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
  205. package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
  206. package/dist/docs/reference/geometry/ThreadHelixOptions.md +7 -3
  207. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
  208. package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
  209. package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +7 -3
  210. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
  211. package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
  212. package/dist/docs/reference/geometry/ThreadRole.md +8 -1
  213. package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
  214. package/dist/docs/reference/geometry/ThreadedNutOptions.md +10 -6
  215. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
  216. package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
  217. package/dist/docs/reference/geometry/ThreadedRodOptions.md +10 -6
  218. package/dist/docs/reference/geometry/TorusOptions.md +8 -8
  219. package/dist/docs/reference/geometry/Transform2-type.md +6 -5
  220. package/dist/docs/reference/geometry/Transform2Data.md +15 -0
  221. package/dist/docs/reference/geometry/Transform2Input.md +4 -3
  222. package/dist/docs/reference/geometry/Transform3-type.md +6 -5
  223. package/dist/docs/reference/geometry/Transform3Data.md +18 -0
  224. package/dist/docs/reference/geometry/Transform3Input.md +4 -3
  225. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +9 -4
  226. package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
  227. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +8 -4
  228. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
  229. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
  230. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +7 -3
  231. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
  232. package/dist/docs/reference/geometry/TriangleMeshSignature.md +8 -4
  233. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +8 -3
  234. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
  235. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
  236. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
  237. package/dist/docs/reference/geometry/TubeOptions.md +8 -8
  238. package/dist/docs/reference/geometry/Vector2-type.md +6 -5
  239. package/dist/docs/reference/geometry/Vector2Data.md +15 -0
  240. package/dist/docs/reference/geometry/Vector2Input.md +4 -3
  241. package/dist/docs/reference/geometry/Vector3-type.md +6 -5
  242. package/dist/docs/reference/geometry/Vector3Data.md +15 -0
  243. package/dist/docs/reference/geometry/Vector3Input.md +4 -3
  244. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +8 -3
  245. package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
  246. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +5 -1
  247. package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
  248. package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
  249. package/dist/docs/reference/geometry/add2.md +7 -6
  250. package/dist/docs/reference/geometry/add3.md +7 -6
  251. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
  252. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +6 -2
  253. package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +10 -9
  254. package/dist/docs/reference/geometry/anchorFrame3.md +9 -5
  255. package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
  256. package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
  257. package/dist/docs/reference/geometry/{attachTransform.md → attachmentTransform3.md} +16 -15
  258. package/dist/docs/reference/geometry/bounds2.md +38 -0
  259. package/dist/docs/reference/geometry/bounds3.md +38 -0
  260. package/dist/docs/reference/geometry/boundsCenter.md +12 -11
  261. package/dist/docs/reference/geometry/boundsFromSize.md +12 -11
  262. package/dist/docs/reference/geometry/boundsSize.md +12 -11
  263. package/dist/docs/reference/geometry/boxAnchor3.md +7 -6
  264. package/dist/docs/reference/geometry/categories/bounds-layout.md +23 -6
  265. package/dist/docs/reference/geometry/categories/curves-paths.md +27 -13
  266. package/dist/docs/reference/geometry/categories/mechanical.md +27 -15
  267. package/dist/docs/reference/geometry/categories/meshes.md +18 -10
  268. package/dist/docs/reference/geometry/categories/pattern-placement.md +11 -9
  269. package/dist/docs/reference/geometry/categories/primitive-options.md +10 -4
  270. package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -13
  271. package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -3
  272. package/dist/docs/reference/geometry/categories/transforms-math.md +25 -16
  273. package/dist/docs/reference/geometry/categories/vector-import.md +15 -9
  274. package/dist/docs/reference/geometry/circleContour.md +5 -1
  275. package/dist/docs/reference/geometry/closeToAxis.md +14 -5
  276. package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
  277. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +9 -5
  278. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +9 -5
  279. package/dist/docs/reference/geometry/composeTransform3.md +7 -6
  280. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +14 -6
  281. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +17 -7
  282. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
  283. package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +8 -4
  284. package/dist/docs/reference/geometry/containsBounds.md +10 -9
  285. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
  286. package/dist/docs/reference/geometry/cross2.md +6 -5
  287. package/dist/docs/reference/geometry/cross3.md +7 -6
  288. package/dist/docs/reference/geometry/cylinderAnchor3.md +7 -6
  289. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
  290. package/dist/docs/reference/geometry/distance2.md +6 -5
  291. package/dist/docs/reference/geometry/distance3.md +6 -5
  292. package/dist/docs/reference/geometry/distributeAlongPath.md +12 -6
  293. package/dist/docs/reference/geometry/dot2.md +6 -5
  294. package/dist/docs/reference/geometry/dot3.md +6 -5
  295. package/dist/docs/reference/geometry/ellipseContour.md +5 -1
  296. package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
  297. package/dist/docs/reference/geometry/extrudeMesh.md +12 -8
  298. package/dist/docs/reference/geometry/fitBounds.md +10 -9
  299. package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
  300. package/dist/docs/reference/geometry/frameTransform3.md +5 -4
  301. package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +7 -3
  302. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
  303. package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
  304. package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
  305. package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +9 -5
  306. package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +9 -5
  307. package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
  308. package/dist/docs/reference/geometry/isGeometryError.md +5 -2
  309. package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
  310. package/dist/docs/reference/geometry/layoutRow.md +11 -7
  311. package/dist/docs/reference/geometry/length2.md +5 -4
  312. package/dist/docs/reference/geometry/length3.md +5 -4
  313. package/dist/docs/reference/geometry/lerp2.md +7 -6
  314. package/dist/docs/reference/geometry/lerp3.md +7 -6
  315. package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
  316. package/dist/docs/reference/geometry/loftMesh.md +6 -1
  317. package/dist/docs/reference/geometry/matchProfiles.md +11 -2
  318. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
  319. package/dist/docs/reference/geometry/meshBounds.md +8 -4
  320. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +7 -3
  321. package/dist/docs/reference/geometry/normalize2.md +10 -6
  322. package/dist/docs/reference/geometry/normalize3.md +10 -6
  323. package/dist/docs/reference/geometry/normalizeContour.md +8 -4
  324. package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
  325. package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
  326. package/dist/docs/reference/geometry/optimizePlanarPatches.md +15 -11
  327. package/dist/docs/reference/geometry/path2.md +54 -0
  328. package/dist/docs/reference/geometry/path3.md +49 -0
  329. package/dist/docs/reference/geometry/pathPatternTransforms.md +13 -9
  330. package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
  331. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +13 -4
  332. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +15 -4
  333. package/dist/docs/reference/geometry/preflightSvgRegion.md +15 -2
  334. package/dist/docs/reference/geometry/preflightThreadedNut.md +14 -4
  335. package/dist/docs/reference/geometry/preflightThreadedRod.md +14 -4
  336. package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
  337. package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
  338. package/dist/docs/reference/geometry/rectangleContour.md +10 -3
  339. package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
  340. package/dist/docs/reference/geometry/regionArea.md +5 -1
  341. package/dist/docs/reference/geometry/regionBounds.md +8 -4
  342. package/dist/docs/reference/geometry/regularPolygonContour.md +9 -5
  343. package/dist/docs/reference/geometry/resamplePolyline2.md +9 -5
  344. package/dist/docs/reference/geometry/resamplePolyline3.md +9 -5
  345. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +4 -4
  346. package/dist/docs/reference/geometry/resolveArcSegments.md +4 -4
  347. package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
  348. package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
  349. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
  350. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +7 -3
  351. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
  352. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  353. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
  354. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
  355. package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
  356. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -4
  357. package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
  358. package/dist/docs/reference/geometry/revolveMesh.md +14 -10
  359. package/dist/docs/reference/geometry/rotate2.md +6 -5
  360. package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
  361. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -6
  362. package/dist/docs/reference/geometry/sampleContour.md +14 -4
  363. package/dist/docs/reference/geometry/sampleCurve2.md +8 -5
  364. package/dist/docs/reference/geometry/sampleCurve3.md +6 -2
  365. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
  366. package/dist/docs/reference/geometry/sampleHelix.md +13 -5
  367. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
  368. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
  369. package/dist/docs/reference/geometry/sampleSideProfile.md +17 -7
  370. package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
  371. package/dist/docs/reference/geometry/sampleThreadHelices.md +6 -2
  372. package/dist/docs/reference/geometry/scale2.md +6 -5
  373. package/dist/docs/reference/geometry/scale3.md +6 -5
  374. package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
  375. package/dist/docs/reference/geometry/signedContourArea.md +5 -1
  376. package/dist/docs/reference/geometry/starContour.md +8 -4
  377. package/dist/docs/reference/geometry/strokeRegionData.md +67 -0
  378. package/dist/docs/reference/geometry/subtract2.md +7 -6
  379. package/dist/docs/reference/geometry/subtract3.md +7 -6
  380. package/dist/docs/reference/geometry/sweepMesh.md +13 -9
  381. package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +10 -6
  382. package/dist/docs/reference/geometry/transform2.md +14 -7
  383. package/dist/docs/reference/geometry/transform3.md +16 -7
  384. package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
  385. package/dist/docs/reference/geometry/transformRegionData.md +5 -1
  386. package/dist/docs/reference/geometry/transformTriangleMesh.md +10 -6
  387. package/dist/docs/reference/geometry/translationTransform3.md +7 -6
  388. package/dist/docs/reference/geometry/triangulateContour.md +5 -1
  389. package/dist/docs/reference/geometry/validateSolidMesh.md +10 -3
  390. package/dist/docs/reference/geometry/validateTransform3.md +6 -5
  391. package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
  392. package/dist/docs/reference/geometry/vector2.md +10 -2
  393. package/dist/docs/reference/geometry/vector3.md +10 -2
  394. package/dist/docs/reference/geometry.md +8 -6
  395. package/dist/docs/reference/model/Anchor3.md +6 -5
  396. package/dist/docs/reference/model/AttachOptions.md +11 -5
  397. package/dist/docs/reference/model/Bounds2-type.md +125 -0
  398. package/dist/docs/reference/model/Bounds2Data.md +44 -0
  399. package/dist/docs/reference/model/Bounds2Input.md +19 -0
  400. package/dist/docs/reference/model/Bounds3-type.md +125 -0
  401. package/dist/docs/reference/model/Bounds3Data.md +44 -0
  402. package/dist/docs/reference/model/Bounds3Input.md +19 -0
  403. package/dist/docs/reference/model/BoxEdge.md +1 -1
  404. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  405. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  406. package/dist/docs/reference/model/BoxOptions.md +10 -10
  407. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  408. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  409. package/dist/docs/reference/model/CircleOptions.md +3 -3
  410. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
  411. package/dist/docs/reference/model/Computed.md +6 -1
  412. package/dist/docs/reference/model/ComputedValue.md +5 -1
  413. package/dist/docs/reference/model/Contour.md +6 -4
  414. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  415. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  416. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  417. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  418. package/dist/docs/reference/model/CylinderOptions.md +3 -3
  419. package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
  420. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  421. package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
  422. package/dist/docs/reference/model/EllipseOptions.md +3 -3
  423. package/dist/docs/reference/model/EndTreatments.md +1 -1
  424. package/dist/docs/reference/model/ExtrudeOptions.md +6 -6
  425. package/dist/docs/reference/model/FinalizedModel.md +20 -10
  426. package/dist/docs/reference/model/FinalizedPart.md +1 -1
  427. package/dist/docs/reference/model/Frame3.md +6 -6
  428. package/dist/docs/reference/model/GenerateCallback.md +5 -1
  429. package/dist/docs/reference/model/GenerateContext.md +5 -1
  430. package/dist/docs/reference/model/GeneratedPart.md +5 -1
  431. package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
  432. package/dist/docs/reference/model/GenerationError.md +5 -1
  433. package/dist/docs/reference/model/GeometryResolution.md +5 -5
  434. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  435. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  436. package/dist/docs/reference/model/GridPatternOptions.md +12 -5
  437. package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
  438. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +4 -3
  439. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
  440. package/dist/docs/reference/model/HullOptions.md +5 -5
  441. package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
  442. package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
  443. package/dist/docs/reference/model/ImplicitOptions.md +6 -6
  444. package/dist/docs/reference/model/InternalThreadCutterOptions.md +5 -4
  445. package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
  446. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
  447. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +34 -0
  448. package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
  449. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
  450. package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
  451. package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
  452. package/dist/docs/reference/model/LinearPatternOptions.md +13 -5
  453. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  454. package/dist/docs/reference/model/LoftOptions.md +1 -1
  455. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  456. package/dist/docs/reference/model/LoftStation.md +3 -3
  457. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  458. package/dist/docs/reference/model/ModelProgram.md +5 -1
  459. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  460. package/dist/docs/reference/model/NumericArray.md +8 -1
  461. package/dist/docs/reference/model/PartGeometry.md +5 -1
  462. package/dist/docs/reference/model/PartOptions.md +5 -1
  463. package/dist/docs/reference/model/Path2-type.md +196 -0
  464. package/dist/docs/reference/model/Path2Data.md +50 -0
  465. package/dist/docs/reference/model/Path2Input.md +20 -0
  466. package/dist/docs/reference/model/Path3-type.md +196 -0
  467. package/dist/docs/reference/model/Path3Data.md +50 -0
  468. package/dist/docs/reference/model/Path3Input.md +20 -0
  469. package/dist/docs/reference/model/PathLocation.md +69 -0
  470. package/dist/docs/reference/model/PathNormalGuide.md +6 -5
  471. package/dist/docs/reference/model/PathOptions.md +38 -0
  472. package/dist/docs/reference/model/PathPatternOptions.md +4 -3
  473. package/dist/docs/reference/model/PathResamplingOptions.md +83 -0
  474. package/dist/docs/reference/model/PatternSource.md +2 -1
  475. package/dist/docs/reference/model/Pivot2Options.md +2 -1
  476. package/dist/docs/reference/model/Pivot3Options.md +2 -1
  477. package/dist/docs/reference/model/PlaneOptions.md +3 -3
  478. package/dist/docs/reference/model/PolygonData.md +3 -2
  479. package/dist/docs/reference/model/PolygonOptions.md +8 -8
  480. package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +8 -7
  481. package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +42 -20
  482. package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
  483. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
  484. package/dist/docs/reference/model/Profile.md +4 -2
  485. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  486. package/dist/docs/reference/model/ProfileContour2.md +4 -2
  487. package/dist/docs/reference/model/ProfileSpan2.md +3 -3
  488. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
  489. package/dist/docs/reference/model/RadialPatternOptions.md +18 -22
  490. package/dist/docs/reference/model/RadialSizing.md +1 -1
  491. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  492. package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
  493. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  494. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  495. package/dist/docs/reference/model/RectangleOptions.md +10 -10
  496. package/dist/docs/reference/model/RegionData.md +2 -2
  497. package/dist/docs/reference/model/RegularPolygonOptions.md +5 -5
  498. package/dist/docs/reference/model/RevolveOptions.md +9 -4
  499. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  500. package/dist/docs/reference/model/Section.md +20 -12
  501. package/dist/docs/reference/model/SectionHullOptions.md +5 -5
  502. package/dist/docs/reference/model/SectionInspection.md +10 -10
  503. package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
  504. package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
  505. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  506. package/dist/docs/reference/model/Solid.md +31 -7
  507. package/dist/docs/reference/model/SolidInspection.md +7 -7
  508. package/dist/docs/reference/model/{SolidRayHit.md → SolidSegmentHit.md} +6 -6
  509. package/dist/docs/reference/model/SphereOptions.md +3 -3
  510. package/dist/docs/reference/model/StarOptions.md +10 -10
  511. package/dist/docs/reference/model/{StrokePathCap.md → StrokeCap.md} +3 -3
  512. package/dist/docs/reference/model/{StrokePathJoin.md → StrokeJoin.md} +3 -3
  513. package/dist/docs/reference/model/StrokeOptions.md +6 -6
  514. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  515. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  516. package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
  517. package/dist/docs/reference/model/SweepOptions.md +6 -6
  518. package/dist/docs/reference/model/SweepOrientation.md +7 -7
  519. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  520. package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
  521. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
  522. package/dist/docs/reference/model/ThreadHandedness.md +2 -1
  523. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
  524. package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
  525. package/dist/docs/reference/model/ThreadProfile.md +4 -3
  526. package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
  527. package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
  528. package/dist/docs/reference/model/ThreadedNutOptions.md +5 -4
  529. package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
  530. package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
  531. package/dist/docs/reference/model/ThreadedRodOptions.md +5 -4
  532. package/dist/docs/reference/model/TorusOptions.md +8 -8
  533. package/dist/docs/reference/model/Transform2-type.md +6 -5
  534. package/dist/docs/reference/model/Transform2Data.md +16 -0
  535. package/dist/docs/reference/model/Transform2Input.md +4 -3
  536. package/dist/docs/reference/model/Transform3-type.md +6 -5
  537. package/dist/docs/reference/model/Transform3Data.md +19 -0
  538. package/dist/docs/reference/model/Transform3Input.md +4 -3
  539. package/dist/docs/reference/model/TriangleMesh.md +1 -1
  540. package/dist/docs/reference/model/TriangleMeshAnalysis.md +4 -4
  541. package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
  542. package/dist/docs/reference/model/TubeOptions.md +8 -8
  543. package/dist/docs/reference/model/Vector2-type.md +6 -5
  544. package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
  545. package/dist/docs/reference/model/Vector2Input.md +4 -3
  546. package/dist/docs/reference/model/Vector3-type.md +6 -5
  547. package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
  548. package/dist/docs/reference/model/Vector3Input.md +4 -3
  549. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  550. package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
  551. package/dist/docs/reference/model/anchor.md +2 -1
  552. package/dist/docs/reference/model/bounds2.md +36 -0
  553. package/dist/docs/reference/model/bounds3.md +36 -0
  554. package/dist/docs/reference/model/box.md +4 -4
  555. package/dist/docs/reference/model/castSegment.md +40 -0
  556. package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
  557. package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
  558. package/dist/docs/reference/model/categories/bounds.md +36 -0
  559. package/dist/docs/reference/model/categories/contracts.md +4 -2
  560. package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
  561. package/dist/docs/reference/model/categories/explicit-profiles.md +7 -5
  562. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
  563. package/dist/docs/reference/model/categories/generation.md +11 -2
  564. package/dist/docs/reference/model/categories/hinges.md +38 -0
  565. package/dist/docs/reference/model/categories/inspection.md +12 -6
  566. package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
  567. package/dist/docs/reference/model/categories/paths.md +41 -0
  568. package/dist/docs/reference/model/categories/primitives.md +10 -4
  569. package/dist/docs/reference/model/categories/resolution.md +4 -2
  570. package/dist/docs/reference/model/categories/sections.md +12 -8
  571. package/dist/docs/reference/model/categories/threads.md +11 -8
  572. package/dist/docs/reference/model/categories/transforms-placement.md +23 -15
  573. package/dist/docs/reference/model/circle.md +1 -1
  574. package/dist/docs/reference/model/components.md +6 -6
  575. package/dist/docs/reference/model/compose.md +1 -1
  576. package/dist/docs/reference/model/cylinder.md +1 -1
  577. package/dist/docs/reference/model/distance.md +1 -1
  578. package/dist/docs/reference/model/ellipse.md +1 -1
  579. package/dist/docs/reference/model/extrude.md +3 -3
  580. package/dist/docs/reference/model/generate.md +5 -1
  581. package/dist/docs/reference/model/gridPattern.md +5 -4
  582. package/dist/docs/reference/model/heightfield.md +5 -2
  583. package/dist/docs/reference/model/hull.md +1 -1
  584. package/dist/docs/reference/model/immutableBuffer.md +5 -1
  585. package/dist/docs/reference/model/immutableMesh.md +5 -1
  586. package/dist/docs/reference/model/implicit.md +3 -3
  587. package/dist/docs/reference/model/inspectSection.md +1 -1
  588. package/dist/docs/reference/model/inspectSolid.md +1 -1
  589. package/dist/docs/reference/model/internalThreadCutter.md +5 -4
  590. package/dist/docs/reference/model/intersect.md +1 -1
  591. package/dist/docs/reference/model/isEmpty.md +1 -1
  592. package/dist/docs/reference/model/knuckleHinge.md +47 -0
  593. package/dist/docs/reference/model/linearPattern.md +5 -4
  594. package/dist/docs/reference/model/loft.md +1 -1
  595. package/dist/docs/reference/model/matchProfiles.md +2 -2
  596. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  597. package/dist/docs/reference/model/path2.md +54 -0
  598. package/dist/docs/reference/model/path3.md +49 -0
  599. package/dist/docs/reference/model/pathPattern.md +14 -12
  600. package/dist/docs/reference/model/polygon.md +8 -5
  601. package/dist/docs/reference/model/preflightInternalThreadCutter.md +9 -3
  602. package/dist/docs/reference/model/preflightThreadedNut.md +9 -3
  603. package/dist/docs/reference/model/preflightThreadedRod.md +9 -3
  604. package/dist/docs/reference/model/radialPattern.md +6 -37
  605. package/dist/docs/reference/model/rectangle.md +7 -4
  606. package/dist/docs/reference/model/regularPolygon.md +1 -1
  607. package/dist/docs/reference/model/revolve.md +5 -4
  608. package/dist/docs/reference/model/solidFromMesh.md +1 -1
  609. package/dist/docs/reference/model/sphere.md +1 -1
  610. package/dist/docs/reference/model/split.md +1 -1
  611. package/dist/docs/reference/model/splitByPlane.md +1 -1
  612. package/dist/docs/reference/model/star.md +4 -4
  613. package/dist/docs/reference/model/stroke.md +8 -8
  614. package/dist/docs/reference/model/svgPathSection.md +1 -1
  615. package/dist/docs/reference/model/svgSection.md +1 -1
  616. package/dist/docs/reference/model/sweep.md +7 -7
  617. package/dist/docs/reference/model/textSection.md +1 -1
  618. package/dist/docs/reference/model/threadRidge.md +3 -2
  619. package/dist/docs/reference/model/threadedNut.md +5 -4
  620. package/dist/docs/reference/model/threadedRod.md +5 -4
  621. package/dist/docs/reference/model/torus.md +3 -3
  622. package/dist/docs/reference/model/transform2.md +14 -7
  623. package/dist/docs/reference/model/transform3.md +16 -7
  624. package/dist/docs/reference/model/tube.md +3 -3
  625. package/dist/docs/reference/model/union.md +1 -1
  626. package/dist/docs/reference/model/vector2.md +10 -2
  627. package/dist/docs/reference/model/vector3.md +10 -2
  628. package/dist/docs/reference/model.md +17 -9
  629. package/dist/docs/reference/text/Bounds2Data.md +34 -0
  630. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
  631. package/dist/docs/reference/text/Vector2Data.md +7 -0
  632. package/dist/docs/reference/text/VectorFont.md +2 -2
  633. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  634. package/dist/docs/reference/text/VectorTextArcBaseline.md +3 -3
  635. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  636. package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
  637. package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
  638. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  639. package/dist/docs/reference/text/categories/font-preparation.md +8 -6
  640. package/dist/docs/reference/text/prepareVectorFont.md +2 -2
  641. package/dist/docs/reference/text.md +4 -2
  642. package/dist/engine/construction-operations.js +31 -14
  643. package/dist/engine/execution.js +39 -8
  644. package/dist/engine/extrusion-finishing.js +1 -1
  645. package/dist/engine/index.js +6 -1
  646. package/dist/engine/inspection-operations.js +13 -11
  647. package/dist/engine/knuckle-hinge-operation.js +85 -0
  648. package/dist/engine/loft-operations.js +35 -14
  649. package/dist/engine/mechanical-operations.js +3 -1
  650. package/dist/engine/model-summary.js +8 -5
  651. package/dist/engine/modeling-context.js +8 -1
  652. package/dist/engine/native/material-components.js +305 -0
  653. package/dist/engine/native/regions.js +2 -1
  654. package/dist/engine/native/threads.js +3 -3
  655. package/dist/engine/native/transforms.js +5 -7
  656. package/dist/engine/operation-environment.js +2 -2
  657. package/dist/engine/pattern-operations.js +1 -1
  658. package/dist/engine/placement.js +2 -2
  659. package/dist/engine/primitive-anchors.js +17 -17
  660. package/dist/engine/primitive-operations.js +1 -1
  661. package/dist/engine/primitive-profiles.js +7 -7
  662. package/dist/engine/profile-mesh.js +7 -7
  663. package/dist/engine/recipe-realization.js +10 -2
  664. package/dist/engine/section-operations.js +33 -8
  665. package/dist/engine/session-snapshot.js +14 -4
  666. package/dist/engine/session.js +10 -5
  667. package/dist/engine/shape-anchors.js +3 -3
  668. package/dist/engine/transform-operations.js +27 -27
  669. package/dist/geometry/anchors.js +40 -33
  670. package/dist/geometry/bounds-value.js +93 -0
  671. package/dist/geometry/bounds.js +10 -8
  672. package/dist/geometry/curves/sampling.js +15 -16
  673. package/dist/geometry/edge-finishing.js +1 -1
  674. package/dist/geometry/errors.js +1 -0
  675. package/dist/geometry/extrusion.js +13 -16
  676. package/dist/geometry/heightfield.js +12 -1
  677. package/dist/geometry/index.js +12 -11
  678. package/dist/geometry/loft/loft-simple-mesh.js +6 -6
  679. package/dist/geometry/loft/loft.js +22 -13
  680. package/dist/geometry/math/immutable-value.js +1 -1
  681. package/dist/geometry/math/vector-value.js +11 -3
  682. package/dist/geometry/math/vector2.js +1 -0
  683. package/dist/geometry/math/vector3.js +1 -0
  684. package/dist/geometry/mechanical/gear-motion.js +3 -3
  685. package/dist/geometry/mechanical/gears.js +38 -38
  686. package/dist/geometry/mechanical/index.js +4 -3
  687. package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
  688. package/dist/geometry/mechanical/standards.js +1 -1
  689. package/dist/geometry/mechanical/thread-helices.js +2 -3
  690. package/dist/geometry/mechanical/thread-mesh-plan.js +11 -7
  691. package/dist/geometry/mechanical/thread-mesh.js +7 -7
  692. package/dist/geometry/mechanical/thread-profiles.js +5 -5
  693. package/dist/geometry/mechanical/thread-solids.js +31 -6
  694. package/dist/geometry/mechanical/thread-surface.js +1 -1
  695. package/dist/geometry/mechanical/threads.js +8 -8
  696. package/dist/geometry/mesh/mesh-centroid.js +1 -0
  697. package/dist/geometry/mesh/mesh-planar.js +25 -27
  698. package/dist/geometry/mesh/mesh-quality.js +5 -5
  699. package/dist/geometry/mesh/mesh-signature.js +13 -13
  700. package/dist/geometry/mesh/mesh-solid.js +8 -7
  701. package/dist/geometry/mesh/mesh.js +4 -15
  702. package/dist/geometry/paths/closest-point.js +8 -19
  703. package/dist/geometry/paths/frames.js +42 -11
  704. package/dist/geometry/paths/helix.js +17 -6
  705. package/dist/geometry/paths/path-value.js +268 -0
  706. package/dist/geometry/paths/planar.js +36 -23
  707. package/dist/geometry/paths/resampling.js +27 -5
  708. package/dist/geometry/patterns/placements.js +100 -27
  709. package/dist/geometry/patterns.js +5 -3
  710. package/dist/geometry/polygon-clipping.js +17 -0
  711. package/dist/geometry/profiles/contour.js +7 -6
  712. package/dist/geometry/profiles/matched.js +5 -4
  713. package/dist/geometry/profiles/profiles.js +4 -4
  714. package/dist/geometry/profiles/rectangle.js +14 -5
  715. package/dist/geometry/profiles/side-profile.js +9 -7
  716. package/dist/geometry/profiles/span-sampling.js +1 -1
  717. package/dist/geometry/resolution.js +34 -34
  718. package/dist/geometry/revolve/revolve-mesh.js +12 -7
  719. package/dist/geometry/stroke-path.js +12 -27
  720. package/dist/geometry/svg/fill.js +7 -21
  721. package/dist/geometry/svg-import.js +31 -25
  722. package/dist/geometry/sweeps/options.js +5 -4
  723. package/dist/geometry/sweeps/orientation.js +5 -5
  724. package/dist/geometry/sweeps/stations.js +10 -10
  725. package/dist/geometry/sweeps/sweep-closed.js +2 -2
  726. package/dist/geometry/sweeps/sweep-mesh.js +9 -3
  727. package/dist/geometry/sweeps/sweep-open.js +1 -1
  728. package/dist/geometry/sweeps/validation.js +4 -7
  729. package/dist/geometry/text-fitting.js +1 -0
  730. package/dist/geometry/transform-geometry.js +7 -14
  731. package/dist/geometry/transform-matrix.js +1 -1
  732. package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
  733. package/dist/index.js +3 -1
  734. package/dist/model/execution-binding.js +3 -3
  735. package/dist/model/geometry-recipes.js +1 -1
  736. package/dist/model/immutable-generation-data.js +62 -10
  737. package/dist/model/knuckle-hinge.js +1 -0
  738. package/dist/model/operations.js +79 -26
  739. package/dist/model/recipe-declaration.js +21 -7
  740. package/dist/model/shape-handles.js +2 -1
  741. package/dist/text/index.js +15 -9
  742. package/dist/text/vector-text-layout.js +31 -26
  743. package/package.json +1 -1
  744. package/dist/docs/reference/geometry/Bounds2.md +0 -39
  745. package/dist/docs/reference/geometry/Bounds3.md +0 -39
  746. package/dist/docs/reference/geometry/ClosestPointOnPathOptions.md +0 -34
  747. package/dist/docs/reference/geometry/ClosestPointOnPathResult.md +0 -65
  748. package/dist/docs/reference/geometry/Path2.md +0 -14
  749. package/dist/docs/reference/geometry/Path3.md +0 -14
  750. package/dist/docs/reference/geometry/PrimitivePlacement.md +0 -31
  751. package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +0 -83
  752. package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
  753. package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
  754. package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
  755. package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
  756. package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
  757. package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
  758. package/dist/docs/reference/geometry/closestPointOnPath.md +0 -110
  759. package/dist/docs/reference/geometry/cumulativePathLengths.md +0 -33
  760. package/dist/docs/reference/geometry/measureTriangleMesh.md +0 -55
  761. package/dist/docs/reference/geometry/pathLength.md +0 -33
  762. package/dist/docs/reference/geometry/strokePathRegion.md +0 -63
  763. package/dist/docs/reference/geometry/transformContour.md +0 -42
  764. package/dist/docs/reference/geometry/transformPath2.md +0 -40
  765. package/dist/docs/reference/geometry/transformPath3.md +0 -33
  766. package/dist/docs/reference/model/Bounds2.md +0 -39
  767. package/dist/docs/reference/model/Bounds3.md +0 -39
  768. package/dist/docs/reference/model/Path2.md +0 -20
  769. package/dist/docs/reference/model/Transform2Matrix.md +0 -15
  770. package/dist/docs/reference/model/Transform3Matrix.md +0 -18
  771. package/dist/docs/reference/model/rayCast.md +0 -40
  772. package/dist/docs/reference/model/toTriangleMesh.md +0 -27
  773. package/dist/docs/reference/text/Bounds2.md +0 -34
  774. package/dist/docs/reference/text/Vector2Tuple.md +0 -7
  775. package/dist/geometry/paths/path.js +0 -32
@@ -1,15 +1,13 @@
1
1
  # Modeling fundamentals
2
2
 
3
- Understand watertight solids, coordinates, transforms, Boolean operations, and geometry ownership in Studio code Projects.
3
+ Combine watertight solids with Booleans and transforms, and understand geometry ownership in Studio code Projects.
4
4
 
5
- [Manifold](https://manifoldcad.org/docs/jsapi/) is the solid-modeling kernel behind MetaMesh. Its
6
- core idea is a **manifold** mesh: an oriented, watertight boundary in which every edge belongs to a
7
- valid solid. That invariant makes Boolean operations and manufacturing output more dependable than
8
- working with an arbitrary triangle soup.
5
+ Build parts by combining primitives, applying transforms, and removing material with cutters.
6
+ MetaMesh uses [Manifold](https://manifoldcad.org/docs/jsapi/), a solid-modeling kernel that works
7
+ with **manifold meshes**: closed, consistently oriented boundaries representing solid material.
9
8
 
10
- Studio code Projects use Manifold through the curated `@metamesh/modeling` API. The public
11
- contract combines constructors and collection functions with fluent, opaque `Section` and `Solid`
12
- recipes. The engine owns the underlying kernel values.
9
+ Studio code Projects use `@metamesh/modeling` to construct immutable `Section` and `Solid` recipes.
10
+ The engine evaluates them and owns the underlying kernel values.
13
11
 
14
12
  ## Coordinates and units
15
13
 
@@ -47,9 +45,9 @@ The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2
47
45
  occupies `Z = −4…4 mm`. That overtravel makes the subtraction deliberate while the hole radius
48
46
  stays `3 mm`. Derive cutter placement from the same datum as the body when changing dimensions.
49
47
 
50
- Prefer a small number of named intermediate solids. If many repeated cutters are independent, build
51
- or arrange them first and perform one meaningful subtraction where the API allows it. Excessive
52
- high-resolution Boolean steps cost time and obscure design intent.
48
+ Name intermediate solids by their purpose. Arrange independent repeated cutters first, then
49
+ subtract them together where possible. Many high-resolution Boolean steps increase generation
50
+ time and obscure design intent.
53
51
 
54
52
  The `union` and `intersect` functions and `shape.subtract(cutters)` also combine filled Sections
55
53
  in XY. Choose one dimension for every operand in a call. Keep a Section native through its Boolean
@@ -109,27 +107,28 @@ The kernel can enforce solid topology, but it does not know your printer, materi
109
107
  tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
110
108
  cross-field errors in the Project, then verify the exported file in its downstream tool.
111
109
 
112
- Likewise, an empty or zero-volume result is invalid model output, but a non-empty result is not an
113
- engineering certification.
110
+ Empty or zero-volume output is invalid; non-empty output still needs engineering checks.
114
111
 
115
112
  ## Geometry ownership
116
113
 
117
- Geometry values allocate resources outside ordinary JavaScript objects. Studio's evaluator owns
118
- those resources for each run and cleans them up deterministically. Authored code should never
119
- initialize the kernel or manually delete a `Section` or `Solid`.
114
+ `Section` and `Solid` values are immutable recipes. Evaluating them creates native resources
115
+ owned and cleaned up by Studio. Do not initialize the kernel or manually delete shapes in
116
+ `model.ts`.
120
117
 
121
- Use `inspectSection()` or `inspectSolid()` when you need supported measurements such as bounds,
122
- area, or volume. A Section's `parts` count describes disconnected filled components; a Solid's
123
- `parts` count describes connected surface shells, including inward cavity shells. Neither counts
124
- the named output parts you declare with `part(...)`. Return one declaration or an array of them
125
- to hand the final result back to Studio for preview and export.
118
+ Use `inspectSection()` or `inspectSolid()` for measurements such as bounds, area, volume, and
119
+ `componentCount`. `components()` returns disconnected material pieces, preserving holes and
120
+ enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
121
+ makes two. Recombining the pieces preserves the original material.
122
+
123
+ Snapshot `stats.partCount` counts named `part(...)` declarations; one part may contain several
124
+ material components. Return one declaration or an array for Studio to preview and export.
126
125
 
127
126
 
128
127
 
129
128
  **Use the MetaMesh reference for authored code**
130
129
 
131
- The upstream Manifold documentation is useful background on the underlying mathematics. Exact
132
- code-Project symbols and guarantees come from the [Geometry API reference](../reference/model.md).
130
+ The upstream Manifold documentation is useful background on the underlying mathematics. Exact code
131
+ Project symbols and guarantees come from the [Model API reference](../reference/model.md).
133
132
 
134
133
 
135
134
 
@@ -1,6 +1,6 @@
1
1
  # Code Project contract
2
2
 
3
- Understand the supported source, computed values, parts, resource ownership, recovery, and visible-model export behavior.
3
+ Understand Studio’s TypeScript source contract, computed caches, parts, resource ownership, and recovery.
4
4
 
5
5
  An authored Project has one control definition and one TypeScript entry file. Studio supplies the
6
6
  compiler, prepared services, modeling engine, persistence and preview.
@@ -29,9 +29,8 @@ export default generate(({ params: parameters, part }) => {
29
29
 
30
30
 
31
31
 
32
- The helper infers `params` from **Model controls**. Values are ordinary readonly numbers,
33
- strings and structured controls; there is no global parameter type to remember. Import
34
- `type Parameters` from `@metamesh/project` when a separate helper needs that explicit type.
32
+ The helper infers `params` from **Model controls** as readonly numbers, strings, and structured
33
+ values. Import `type Parameters` from `@metamesh/project` when a separate helper needs the type.
35
34
 
36
35
  The outer callback runs for each edit. Return a single `part(...)` or a readonly array of parts;
37
36
  `computed` is optional.
@@ -92,9 +91,10 @@ Call other computed readers inside the callback too: `computed("finished", () =>
92
91
  tracks the base result automatically. In **New project → Cached panels**, changing **Gap** only
93
92
  moves the second panel; changing **Notch width** reuses the hole pattern for the finishing cut.
94
93
 
95
- An earlier read such as `const { height } = params` is an ordinary snapshot. Capturing it in a
96
- computation does not track that parameter and can reuse stale geometry. Prefer moving the read inside. When a changing value
97
- must be prepared outside, such as a loop item, list it in the optional third argument:
94
+ An earlier read such as `const { height } = params` captures a snapshot. Using it inside a
95
+ computation does not track the parameter and can reuse stale geometry. Move the read inside the
96
+ callback. If a changing value must be prepared outside, such as a loop item, list it in the optional
97
+ third argument:
98
98
 
99
99
 
100
100
 
@@ -114,19 +114,19 @@ The same capture rule applies to an eagerly read result such as `const value = o
114
114
  Select and call readers inside the callback when possible. Studio warns about common hidden captures
115
115
  while Code is open; its advisory checks cannot prove arbitrary JavaScript correct.
116
116
 
117
- Dependency entries compare with `Object.is`; object and array contents are not deeply compared.
118
- Use immutable parameter values, computed results, or scalar inputs. Other objects must be deeply
119
- frozen. Fresh object/array entries prevent cache reuse, so create temporary options inside the
120
- callback instead. Studio warns about obvious fresh dependencies without probing generation.
117
+ Dependency entries use `Object.is`, without comparing object or array contents. Use immutable
118
+ parameter values, computed results, or scalar inputs; other objects must be deeply frozen. Create
119
+ temporary options inside the callback, since fresh object or array dependencies prevent reuse.
120
+ Studio warns about obvious fresh dependencies without running generation.
121
121
 
122
122
  IDs identify logical computations, so loops and conditions work without hook call-order rules.
123
123
  IDs must be unique lowercase hyphen-separated alphanumeric names of at most 64 characters within
124
124
  their namespace.
125
125
 
126
- Calculations are synchronous and pure. Do not mutate cached values, read clocks or randomness,
127
- perform effects, or return promises/functions. Cache eviction and a worker restart preserve the
128
- same physical result. Keep expensive pure layouts or grids in their own computation rather than
129
- caching every small arithmetic expression.
126
+ Keep calculations synchronous and pure: do not mutate cached values, read clocks or randomness,
127
+ perform effects, or return promises or functions. The physical result must remain the same after
128
+ cache eviction or a worker restart. Cache expensive layouts or grids; cheap arithmetic usually
129
+ does not need its own computation.
130
130
 
131
131
  For cached numeric data, call [`immutableBuffer`](../reference/model/immutableBuffer.md) and use
132
132
  its `length`, `at(index)`, or `copy()` methods. Copy once before a dense sampling callback so its
@@ -185,7 +185,7 @@ export default generate(({ params: parameters, part }) => {
185
185
 
186
186
 
187
187
 
188
- Lengths are millimetres, rotation is degrees, coordinates are right-handed with **+Z up**.
188
+ Lengths use millimetres and rotations use degrees. Coordinates are right-handed with **+Z up**.
189
189
  Rotation applies about fixed X, then Y, then Z axes before translation. Part placement governs
190
190
  preview, picking, measurements and all exports. Changing placement or color can reuse cached
191
191
  geometry and renderer buffers. Studio's native part-color overrides update appearance directly.
@@ -199,13 +199,14 @@ instance limits, including cache hits. Empty output is invalid.
199
199
 
200
200
  ## Ownership and recovery
201
201
 
202
- Solids and Sections describe immutable deferred recipes. Ordinary recipes are reusable across
203
- sessions regardless of where constructed; unspecified resolution settings inherit the evaluating
204
- host's defaults. Observations such as `inspectSolid` realize required geometry synchronously and
205
- return copied facts. `components()` selections, and recipes using them, can only be evaluated in
206
- the originating session because their identity depends on evaluated topology. The host owns
207
- native allocations and cleanup on success and failure. Nested or asynchronous execution rejects.
208
- Apply local resolution explicitly to each affected constructor or Section operation.
202
+ Solids and Sections are immutable deferred recipes. Ordinary recipes can be reused across
203
+ sessions; unspecified resolution settings inherit the evaluating host's defaults. Apply local
204
+ resolution explicitly to each affected constructor or Section operation.
205
+
206
+ Observations such as `inspectSolid` evaluate required geometry synchronously and return copied
207
+ facts. `components()` selections and recipes using them can only be evaluated in their originating
208
+ session because their identity depends on evaluated topology. The host cleans up native
209
+ allocations on success and failure. Nested or asynchronous execution rejects.
209
210
 
210
211
  Source/control-definition changes invalidate the program session. Parameter edits reuse it.
211
212
  Failed or stale requests retain the last valid preview; fatal failures replace the worker.
@@ -53,27 +53,42 @@ move engine initialization out of the function and reuse that engine and its mod
53
53
 
54
54
  ## Keep execution synchronous
55
55
 
56
- Acquire assets before generation. Imported modeling functions run inside its synchronous callback;
57
- computations and observations cannot cross an async boundary. Sessions cannot execute nested runs
58
- in one realm. Services are explicit synchronous capabilities supplied at session creation.
56
+ Acquire assets before generation and supply synchronous services when creating a session.
57
+ Computed readers and geometry observations require active synchronous generation. They cannot
58
+ cross an async boundary, and sessions cannot run inside another session run in the same realm.
59
59
 
60
- A session owns optional computed caches and deferred Solid/Section recipes. It may retain evaluated
61
- computed shapes privately for later cuts or Booleans; temporary native allocations are cleaned after
62
- each run. Separate expensive base geometry from finishing operations to reuse it. A returned snapshot
63
- owns copied manufacturing buffers until `snapshot.dispose()`; `session.dispose()` releases caches
64
- while retained snapshots remain usable. Keep captured output for rendering/export and release it
65
- when its consumer is done.
60
+ Recipes and evaluated geometry have different lifetimes:
61
+
62
+ - Immutable `Solid` and `Section` recipes, vectors, paths, and transforms can be created without an
63
+ engine and reused across sessions. Explicit resolution settings stay with a recipe; omitted
64
+ settings inherit the evaluating host's defaults.
65
+ - A session owns evaluation, optional computed caches, and native resources. Temporary native
66
+ allocations are cleaned after each run. Computed shapes may stay cached for later cuts or
67
+ Booleans; separate expensive base geometry from finishing operations to reuse it.
68
+ - Observed `components()` selections depend on evaluated topology and belong to their originating
69
+ session. Ordinary recipes remain portable.
70
+
71
+ A snapshot retains captured manufacturing buffers independently of its session:
72
+
73
+ - Reading a part's `positions` or `indices`, including through its local `geometry` resource,
74
+ returns a fresh owned copy. Read each field once when processing its buffer.
75
+ - `session.dispose()` releases caches; captured snapshots remain usable.
76
+ - `snapshot.dispose()` releases its references and invalidates later `parts`, `bounds`, and `stats`
77
+ access. Diagnostics, dependencies, and parts already obtained remain usable. Other snapshots
78
+ and exports already in progress are unaffected.
79
+
80
+ Dispose each snapshot when its consumer is done.
66
81
 
67
82
  ## Load WASM in a browser Worker
68
83
 
69
84
  The package includes its matching JS/WASM kernel. Node and unbundled browser modules resolve the
70
85
  installed WASM asset automatically. A browser bundler must retain or emit that relative asset;
71
86
  [`modelingWasmUrl`](../reference/engine/modelingWasmUrl.md) can supply the emitted URL through
72
- `createModelEngine({ locateFile })`.
87
+ `createModelEngine({ wasmUrl: modelingWasmUrl })`.
73
88
 
74
89
  Your application owns Worker creation and message handling. Separate Workers have independent
75
90
  execution scopes. Transfer owned copies of completed buffers; transferring cache backing storage
76
- would detach it. Native geometry never crosses Workers or runs.
91
+ would detach it. Native handles remain private to their engine.
77
92
 
78
93
  ## Set resource limits
79
94
 
@@ -1,10 +1,10 @@
1
1
  # Modeling recipes
2
2
 
3
- Adapt typechecked patterns for sections, SVG, text, extrusion, sweeps, heightfields, booleans, placement, anchors, and inspection.
3
+ Build plates, cups, routed tubes, lofts, repeated features, SVG shapes, and lettering with complete modeling examples.
4
4
 
5
- Build a plate, route a section through space, join profiles, or place repeated features. Each
6
- illustrated recipe pairs its complete source with a render of that exact source. Open
7
- the interactive preview to orbit the result; copy the code into a Studio code Project to edit it.
5
+ Choose a recipe, inspect its render, and copy the complete source into a Studio
6
+ [code Project](https://metamesh.studio/docs/develop/code-projects). Each illustrated recipe renders that same source;
7
+ open its interactive preview to orbit the result.
8
8
 
9
9
  | You want to make | Start here | Main decision |
10
10
  | ------------------------ | -------------------------------------------------------------- | --------------------------------------------------------- |
@@ -20,8 +20,8 @@ the interactive preview to orbit the result; copy the code into a Studio code Pr
20
20
 
21
21
  All dimensions in these recipes are millimetres. MetaMesh uses a right-handed coordinate system
22
22
  with +Z up, degrees for angular arguments including `rotate`, and non-duplicated contour seams.
23
- The examples default-export a synchronous `generate` program. Use ordinary assertions for constraints
24
- and optional `computed` values for expensive/shared dimensions, geometry or text layouts.
23
+ The examples default-export a synchronous `generate` program. Use assertions for constraints
24
+ and optional `computed` values to cache expensive shared calculations, geometry, or text layouts.
25
25
  [Define parameters and validation](https://metamesh.studio/docs/develop/parameters-and-validation) connects
26
26
  source values to controls.
27
27
 
@@ -47,9 +47,9 @@ Subtract the opening in 2D, offset the filled material, then extrude it into one
47
47
 
48
48
 
49
49
 
50
- `rectangle` and `circle` take object options and return filled Sections. `section.subtract(cutters)` and the `union` and `intersect` functions also support Solids,
51
- with same-dimensional operands in each call. `section.offset(distance)` preserves the filled
52
- topology. `section.extrude({ height })` preserves
50
+ `rectangle` and `circle` take object options and return filled Sections. `section.subtract(cutters)`,
51
+ `union`, and `intersect` also support Solids; every operand in a call must have the same dimension.
52
+ `section.offset(distance)` offsets the filled material. `section.extrude({ height })` preserves
53
53
  holes and places the bottom at zero unless `center: true` is requested.
54
54
 
55
55
  Positive offset grows material on every boundary: this example grows the outside by `1.2 mm` and
@@ -59,8 +59,8 @@ offset the outside first and subtract the hole afterward. See
59
59
 
60
60
  ## SVG parameter and extrusion
61
61
 
62
- An SVG control is exposed to authored code as a string on the immutable `parameters` argument. Pass
63
- that string directly to `svgSection`; no DOM parsing or editor-specific JSON is needed.
62
+ Pass an SVG control's string value from `params` directly to `svgSection`. This example aliases
63
+ `params` as `parameters`:
64
64
 
65
65
 
66
66
 
@@ -76,10 +76,10 @@ export default generate(({ params: parameters, part }) => {
76
76
 
77
77
 
78
78
 
79
- The property name is the control ID shown in the model-controls editor. For example, use
80
- `parameters.logo` when the SVG control ID is `logo`.
79
+ The property name matches the ID in **Model controls**: `profile6` in this example, or
80
+ `parameters.logo` for a control with ID `logo`.
81
81
 
82
- The same function also accepts literal SVG documents. Here two nested paths produce one badge
82
+ `svgSection` also accepts literal SVG documents. Here two nested subpaths make a badge
83
83
  with a rectangular opening:
84
84
 
85
85
 
@@ -101,7 +101,7 @@ export default generate(({ part }) => {
101
101
  `);
102
102
  // Check the imported topology before using it in the manufacturing solid.
103
103
  const measurements = inspectSection(badge);
104
- if (measurements.parts !== 1 || measurements.contours !== 2) {
104
+ if (measurements.componentCount !== 1 || measurements.contourCount !== 2) {
105
105
  throw new Error("Expected one badge with one rectangular opening.");
106
106
  }
107
107
  return [part("model", badge.extrude({ height: 4, center: true }))];
@@ -160,7 +160,7 @@ One radial wall profile revolved around +Z creates the floor and tapered cup wal
160
160
 
161
161
  [`polygon`](../reference/model/polygon.md) fills the ordered contour.
162
162
  [`Section.revolve`](../reference/model/Section.md#revolve) defaults to a complete `360°` turn. Set
163
- `revolveDegrees: 270` for a capped partial turn that exposes the cross section. Keep the closed
163
+ `degrees: 270` for a capped partial turn that exposes the cross section. Keep the closed
164
164
  profile free of self-intersections and never repeat its first point at the end.
165
165
 
166
166
  For an open side outline, [`sampleSideProfile`](../reference/geometry/sampleSideProfile.md)
@@ -240,7 +240,7 @@ export default generate(({ part }) => {
240
240
  const arms = radialPattern(arm.translate([18, 0, 0]).rotate([0, 0, 30]), {
241
241
  count: 6,
242
242
  axis: [0, 0, 1],
243
- angleDegrees: 60,
243
+ angle: 60,
244
244
  });
245
245
  // Both shapes are Z-centered; extra cutter height clears both hub faces.
246
246
  const bore = cylinder({ height: 16, radius: 4 });
@@ -269,8 +269,7 @@ to a Section and its plain point data. This placement rotates around `[2, 1]`, t
269
269
 
270
270
 
271
271
  ```ts
272
- import { polygon, transform2 } from "@metamesh/modeling";
273
- import { transformContour } from "@metamesh/modeling/geometry";
272
+ import { path2, pathPattern, polygon, rectangle, transform2, union } from "@metamesh/modeling";
274
273
 
275
274
  const planarPlacement = transform2()
276
275
  .rotate(90, { pivot: [2, 1] })
@@ -286,24 +285,46 @@ export const placedBody = polygon({ outer: outline, holes: [] })
286
285
  .transform(planarPlacement)
287
286
  .extrude({ height: 8 });
288
287
 
289
- // Point-data helpers accept the same placement. Matrices remain available for interchange.
290
- export const sectionMatrix = planarPlacement.toMatrix();
291
- export const placedContour = transformContour(outline, planarPlacement);
288
+ // Paths accept the same placement. Matrices and tuples remain available for interchange.
289
+ export const sectionMatrix = planarPlacement.toData();
290
+ export const placedContour = path2(outline, { closed: true }).transform(planarPlacement);
292
291
  ```
293
292
 
294
293
 
295
294
 
296
- Pass the placement directly to `section.transform(planarPlacement)`. The same placement works with
297
- [`transformContour`](../reference/geometry/transformContour.md),
298
- [`transformRegionData`](../reference/geometry/transformRegionData.md), and
299
- [`transformPath2`](../reference/geometry/transformPath2.md).
295
+ Pass the placement directly to `section.transform(planarPlacement)` or `path.transform(planarPlacement)`.
296
+ Fill the transformed closed path with `polygon(placedContour)` when you need material.
297
+ [`transformRegionData`](../reference/geometry/transformRegionData.md) serves serialized filled data.
300
298
 
301
- A negative scale factor reflects the placement. Paths retain their supplied point order;
302
- contours restore their original winding, and regions restore outer and hole winding. Choose the
303
- helper that matches the data's role. `andThen(next)` composes another placement in execution order;
304
- reuse the placement instead of building a chain inside each point iteration. `toMatrix()` is
299
+ A negative scale factor reflects the placement. Paths retain traversal order, including closed
300
+ paths; filled Sections and serialized regions restore outer and hole winding. `andThen(next)`
301
+ composes another placement in execution order;
302
+ reuse the placement instead of building a chain inside each point iteration. `toData()` is
305
303
  available for matrix interchange.
306
304
 
305
+ Section path patterns consume `Path2` values directly. Tangent orientation aligns the Section's
306
+ local +X direction with the path while preserving its XY plane:
307
+
308
+
309
+
310
+ ```ts
311
+ const guide = path2([
312
+ [0, 0],
313
+ [12, 0],
314
+ [12, 12],
315
+ ]);
316
+ const tabs = pathPattern(rectangle({ size: [4, 2] }), guide, {
317
+ count: 5,
318
+ orientation: "tangent",
319
+ });
320
+ export const patternedTabs = union(tabs).extrude({ height: 3 });
321
+ ```
322
+
323
+
324
+
325
+ Linear Section patterns use XY directions. Radial Section patterns rotate about an optional XY
326
+ `pivot` using the implicit +Z axis; spatial Solid patterns retain their explicit rotation axis.
327
+
307
328
  ## Rotation-minimizing path sweep
308
329
 
309
330
 
@@ -339,13 +360,16 @@ The asymmetric section makes its transported orientation visible as the path tur
339
360
 
340
361
 
341
362
 
342
- `section.sweep(path, options)` transports the filled shape along the path. Choose the starting profile-X direction with
343
- `orientation: { kind: "transport", initialNormal: [0, 1, 0] }`. Fixed normals, directed normal guides
344
- and discrete Frenet frames are explicit alternative policies; singular selected policies reject.
345
- `twistDegrees` adds total rotation, following physical path length by default; `twistBy: "stations"`
346
- uses the authored station schedule. `scale` accepts a positive uniform size, XY pair or one XY pair
347
- per normalized station. `closed: true` joins an implicitly closed path without repeated endpoints;
348
- orientation, scales and `seamProfileOffset` must describe a compatible closing seam.
363
+ `section.sweep(path, options)` transports a filled shape along a path:
364
+
365
+ - `orientation: { kind: "transport", initialNormal: [0, 1, 0] }` chooses the starting profile-X
366
+ direction. Fixed normals, directed normal guides, and discrete Frenet frames are alternatives;
367
+ singular selected policies reject.
368
+ - `twist` adds total rotation by physical path length. Set `twistBy: "stations"` to use the authored
369
+ station schedule instead.
370
+ - `scale` accepts a positive uniform size, an XY pair, or one XY pair per normalized station.
371
+ - `closed: true` joins an implicitly closed path without repeated endpoints. Orientation, scales,
372
+ and `seamProfileOffset` must describe a compatible closing seam.
349
373
 
350
374
  Start with the open path above, inspect the first cap and the turns, then replace the rectangle
351
375
  with a [`circle`](../reference/model/circle.md) for a round rod. A sweep follows the supplied path
@@ -381,7 +405,7 @@ and placement. `pin.attach("bottom", anchor(base, "top"))` mates opposed directi
381
405
  patterns carry those frames with the shape, with outward normals preserved under nonuniform scale
382
406
  and reflection. The axis names are `left/right` (−X/+X), `back/front` (−Y/+Y) and `bottom/top` (−Z/+Z).
383
407
 
384
- Use `shape.withAnchors({ mount: createAnchor3(position, direction, up) })` to define a custom datum
408
+ Use `shape.withAnchors({ mount: anchor3(position, direction, up) })` to define a custom datum
385
409
  on a new handle. Existing names remain unless replaced; definitions are copied and immutable.
386
410
  Boolean and other constructed shapes need explicit definitions because their surfaces may change.
387
411
  Anchor names use lowercase kebab-case, with at most 64 characters and 128 definitions per shape.
@@ -392,9 +416,9 @@ move them. Tube and torus axial datums may lie over an opening; a cone has no ca
392
416
  Regular polygons and stars expose only `center`. Custom `Anchor3` frames, including pure
393
417
  `boxAnchor3` and `cylinderAnchor3` helpers, work wherever a source or target frame is required.
394
418
 
395
- Primitive `placement` uses the same source/target anchor, `alignment`, `gap` and `spinDegrees`
396
- vocabulary as `attach`, including a named `source`. It applies after local shape construction. Filled Section placement must
397
- preserve the XY plane.
419
+ Primitive `attachment` uses the same source/target anchor, `alignment`, `gap`, and `spin`
420
+ options as `attach`, including a named `source`. It applies after local construction; Section
421
+ attachment must preserve the XY plane.
398
422
 
399
423
  The `gap` here separates the two pieces along the target normal; it is a placement distance, not
400
424
  a radial fit clearance. Keep separate named parts for an assembly. For one fused part, remove the
@@ -494,7 +518,7 @@ The two rounded rectangles retain matching corner identities while their size an
494
518
  This [`loft`](../reference/model/loft.md) example places a rounded rectangle at two heights. Use
495
519
  `scale`, `rotate` and `translate` to pose the top profile in XY; `rotate` takes degrees. Each
496
520
  station uses `z` for an ordinary horizontal plane. To tilt a station, pass
497
- `frame: anchorFrame3(createAnchor3(position, direction, up))` instead; the direction chooses its
521
+ `frame: anchorFrame3(anchor3(position, direction, up))` instead; the direction chooses its
498
522
  normal and a nonparallel `up` vector chooses its roll.
499
523
 
500
524
  The primitive retains its corner identities, so `loft` pairs corresponding landmarks without
@@ -513,8 +537,8 @@ reindex also chooses a cyclic phase, while distance methods optimize ordered con
513
537
 
514
538
  ## Sample a heightfield
515
539
 
516
- Build a relief tile from absolute Z heights over a rectangular XY grid. Imported
517
- [`heightfield`](../reference/model/heightfield.md) returns a Solid for booleans and placement during
540
+ Build a relief tile from absolute Z heights over a rectangular XY grid.
541
+ [`heightfield`](../reference/model/heightfield.md) returns a Solid for Booleans and placement during
518
542
  generation. Pure [`heightfieldMesh`](../reference/geometry/heightfieldMesh.md) accepts the same options
519
543
  and returns an indexed mesh without an engine. Pass it directly as a mesh part, or wrap it in
520
544
  [`immutableMesh`](../reference/model/immutableMesh.md) when returning it from a cached computation.
@@ -648,7 +672,7 @@ export function fitLabel(layout: VectorTextLayout): FittedTextLayout {
648
672
 
649
673
  For a circular label, add a [`baseline`](../reference/text/VectorTextArcBaseline.md) with
650
674
  `kind: "arc"` and a positive `radius` in millimetres to the layout options. The baseline is centered
651
- at the XY origin; `centerAngleDegrees` chooses its alignment datum and `direction` chooses the
675
+ at the XY origin; `centerAngle` chooses its alignment datum and `direction` chooses the
652
676
  reading direction. Each shaped glyph group rotates without bending. Circular text requires one
653
677
  line and baseline vertical alignment; its default horizontal alignment is centered. Arbitrary
654
678
  path text and automatic wrapping are outside this API.
@@ -666,6 +690,8 @@ replacement. Studio does not support custom font uploads.
666
690
 
667
691
  ## Solid inspection
668
692
 
693
+ Use `inspectSolid()` during generation to check bounds, volume, and component count:
694
+
669
695
 
670
696
 
671
697
  ```ts
@@ -676,7 +702,7 @@ export default generate(({ part }) => {
676
702
  const result = box({ size: [40, 30, 5] });
677
703
  const measurements = inspectSolid(result);
678
704
 
679
- if (measurements.min[2] < -2.5 || measurements.parts !== 1) {
705
+ if (measurements.min[2] < -2.5 || measurements.componentCount !== 1) {
680
706
  throw new Error("Unexpected placement or disconnected result.");
681
707
  }
682
708
 
@@ -709,8 +735,8 @@ export const rowModel = generate<Record<never, never>>(({ part }) => {
709
735
 
710
736
  Inspection copies supported native facts. Manufacturing finalization checks finite, closed,
711
737
  oriented and reconstructable output before it becomes the preview or export snapshot. These
712
- checks do not certify manufacturability: product-specific minimum walls, overhangs, fits and
713
- parameter messages remain the Generator's job.
738
+ checks do not certify manufacturability. Keep minimum walls, overhangs, fits, and parameter
739
+ messages in your model's validation.
714
740
 
715
741
  After adapting a recipe, check its default, the largest and smallest supported dimensions, and
716
742
  every optional feature. Inspect the current result in Studio before exporting it. Continue with
@@ -0,0 +1,42 @@
1
+ # Write a standalone model
2
+
3
+ Write a TypeScript model for a plate with a hole, then check and run it with the CLI.
4
+
5
+ A standalone model uses `@metamesh/modeling` and default-exports a synchronous generation program.
6
+ The CLI or your application supplies the engine.
7
+
8
+ ## Minimal model entry
9
+
10
+ Save this complete example as `model.ts`. It makes a 30 × 20 × 6 mm plate with a through-hole:
11
+
12
+
13
+
14
+ ```ts
15
+ import { box, cylinder, generate } from "@metamesh/modeling";
16
+
17
+ export default generate<Record<never, never>>(({ part }) => {
18
+ const body = box({ size: [30, 20, 6] });
19
+ const bore = cylinder({ height: 8, radius: 3, sizing: "face" });
20
+ return part("plate", body.subtract([bore]));
21
+ });
22
+ ```
23
+
24
+
25
+
26
+ The cutter extends beyond both faces of the centered plate. `part("plate", ...)` gives the output
27
+ a stable identity. This model takes an empty parameter map.
28
+
29
+ ## Check and run
30
+
31
+ With [Modeling and the CLI installed](https://metamesh.studio/docs/develop/agent-authoring#install-and-discover-the-environment),
32
+ check the source and generate a captured result:
33
+
34
+ ```bash
35
+ pnpm exec metamesh check model.ts --kind model
36
+ pnpm exec metamesh run model.ts --kind model
37
+ ```
38
+
39
+ Continue with [inspection and rendering](https://metamesh.studio/docs/develop/agent-authoring#inspect-the-captured-result),
40
+ or [host the program in your application](hosting.md).
41
+ Use the [construction chooser](concepts.md#choose-a-modeling-path) when you
42
+ need to select another modeling approach.