@metamesh/modeling 0.12.0 → 0.14.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 (699) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +103 -72
  3. package/dist/api/engine.d.ts +123 -97
  4. package/dist/api/geometry.d.ts +4232 -3307
  5. package/dist/api/index.d.ts +2758 -2268
  6. package/dist/api/text.d.ts +119 -107
  7. package/dist/docs/guides/concepts.md +300 -0
  8. package/dist/docs/guides/fonts.md +59 -0
  9. package/dist/docs/guides/fundamentals.md +137 -0
  10. package/dist/docs/guides/generation.md +223 -0
  11. package/dist/docs/guides/hosting.md +91 -0
  12. package/dist/docs/guides/recipes.md +718 -0
  13. package/dist/docs/manifest.json +10703 -0
  14. package/dist/docs/reference/engine/Export3mfOptions.md +29 -0
  15. package/dist/docs/reference/engine/ExportMeshPart.md +65 -0
  16. package/dist/docs/reference/engine/GenerationOptions.md +62 -0
  17. package/dist/docs/reference/engine/GeometryResource.md +77 -0
  18. package/dist/docs/reference/engine/ModelDependencies.md +41 -0
  19. package/dist/docs/reference/engine/ModelEngine.md +103 -0
  20. package/dist/docs/reference/engine/ModelEngineOptions.md +33 -0
  21. package/dist/docs/reference/engine/ModelSession.md +96 -0
  22. package/dist/docs/reference/engine/ModelSnapshot.md +173 -0
  23. package/dist/docs/reference/engine/SessionOptions.md +123 -0
  24. package/dist/docs/reference/engine/SnapshotPart.md +130 -0
  25. package/dist/docs/reference/engine/categories/host-lifecycle.md +37 -0
  26. package/dist/docs/reference/engine/createModelEngine.md +56 -0
  27. package/dist/docs/reference/engine/defaultModelingLimits.md +7 -0
  28. package/dist/docs/reference/engine/modelingWasmUrl.md +7 -0
  29. package/dist/docs/reference/engine/validateModel.md +48 -0
  30. package/dist/docs/reference/engine.md +25 -0
  31. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +75 -0
  32. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +92 -0
  33. package/dist/docs/reference/geometry/Anchor3.md +53 -0
  34. package/dist/docs/reference/geometry/ArcCurve2.md +70 -0
  35. package/dist/docs/reference/geometry/ArcCurve3.md +94 -0
  36. package/dist/docs/reference/geometry/AttachTransformOptions.md +62 -0
  37. package/dist/docs/reference/geometry/AxisAngleRotation3.md +66 -0
  38. package/dist/docs/reference/geometry/Bounds2.md +39 -0
  39. package/dist/docs/reference/geometry/Bounds3.md +39 -0
  40. package/dist/docs/reference/geometry/BoundsFit2.md +52 -0
  41. package/dist/docs/reference/geometry/BoundsFit3.md +52 -0
  42. package/dist/docs/reference/geometry/BoundsFitOptions.md +23 -0
  43. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +23 -0
  44. package/dist/docs/reference/geometry/BoxAnchorFace.md +14 -0
  45. package/dist/docs/reference/geometry/BoxAnchorOptions.md +63 -0
  46. package/dist/docs/reference/geometry/BoxEdge.md +7 -0
  47. package/dist/docs/reference/geometry/BoxEdgeSelection.md +14 -0
  48. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +15 -0
  49. package/dist/docs/reference/geometry/BoxOptions.md +87 -0
  50. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +7 -0
  51. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +93 -0
  52. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +29 -0
  53. package/dist/docs/reference/geometry/CircleContourOptions.md +15 -0
  54. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +59 -0
  55. package/dist/docs/reference/geometry/CircularResolutionOptions.md +107 -0
  56. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +41 -0
  57. package/dist/docs/reference/geometry/ClearanceHoleFit.md +7 -0
  58. package/dist/docs/reference/geometry/ClosestPointOnPathOptions.md +34 -0
  59. package/dist/docs/reference/geometry/ClosestPointOnPathResult.md +65 -0
  60. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +53 -0
  61. package/dist/docs/reference/geometry/Contour.md +17 -0
  62. package/dist/docs/reference/geometry/ContourCurve.md +35 -0
  63. package/dist/docs/reference/geometry/ContourPoint.md +29 -0
  64. package/dist/docs/reference/geometry/ContourSegment.md +86 -0
  65. package/dist/docs/reference/geometry/CorrespondingComponent.md +46 -0
  66. package/dist/docs/reference/geometry/CorrespondingContour.md +46 -0
  67. package/dist/docs/reference/geometry/CorrespondingProfile.md +22 -0
  68. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +27 -0
  69. package/dist/docs/reference/geometry/CubicBezierCurve2.md +70 -0
  70. package/dist/docs/reference/geometry/CubicBezierCurve3.md +70 -0
  71. package/dist/docs/reference/geometry/Curve2.md +16 -0
  72. package/dist/docs/reference/geometry/Curve3.md +16 -0
  73. package/dist/docs/reference/geometry/CurveSamplingOptions.md +64 -0
  74. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +73 -0
  75. package/dist/docs/reference/geometry/CylinderAnchorFace.md +14 -0
  76. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +87 -0
  77. package/dist/docs/reference/geometry/CylinderOptions.md +53 -0
  78. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +209 -0
  79. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +7 -0
  80. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +71 -0
  81. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +82 -0
  82. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +34 -0
  83. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +41 -0
  84. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +47 -0
  85. package/dist/docs/reference/geometry/CylindricalGearSpec.md +82 -0
  86. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -0
  87. package/dist/docs/reference/geometry/EdgeTreatment.md +17 -0
  88. package/dist/docs/reference/geometry/EllipseContourOptions.md +15 -0
  89. package/dist/docs/reference/geometry/EndTreatments.md +34 -0
  90. package/dist/docs/reference/geometry/ExtrudeOptions.md +134 -0
  91. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +77 -0
  92. package/dist/docs/reference/geometry/FittedTextLayout.md +60 -0
  93. package/dist/docs/reference/geometry/Frame3.md +58 -0
  94. package/dist/docs/reference/geometry/GeometryError.md +97 -0
  95. package/dist/docs/reference/geometry/GeometryErrorCode.md +7 -0
  96. package/dist/docs/reference/geometry/GeometryErrorContext.md +29 -0
  97. package/dist/docs/reference/geometry/GeometryResolution.md +74 -0
  98. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +62 -0
  99. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +41 -0
  100. package/dist/docs/reference/geometry/GridPatternOptions.md +42 -0
  101. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +14 -0
  102. package/dist/docs/reference/geometry/HeightfieldOptions.md +67 -0
  103. package/dist/docs/reference/geometry/HeightfieldPreflight.md +53 -0
  104. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +141 -0
  105. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +265 -0
  106. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +53 -0
  107. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +18 -0
  108. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +242 -0
  109. package/dist/docs/reference/geometry/LineCurve2.md +46 -0
  110. package/dist/docs/reference/geometry/LineCurve3.md +46 -0
  111. package/dist/docs/reference/geometry/LinearPatternOptions.md +30 -0
  112. package/dist/docs/reference/geometry/LoftCorrespondence.md +19 -0
  113. package/dist/docs/reference/geometry/LoftMeshStation.md +27 -0
  114. package/dist/docs/reference/geometry/LoftOptions.md +84 -0
  115. package/dist/docs/reference/geometry/LoftPlacement.md +66 -0
  116. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +18 -0
  117. package/dist/docs/reference/geometry/MatchProfilesOptions.md +35 -0
  118. package/dist/docs/reference/geometry/MetricFastenerSize.md +7 -0
  119. package/dist/docs/reference/geometry/MetricFastenerStandard.md +72 -0
  120. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +29 -0
  121. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +41 -0
  122. package/dist/docs/reference/geometry/ModelingLimits.md +126 -0
  123. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +17 -0
  124. package/dist/docs/reference/geometry/Path2.md +14 -0
  125. package/dist/docs/reference/geometry/Path3.md +14 -0
  126. package/dist/docs/reference/geometry/PathFrame.md +46 -0
  127. package/dist/docs/reference/geometry/PathNormalGuide.md +38 -0
  128. package/dist/docs/reference/geometry/PathPatternOptions.md +46 -0
  129. package/dist/docs/reference/geometry/PathPlacement.md +34 -0
  130. package/dist/docs/reference/geometry/Pivot2Options.md +26 -0
  131. package/dist/docs/reference/geometry/Pivot3Options.md +26 -0
  132. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +7 -0
  133. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +156 -0
  134. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +120 -0
  135. package/dist/docs/reference/geometry/PlanarPatchQuality.md +190 -0
  136. package/dist/docs/reference/geometry/PolygonData.md +38 -0
  137. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +92 -0
  138. package/dist/docs/reference/geometry/PrimitivePlacement.md +31 -0
  139. package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +83 -0
  140. package/dist/docs/reference/geometry/PrintableThreadFit.md +7 -0
  141. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +45 -0
  142. package/dist/docs/reference/geometry/Profile.md +22 -0
  143. package/dist/docs/reference/geometry/ProfileComponent2.md +46 -0
  144. package/dist/docs/reference/geometry/ProfileContour2.md +34 -0
  145. package/dist/docs/reference/geometry/ProfileSpan2.md +47 -0
  146. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +36 -0
  147. package/dist/docs/reference/geometry/RackPitchDimensions.md +113 -0
  148. package/dist/docs/reference/geometry/RackPitchSpec.md +77 -0
  149. package/dist/docs/reference/geometry/RadialPatternOptions.md +62 -0
  150. package/dist/docs/reference/geometry/RadialSizing.md +7 -0
  151. package/dist/docs/reference/geometry/RadialSizingOptions.md +40 -0
  152. package/dist/docs/reference/geometry/RectangleContourOptions.md +66 -0
  153. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +34 -0
  154. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +14 -0
  155. package/dist/docs/reference/geometry/RectangleProfileOptions.md +94 -0
  156. package/dist/docs/reference/geometry/RegionData.md +14 -0
  157. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +84 -0
  158. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +65 -0
  159. package/dist/docs/reference/geometry/RevolveOptions.md +82 -0
  160. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +91 -0
  161. package/dist/docs/reference/geometry/RowLayoutOptions.md +23 -0
  162. package/dist/docs/reference/geometry/SampleContourOptions.md +71 -0
  163. package/dist/docs/reference/geometry/SampleHelixOptions.md +95 -0
  164. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +71 -0
  165. package/dist/docs/reference/geometry/SampledCurve2.md +34 -0
  166. package/dist/docs/reference/geometry/SampledCurve3.md +34 -0
  167. package/dist/docs/reference/geometry/SampledThreadHelices.md +58 -0
  168. package/dist/docs/reference/geometry/SideProfileCurve.md +35 -0
  169. package/dist/docs/reference/geometry/SideProfilePoint.md +29 -0
  170. package/dist/docs/reference/geometry/SideProfileSegment.md +86 -0
  171. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +71 -0
  172. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +34 -0
  173. package/dist/docs/reference/geometry/SphereOptions.md +15 -0
  174. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +75 -0
  175. package/dist/docs/reference/geometry/StrokePathCap.md +7 -0
  176. package/dist/docs/reference/geometry/StrokePathJoin.md +7 -0
  177. package/dist/docs/reference/geometry/StrokePathRegionOptions.md +85 -0
  178. package/dist/docs/reference/geometry/SvgImportOptions.md +60 -0
  179. package/dist/docs/reference/geometry/SvgRegionPreflight.md +61 -0
  180. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +118 -0
  181. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +65 -0
  182. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +53 -0
  183. package/dist/docs/reference/geometry/SweepOptions.md +109 -0
  184. package/dist/docs/reference/geometry/SweepOrientation.md +109 -0
  185. package/dist/docs/reference/geometry/ThreadBevelOptions.md +53 -0
  186. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +100 -0
  187. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +73 -0
  188. package/dist/docs/reference/geometry/ThreadEndStyle.md +7 -0
  189. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +113 -0
  190. package/dist/docs/reference/geometry/ThreadHandedness.md +7 -0
  191. package/dist/docs/reference/geometry/ThreadHelixOptions.md +120 -0
  192. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +7 -0
  193. package/dist/docs/reference/geometry/ThreadLeadInShape.md +7 -0
  194. package/dist/docs/reference/geometry/ThreadProfile.md +82 -0
  195. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +49 -0
  196. package/dist/docs/reference/geometry/ThreadProfileSpec.md +19 -0
  197. package/dist/docs/reference/geometry/ThreadRole.md +7 -0
  198. package/dist/docs/reference/geometry/ThreadedNutBevel.md +7 -0
  199. package/dist/docs/reference/geometry/ThreadedNutOptions.md +269 -0
  200. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +94 -0
  201. package/dist/docs/reference/geometry/ThreadedNutShape.md +7 -0
  202. package/dist/docs/reference/geometry/ThreadedRodOptions.md +242 -0
  203. package/dist/docs/reference/geometry/TorusOptions.md +105 -0
  204. package/dist/docs/reference/geometry/Transform2-type.md +255 -0
  205. package/dist/docs/reference/geometry/Transform2Input.md +19 -0
  206. package/dist/docs/reference/geometry/Transform2Matrix.md +14 -0
  207. package/dist/docs/reference/geometry/Transform3-type.md +295 -0
  208. package/dist/docs/reference/geometry/Transform3Input.md +19 -0
  209. package/dist/docs/reference/geometry/Transform3Matrix.md +17 -0
  210. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +91 -0
  211. package/dist/docs/reference/geometry/TriangleMesh.md +34 -0
  212. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +119 -0
  213. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +75 -0
  214. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +75 -0
  215. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +39 -0
  216. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +190 -0
  217. package/dist/docs/reference/geometry/TriangleMeshSignature.md +107 -0
  218. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +41 -0
  219. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +29 -0
  220. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +51 -0
  221. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +91 -0
  222. package/dist/docs/reference/geometry/TubeOptions.md +138 -0
  223. package/dist/docs/reference/geometry/Vector2-type.md +269 -0
  224. package/dist/docs/reference/geometry/Vector2Input.md +19 -0
  225. package/dist/docs/reference/geometry/Vector2Tuple.md +14 -0
  226. package/dist/docs/reference/geometry/Vector3-type.md +281 -0
  227. package/dist/docs/reference/geometry/Vector3Input.md +19 -0
  228. package/dist/docs/reference/geometry/Vector3Tuple.md +14 -0
  229. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +53 -0
  230. package/dist/docs/reference/geometry/VectorTextLayout.md +39 -0
  231. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +111 -0
  232. package/dist/docs/reference/geometry/VectorTextMetrics.md +94 -0
  233. package/dist/docs/reference/geometry/VectorTextOptions.md +50 -0
  234. package/dist/docs/reference/geometry/add2.md +36 -0
  235. package/dist/docs/reference/geometry/add3.md +42 -0
  236. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +57 -0
  237. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +52 -0
  238. package/dist/docs/reference/geometry/anchorFrame3.md +40 -0
  239. package/dist/docs/reference/geometry/applyTransformDirection3.md +45 -0
  240. package/dist/docs/reference/geometry/applyTransformPoint3.md +43 -0
  241. package/dist/docs/reference/geometry/attachTransform.md +77 -0
  242. package/dist/docs/reference/geometry/boundsCenter.md +62 -0
  243. package/dist/docs/reference/geometry/boundsFromSize.md +83 -0
  244. package/dist/docs/reference/geometry/boundsSize.md +62 -0
  245. package/dist/docs/reference/geometry/boxAnchor3.md +52 -0
  246. package/dist/docs/reference/geometry/buildHelicalThreadRidgeMesh.md +68 -0
  247. package/dist/docs/reference/geometry/buildHelicalThreadSolidMesh.md +102 -0
  248. package/dist/docs/reference/geometry/categories/bounds-layout.md +35 -0
  249. package/dist/docs/reference/geometry/categories/curves-paths.md +66 -0
  250. package/dist/docs/reference/geometry/categories/mechanical.md +101 -0
  251. package/dist/docs/reference/geometry/categories/meshes.md +73 -0
  252. package/dist/docs/reference/geometry/categories/pattern-placement.md +34 -0
  253. package/dist/docs/reference/geometry/categories/primitive-options.md +36 -0
  254. package/dist/docs/reference/geometry/categories/profiles-regions.md +74 -0
  255. package/dist/docs/reference/geometry/categories/resolution-errors.md +47 -0
  256. package/dist/docs/reference/geometry/categories/transforms-math.md +92 -0
  257. package/dist/docs/reference/geometry/categories/vector-import.md +40 -0
  258. package/dist/docs/reference/geometry/circleContour.md +33 -0
  259. package/dist/docs/reference/geometry/closeToAxis.md +34 -0
  260. package/dist/docs/reference/geometry/closestPointOnPath.md +110 -0
  261. package/dist/docs/reference/geometry/compensateThreadDiameters.md +51 -0
  262. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +42 -0
  263. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +56 -0
  264. package/dist/docs/reference/geometry/composeTransform3.md +44 -0
  265. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +45 -0
  266. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +47 -0
  267. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +31 -0
  268. package/dist/docs/reference/geometry/containsBounds.md +72 -0
  269. package/dist/docs/reference/geometry/contourContainsPoint.md +33 -0
  270. package/dist/docs/reference/geometry/createAnchor3.md +67 -0
  271. package/dist/docs/reference/geometry/createThreadProfile.md +37 -0
  272. package/dist/docs/reference/geometry/createTriangleMeshSignature.md +60 -0
  273. package/dist/docs/reference/geometry/cross2.md +36 -0
  274. package/dist/docs/reference/geometry/cross3.md +42 -0
  275. package/dist/docs/reference/geometry/cumulativePathLengths.md +33 -0
  276. package/dist/docs/reference/geometry/cylinderAnchor3.md +60 -0
  277. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +14 -0
  278. package/dist/docs/reference/geometry/distance2.md +36 -0
  279. package/dist/docs/reference/geometry/distance3.md +36 -0
  280. package/dist/docs/reference/geometry/distributeAlongPath.md +51 -0
  281. package/dist/docs/reference/geometry/dot2.md +36 -0
  282. package/dist/docs/reference/geometry/dot3.md +42 -0
  283. package/dist/docs/reference/geometry/ellipseContour.md +33 -0
  284. package/dist/docs/reference/geometry/eulerTransform3.md +42 -0
  285. package/dist/docs/reference/geometry/extrudeMesh.md +73 -0
  286. package/dist/docs/reference/geometry/fitBounds.md +95 -0
  287. package/dist/docs/reference/geometry/fitTextLayout.md +57 -0
  288. package/dist/docs/reference/geometry/frameTransform3.md +48 -0
  289. package/dist/docs/reference/geometry/getMetricClearanceHole.md +33 -0
  290. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +27 -0
  291. package/dist/docs/reference/geometry/gridPatternTransforms.md +31 -0
  292. package/dist/docs/reference/geometry/heightfieldMesh.md +43 -0
  293. package/dist/docs/reference/geometry/inverseTransform3.md +34 -0
  294. package/dist/docs/reference/geometry/isGeometryError.md +26 -0
  295. package/dist/docs/reference/geometry/joinTriangleMeshes.md +36 -0
  296. package/dist/docs/reference/geometry/layoutRow.md +43 -0
  297. package/dist/docs/reference/geometry/length2.md +30 -0
  298. package/dist/docs/reference/geometry/length3.md +30 -0
  299. package/dist/docs/reference/geometry/lerp2.md +42 -0
  300. package/dist/docs/reference/geometry/lerp3.md +42 -0
  301. package/dist/docs/reference/geometry/linearPatternTransforms.md +31 -0
  302. package/dist/docs/reference/geometry/loftMesh.md +72 -0
  303. package/dist/docs/reference/geometry/matchProfiles.md +51 -0
  304. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +48 -0
  305. package/dist/docs/reference/geometry/measureTriangleMesh.md +55 -0
  306. package/dist/docs/reference/geometry/meshBounds.md +35 -0
  307. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +29 -0
  308. package/dist/docs/reference/geometry/normalize2.md +36 -0
  309. package/dist/docs/reference/geometry/normalize3.md +36 -0
  310. package/dist/docs/reference/geometry/normalizeContour.md +45 -0
  311. package/dist/docs/reference/geometry/normalizePolygon.md +37 -0
  312. package/dist/docs/reference/geometry/normalizeRegion.md +33 -0
  313. package/dist/docs/reference/geometry/optimizePlanarPatches.md +91 -0
  314. package/dist/docs/reference/geometry/pathLength.md +33 -0
  315. package/dist/docs/reference/geometry/pathPatternTransforms.md +57 -0
  316. package/dist/docs/reference/geometry/preflightHeightfield.md +34 -0
  317. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +96 -0
  318. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +85 -0
  319. package/dist/docs/reference/geometry/preflightSvgRegion.md +56 -0
  320. package/dist/docs/reference/geometry/preflightThreadedNut.md +96 -0
  321. package/dist/docs/reference/geometry/preflightThreadedRod.md +85 -0
  322. package/dist/docs/reference/geometry/projectOntoPlane3.md +36 -0
  323. package/dist/docs/reference/geometry/radialPatternTransforms.md +47 -0
  324. package/dist/docs/reference/geometry/rectangleContour.md +49 -0
  325. package/dist/docs/reference/geometry/rectangleProfile.md +53 -0
  326. package/dist/docs/reference/geometry/regionArea.md +34 -0
  327. package/dist/docs/reference/geometry/regionBounds.md +27 -0
  328. package/dist/docs/reference/geometry/regularPolygonContour.md +53 -0
  329. package/dist/docs/reference/geometry/resamplePolyline2.md +64 -0
  330. package/dist/docs/reference/geometry/resamplePolyline3.md +67 -0
  331. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +83 -0
  332. package/dist/docs/reference/geometry/resolveArcSegments.md +67 -0
  333. package/dist/docs/reference/geometry/resolveCircularSegments.md +62 -0
  334. package/dist/docs/reference/geometry/resolveCylindricalGear.md +31 -0
  335. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +31 -0
  336. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +74 -0
  337. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +26 -0
  338. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +59 -0
  339. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +27 -0
  340. package/dist/docs/reference/geometry/resolveRackPitch.md +27 -0
  341. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +59 -0
  342. package/dist/docs/reference/geometry/reverseTriangleMesh.md +30 -0
  343. package/dist/docs/reference/geometry/revolveMesh.md +76 -0
  344. package/dist/docs/reference/geometry/rotate2.md +36 -0
  345. package/dist/docs/reference/geometry/rotationTransform3.md +53 -0
  346. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +50 -0
  347. package/dist/docs/reference/geometry/sampleContour.md +77 -0
  348. package/dist/docs/reference/geometry/sampleCurve2.md +61 -0
  349. package/dist/docs/reference/geometry/sampleCurve3.md +61 -0
  350. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +58 -0
  351. package/dist/docs/reference/geometry/sampleHelix.md +41 -0
  352. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +59 -0
  353. package/dist/docs/reference/geometry/sampleRackToothPath.md +39 -0
  354. package/dist/docs/reference/geometry/sampleSideProfile.md +73 -0
  355. package/dist/docs/reference/geometry/sampleTextContours.md +53 -0
  356. package/dist/docs/reference/geometry/sampleThreadHelices.md +63 -0
  357. package/dist/docs/reference/geometry/scale2.md +36 -0
  358. package/dist/docs/reference/geometry/scale3.md +42 -0
  359. package/dist/docs/reference/geometry/scaleTransform3.md +38 -0
  360. package/dist/docs/reference/geometry/signedContourArea.md +26 -0
  361. package/dist/docs/reference/geometry/starContour.md +51 -0
  362. package/dist/docs/reference/geometry/strokePathRegion.md +63 -0
  363. package/dist/docs/reference/geometry/subtract2.md +36 -0
  364. package/dist/docs/reference/geometry/subtract3.md +42 -0
  365. package/dist/docs/reference/geometry/sweepMesh.md +82 -0
  366. package/dist/docs/reference/geometry/transform2.md +38 -0
  367. package/dist/docs/reference/geometry/transform3.md +38 -0
  368. package/dist/docs/reference/geometry/transformContour.md +42 -0
  369. package/dist/docs/reference/geometry/transformDeterminant3.md +36 -0
  370. package/dist/docs/reference/geometry/transformPath2.md +40 -0
  371. package/dist/docs/reference/geometry/transformPath3.md +33 -0
  372. package/dist/docs/reference/geometry/transformRegionData.md +40 -0
  373. package/dist/docs/reference/geometry/transformTriangleMesh.md +42 -0
  374. package/dist/docs/reference/geometry/translationTransform3.md +35 -0
  375. package/dist/docs/reference/geometry/triangulateContour.md +26 -0
  376. package/dist/docs/reference/geometry/validateSolidMesh.md +52 -0
  377. package/dist/docs/reference/geometry/validateTransform3.md +47 -0
  378. package/dist/docs/reference/geometry/validateTriangleMesh.md +59 -0
  379. package/dist/docs/reference/geometry/vector2.md +31 -0
  380. package/dist/docs/reference/geometry/vector3.md +38 -0
  381. package/dist/docs/reference/geometry.md +30 -0
  382. package/dist/docs/reference/model/Anchor3.md +54 -0
  383. package/dist/docs/reference/model/AttachOptions.md +63 -0
  384. package/dist/docs/reference/model/Bounds2.md +39 -0
  385. package/dist/docs/reference/model/Bounds3.md +39 -0
  386. package/dist/docs/reference/model/BoxEdge.md +15 -0
  387. package/dist/docs/reference/model/BoxEdgeSelection.md +19 -0
  388. package/dist/docs/reference/model/BoxEdgeTreatments.md +20 -0
  389. package/dist/docs/reference/model/BoxOptions.md +92 -0
  390. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +35 -0
  391. package/dist/docs/reference/model/CircleContourOptions.md +21 -0
  392. package/dist/docs/reference/model/CircleOptions.md +21 -0
  393. package/dist/docs/reference/model/CircularPrimitiveOptions.md +64 -0
  394. package/dist/docs/reference/model/Computed.md +35 -0
  395. package/dist/docs/reference/model/ComputedValue.md +20 -0
  396. package/dist/docs/reference/model/Contour.md +22 -0
  397. package/dist/docs/reference/model/CorrespondingComponent.md +46 -0
  398. package/dist/docs/reference/model/CorrespondingContour.md +46 -0
  399. package/dist/docs/reference/model/CorrespondingProfile.md +22 -0
  400. package/dist/docs/reference/model/CorrespondingProfileStation.md +27 -0
  401. package/dist/docs/reference/model/CylinderOptions.md +58 -0
  402. package/dist/docs/reference/model/DiagnosticOptions.md +23 -0
  403. package/dist/docs/reference/model/EdgeTreatment.md +22 -0
  404. package/dist/docs/reference/model/EllipseContourOptions.md +21 -0
  405. package/dist/docs/reference/model/EllipseOptions.md +21 -0
  406. package/dist/docs/reference/model/EndTreatments.md +39 -0
  407. package/dist/docs/reference/model/ExtrudeOptions.md +140 -0
  408. package/dist/docs/reference/model/FinalizedModel.md +121 -0
  409. package/dist/docs/reference/model/FinalizedPart.md +87 -0
  410. package/dist/docs/reference/model/Frame3.md +63 -0
  411. package/dist/docs/reference/model/GenerateCallback.md +37 -0
  412. package/dist/docs/reference/model/GenerateContext.md +277 -0
  413. package/dist/docs/reference/model/GeneratedPart.md +93 -0
  414. package/dist/docs/reference/model/GenerationDiagnostic.md +41 -0
  415. package/dist/docs/reference/model/GenerationError.md +54 -0
  416. package/dist/docs/reference/model/GeometryResolution.md +70 -0
  417. package/dist/docs/reference/model/GeometrySamplingLimits.md +62 -0
  418. package/dist/docs/reference/model/GeometryToleranceOptions.md +46 -0
  419. package/dist/docs/reference/model/GridPatternOptions.md +43 -0
  420. package/dist/docs/reference/model/HeightfieldOptions.md +67 -0
  421. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +140 -0
  422. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +58 -0
  423. package/dist/docs/reference/model/HullOptions.md +72 -0
  424. package/dist/docs/reference/model/ImmutableBuffer-type.md +80 -0
  425. package/dist/docs/reference/model/ImmutableTriangleMesh.md +34 -0
  426. package/dist/docs/reference/model/ImplicitOptions.md +83 -0
  427. package/dist/docs/reference/model/InternalThreadCutterOptions.md +245 -0
  428. package/dist/docs/reference/model/LinearPatternOptions.md +31 -0
  429. package/dist/docs/reference/model/LoftCorrespondence.md +27 -0
  430. package/dist/docs/reference/model/LoftOptions.md +91 -0
  431. package/dist/docs/reference/model/LoftPlacement.md +73 -0
  432. package/dist/docs/reference/model/LoftStation.md +35 -0
  433. package/dist/docs/reference/model/MatchProfilesOptions.md +35 -0
  434. package/dist/docs/reference/model/ModelProgram.md +44 -0
  435. package/dist/docs/reference/model/ModelingLimits.md +126 -0
  436. package/dist/docs/reference/model/NumericArray.md +7 -0
  437. package/dist/docs/reference/model/PartGeometry.md +16 -0
  438. package/dist/docs/reference/model/PartOptions.md +65 -0
  439. package/dist/docs/reference/model/Path2.md +20 -0
  440. package/dist/docs/reference/model/PathNormalGuide.md +45 -0
  441. package/dist/docs/reference/model/PathPatternOptions.md +47 -0
  442. package/dist/docs/reference/model/PatternSource.md +26 -0
  443. package/dist/docs/reference/model/Pivot2Options.md +27 -0
  444. package/dist/docs/reference/model/Pivot3Options.md +27 -0
  445. package/dist/docs/reference/model/PlaneOptions.md +39 -0
  446. package/dist/docs/reference/model/PolygonData.md +43 -0
  447. package/dist/docs/reference/model/PolygonOptions.md +189 -0
  448. package/dist/docs/reference/model/PrimitivePlacement.md +40 -0
  449. package/dist/docs/reference/model/PrimitivePlacementOptions.md +88 -0
  450. package/dist/docs/reference/model/PrintableThreadFit.md +14 -0
  451. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +50 -0
  452. package/dist/docs/reference/model/Profile.md +22 -0
  453. package/dist/docs/reference/model/ProfileComponent2.md +46 -0
  454. package/dist/docs/reference/model/ProfileContour2.md +34 -0
  455. package/dist/docs/reference/model/ProfileSpan2.md +47 -0
  456. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +41 -0
  457. package/dist/docs/reference/model/RadialPatternOptions.md +63 -0
  458. package/dist/docs/reference/model/RadialSizing.md +15 -0
  459. package/dist/docs/reference/model/RadialSizingOptions.md +40 -0
  460. package/dist/docs/reference/model/RectangleContourOptions.md +72 -0
  461. package/dist/docs/reference/model/RectangleCornerTreatment.md +40 -0
  462. package/dist/docs/reference/model/RectangleCornerTreatments.md +20 -0
  463. package/dist/docs/reference/model/RectangleOptions.md +107 -0
  464. package/dist/docs/reference/model/RegionData.md +19 -0
  465. package/dist/docs/reference/model/RegularPolygonOptions.md +53 -0
  466. package/dist/docs/reference/model/RevolveOptions.md +89 -0
  467. package/dist/docs/reference/model/RoundedEdgeTreatment.md +96 -0
  468. package/dist/docs/reference/model/Section.md +490 -0
  469. package/dist/docs/reference/model/SectionHullOptions.md +72 -0
  470. package/dist/docs/reference/model/SectionInspection.md +98 -0
  471. package/dist/docs/reference/model/SectionOffsetJoin.md +16 -0
  472. package/dist/docs/reference/model/SectionOffsetOptions.md +65 -0
  473. package/dist/docs/reference/model/SmoothEdgeTreatment.md +76 -0
  474. package/dist/docs/reference/model/Solid.md +373 -0
  475. package/dist/docs/reference/model/SolidInspection.md +98 -0
  476. package/dist/docs/reference/model/SolidRayHit.md +58 -0
  477. package/dist/docs/reference/model/SphereOptions.md +20 -0
  478. package/dist/docs/reference/model/StarOptions.md +98 -0
  479. package/dist/docs/reference/model/StrokeOptions.md +91 -0
  480. package/dist/docs/reference/model/StrokePathCap.md +16 -0
  481. package/dist/docs/reference/model/StrokePathJoin.md +16 -0
  482. package/dist/docs/reference/model/SvgOrigin.md +16 -0
  483. package/dist/docs/reference/model/SvgPathSectionOptions.md +78 -0
  484. package/dist/docs/reference/model/SvgSectionOptions.md +66 -0
  485. package/dist/docs/reference/model/SweepOptions.md +116 -0
  486. package/dist/docs/reference/model/SweepOrientation.md +116 -0
  487. package/dist/docs/reference/model/TextSectionOptions.md +41 -0
  488. package/dist/docs/reference/model/ThreadEndStyle.md +14 -0
  489. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +117 -0
  490. package/dist/docs/reference/model/ThreadHandedness.md +14 -0
  491. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +14 -0
  492. package/dist/docs/reference/model/ThreadLeadInShape.md +14 -0
  493. package/dist/docs/reference/model/ThreadProfile.md +86 -0
  494. package/dist/docs/reference/model/ThreadRidgeOptions.md +18 -0
  495. package/dist/docs/reference/model/ThreadedNutBevel.md +14 -0
  496. package/dist/docs/reference/model/ThreadedNutOptions.md +273 -0
  497. package/dist/docs/reference/model/ThreadedNutPreflight.md +98 -0
  498. package/dist/docs/reference/model/ThreadedNutShape.md +14 -0
  499. package/dist/docs/reference/model/ThreadedRodOptions.md +245 -0
  500. package/dist/docs/reference/model/TorusOptions.md +110 -0
  501. package/dist/docs/reference/model/Transform2-type.md +256 -0
  502. package/dist/docs/reference/model/Transform2Input.md +20 -0
  503. package/dist/docs/reference/model/Transform2Matrix.md +15 -0
  504. package/dist/docs/reference/model/Transform3-type.md +296 -0
  505. package/dist/docs/reference/model/Transform3Input.md +20 -0
  506. package/dist/docs/reference/model/Transform3Matrix.md +18 -0
  507. package/dist/docs/reference/model/TriangleMesh.md +42 -0
  508. package/dist/docs/reference/model/TriangleMeshAnalysis.md +123 -0
  509. package/dist/docs/reference/model/TriangleMeshMeasurements.md +79 -0
  510. package/dist/docs/reference/model/TubeOptions.md +143 -0
  511. package/dist/docs/reference/model/Vector2-type.md +270 -0
  512. package/dist/docs/reference/model/Vector2Input.md +20 -0
  513. package/dist/docs/reference/model/Vector2Tuple.md +15 -0
  514. package/dist/docs/reference/model/Vector3-type.md +282 -0
  515. package/dist/docs/reference/model/Vector3Input.md +20 -0
  516. package/dist/docs/reference/model/Vector3Tuple.md +15 -0
  517. package/dist/docs/reference/model/VectorTextLayout.md +40 -0
  518. package/dist/docs/reference/model/VectorTextMetrics.md +100 -0
  519. package/dist/docs/reference/model/anchor.md +46 -0
  520. package/dist/docs/reference/model/box.md +62 -0
  521. package/dist/docs/reference/model/categories/boolean-operations.md +37 -0
  522. package/dist/docs/reference/model/categories/bounded-surfaces.md +26 -0
  523. package/dist/docs/reference/model/categories/contracts.md +16 -0
  524. package/dist/docs/reference/model/categories/core-values-errors.md +30 -0
  525. package/dist/docs/reference/model/categories/explicit-profiles.md +32 -0
  526. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +42 -0
  527. package/dist/docs/reference/model/categories/generation.md +44 -0
  528. package/dist/docs/reference/model/categories/inspection.md +23 -0
  529. package/dist/docs/reference/model/categories/mesh-inspection.md +29 -0
  530. package/dist/docs/reference/model/categories/primitives.md +61 -0
  531. package/dist/docs/reference/model/categories/resolution.md +18 -0
  532. package/dist/docs/reference/model/categories/sections.md +62 -0
  533. package/dist/docs/reference/model/categories/threads.md +50 -0
  534. package/dist/docs/reference/model/categories/transforms-placement.md +57 -0
  535. package/dist/docs/reference/model/circle.md +39 -0
  536. package/dist/docs/reference/model/components.md +71 -0
  537. package/dist/docs/reference/model/compose.md +31 -0
  538. package/dist/docs/reference/model/cylinder.md +52 -0
  539. package/dist/docs/reference/model/distance.md +45 -0
  540. package/dist/docs/reference/model/ellipse.md +39 -0
  541. package/dist/docs/reference/model/extrude.md +83 -0
  542. package/dist/docs/reference/model/generate.md +46 -0
  543. package/dist/docs/reference/model/gridPattern.md +80 -0
  544. package/dist/docs/reference/model/heightfield.md +40 -0
  545. package/dist/docs/reference/model/hull.md +74 -0
  546. package/dist/docs/reference/model/immutableBuffer.md +44 -0
  547. package/dist/docs/reference/model/immutableMesh.md +40 -0
  548. package/dist/docs/reference/model/implicit.md +47 -0
  549. package/dist/docs/reference/model/inspectSection.md +38 -0
  550. package/dist/docs/reference/model/inspectSolid.md +38 -0
  551. package/dist/docs/reference/model/internalThreadCutter.md +100 -0
  552. package/dist/docs/reference/model/intersect.md +70 -0
  553. package/dist/docs/reference/model/isEmpty.md +39 -0
  554. package/dist/docs/reference/model/linearPattern.md +80 -0
  555. package/dist/docs/reference/model/loft.md +137 -0
  556. package/dist/docs/reference/model/matchProfiles.md +42 -0
  557. package/dist/docs/reference/model/minkowskiSum.md +37 -0
  558. package/dist/docs/reference/model/pathPattern.md +118 -0
  559. package/dist/docs/reference/model/polygon.md +40 -0
  560. package/dist/docs/reference/model/preflightInternalThreadCutter.md +89 -0
  561. package/dist/docs/reference/model/preflightThreadedNut.md +100 -0
  562. package/dist/docs/reference/model/preflightThreadedRod.md +89 -0
  563. package/dist/docs/reference/model/radialPattern.md +113 -0
  564. package/dist/docs/reference/model/rayCast.md +40 -0
  565. package/dist/docs/reference/model/rectangle.md +59 -0
  566. package/dist/docs/reference/model/regularPolygon.md +39 -0
  567. package/dist/docs/reference/model/revolve.md +74 -0
  568. package/dist/docs/reference/model/solidFromMesh.md +42 -0
  569. package/dist/docs/reference/model/sphere.md +42 -0
  570. package/dist/docs/reference/model/split.md +54 -0
  571. package/dist/docs/reference/model/splitByPlane.md +66 -0
  572. package/dist/docs/reference/model/star.md +63 -0
  573. package/dist/docs/reference/model/stroke.md +74 -0
  574. package/dist/docs/reference/model/svgPathSection.md +65 -0
  575. package/dist/docs/reference/model/svgSection.md +64 -0
  576. package/dist/docs/reference/model/sweep.md +92 -0
  577. package/dist/docs/reference/model/textSection.md +57 -0
  578. package/dist/docs/reference/model/threadRidge.md +72 -0
  579. package/dist/docs/reference/model/threadedNut.md +110 -0
  580. package/dist/docs/reference/model/threadedRod.md +99 -0
  581. package/dist/docs/reference/model/toTriangleMesh.md +27 -0
  582. package/dist/docs/reference/model/torus.md +70 -0
  583. package/dist/docs/reference/model/transform2.md +39 -0
  584. package/dist/docs/reference/model/transform3.md +39 -0
  585. package/dist/docs/reference/model/tube.md +77 -0
  586. package/dist/docs/reference/model/union.md +72 -0
  587. package/dist/docs/reference/model/vector2.md +32 -0
  588. package/dist/docs/reference/model/vector3.md +39 -0
  589. package/dist/docs/reference/model.md +39 -0
  590. package/dist/docs/reference/text/Bounds2.md +34 -0
  591. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -0
  592. package/dist/docs/reference/text/Vector2Tuple.md +7 -0
  593. package/dist/docs/reference/text/VectorFont.md +186 -0
  594. package/dist/docs/reference/text/VectorFontOptions.md +17 -0
  595. package/dist/docs/reference/text/VectorTextArcBaseline.md +53 -0
  596. package/dist/docs/reference/text/VectorTextLayout.md +34 -0
  597. package/dist/docs/reference/text/VectorTextLayoutOptions.md +111 -0
  598. package/dist/docs/reference/text/VectorTextMetrics.md +94 -0
  599. package/dist/docs/reference/text/VectorTextOptions.md +50 -0
  600. package/dist/docs/reference/text/categories/font-preparation.md +38 -0
  601. package/dist/docs/reference/text/prepareVectorFont.md +46 -0
  602. package/dist/docs/reference/text.md +21 -0
  603. package/dist/engine/construction-operations.js +10 -3
  604. package/dist/engine/deferred-context.js +11 -172
  605. package/dist/engine/execution.js +1 -1
  606. package/dist/engine/export-3mf.js +2 -2
  607. package/dist/engine/finalization.js +3 -3
  608. package/dist/engine/loft-operations.js +4 -4
  609. package/dist/engine/native/adapter.js +1 -1
  610. package/dist/engine/native/regions.js +9 -9
  611. package/dist/engine/native/transforms.js +6 -1
  612. package/dist/engine/pattern-operations.js +24 -13
  613. package/dist/engine/placement.js +2 -2
  614. package/dist/engine/primitive-operations.js +10 -10
  615. package/dist/engine/primitive-profiles.js +1 -0
  616. package/dist/engine/profile-mesh.js +7 -7
  617. package/dist/engine/recipe-realization.js +29 -21
  618. package/dist/engine/section-operations.js +44 -17
  619. package/dist/engine/session-graph.js +6 -4
  620. package/dist/engine/session-native.js +1 -1
  621. package/dist/engine/session-snapshot.js +3 -2
  622. package/dist/engine/session.js +4 -5
  623. package/dist/engine/shape-anchors.js +3 -9
  624. package/dist/engine/transform-operations.js +42 -25
  625. package/dist/geometry/bounds.js +117 -0
  626. package/dist/geometry/cylinder.js +5 -1
  627. package/dist/geometry/edge-finishing.js +2 -2
  628. package/dist/geometry/heightfield.js +1 -1
  629. package/dist/geometry/index.js +20 -13
  630. package/dist/geometry/{loft-correspondence.js → loft/loft-correspondence.js} +3 -3
  631. package/dist/geometry/{loft-geometry.js → loft/loft-geometry.js} +8 -8
  632. package/dist/geometry/{loft-options.js → loft/loft-options.js} +2 -2
  633. package/dist/geometry/{loft-simple-mesh.js → loft/loft-simple-mesh.js} +6 -6
  634. package/dist/geometry/{loft-triangulation.js → loft/loft-triangulation.js} +6 -6
  635. package/dist/geometry/{loft.js → loft/loft.js} +8 -8
  636. package/dist/geometry/math/immutable-value.js +20 -0
  637. package/dist/geometry/math/vector-value.js +168 -0
  638. package/dist/geometry/math/vector2.js +80 -0
  639. package/dist/geometry/math/vector3.js +42 -8
  640. package/dist/geometry/mechanical/gear-motion.js +7 -4
  641. package/dist/geometry/mechanical/gears.js +2 -2
  642. package/dist/geometry/mechanical/thread-mesh.js +3 -3
  643. package/dist/geometry/mechanical/thread-profiles.js +2 -2
  644. package/dist/geometry/mechanical/thread-surface.js +14 -5
  645. package/dist/geometry/{mesh-centroid.js → mesh/mesh-centroid.js} +1 -1
  646. package/dist/geometry/{mesh-planar.js → mesh/mesh-planar.js} +1 -1
  647. package/dist/geometry/{mesh-quality.js → mesh/mesh-quality.js} +2 -2
  648. package/dist/geometry/{mesh-signature.js → mesh/mesh-signature.js} +2 -2
  649. package/dist/geometry/{mesh-solid-intersections.js → mesh/mesh-solid-intersections.js} +5 -1
  650. package/dist/geometry/{mesh-solid.js → mesh/mesh-solid.js} +2 -2
  651. package/dist/geometry/{mesh.js → mesh/mesh.js} +7 -8
  652. package/dist/geometry/paths/closest-point.js +74 -0
  653. package/dist/geometry/paths/frames.js +7 -8
  654. package/dist/geometry/patterns/options.js +1 -0
  655. package/dist/{engine/pattern-placements.js → geometry/patterns/placements.js} +22 -8
  656. package/dist/geometry/patterns.js +25 -0
  657. package/dist/geometry/primitive-resolution.js +4 -1
  658. package/dist/geometry/primitive-resolvers.js +9 -9
  659. package/dist/geometry/profiles/contour.js +3 -3
  660. package/dist/geometry/profiles/matched.js +3 -3
  661. package/dist/geometry/profiles/profiles.js +10 -10
  662. package/dist/geometry/profiles/rectangle.js +7 -7
  663. package/dist/geometry/profiles/shapes.js +9 -9
  664. package/dist/geometry/profiles/side-profile.js +37 -0
  665. package/dist/geometry/regions.js +15 -15
  666. package/dist/geometry/resolution.js +17 -5
  667. package/dist/geometry/revolve/revolve-mesh.js +5 -5
  668. package/dist/geometry/stroke-path.js +50 -46
  669. package/dist/geometry/svg/errors.js +0 -3
  670. package/dist/geometry/svg/fill.js +7 -7
  671. package/dist/geometry/svg/index.js +1 -1
  672. package/dist/geometry/svg/matrix.js +0 -114
  673. package/dist/geometry/svg/parser.js +1 -439
  674. package/dist/geometry/svg-import.js +3 -3
  675. package/dist/geometry/sweeps/stations.js +4 -4
  676. package/dist/geometry/sweeps/sweep-closed.js +4 -4
  677. package/dist/geometry/sweeps/sweep-mesh.js +1 -1
  678. package/dist/geometry/sweeps/sweep-open.js +6 -6
  679. package/dist/geometry/sweeps/validation.js +2 -2
  680. package/dist/geometry/text-fitting.js +85 -0
  681. package/dist/geometry/tolerance.js +2 -2
  682. package/dist/geometry/transform-chain.js +172 -0
  683. package/dist/geometry/transform-geometry.js +31 -27
  684. package/dist/geometry/transform-matrix.js +14 -0
  685. package/dist/geometry/transform2.js +60 -0
  686. package/dist/geometry/transform3.js +70 -26
  687. package/dist/index.js +3 -0
  688. package/dist/model/execution-binding.js +10 -5
  689. package/dist/model/generation.js +1 -1
  690. package/dist/model/geometry-recipes.js +15 -0
  691. package/dist/{engine → model}/immutable-generation-data.js +25 -3
  692. package/dist/model/operation-contracts.js +1 -0
  693. package/dist/model/operation-dispatch.js +13 -0
  694. package/dist/model/operations.js +40 -59
  695. package/dist/model/recipe-declaration.js +193 -0
  696. package/dist/model/shape-handles.js +15 -4
  697. package/package.json +10 -8
  698. package/dist/engine/geometry-recipes.js +0 -12
  699. /package/dist/geometry/{mesh-edge-table.js → mesh/mesh-edge-table.js} +0 -0
@@ -0,0 +1,137 @@
1
+ # Modeling fundamentals
2
+
3
+ Understand watertight solids, coordinates, transforms, Boolean operations, and geometry ownership in Studio code Projects.
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.
9
+
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.
13
+
14
+ ## Coordinates and units
15
+
16
+ MetaMesh uses a right-handed coordinate system with **+Z up**. Model dimensions are millimetres.
17
+ Place a part intentionally around the origin, then use transforms or anchors to relate it to other
18
+ parts.
19
+
20
+ Transform methods preserve the input and return immutable geometry recipes, so you can name
21
+ meaningful stages and reuse a source shape without tracking hidden state.
22
+
23
+ ## Build solids compositionally
24
+
25
+ Start with primitives, position them, and subtract a cutter that extends beyond both body faces:
26
+
27
+
28
+
29
+ ```ts
30
+ import { box, cylinder } from "@metamesh/modeling";
31
+ import { generate } from "@metamesh/project";
32
+
33
+ export default generate(({ part }) => {
34
+ const plate = box({ size: [80, 50, 4] });
35
+ // Primitives are centered by default, so both faces get 2 mm of overtravel.
36
+ // Overtravel is for robust subtraction; it does not enlarge the hole diameter.
37
+ const hole = cylinder({ height: 8, radius: 3 });
38
+ return [part("model", plate.subtract([hole]))];
39
+ });
40
+ ```
41
+
42
+ The cylinder clears both faces of the plate, leaving a through-hole without coincident cutter ends.
43
+
44
+
45
+
46
+ The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2…2 mm`; the cutter
47
+ occupies `Z = −4…4 mm`. That overtravel makes the subtraction deliberate while the hole radius
48
+ stays `3 mm`. Derive cutter placement from the same datum as the body when changing dimensions.
49
+
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.
53
+
54
+ The `union` and `intersect` functions and `shape.subtract(cutters)` also combine filled Sections
55
+ in XY. Choose one dimension for every operand in a call. Keep a Section native through its Boolean
56
+ and offset steps, then chain `.extrude({ height })` or `.revolve(options)` to make a Solid.
57
+ Transforms apply in written order about the origin: translating then rotating also rotates the
58
+ translated position. Place finished parts through `part` options when their geometry can be reused.
59
+
60
+ ## Choose the Boolean by the material you want
61
+
62
+ These three parts use the same overlapping block and cylindrical tool. Only the operation changes;
63
+ the final translations separate the results for comparison.
64
+
65
+
66
+
67
+ ```ts
68
+ import { box, cylinder, intersect, union } from "@metamesh/modeling";
69
+ import { generate } from "@metamesh/project";
70
+
71
+ export default generate(({ part }) => {
72
+ const block = box({ size: [24, 24, 8] });
73
+ const tool = cylinder({ diameter: 20, height: 12 }).translate([10, 0, 0]);
74
+ // Reuse the same overlapping operands to compare the three operations.
75
+ // Place finished parts separately so display spacing can reuse their geometry.
76
+ return [
77
+ part("union", { geometry: union([block, tool]), color: "#60a5fa" }),
78
+ part("difference", {
79
+ geometry: block.subtract([tool]),
80
+ position: [42, 0, 0],
81
+ color: "#f59e0b",
82
+ }),
83
+ part("intersection", {
84
+ geometry: intersect([block, tool]),
85
+ position: [84, 0, 0],
86
+ color: "#34d399",
87
+ }),
88
+ ];
89
+ });
90
+ ```
91
+
92
+ Left: all material from union. Center: block material outside the tool. Right: material shared by both operands.
93
+
94
+
95
+
96
+ | Operation | Material retained | Common use |
97
+ | -------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
98
+ | [`union`](../reference/model/union.md) | Inside any operand | Join an overlapping boss or rib to a body |
99
+ | [`shape.subtract`](../reference/model/Solid.md#subtract) | Inside the base, outside every cutter | Cut holes, pockets, and clearance envelopes |
100
+ | [`intersect`](../reference/model/intersect.md) | Inside every operand | Trim a feature to an envelope or isolate shared material |
101
+
102
+ Use intentional overlap for joined features and overtravel for through-cutters. A face or point
103
+ that only touches another feature is not a reliable connection for a manufacturing part. Inspect
104
+ the result when thin walls, tangencies, or disconnected components are possible.
105
+
106
+ ## Valid solid does not mean manufacturable part
107
+
108
+ The kernel can enforce solid topology, but it does not know your printer, material, load case,
109
+ tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
110
+ cross-field errors in the Project, then verify the exported file in its downstream tool.
111
+
112
+ Likewise, an empty or zero-volume result is invalid model output, but a non-empty result is not an
113
+ engineering certification.
114
+
115
+ ## Geometry ownership
116
+
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`.
120
+
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.
126
+
127
+
128
+
129
+ **Use the MetaMesh reference for authored code**
130
+
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).
133
+
134
+
135
+
136
+ - [Try geometry recipes](recipes.md)
137
+ - [Read the Project contract](generation.md)
@@ -0,0 +1,223 @@
1
+ # Code Project contract
2
+
3
+ Understand the supported source, computed values, parts, resource ownership, recovery, and visible-model export behavior.
4
+
5
+ An authored Project has one control definition and one TypeScript entry file. Studio supplies the
6
+ compiler, prepared services, modeling engine, persistence and preview.
7
+
8
+ ## Source boundary
9
+
10
+ Keep helpers in the single editable `model.ts` file. Import modeling operations from
11
+ `@metamesh/modeling`, pure utilities from `@metamesh/modeling/geometry`, and the typed
12
+ `generate` helper from `@metamesh/project`. These approved modules and declarations work offline.
13
+ Source cannot install packages, fetch modules or initialize another kernel.
14
+
15
+ ## Start with generate
16
+
17
+ Default-export one synchronous program:
18
+
19
+
20
+
21
+ ```ts
22
+ import { box } from "@metamesh/modeling";
23
+ import { generate } from "@metamesh/project";
24
+
25
+ export default generate(({ params: parameters, part }) => {
26
+ return part("model", box({ size: [parameters.width, parameters.depth, parameters.height] }));
27
+ });
28
+ ```
29
+
30
+
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.
35
+
36
+ The outer callback runs for each edit. Return a single `part(...)` or a readonly array of parts;
37
+ `computed` is optional.
38
+ Export only the default program; keep helpers local to `model.ts`. Definitions and presets remain
39
+ serializable metadata. There are no separate preparation/build exports.
40
+
41
+ ## Assertions and warnings
42
+
43
+ Use `assert(condition, message, { parameterId? })` for a constraint. The first false condition
44
+ stops that revision and identifies the control to fix. `warn(message, { parameterId? })` allows
45
+ generation to continue:
46
+
47
+
48
+
49
+ ```ts
50
+ assert(
51
+ !params.addHole || params.holeDiameter < Math.min(params.width, params.depth),
52
+ "Hole diameter must be smaller than the body width and depth.",
53
+ { parameterId: "holeDiameter" }
54
+ );
55
+ ```
56
+
57
+
58
+
59
+ Assertions follow normal code order. Put cheap checks before costly reads. An assertion that reads
60
+ geometry must evaluate that geometry first. Warnings belong in the outer callback; assertions can
61
+ also run inside computed values, whenever that computation evaluates.
62
+
63
+ ## Reuse unchanged work
64
+
65
+
66
+
67
+ **Caching is optional**
68
+
69
+ Start with ordinary generation code. If parameter edits become slow, add `computed` around
70
+ expensive work that can stay unchanged across edits. Cheap arithmetic and part placement usually
71
+ do not need caching.
72
+
73
+
74
+
75
+ `computed(id, callback)` creates a lazy reader of cached data or geometry. Calling it evaluates the
76
+ calculation when needed; passing it directly to `part` defers evaluation until the outer callback
77
+ succeeds. **Read `params`, derive values, and destructure inside the computed callback.** These
78
+ reads are tracked automatically, including reads made by synchronous helpers called there:
79
+
80
+
81
+
82
+ ```ts
83
+ const body = computed("body", () => {
84
+ const { width, height } = params;
85
+ return box({ size: [width, 10, height] });
86
+ });
87
+ ```
88
+
89
+
90
+
91
+ Call other computed readers inside the callback too: `computed("finished", () => base().subtract(...))`
92
+ tracks the base result automatically. In **New project → Cached panels**, changing **Gap** only
93
+ moves the second panel; changing **Notch width** reuses the hole pattern for the finishing cut.
94
+
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:
98
+
99
+
100
+
101
+ ```ts
102
+ const { height } = params;
103
+ const capturedBody = computed("captured-body", () => box({ size: [params.width, 10, height] }), [
104
+ height,
105
+ ]);
106
+ ```
107
+
108
+
109
+
110
+ Both examples rebuild when width or height changes. The array supplements automatic tracking;
111
+ `params.width` is still tracked inside the second callback, and even `[]` keeps automatic reads.
112
+
113
+ The same capture rule applies to an eagerly read result such as `const value = otherComputed()`.
114
+ Select and call readers inside the callback when possible. Studio warns about common hidden captures
115
+ while Code is open; its advisory checks cannot prove arbitrary JavaScript correct.
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.
121
+
122
+ IDs identify logical computations, so loops and conditions work without hook call-order rules.
123
+ IDs must be unique lowercase hyphen-separated alphanumeric names of at most 64 characters within
124
+ their namespace.
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.
130
+
131
+ For cached numeric data, call [`immutableBuffer`](../reference/model/immutableBuffer.md) and use
132
+ its `length`, `at(index)`, or `copy()` methods. Copy once before a dense sampling callback so its
133
+ inner loop reads an ordinary typed array. Capture a cached indexed mesh with
134
+ [`immutableMesh`](../reference/model/immutableMesh.md); its reader can pass directly to `part`.
135
+ Raw typed arrays in computed results or dependencies reject with guidance to use these helpers.
136
+
137
+ ## Text services
138
+
139
+ The host injects `services` into the callback after preparing exact selected font bytes.
140
+ Call `services.text.layout()` synchronously, check its metrics, then pass the layout to
141
+ `textSection(layout)`. Generation itself does no networking:
142
+
143
+
144
+
145
+ ```ts
146
+ import { textSection } from "@metamesh/modeling";
147
+ import { generate } from "@metamesh/project";
148
+
149
+ export default generate(({ params, services, part }) => {
150
+ // The host has loaded the exact selected font before generation.
151
+ const layout = services.text.layout("MetaMesh", {
152
+ fontSize: 8,
153
+ font: params.font,
154
+ letterSpacing: 0.15,
155
+ });
156
+ // textSection preserves counters, such as the enclosed hole in the letter a.
157
+ return [part("label", textSection(layout).extrude({ height: 1.2 }))];
158
+ });
159
+ ```
160
+
161
+
162
+
163
+ ## Parts and placement
164
+
165
+ Use `part("body", geometry)` for the simple form, or pass an object with `geometry`,
166
+ `position`, `rotation` and `color`. Geometry accepts a Solid or indexed manufacturing mesh.
167
+ Geometry and placement accept values or computed readers. Keep stable semantic part IDs:
168
+
169
+
170
+
171
+ ```ts
172
+ export default generate(({ params: parameters, part }) => {
173
+ const base = box({ size: [parameters.width, parameters.depth, parameters.height] });
174
+ const lid = box({ size: [parameters.width, parameters.depth, 2] }).translate([
175
+ 0,
176
+ parameters.depth + 4,
177
+ 0,
178
+ ]);
179
+ return [
180
+ part("base", { geometry: base, color: "#3b82f6" }),
181
+ part("lid", { geometry: lid, color: "#f59e0b" }),
182
+ ];
183
+ });
184
+ ```
185
+
186
+
187
+
188
+ Lengths are millimetres, rotation is degrees, coordinates are right-handed with **+Z up**.
189
+ Rotation applies about fixed X, then Y, then Z axes before translation. Part placement governs
190
+ preview, picking, measurements and all exports. Changing placement or color can reuse cached
191
+ geometry and renderer buffers. Studio's native part-color overrides update appearance directly.
192
+ Use modeling `translate`/`rotate` when moving a cutter or feature inside construction.
193
+ Try **New project → Orbit sculpture** for a small colored assembly with an adjustable ring tilt.
194
+
195
+ Part IDs are unique lowercase hyphenated names of at most 64 characters. Studio permits 512 parts,
196
+ one million aggregate vertices, two million triangles and 96 MiB of unique output backing storage.
197
+ The engine enforces finite, closed, oriented, reconstructable manufacturing geometry and current
198
+ instance limits, including cache hits. Empty output is invalid.
199
+
200
+ ## Ownership and recovery
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.
209
+
210
+ Source/control-definition changes invalidate the program session. Parameter edits reuse it.
211
+ Failed or stale requests retain the last valid preview; fatal failures replace the worker.
212
+ Unsupported older Project data remains available through raw backup for manual source conversion;
213
+ there is no old executor and no automatic destructive reset.
214
+
215
+ ## Export the visible snapshot
216
+
217
+ **Export** captures the visible revision and appearance for 3MF, STL or GLB. An invalid draft leaves
218
+ its last valid preview exportable. Exports never rerun the generator; later edits cannot alter a
219
+ captured export. Check workspace status when you need the latest edit, then inspect the downloaded
220
+ file in its downstream tool. [Exporting models](https://metamesh.studio/docs/use/export-3mf) explains format capabilities.
221
+
222
+ - [Design the controls](https://metamesh.studio/docs/develop/parameters-and-validation)
223
+ - [Browse the modeling API](../reference/model.md)
@@ -0,0 +1,91 @@
1
+ # Run Modeling in your application
2
+
3
+ Initialize the engine in Node or a browser Worker, build a model, and export its completed snapshot.
4
+
5
+ Install the public package in a Node application or browser Worker project:
6
+
7
+ ```bash
8
+ pnpm add @metamesh/modeling
9
+ ```
10
+
11
+ The package is in Preview: `0.x` minor releases may change its API, while patches remain compatible
12
+ within a minor line. Keep your dependency and examples on the same minor version.
13
+
14
+ ## Build and export a plate
15
+
16
+ Initialize an engine, define a program with `generate`, then run it through a session.
17
+ This complete function returns the 3MF bytes for a plate with a hole:
18
+
19
+
20
+
21
+ ```ts
22
+ import { box, cylinder, generate } from "@metamesh/modeling";
23
+ import { createModelEngine } from "@metamesh/modeling/engine";
24
+
25
+ export async function makePlate3mf(): Promise<ArrayBuffer> {
26
+ const engine = await createModelEngine();
27
+ const session = engine.createSession(
28
+ generate(({ part }) => {
29
+ const plate = box({ size: [30, 20, 6] });
30
+ // Extend the cutter beyond both faces to avoid coincident Boolean surfaces.
31
+ const bore = cylinder({ radius: 3, height: 8, sizing: "face" });
32
+ return [part("plate", { geometry: plate.subtract([bore]), color: "#67e8f9" })];
33
+ })
34
+ );
35
+ try {
36
+ const model = session.run({});
37
+ // Generation already disposed native handles. These finalized meshes remain usable.
38
+ try {
39
+ return await engine.export3mf(model.parts, { name: "Plate" });
40
+ } finally {
41
+ model.dispose();
42
+ }
43
+ } finally {
44
+ session.dispose();
45
+ }
46
+ }
47
+ ```
48
+
49
+
50
+
51
+ Call `makePlate3mf()` and save or download its returned `ArrayBuffer`. For a long-lived application,
52
+ move engine initialization out of the function and reuse that engine and its model sessions across edits.
53
+
54
+ ## Keep execution synchronous
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.
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.
66
+
67
+ ## Load WASM in a browser Worker
68
+
69
+ The package includes its matching JS/WASM kernel. Node and unbundled browser modules resolve the
70
+ installed WASM asset automatically. A browser bundler must retain or emit that relative asset;
71
+ [`modelingWasmUrl`](../reference/engine/modelingWasmUrl.md) can supply the emitted URL through
72
+ `createModelEngine({ locateFile })`.
73
+
74
+ Your application owns Worker creation and message handling. Separate Workers have independent
75
+ execution scopes. Transfer owned copies of completed buffers; transferring cache backing storage
76
+ would detach it. Native geometry never crosses Workers or runs.
77
+
78
+ ## Set resource limits
79
+
80
+ [`createModelEngine`](../reference/engine/createModelEngine.md) accepts trusted host limits.
81
+ Individual sessions may lower those ceilings. Requests that exceed a selected sampling or output
82
+ budget fail explicitly; the engine does not silently reduce modeling fidelity.
83
+
84
+ ## Export the completed result
85
+
86
+ `engine.export3mf(snapshot.parts, options)` exports the selected finalized buffers without
87
+ running the model again. Your host chooses the filename, saves or downloads the bytes, and owns
88
+ any persisted model revisions or appearance overrides.
89
+
90
+ Use the [Engine API reference](../reference/engine.md) for exact options and result types, and
91
+ [Modeling guides](https://metamesh.studio/docs/modeling) to choose geometry operations.