@metamesh/modeling 0.17.0 → 0.19.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 (832) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/README.md +147 -157
  3. package/dist/api/engine.d.ts +106 -83
  4. package/dist/api/export-3mf.d.ts +2 -0
  5. package/dist/api/export-glb.d.ts +2 -0
  6. package/dist/api/export-stl.d.ts +2 -0
  7. package/dist/api/export.d.ts +160 -0
  8. package/dist/api/geometry.d.ts +250 -461
  9. package/dist/api/index.d.ts +470 -445
  10. package/dist/api/mesh.d.ts +489 -0
  11. package/dist/api/text.d.ts +1 -1
  12. package/dist/docs/guides/concepts.md +32 -495
  13. package/dist/docs/guides/fonts.md +14 -13
  14. package/dist/docs/guides/fundamentals.md +30 -29
  15. package/dist/docs/guides/generation.md +84 -64
  16. package/dist/docs/guides/geometry-values.md +193 -0
  17. package/dist/docs/guides/hosting.md +147 -48
  18. package/dist/docs/guides/profiles-and-extrusion.md +252 -0
  19. package/dist/docs/guides/recipes.md +33 -769
  20. package/dist/docs/guides/resolution-and-inspection.md +133 -0
  21. package/dist/docs/guides/solid-joins.md +126 -0
  22. package/dist/docs/guides/standalone-model.md +8 -7
  23. package/dist/docs/guides/svg-and-text.md +215 -0
  24. package/dist/docs/guides/sweeps-and-lofts.md +179 -0
  25. package/dist/docs/guides/transforms-and-placement.md +313 -0
  26. package/dist/docs/manifest.json +3224 -4430
  27. package/dist/docs/reference/engine/GenerationOptions.md +12 -5
  28. package/dist/docs/reference/engine/GeometryResource.md +19 -13
  29. package/dist/docs/reference/engine/ModelDependencies.md +9 -3
  30. package/dist/docs/reference/engine/ModelEngine.md +33 -24
  31. package/dist/docs/reference/engine/ModelEngineOptions.md +13 -2
  32. package/dist/docs/reference/engine/ModelPart.md +114 -0
  33. package/dist/docs/reference/engine/ModelResult.md +181 -0
  34. package/dist/docs/reference/engine/ModelRunArguments.md +34 -0
  35. package/dist/docs/reference/engine/ModelRunOptions.md +110 -0
  36. package/dist/docs/reference/engine/ModelSession.md +22 -16
  37. package/dist/docs/reference/engine/SessionOptions.md +21 -10
  38. package/dist/docs/reference/engine/categories/host-lifecycle.md +20 -15
  39. package/dist/docs/reference/engine/checkModel.md +49 -0
  40. package/dist/docs/reference/engine/createModelEngine.md +11 -13
  41. package/dist/docs/reference/engine/defaultModelingLimits.md +15 -2
  42. package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
  43. package/dist/docs/reference/engine.md +8 -15
  44. package/dist/docs/reference/export/Export3mfOptions.md +24 -0
  45. package/dist/docs/reference/export/ExportDiagnostic.md +59 -0
  46. package/dist/docs/reference/export/ExportFormat.md +25 -0
  47. package/dist/docs/reference/export/ExportGeometry.md +39 -0
  48. package/dist/docs/reference/export/ExportGlbOptions.md +118 -0
  49. package/dist/docs/reference/export/ExportLimits.md +83 -0
  50. package/dist/docs/reference/export/ExportMaterial.md +47 -0
  51. package/dist/docs/reference/export/ExportOptions.md +94 -0
  52. package/dist/docs/reference/export/ExportPart.md +88 -0
  53. package/dist/docs/reference/export/ExportReport.md +82 -0
  54. package/dist/docs/reference/export/ExportSink.md +39 -0
  55. package/dist/docs/reference/export/ExportStlOptions.md +24 -0
  56. package/dist/docs/reference/export/ExportedFile.md +110 -0
  57. package/dist/docs/reference/export/categories/mesh-serialization.md +47 -0
  58. package/dist/docs/reference/export/defaultExportLimits.md +20 -0
  59. package/dist/docs/reference/export/export3mf.md +64 -0
  60. package/dist/docs/reference/export/exportGlb.md +68 -0
  61. package/dist/docs/reference/export/exportStl.md +64 -0
  62. package/dist/docs/reference/export/write3mf.md +71 -0
  63. package/dist/docs/reference/export/writeGlb.md +75 -0
  64. package/dist/docs/reference/export/writeStl.md +71 -0
  65. package/dist/docs/reference/export.md +21 -0
  66. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +16 -2
  67. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +7 -1
  68. package/dist/docs/reference/geometry/Anchor3-type.md +13 -3
  69. package/dist/docs/reference/geometry/ArcCurve2.md +8 -2
  70. package/dist/docs/reference/geometry/ArcCurve3.md +8 -2
  71. package/dist/docs/reference/geometry/AttachOptions.md +13 -3
  72. package/dist/docs/reference/geometry/AxisAngleRotation3.md +9 -3
  73. package/dist/docs/reference/geometry/Bevel.md +32 -0
  74. package/dist/docs/reference/geometry/BevelSize.md +28 -0
  75. package/dist/docs/reference/geometry/Bounds2-type.md +18 -4
  76. package/dist/docs/reference/geometry/Bounds2Data.md +22 -4
  77. package/dist/docs/reference/geometry/Bounds2Input.md +18 -4
  78. package/dist/docs/reference/geometry/Bounds2Options.md +61 -11
  79. package/dist/docs/reference/geometry/Bounds3-type.md +18 -4
  80. package/dist/docs/reference/geometry/Bounds3Data.md +18 -4
  81. package/dist/docs/reference/geometry/Bounds3Input.md +18 -4
  82. package/dist/docs/reference/geometry/Bounds3Options.md +61 -11
  83. package/dist/docs/reference/geometry/BoundsFit2.md +10 -4
  84. package/dist/docs/reference/geometry/BoundsFit3.md +10 -4
  85. package/dist/docs/reference/geometry/BoundsFitOptions.md +10 -4
  86. package/dist/docs/reference/geometry/BoxAnchorFace.md +9 -3
  87. package/dist/docs/reference/geometry/BoxAnchorOptions.md +12 -6
  88. package/dist/docs/reference/geometry/BoxEdge.md +11 -1
  89. package/dist/docs/reference/geometry/BoxEdgeSelection.md +11 -1
  90. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +11 -1
  91. package/dist/docs/reference/geometry/BoxOptions.md +13 -3
  92. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +16 -2
  93. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +16 -2
  94. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +11 -1
  95. package/dist/docs/reference/geometry/CircleContourOptions.md +12 -2
  96. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +15 -3
  97. package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
  98. package/dist/docs/reference/geometry/CircularSampling.md +7 -1
  99. package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
  100. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +8 -2
  101. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -2
  102. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +8 -2
  103. package/dist/docs/reference/geometry/Contour.md +12 -2
  104. package/dist/docs/reference/geometry/ContourCurve.md +8 -2
  105. package/dist/docs/reference/geometry/ContourPoint.md +8 -2
  106. package/dist/docs/reference/geometry/ContourSegment.md +8 -2
  107. package/dist/docs/reference/geometry/CorrespondingComponent.md +12 -2
  108. package/dist/docs/reference/geometry/CorrespondingContour.md +12 -2
  109. package/dist/docs/reference/geometry/CorrespondingProfile.md +12 -2
  110. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +12 -2
  111. package/dist/docs/reference/geometry/CubicBezierCurve2.md +8 -2
  112. package/dist/docs/reference/geometry/CubicBezierCurve3.md +8 -2
  113. package/dist/docs/reference/geometry/Curve2.md +8 -2
  114. package/dist/docs/reference/geometry/Curve3.md +8 -2
  115. package/dist/docs/reference/geometry/CurveSamplingOptions.md +16 -2
  116. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +16 -2
  117. package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
  118. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +11 -5
  119. package/dist/docs/reference/geometry/CylinderOptions.md +11 -1
  120. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -2
  121. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -2
  122. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +8 -2
  123. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +8 -2
  124. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +8 -2
  125. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +8 -2
  126. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +8 -2
  127. package/dist/docs/reference/geometry/CylindricalGearSpec.md +8 -2
  128. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
  129. package/dist/docs/reference/geometry/EdgeTreatment.md +11 -1
  130. package/dist/docs/reference/geometry/EllipseContourOptions.md +14 -4
  131. package/dist/docs/reference/geometry/EndTreatments.md +12 -2
  132. package/dist/docs/reference/{model/ExtrudeOptions.md → geometry/ExtrudeMeshOptions.md} +30 -26
  133. package/dist/docs/reference/geometry/ExtrudeOptions.md +29 -11
  134. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +18 -4
  135. package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
  136. package/dist/docs/reference/geometry/Frame3.md +16 -2
  137. package/dist/docs/reference/geometry/GeometryError.md +11 -1
  138. package/dist/docs/reference/geometry/GeometryErrorCode.md +11 -1
  139. package/dist/docs/reference/geometry/GeometryErrorContext.md +11 -1
  140. package/dist/docs/reference/geometry/GeometryResolution.md +15 -1
  141. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +16 -2
  142. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +15 -1
  143. package/dist/docs/reference/geometry/GridPatternOptions.md +12 -2
  144. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +12 -2
  145. package/dist/docs/reference/geometry/HeightfieldOptions.md +18 -3
  146. package/dist/docs/reference/geometry/HeightfieldPreflight.md +12 -2
  147. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +9 -3
  148. package/dist/docs/reference/geometry/ImmutableBuffer-type.md +110 -0
  149. package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +57 -0
  150. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +63 -84
  151. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +12 -2
  152. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +8 -2
  153. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +8 -2
  154. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +12 -2
  155. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +12 -2
  156. package/dist/docs/reference/geometry/LineCurve2.md +8 -2
  157. package/dist/docs/reference/geometry/LineCurve3.md +8 -2
  158. package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -2
  159. package/dist/docs/reference/geometry/LoftCorrespondence.md +16 -2
  160. package/dist/docs/reference/geometry/LoftMeshStation.md +12 -2
  161. package/dist/docs/reference/geometry/LoftOptions.md +18 -4
  162. package/dist/docs/reference/geometry/LoftPlacement.md +16 -2
  163. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +8 -2
  164. package/dist/docs/reference/geometry/MatchProfilesOptions.md +12 -2
  165. package/dist/docs/reference/geometry/MetricFastenerSize.md +8 -2
  166. package/dist/docs/reference/geometry/MetricFastenerStandard.md +8 -2
  167. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +8 -2
  168. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +8 -2
  169. package/dist/docs/reference/geometry/ModelingLimits.md +19 -1
  170. package/dist/docs/reference/geometry/NumericArray.md +28 -0
  171. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
  172. package/dist/docs/reference/geometry/Path2-type.md +16 -2
  173. package/dist/docs/reference/geometry/Path2Data.md +16 -2
  174. package/dist/docs/reference/geometry/Path2Input.md +16 -2
  175. package/dist/docs/reference/geometry/Path3-type.md +16 -2
  176. package/dist/docs/reference/geometry/Path3Data.md +16 -2
  177. package/dist/docs/reference/geometry/Path3Input.md +16 -2
  178. package/dist/docs/reference/geometry/PathFrame.md +8 -2
  179. package/dist/docs/reference/geometry/PathLocation.md +16 -2
  180. package/dist/docs/reference/geometry/PathNormalGuide.md +16 -2
  181. package/dist/docs/reference/geometry/PathOptions.md +12 -2
  182. package/dist/docs/reference/geometry/PathPatternOptions.md +12 -2
  183. package/dist/docs/reference/geometry/PathPlacement.md +8 -2
  184. package/dist/docs/reference/geometry/PathResamplingOptions.md +16 -2
  185. package/dist/docs/reference/geometry/Pivot2Options.md +17 -3
  186. package/dist/docs/reference/geometry/Pivot3Options.md +17 -3
  187. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +12 -2
  188. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +12 -2
  189. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +12 -2
  190. package/dist/docs/reference/geometry/PlanarPatchQuality.md +12 -2
  191. package/dist/docs/reference/geometry/PolygonData.md +12 -2
  192. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
  193. package/dist/docs/reference/geometry/PrimitiveAttachment.md +11 -3
  194. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +11 -1
  195. package/dist/docs/reference/geometry/PrintableThreadFit.md +12 -2
  196. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +12 -2
  197. package/dist/docs/reference/geometry/Profile.md +8 -2
  198. package/dist/docs/reference/geometry/ProfileComponent2.md +12 -2
  199. package/dist/docs/reference/geometry/ProfileContour2.md +12 -2
  200. package/dist/docs/reference/geometry/ProfileSpan2.md +12 -2
  201. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +11 -1
  202. package/dist/docs/reference/geometry/RackPitchDimensions.md +8 -2
  203. package/dist/docs/reference/geometry/RackPitchSpec.md +8 -2
  204. package/dist/docs/reference/geometry/RadialPatternOptions.md +12 -2
  205. package/dist/docs/reference/geometry/RadialSizing.md +11 -1
  206. package/dist/docs/reference/geometry/RadialSizingOptions.md +11 -1
  207. package/dist/docs/reference/geometry/RectangleContourOptions.md +14 -4
  208. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +12 -2
  209. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +12 -2
  210. package/dist/docs/reference/geometry/RectangleProfileOptions.md +10 -4
  211. package/dist/docs/reference/geometry/RegionData.md +12 -2
  212. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
  213. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
  214. package/dist/docs/reference/geometry/RevolveOptions.md +17 -3
  215. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +11 -1
  216. package/dist/docs/reference/geometry/RowLayoutOptions.md +10 -4
  217. package/dist/docs/reference/geometry/SampleContourOptions.md +8 -2
  218. package/dist/docs/reference/geometry/SampleHelixOptions.md +8 -2
  219. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +8 -2
  220. package/dist/docs/reference/geometry/SampledCurve2.md +8 -2
  221. package/dist/docs/reference/geometry/SampledCurve3.md +8 -2
  222. package/dist/docs/reference/geometry/SampledThreadHelices.md +8 -2
  223. package/dist/docs/reference/geometry/SideProfileCurve.md +8 -2
  224. package/dist/docs/reference/geometry/SideProfilePoint.md +8 -2
  225. package/dist/docs/reference/geometry/SideProfileSegment.md +8 -2
  226. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +11 -1
  227. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +12 -2
  228. package/dist/docs/reference/geometry/SphereOptions.md +11 -1
  229. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +16 -2
  230. package/dist/docs/reference/geometry/StarContourOptions.md +84 -0
  231. package/dist/docs/reference/geometry/StrokeCap.md +12 -2
  232. package/dist/docs/reference/geometry/StrokeJoin.md +12 -2
  233. package/dist/docs/reference/geometry/StrokeOptions.md +12 -2
  234. package/dist/docs/reference/geometry/SvgImportOptions.md +8 -2
  235. package/dist/docs/reference/geometry/SvgRegionPreflight.md +8 -2
  236. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +8 -2
  237. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +8 -2
  238. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +8 -2
  239. package/dist/docs/reference/geometry/SweepOptions.md +16 -2
  240. package/dist/docs/reference/geometry/SweepOrientation.md +16 -2
  241. package/dist/docs/reference/geometry/ThreadBevelOptions.md +18 -31
  242. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +8 -2
  243. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +8 -2
  244. package/dist/docs/reference/geometry/ThreadEndStyle.md +16 -2
  245. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +16 -2
  246. package/dist/docs/reference/geometry/ThreadHandedness.md +16 -2
  247. package/dist/docs/reference/geometry/ThreadHelixOptions.md +8 -2
  248. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +16 -2
  249. package/dist/docs/reference/geometry/ThreadLeadInShape.md +16 -2
  250. package/dist/docs/reference/geometry/ThreadProfile-type.md +17 -3
  251. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
  252. package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
  253. package/dist/docs/reference/geometry/{HelicalThreadRidgeMeshOptions.md → ThreadRidgeOptions.md} +19 -5
  254. package/dist/docs/reference/geometry/ThreadRole.md +8 -2
  255. package/dist/docs/reference/geometry/{HelicalThreadSolidMeshOptions.md → ThreadSolidOptions.md} +29 -66
  256. package/dist/docs/reference/geometry/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +17 -3
  257. package/dist/docs/reference/geometry/ThreadedNutOptions.md +86 -87
  258. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +29 -7
  259. package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
  260. package/dist/docs/reference/geometry/ThreadedRodOptions.md +63 -84
  261. package/dist/docs/reference/geometry/TorusOptions.md +11 -1
  262. package/dist/docs/reference/geometry/Transform2-type.md +17 -3
  263. package/dist/docs/reference/geometry/Transform2Data.md +17 -3
  264. package/dist/docs/reference/geometry/Transform2Input.md +17 -3
  265. package/dist/docs/reference/geometry/Transform3-type.md +17 -3
  266. package/dist/docs/reference/geometry/Transform3Data.md +17 -3
  267. package/dist/docs/reference/geometry/Transform3Input.md +17 -3
  268. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +16 -2
  269. package/dist/docs/reference/geometry/TriangleMesh.md +19 -6
  270. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +25 -5
  271. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +13 -3
  272. package/dist/docs/reference/geometry/TriangleMeshInput.md +29 -0
  273. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +16 -2
  274. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +12 -2
  275. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +12 -2
  276. package/dist/docs/reference/geometry/TriangleMeshSignature.md +14 -4
  277. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +12 -2
  278. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +12 -2
  279. package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +145 -0
  280. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +12 -2
  281. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +16 -2
  282. package/dist/docs/reference/geometry/TubeOptions.md +20 -86
  283. package/dist/docs/reference/geometry/Vector2-type.md +17 -3
  284. package/dist/docs/reference/geometry/Vector2Data.md +21 -3
  285. package/dist/docs/reference/geometry/Vector2Input.md +17 -3
  286. package/dist/docs/reference/geometry/Vector3-type.md +17 -3
  287. package/dist/docs/reference/geometry/Vector3Data.md +17 -3
  288. package/dist/docs/reference/geometry/Vector3Input.md +17 -3
  289. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +12 -2
  290. package/dist/docs/reference/geometry/VectorTextLayout.md +16 -2
  291. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +14 -4
  292. package/dist/docs/reference/geometry/VectorTextMetrics.md +16 -2
  293. package/dist/docs/reference/geometry/VectorTextOptions.md +12 -2
  294. package/dist/docs/reference/geometry/add2.md +9 -3
  295. package/dist/docs/reference/geometry/add3.md +9 -3
  296. package/dist/docs/reference/geometry/anchor3.md +9 -3
  297. package/dist/docs/reference/geometry/anchorFrame3.md +8 -2
  298. package/dist/docs/reference/geometry/applyTransformDirection3.md +9 -3
  299. package/dist/docs/reference/geometry/applyTransformPoint3.md +9 -3
  300. package/dist/docs/reference/geometry/attachmentTransform3.md +9 -3
  301. package/dist/docs/reference/geometry/bounds2.md +18 -8
  302. package/dist/docs/reference/geometry/bounds3.md +18 -8
  303. package/dist/docs/reference/geometry/boundsCenter.md +10 -4
  304. package/dist/docs/reference/geometry/boundsSize.md +10 -4
  305. package/dist/docs/reference/geometry/boxAnchor3.md +11 -5
  306. package/dist/docs/reference/geometry/categories/bounds-layout.md +6 -6
  307. package/dist/docs/reference/geometry/categories/curves-paths.md +3 -3
  308. package/dist/docs/reference/geometry/categories/mechanical.md +9 -11
  309. package/dist/docs/reference/geometry/categories/meshes.md +20 -33
  310. package/dist/docs/reference/geometry/categories/pattern-placement.md +3 -3
  311. package/dist/docs/reference/geometry/categories/primitive-options.md +4 -4
  312. package/dist/docs/reference/geometry/categories/profiles-regions.md +6 -5
  313. package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -3
  314. package/dist/docs/reference/geometry/categories/transforms-math.md +5 -4
  315. package/dist/docs/reference/geometry/categories/vector-import.md +4 -4
  316. package/dist/docs/reference/geometry/circleContour.md +8 -2
  317. package/dist/docs/reference/geometry/closeToAxis.md +8 -2
  318. package/dist/docs/reference/geometry/compensateThreadDiameters.md +8 -2
  319. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +8 -2
  320. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +8 -2
  321. package/dist/docs/reference/geometry/composeTransform3.md +9 -3
  322. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +8 -2
  323. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -2
  324. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -2
  325. package/dist/docs/reference/geometry/cross2.md +9 -3
  326. package/dist/docs/reference/geometry/cross3.md +9 -3
  327. package/dist/docs/reference/geometry/cylinderAnchor3.md +10 -4
  328. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
  329. package/dist/docs/reference/geometry/distance2.md +9 -3
  330. package/dist/docs/reference/geometry/distance3.md +9 -3
  331. package/dist/docs/reference/geometry/distributeAlongPath.md +8 -2
  332. package/dist/docs/reference/geometry/dot2.md +9 -3
  333. package/dist/docs/reference/geometry/dot3.md +9 -3
  334. package/dist/docs/reference/geometry/ellipseContour.md +8 -2
  335. package/dist/docs/reference/geometry/eulerTransform3.md +9 -3
  336. package/dist/docs/reference/geometry/fitBounds.md +10 -4
  337. package/dist/docs/reference/geometry/fitTextLayout.md +8 -2
  338. package/dist/docs/reference/geometry/frameTransform3.md +9 -3
  339. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +8 -2
  340. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +8 -2
  341. package/dist/docs/reference/geometry/gridPatternTransforms.md +8 -2
  342. package/dist/docs/reference/{model → geometry}/immutableBuffer.md +13 -2
  343. package/dist/docs/reference/geometry/inverseTransform3.md +9 -3
  344. package/dist/docs/reference/geometry/isGeometryError.md +11 -1
  345. package/dist/docs/reference/geometry/layoutRow.md +10 -4
  346. package/dist/docs/reference/geometry/length2.md +9 -3
  347. package/dist/docs/reference/geometry/length3.md +9 -3
  348. package/dist/docs/reference/geometry/lerp2.md +9 -3
  349. package/dist/docs/reference/geometry/lerp3.md +9 -3
  350. package/dist/docs/reference/geometry/linearPatternTransforms.md +8 -2
  351. package/dist/docs/reference/geometry/matchProfiles.md +8 -2
  352. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +8 -2
  353. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +8 -2
  354. package/dist/docs/reference/geometry/normalize2.md +9 -3
  355. package/dist/docs/reference/geometry/normalize3.md +9 -3
  356. package/dist/docs/reference/geometry/normalizeContour.md +8 -2
  357. package/dist/docs/reference/geometry/normalizePolygon.md +8 -2
  358. package/dist/docs/reference/geometry/normalizeRegion.md +8 -2
  359. package/dist/docs/reference/geometry/path2.md +12 -2
  360. package/dist/docs/reference/geometry/path3.md +12 -2
  361. package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -2
  362. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +25 -26
  363. package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
  364. package/dist/docs/reference/geometry/preflightThreadedNut.md +31 -27
  365. package/dist/docs/reference/geometry/preflightThreadedRod.md +25 -26
  366. package/dist/docs/reference/geometry/projectOntoPlane3.md +9 -3
  367. package/dist/docs/reference/geometry/radialPatternTransforms.md +8 -2
  368. package/dist/docs/reference/geometry/rectangleContour.md +17 -6
  369. package/dist/docs/reference/geometry/rectangleProfile.md +9 -3
  370. package/dist/docs/reference/geometry/regionArea.md +8 -2
  371. package/dist/docs/reference/geometry/regionBounds.md +8 -2
  372. package/dist/docs/reference/geometry/regularPolygonContour.md +9 -3
  373. package/dist/docs/reference/geometry/resamplePolyline2.md +8 -2
  374. package/dist/docs/reference/geometry/resamplePolyline3.md +8 -2
  375. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +7 -1
  376. package/dist/docs/reference/geometry/resolveArcSegments.md +7 -1
  377. package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
  378. package/dist/docs/reference/geometry/resolveCircularSegments.md +7 -1
  379. package/dist/docs/reference/geometry/resolveCylindricalGear.md +8 -2
  380. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +8 -2
  381. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +8 -2
  382. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +8 -2
  383. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +7 -1
  384. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +8 -2
  385. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +8 -2
  386. package/dist/docs/reference/geometry/resolveRackPitch.md +8 -2
  387. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -2
  388. package/dist/docs/reference/geometry/rotate2.md +9 -3
  389. package/dist/docs/reference/geometry/rotationTransform3.md +9 -3
  390. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -2
  391. package/dist/docs/reference/geometry/sampleContour.md +8 -2
  392. package/dist/docs/reference/geometry/sampleCurve2.md +8 -2
  393. package/dist/docs/reference/geometry/sampleCurve3.md +8 -2
  394. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +8 -2
  395. package/dist/docs/reference/geometry/sampleHelix.md +8 -2
  396. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +8 -2
  397. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -2
  398. package/dist/docs/reference/geometry/sampleSideProfile.md +8 -2
  399. package/dist/docs/reference/geometry/sampleTextContours.md +8 -2
  400. package/dist/docs/reference/geometry/sampleThreadHelices.md +8 -2
  401. package/dist/docs/reference/geometry/scale2.md +9 -3
  402. package/dist/docs/reference/geometry/scale3.md +9 -3
  403. package/dist/docs/reference/geometry/scaleTransform3.md +9 -3
  404. package/dist/docs/reference/geometry/signedContourArea.md +8 -2
  405. package/dist/docs/reference/geometry/starContour.md +24 -16
  406. package/dist/docs/reference/geometry/strokeRegionData.md +8 -2
  407. package/dist/docs/reference/geometry/subtract2.md +9 -3
  408. package/dist/docs/reference/geometry/subtract3.md +9 -3
  409. package/dist/docs/reference/geometry/threadProfile.md +8 -2
  410. package/dist/docs/reference/geometry/transform2.md +13 -3
  411. package/dist/docs/reference/geometry/transform3.md +13 -3
  412. package/dist/docs/reference/geometry/transformDeterminant3.md +9 -3
  413. package/dist/docs/reference/geometry/transformRegionData.md +8 -2
  414. package/dist/docs/reference/geometry/translationTransform3.md +9 -3
  415. package/dist/docs/reference/geometry/triangulateContour.md +8 -2
  416. package/dist/docs/reference/geometry/validateRigidTransform3.md +41 -0
  417. package/dist/docs/reference/geometry/validateTransform3.md +9 -3
  418. package/dist/docs/reference/geometry/vector2.md +13 -3
  419. package/dist/docs/reference/geometry/vector3.md +13 -3
  420. package/dist/docs/reference/geometry.md +10 -10
  421. package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
  422. package/dist/docs/reference/mesh/RenderMesh.md +68 -0
  423. package/dist/docs/reference/mesh/analyze.md +102 -0
  424. package/dist/docs/reference/mesh/analyzeQuality.md +62 -0
  425. package/dist/docs/reference/mesh/bounds.md +45 -0
  426. package/dist/docs/reference/mesh/categories/operations.md +57 -0
  427. package/dist/docs/reference/mesh/centroid.md +45 -0
  428. package/dist/docs/reference/mesh/extrude.md +79 -0
  429. package/dist/docs/reference/mesh/heightfield.md +57 -0
  430. package/dist/docs/reference/mesh/immutable.md +51 -0
  431. package/dist/docs/reference/mesh/join.md +47 -0
  432. package/dist/docs/reference/mesh/loft.md +83 -0
  433. package/dist/docs/reference/mesh/optimizePlanarPatches.md +102 -0
  434. package/dist/docs/reference/mesh/preflightHeightfield.md +48 -0
  435. package/dist/docs/reference/mesh/preflightThreadSolid.md +96 -0
  436. package/dist/docs/reference/mesh/render.md +57 -0
  437. package/dist/docs/reference/mesh/reverse.md +41 -0
  438. package/dist/docs/reference/{geometry/revolveMesh.md → mesh/revolve.md} +23 -17
  439. package/dist/docs/reference/mesh/signature.md +70 -0
  440. package/dist/docs/reference/mesh/sweep.md +92 -0
  441. package/dist/docs/reference/mesh/threadRidge.md +78 -0
  442. package/dist/docs/reference/mesh/threadSolid.md +96 -0
  443. package/dist/docs/reference/mesh/transform.md +53 -0
  444. package/dist/docs/reference/mesh/validate.md +75 -0
  445. package/dist/docs/reference/{geometry/validateSolidMesh.md → mesh/validateSolid.md} +23 -11
  446. package/dist/docs/reference/mesh.md +21 -0
  447. package/dist/docs/reference/model/CircleOptions.md +13 -7
  448. package/dist/docs/reference/model/DiagnosticOptions.md +21 -1
  449. package/dist/docs/reference/model/EllipseOptions.md +13 -7
  450. package/dist/docs/reference/model/GenerateCallback.md +11 -5
  451. package/dist/docs/reference/model/GenerateContext.md +26 -99
  452. package/dist/docs/reference/model/GenerationDiagnostic.md +19 -1
  453. package/dist/docs/reference/model/GenerationError.md +8 -2
  454. package/dist/docs/reference/model/HoleCutterOptions.md +17 -10
  455. package/dist/docs/reference/model/HoleCutterOverrun.md +10 -3
  456. package/dist/docs/reference/model/HoleCutterRecess.md +10 -3
  457. package/dist/docs/reference/model/HullOptions.md +13 -6
  458. package/dist/docs/reference/model/ImmutableValue.md +26 -0
  459. package/dist/docs/reference/model/ImplicitOptions.md +12 -6
  460. package/dist/docs/reference/model/JoinOptions.md +76 -0
  461. package/dist/docs/reference/model/JoinTransition.md +54 -0
  462. package/dist/docs/reference/model/KnuckleHinge-type.md +9 -3
  463. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
  464. package/dist/docs/reference/model/KnuckleHingeOptions.md +10 -4
  465. package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
  466. package/dist/docs/reference/model/LoftStation.md +16 -9
  467. package/dist/docs/reference/model/Memo.md +54 -0
  468. package/dist/docs/reference/model/ModelProgram.md +8 -2
  469. package/dist/docs/reference/model/PartDeclaration.md +87 -0
  470. package/dist/docs/reference/model/PartGeometry.md +10 -4
  471. package/dist/docs/reference/model/PartOptions.md +16 -22
  472. package/dist/docs/reference/model/PatternSource.md +10 -4
  473. package/dist/docs/reference/model/PlaneOptions.md +11 -4
  474. package/dist/docs/reference/model/PolygonOptions.md +20 -14
  475. package/dist/docs/reference/model/Profile.md +10 -4
  476. package/dist/docs/reference/model/RectangleOptions.md +28 -22
  477. package/dist/docs/reference/model/RegularPolygonOptions.md +13 -7
  478. package/dist/docs/reference/model/Section.md +196 -77
  479. package/dist/docs/reference/model/SectionHullOptions.md +13 -6
  480. package/dist/docs/reference/model/SectionInspection.md +12 -18
  481. package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
  482. package/dist/docs/reference/model/SectionOffsetOptions.md +12 -6
  483. package/dist/docs/reference/model/Solid.md +339 -54
  484. package/dist/docs/reference/model/SolidInspection.md +12 -18
  485. package/dist/docs/reference/model/SolidSegmentHit.md +14 -4
  486. package/dist/docs/reference/model/StarOptions.md +53 -25
  487. package/dist/docs/reference/model/SvgOrigin.md +10 -4
  488. package/dist/docs/reference/model/SvgPathSectionOptions.md +14 -8
  489. package/dist/docs/reference/model/SvgSectionOptions.md +16 -10
  490. package/dist/docs/reference/model/TextSectionOptions.md +14 -8
  491. package/dist/docs/reference/model/box.md +18 -11
  492. package/dist/docs/reference/model/categories/boolean-operations.md +13 -11
  493. package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -7
  494. package/dist/docs/reference/model/categories/explicit-profiles.md +1 -14
  495. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +11 -23
  496. package/dist/docs/reference/model/categories/generation.md +10 -15
  497. package/dist/docs/reference/model/categories/hinges.md +1 -4
  498. package/dist/docs/reference/model/categories/mesh-inspection.md +14 -9
  499. package/dist/docs/reference/model/categories/primitives.md +8 -24
  500. package/dist/docs/reference/model/categories/sections.md +6 -16
  501. package/dist/docs/reference/model/categories/threads.md +3 -30
  502. package/dist/docs/reference/model/categories/transforms-placement.md +5 -35
  503. package/dist/docs/reference/model/circle.md +10 -4
  504. package/dist/docs/reference/model/cylinder.md +13 -6
  505. package/dist/docs/reference/model/ellipse.md +10 -4
  506. package/dist/docs/reference/model/extrude.md +28 -20
  507. package/dist/docs/reference/model/generate.md +10 -4
  508. package/dist/docs/reference/model/gridPattern.md +15 -9
  509. package/dist/docs/reference/model/heightfield.md +10 -4
  510. package/dist/docs/reference/model/holeCutter.md +21 -4
  511. package/dist/docs/reference/model/hull.md +9 -2
  512. package/dist/docs/reference/model/implicit.md +9 -3
  513. package/dist/docs/reference/model/internalThreadCutter.md +31 -33
  514. package/dist/docs/reference/model/intersect.md +11 -4
  515. package/dist/docs/reference/model/join.md +89 -0
  516. package/dist/docs/reference/model/knuckleHinge.md +8 -2
  517. package/dist/docs/reference/model/linearPattern.md +15 -9
  518. package/dist/docs/reference/model/loft.md +36 -28
  519. package/dist/docs/reference/model/matchProfiles.md +14 -8
  520. package/dist/docs/reference/model/minkowskiSum.md +9 -2
  521. package/dist/docs/reference/model/pathPattern.md +25 -19
  522. package/dist/docs/reference/model/polygon.md +13 -7
  523. package/dist/docs/reference/model/preflightInternalThreadCutter.md +33 -35
  524. package/dist/docs/reference/model/preflightThreadedNut.md +43 -40
  525. package/dist/docs/reference/model/preflightThreadedRod.md +33 -35
  526. package/dist/docs/reference/model/radialPattern.md +15 -9
  527. package/dist/docs/reference/model/rectangle.md +14 -8
  528. package/dist/docs/reference/model/regularPolygon.md +10 -4
  529. package/dist/docs/reference/model/revolve.md +25 -17
  530. package/dist/docs/reference/model/solidFromMesh.md +16 -9
  531. package/dist/docs/reference/model/sphere.md +13 -6
  532. package/dist/docs/reference/model/star.md +17 -11
  533. package/dist/docs/reference/model/stroke.md +21 -15
  534. package/dist/docs/reference/model/svgPathSection.md +12 -6
  535. package/dist/docs/reference/model/svgSection.md +13 -7
  536. package/dist/docs/reference/model/sweep.md +29 -21
  537. package/dist/docs/reference/model/textSection.md +15 -9
  538. package/dist/docs/reference/model/threadRidge.md +21 -15
  539. package/dist/docs/reference/model/threadedNut.md +41 -38
  540. package/dist/docs/reference/model/threadedRod.md +31 -33
  541. package/dist/docs/reference/model/torus.md +20 -13
  542. package/dist/docs/reference/model/tube.md +13 -41
  543. package/dist/docs/reference/model/union.md +11 -4
  544. package/dist/docs/reference/model.md +11 -20
  545. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +8 -2
  546. package/dist/docs/reference/text/VectorFont.md +39 -33
  547. package/dist/docs/reference/text/VectorFontOptions.md +7 -1
  548. package/dist/docs/reference/text/categories/font-preparation.md +3 -15
  549. package/dist/docs/reference/text/prepareVectorFont.md +7 -1
  550. package/dist/docs/reference/text.md +4 -4
  551. package/dist/engine/execution.js +10 -6
  552. package/dist/engine/finalization.js +2 -74
  553. package/dist/engine/index.js +24 -30
  554. package/dist/engine/model-parts.js +8 -0
  555. package/dist/engine/model-summary.js +5 -5
  556. package/dist/engine/native/construction-mesh.js +41 -0
  557. package/dist/engine/native/index.js +1 -1
  558. package/dist/engine/native/material-components.js +5 -54
  559. package/dist/engine/native/mesh-observation.js +55 -0
  560. package/dist/engine/native/operations.js +0 -7
  561. package/dist/engine/native/regions.js +2 -1
  562. package/dist/engine/native/scoped-primitives.js +5 -4
  563. package/dist/engine/native/threads.js +14 -14
  564. package/dist/engine/{construction-operations.js → operations/construction.js} +25 -23
  565. package/dist/engine/{modeling-context.js → operations/context.js} +12 -10
  566. package/dist/engine/{operation-environment.js → operations/environment.js} +2 -2
  567. package/dist/engine/{extrusion-finishing.js → operations/extrusion-finishing.js} +23 -22
  568. package/dist/engine/{hole-cutter-operation.js → operations/hole-cutter.js} +3 -3
  569. package/dist/engine/{inspection-operations.js → operations/inspection.js} +6 -6
  570. package/dist/engine/operations/join-collar-profile.js +120 -0
  571. package/dist/engine/operations/join.js +508 -0
  572. package/dist/engine/{knuckle-hinge-operation.js → operations/knuckle-hinge.js} +4 -4
  573. package/dist/engine/{loft-operations.js → operations/loft.js} +13 -12
  574. package/dist/engine/{mechanical-operations.js → operations/mechanical.js} +2 -2
  575. package/dist/engine/{pattern-operations.js → operations/patterns.js} +4 -4
  576. package/dist/engine/{primitive-anchors.js → operations/primitives/anchors.js} +9 -4
  577. package/dist/engine/{primitive-operations.js → operations/primitives/construction.js} +18 -19
  578. package/dist/engine/{primitive-correspondence.js → operations/primitives/correspondence.js} +4 -4
  579. package/dist/engine/{profile-mesh.js → operations/primitives/profile-mesh.js} +12 -12
  580. package/dist/engine/{primitive-profiles.js → operations/primitives/profiles.js} +7 -7
  581. package/dist/engine/{section-operations.js → operations/sections.js} +8 -8
  582. package/dist/engine/{transform-operations.js → operations/transforms.js} +8 -8
  583. package/dist/engine/placement.js +3 -4
  584. package/dist/engine/recipe-realization.js +2 -2
  585. package/dist/engine/{deferred-context.js → session/deferred-context.js} +4 -4
  586. package/dist/engine/session/dependencies.js +93 -0
  587. package/dist/engine/session/graph.js +428 -0
  588. package/dist/engine/{session-native.js → session/native-cache.js} +2 -2
  589. package/dist/engine/{session.js → session/session.js} +20 -14
  590. package/dist/engine/{session-snapshot.js → session/snapshot-cache.js} +30 -60
  591. package/dist/export/3mf.js +190 -0
  592. package/dist/export/capture.js +178 -0
  593. package/dist/export/glb.js +209 -0
  594. package/dist/export/index.js +5 -0
  595. package/dist/export/limits.js +18 -0
  596. package/dist/export/stl.js +105 -0
  597. package/dist/export/types.js +1 -0
  598. package/dist/export/writer.js +54 -0
  599. package/dist/geometry/anchors.js +4 -11
  600. package/dist/geometry/bounds-value.js +22 -12
  601. package/dist/geometry/heightfield.js +10 -12
  602. package/dist/{model → geometry}/immutable-buffer.js +31 -12
  603. package/dist/geometry/index.js +16 -22
  604. package/dist/geometry/join-geometry.js +839 -0
  605. package/dist/geometry/loft/loft.js +11 -6
  606. package/dist/geometry/mechanical/index.js +5 -5
  607. package/dist/geometry/mechanical/threads/bevel.js +24 -0
  608. package/dist/geometry/mechanical/{threads.js → threads/fit.js} +4 -4
  609. package/dist/geometry/mechanical/{thread-helices.js → threads/helices.js} +3 -3
  610. package/dist/geometry/mechanical/{thread-mesh-plan.js → threads/mesh-plan.js} +38 -53
  611. package/dist/geometry/mechanical/{thread-mesh.js → threads/mesh.js} +9 -9
  612. package/dist/geometry/mechanical/{thread-profiles.js → threads/profiles.js} +3 -3
  613. package/dist/geometry/mechanical/{thread-solids.js → threads/solids.js} +58 -89
  614. package/dist/geometry/mechanical/{thread-surface.js → threads/surface.js} +7 -8
  615. package/dist/geometry/mesh/mesh-centroid.js +3 -2
  616. package/dist/geometry/mesh/mesh-planar.js +27 -8
  617. package/dist/geometry/mesh/mesh-quality.js +2 -1
  618. package/dist/geometry/mesh/mesh-render.js +205 -0
  619. package/dist/geometry/mesh/mesh-signature.js +7 -6
  620. package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
  621. package/dist/geometry/mesh/mesh-solid.js +8 -5
  622. package/dist/geometry/mesh/mesh-types.js +1 -0
  623. package/dist/geometry/mesh/mesh.js +13 -22
  624. package/dist/geometry/mesh-api.js +15 -0
  625. package/dist/geometry/primitive-resolvers.js +42 -14
  626. package/dist/geometry/profiles/primitives/circle.js +19 -0
  627. package/dist/geometry/profiles/{shapes.js → primitives/ellipse.js} +6 -10
  628. package/dist/geometry/profiles/{rectangle.js → primitives/rectangle.js} +14 -12
  629. package/dist/geometry/profiles/primitives/regular-polygon.js +33 -0
  630. package/dist/geometry/profiles/primitives/star.js +28 -0
  631. package/dist/geometry/region-offset.js +278 -0
  632. package/dist/geometry/regions.js +11 -1
  633. package/dist/geometry/revolve/revolve-mesh.js +1 -1
  634. package/dist/geometry/{svg-import.js → svg/import.js} +10 -10
  635. package/dist/geometry/sweeps/sweep-mesh.js +1 -1
  636. package/dist/geometry/transform3.js +29 -0
  637. package/dist/index.js +2 -1
  638. package/dist/model/diagnostic-path.js +26 -0
  639. package/dist/model/execution-binding.js +3 -3
  640. package/dist/model/generation.js +9 -3
  641. package/dist/model/geometry-recipes.js +1 -1
  642. package/dist/model/immutable-generation-data.js +45 -14
  643. package/dist/model/join.js +1 -0
  644. package/dist/model/operations.js +34 -144
  645. package/dist/model/recipe-declaration.js +7 -2
  646. package/dist/model/shape-handles.js +31 -7
  647. package/dist/text/index.js +1 -1
  648. package/package.json +38 -11
  649. package/dist/docs/reference/engine/Export3mfOptions.md +0 -29
  650. package/dist/docs/reference/engine/ExportMeshPart.md +0 -65
  651. package/dist/docs/reference/engine/ModelSnapshot.md +0 -184
  652. package/dist/docs/reference/engine/SnapshotPart.md +0 -133
  653. package/dist/docs/reference/engine/validateModel.md +0 -48
  654. package/dist/docs/reference/geometry/ThreadedNutBevel.md +0 -14
  655. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +0 -61
  656. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +0 -56
  657. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +0 -39
  658. package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +0 -64
  659. package/dist/docs/reference/geometry/extrudeMesh.md +0 -77
  660. package/dist/docs/reference/geometry/heightfieldMesh.md +0 -52
  661. package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +0 -72
  662. package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +0 -106
  663. package/dist/docs/reference/geometry/joinTriangleMeshes.md +0 -40
  664. package/dist/docs/reference/geometry/loftMesh.md +0 -77
  665. package/dist/docs/reference/geometry/meshBounds.md +0 -39
  666. package/dist/docs/reference/geometry/optimizePlanarPatches.md +0 -95
  667. package/dist/docs/reference/geometry/preflightHeightfield.md +0 -43
  668. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +0 -105
  669. package/dist/docs/reference/geometry/reverseTriangleMesh.md +0 -34
  670. package/dist/docs/reference/geometry/sweepMesh.md +0 -86
  671. package/dist/docs/reference/geometry/transformTriangleMesh.md +0 -46
  672. package/dist/docs/reference/geometry/validateTriangleMesh.md +0 -63
  673. package/dist/docs/reference/model/Anchor3.md +0 -55
  674. package/dist/docs/reference/model/AttachOptions.md +0 -69
  675. package/dist/docs/reference/model/Bounds2-type.md +0 -125
  676. package/dist/docs/reference/model/Bounds2Data.md +0 -44
  677. package/dist/docs/reference/model/Bounds2Input.md +0 -19
  678. package/dist/docs/reference/model/Bounds2Options.md +0 -70
  679. package/dist/docs/reference/model/Bounds3-type.md +0 -125
  680. package/dist/docs/reference/model/Bounds3Data.md +0 -44
  681. package/dist/docs/reference/model/Bounds3Input.md +0 -19
  682. package/dist/docs/reference/model/Bounds3Options.md +0 -70
  683. package/dist/docs/reference/model/BoxEdge.md +0 -15
  684. package/dist/docs/reference/model/BoxEdgeSelection.md +0 -19
  685. package/dist/docs/reference/model/BoxEdgeTreatments.md +0 -20
  686. package/dist/docs/reference/model/BoxOptions.md +0 -92
  687. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +0 -35
  688. package/dist/docs/reference/model/CircleContourOptions.md +0 -21
  689. package/dist/docs/reference/model/CircularPrimitiveOptions.md +0 -64
  690. package/dist/docs/reference/model/Computed.md +0 -40
  691. package/dist/docs/reference/model/ComputedValue.md +0 -24
  692. package/dist/docs/reference/model/Contour.md +0 -24
  693. package/dist/docs/reference/model/CorrespondingComponent.md +0 -46
  694. package/dist/docs/reference/model/CorrespondingContour.md +0 -46
  695. package/dist/docs/reference/model/CorrespondingProfile.md +0 -22
  696. package/dist/docs/reference/model/CorrespondingProfileStation.md +0 -27
  697. package/dist/docs/reference/model/CylinderOptions.md +0 -58
  698. package/dist/docs/reference/model/EdgeTreatment.md +0 -22
  699. package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
  700. package/dist/docs/reference/model/EndTreatments.md +0 -39
  701. package/dist/docs/reference/model/FinalizedModel.md +0 -131
  702. package/dist/docs/reference/model/FinalizedPart.md +0 -87
  703. package/dist/docs/reference/model/Frame3.md +0 -63
  704. package/dist/docs/reference/model/GeneratedPart.md +0 -97
  705. package/dist/docs/reference/model/GeometryResolution.md +0 -70
  706. package/dist/docs/reference/model/GeometrySamplingLimits.md +0 -62
  707. package/dist/docs/reference/model/GeometryToleranceOptions.md +0 -46
  708. package/dist/docs/reference/model/GridPatternOptions.md +0 -50
  709. package/dist/docs/reference/model/HeightfieldOptions.md +0 -67
  710. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +0 -141
  711. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +0 -59
  712. package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -84
  713. package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -38
  714. package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -246
  715. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +0 -77
  716. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +0 -47
  717. package/dist/docs/reference/model/KnuckleHingeSpec.md +0 -18
  718. package/dist/docs/reference/model/LinearPatternOptions.md +0 -39
  719. package/dist/docs/reference/model/LoftCorrespondence.md +0 -27
  720. package/dist/docs/reference/model/LoftOptions.md +0 -91
  721. package/dist/docs/reference/model/LoftPlacement.md +0 -73
  722. package/dist/docs/reference/model/MatchProfilesOptions.md +0 -35
  723. package/dist/docs/reference/model/ModelingLimits.md +0 -126
  724. package/dist/docs/reference/model/NumericArray.md +0 -14
  725. package/dist/docs/reference/model/Path2-type.md +0 -196
  726. package/dist/docs/reference/model/Path2Data.md +0 -50
  727. package/dist/docs/reference/model/Path2Input.md +0 -20
  728. package/dist/docs/reference/model/Path3-type.md +0 -196
  729. package/dist/docs/reference/model/Path3Data.md +0 -50
  730. package/dist/docs/reference/model/Path3Input.md +0 -20
  731. package/dist/docs/reference/model/PathLocation.md +0 -69
  732. package/dist/docs/reference/model/PathNormalGuide.md +0 -46
  733. package/dist/docs/reference/model/PathOptions.md +0 -38
  734. package/dist/docs/reference/model/PathPatternOptions.md +0 -48
  735. package/dist/docs/reference/model/PathResamplingOptions.md +0 -83
  736. package/dist/docs/reference/model/Pivot2Options.md +0 -28
  737. package/dist/docs/reference/model/Pivot3Options.md +0 -28
  738. package/dist/docs/reference/model/PolygonData.md +0 -44
  739. package/dist/docs/reference/model/PrimitiveAttachment.md +0 -41
  740. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +0 -110
  741. package/dist/docs/reference/model/PrintableThreadFit.md +0 -15
  742. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
  743. package/dist/docs/reference/model/ProfileComponent2.md +0 -46
  744. package/dist/docs/reference/model/ProfileContour2.md +0 -36
  745. package/dist/docs/reference/model/ProfileSpan2.md +0 -47
  746. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +0 -41
  747. package/dist/docs/reference/model/RadialPatternOptions.md +0 -59
  748. package/dist/docs/reference/model/RadialSizing.md +0 -15
  749. package/dist/docs/reference/model/RadialSizingOptions.md +0 -40
  750. package/dist/docs/reference/model/RectangleContourOptions.md +0 -72
  751. package/dist/docs/reference/model/RectangleCornerTreatment.md +0 -40
  752. package/dist/docs/reference/model/RectangleCornerTreatments.md +0 -20
  753. package/dist/docs/reference/model/RegionData.md +0 -19
  754. package/dist/docs/reference/model/RevolveOptions.md +0 -94
  755. package/dist/docs/reference/model/RoundedEdgeTreatment.md +0 -96
  756. package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
  757. package/dist/docs/reference/model/SphereOptions.md +0 -20
  758. package/dist/docs/reference/model/StrokeCap.md +0 -16
  759. package/dist/docs/reference/model/StrokeJoin.md +0 -16
  760. package/dist/docs/reference/model/StrokeOptions.md +0 -91
  761. package/dist/docs/reference/model/SweepOptions.md +0 -116
  762. package/dist/docs/reference/model/SweepOrientation.md +0 -116
  763. package/dist/docs/reference/model/ThreadEndStyle.md +0 -15
  764. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +0 -118
  765. package/dist/docs/reference/model/ThreadHandedness.md +0 -15
  766. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +0 -15
  767. package/dist/docs/reference/model/ThreadLeadInShape.md +0 -15
  768. package/dist/docs/reference/model/ThreadProfile.md +0 -87
  769. package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -19
  770. package/dist/docs/reference/model/ThreadedNutBevel.md +0 -15
  771. package/dist/docs/reference/model/ThreadedNutOptions.md +0 -274
  772. package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -99
  773. package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
  774. package/dist/docs/reference/model/ThreadedRodOptions.md +0 -246
  775. package/dist/docs/reference/model/TorusOptions.md +0 -110
  776. package/dist/docs/reference/model/Transform2-type.md +0 -257
  777. package/dist/docs/reference/model/Transform2Data.md +0 -16
  778. package/dist/docs/reference/model/Transform2Input.md +0 -21
  779. package/dist/docs/reference/model/Transform3-type.md +0 -297
  780. package/dist/docs/reference/model/Transform3Data.md +0 -19
  781. package/dist/docs/reference/model/Transform3Input.md +0 -21
  782. package/dist/docs/reference/model/TriangleMesh.md +0 -42
  783. package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -123
  784. package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
  785. package/dist/docs/reference/model/TubeOptions.md +0 -143
  786. package/dist/docs/reference/model/Vector2-type.md +0 -271
  787. package/dist/docs/reference/model/Vector2Data.md +0 -15
  788. package/dist/docs/reference/model/Vector2Input.md +0 -21
  789. package/dist/docs/reference/model/Vector3-type.md +0 -283
  790. package/dist/docs/reference/model/Vector3Data.md +0 -15
  791. package/dist/docs/reference/model/Vector3Input.md +0 -21
  792. package/dist/docs/reference/model/VectorTextLayout.md +0 -40
  793. package/dist/docs/reference/model/VectorTextMetrics.md +0 -100
  794. package/dist/docs/reference/model/anchor.md +0 -47
  795. package/dist/docs/reference/model/bounds2.md +0 -37
  796. package/dist/docs/reference/model/bounds3.md +0 -37
  797. package/dist/docs/reference/model/castSegment.md +0 -40
  798. package/dist/docs/reference/model/categories/bounds.md +0 -38
  799. package/dist/docs/reference/model/categories/contracts.md +0 -18
  800. package/dist/docs/reference/model/categories/core-values-errors.md +0 -30
  801. package/dist/docs/reference/model/categories/inspection.md +0 -29
  802. package/dist/docs/reference/model/categories/paths.md +0 -41
  803. package/dist/docs/reference/model/categories/resolution.md +0 -20
  804. package/dist/docs/reference/model/components.md +0 -71
  805. package/dist/docs/reference/model/compose.md +0 -31
  806. package/dist/docs/reference/model/distance.md +0 -45
  807. package/dist/docs/reference/model/immutableMesh.md +0 -44
  808. package/dist/docs/reference/model/inspectSection.md +0 -38
  809. package/dist/docs/reference/model/inspectSolid.md +0 -38
  810. package/dist/docs/reference/model/isEmpty.md +0 -39
  811. package/dist/docs/reference/model/path2.md +0 -54
  812. package/dist/docs/reference/model/path3.md +0 -49
  813. package/dist/docs/reference/model/split.md +0 -54
  814. package/dist/docs/reference/model/splitByPlane.md +0 -66
  815. package/dist/docs/reference/model/transform2.md +0 -46
  816. package/dist/docs/reference/model/transform3.md +0 -48
  817. package/dist/docs/reference/model/vector2.md +0 -40
  818. package/dist/docs/reference/model/vector3.md +0 -47
  819. package/dist/docs/reference/text/Bounds2Data.md +0 -34
  820. package/dist/docs/reference/text/Vector2Data.md +0 -7
  821. package/dist/docs/reference/text/VectorTextArcBaseline.md +0 -53
  822. package/dist/docs/reference/text/VectorTextLayout.md +0 -34
  823. package/dist/docs/reference/text/VectorTextLayoutOptions.md +0 -111
  824. package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
  825. package/dist/docs/reference/text/VectorTextOptions.md +0 -50
  826. package/dist/engine/export-3mf.js +0 -116
  827. package/dist/engine/model-dependencies.js +0 -46
  828. package/dist/engine/session-graph.js +0 -449
  829. package/dist/geometry/profiles/profiles.js +0 -71
  830. /package/dist/engine/{primitive-profile-types.js → operations/primitives/profile-types.js} +0 -0
  831. /package/dist/{engine → geometry/mesh}/mesh-view-cache.js +0 -0
  832. /package/dist/geometry/profiles/{matched.js → match-profiles.js} +0 -0
@@ -1,12 +1,12 @@
1
- import type { TriangleMesh } from "@metamesh/modeling/geometry";
1
+ import type { ImmutableTriangleMesh } from "@metamesh/modeling/geometry";
2
2
  import type {
3
- FinalizedModel,
4
- FinalizedPart,
3
+ Bounds3Data,
5
4
  GenerationDiagnostic,
6
5
  GeometryResolution,
7
6
  ModelingLimits,
8
7
  ModelProgram,
9
- Vector3Data,
8
+ Transform3Data,
9
+ TriangleMeshTopologyAnalysis,
10
10
  } from "@metamesh/modeling";
11
11
  /** Default host resource ceilings for parts, vertices, triangles, and transferable bytes. */
12
12
  declare const defaultModelingLimits: Readonly<ModelingLimits>;
@@ -28,8 +28,13 @@ export interface GenerationOptions {
28
28
  export interface ModelEngine {
29
29
  /** Immutable resource ceilings selected when this engine was initialized. */
30
30
  readonly limits: ModelingLimits;
31
+ /** Runs once with isolated ownership and returns durable immutable data; no disposal is required. */
32
+ run<P extends object, S>(
33
+ program: ModelProgram<P, S>,
34
+ ...args: ModelRunArguments<P, S>
35
+ ): ModelResult;
31
36
  /** Creates isolated caches; prepared service capabilities remain fixed for its lifetime. */
32
- createSession<P, S>(
37
+ createSession<P extends object, S>(
33
38
  program: ModelProgram<P, S>,
34
39
  ...options: keyof S extends never
35
40
  ? [options?: SessionOptions<S>]
@@ -39,14 +44,9 @@ export interface ModelEngine {
39
44
  },
40
45
  ]
41
46
  ): ModelSession<P>;
42
- /** Serializes already finalized mesh parts; never prepares or builds a generator again. */
43
- export3mf(
44
- parts: readonly ExportMeshPart[],
45
- options?: Export3mfOptions,
46
- ): Promise<ArrayBuffer>;
47
47
  }
48
- /** Fixed generation policy and deterministic host capabilities for one model session. */
49
- export interface SessionOptions<
48
+ /** Generation policy and prepared synchronous capabilities for one host execution. */
49
+ export interface ModelRunOptions<
50
50
  S = Record<never, never>,
51
51
  > extends GenerationOptions {
52
52
  /** Host-owned synchronous capabilities, required when declared by the program. The original
@@ -54,6 +54,29 @@ export interface SessionOptions<
54
54
  * this session. Equivalent function wrappers do not constitute an asset revision.
55
55
  */
56
56
  readonly services?: S;
57
+ }
58
+ /** Fixed argument positions; infer parameters from the program, allow empty maps to be omitted, and require declared services. */
59
+ export type ModelRunArguments<
60
+ P extends object,
61
+ S,
62
+ Options extends ModelRunOptions<S> = ModelRunOptions<S>,
63
+ > = keyof S extends never
64
+ ? Record<never, never> extends P
65
+ ? [parameters?: NoInfer<Readonly<P>>, options?: Options]
66
+ : [parameters: NoInfer<Readonly<P>>, options?: Options]
67
+ : [
68
+ parameters:
69
+ | NoInfer<Readonly<P>>
70
+ | (Record<never, never> extends P ? undefined : never),
71
+ options: Options & {
72
+ /** Prepared synchronous capabilities required by this program. */
73
+ readonly services: S;
74
+ },
75
+ ];
76
+ /** Fixed generation policy and reusable computation caches for one model session. */
77
+ export interface SessionOptions<
78
+ S = Record<never, never>,
79
+ > extends ModelRunOptions<S> {
57
80
  /** Enables reuse; defaults to true. Set false for uncached output equivalence checks. */
58
81
  readonly cache?: boolean;
59
82
  /** Development-only cache-hit probe: reruns pure callbacks and compares bounded data/recipes.
@@ -61,95 +84,108 @@ export interface SessionOptions<
61
84
  */
62
85
  readonly verifyCache?: boolean;
63
86
  }
64
- /** Validated local geometry resource; accessors return owned buffer copies. */
65
- export interface GeometryResource extends TriangleMesh {
87
+ /** Validated local geometry resource with stable immutable numeric storage. */
88
+ export interface GeometryResource extends ImmutableTriangleMesh {
66
89
  /** Session-scoped immutable resource identity, stable while geometry is reused. */
67
90
  readonly id: string;
68
91
  /** Immutable resource revision; a new resource receives a new identity. */
69
92
  readonly revision: number;
70
- /** Facts for the exact local manufacturing buffers. */
71
- readonly measurements: FinalizedPart["measurements"];
93
+ /** Facts and indexed topology counts for the exact local manufacturing buffers. */
94
+ readonly measurements: TriangleMeshTopologyAnalysis;
72
95
  }
73
96
  /**
74
97
  * A world-space manufacturing part plus its reusable local renderer resource.
98
+ * Top-level positions and indices already include transform; do not apply it again.
99
+ * Only geometry contains unplaced local buffers.
75
100
  *
76
- * Each `positions` or `indices` read returns an owned buffer copy; retain that copy when
77
- * traversing the mesh. Measurements and placement are immutable data and do not copy on access.
101
+ * Buffer properties are stable immutable values. Use copy() explicitly for mutable storage.
78
102
  */
79
- export interface SnapshotPart extends FinalizedPart {
103
+ export interface ModelPart extends ImmutableTriangleMesh {
104
+ /** Stable semantic identity. */
105
+ readonly id: string;
106
+ /** Optional six-digit hexadecimal display color. */
107
+ readonly color?: string;
108
+ /** Facts and indexed topology counts measured from these world-space manufacturing buffers. */
109
+ readonly measurements: TriangleMeshTopologyAnalysis;
80
110
  /** Validated geometry in local coordinates, independent of placement and appearance. */
81
111
  readonly geometry: GeometryResource;
82
- /** XYZ translation in millimetres after rotation. */
83
- readonly position: Vector3Data;
84
- /** Fixed global X, then Y, then Z rotation in degrees. */
85
- readonly rotation: Vector3Data;
112
+ /** Immutable rigid local-to-world row-major 4x4 matrix; translation uses millimetres. */
113
+ readonly transform: Transform3Data;
86
114
  }
87
- /** Captured immutable revision; disposal never changes another snapshot or an in-flight export. */
88
- export interface ModelSnapshot extends FinalizedModel {
115
+ /** Durable immutable generation data, independent of session lifetime. */
116
+ export interface ModelResult {
117
+ /** Exact axis-aligned world bounds in millimetres. */
118
+ readonly bounds: Bounds3Data;
119
+ /** Aggregate manufacturing facts in millimetres and engine execution timings in milliseconds. */
120
+ readonly stats: {
121
+ /** Declared output instances, including repeated geometry. */
122
+ readonly partCount: number;
123
+ /** Aggregate position-buffer vertices across instances. */
124
+ readonly vertexCount: number;
125
+ /** Aggregate indexed triangles across instances. */
126
+ readonly triangleCount: number;
127
+ /** Signed enclosed volume in cubic millimetres. */
128
+ readonly signedVolume: number;
129
+ /** Bytes occupied by finalized world-space position and index buffers, counting shared buffers once. */
130
+ readonly byteCount: number;
131
+ /** Synchronous declaration duration in milliseconds. */
132
+ readonly buildMs: number;
133
+ /** Validation and finalization duration in milliseconds. */
134
+ readonly finalizeMs: number;
135
+ /** Total elapsed generation duration including cleanup, in milliseconds. */
136
+ readonly generateMs: number;
137
+ };
89
138
  /** Ordered world-space parts, each referring to reusable local geometry. */
90
- readonly parts: readonly SnapshotPart[];
139
+ readonly parts: readonly ModelPart[];
140
+ /** Returns the part with this exact semantic ID; throws with available IDs when missing. */
141
+ part(id: string): ModelPart;
91
142
  /** Nonblocking diagnostics emitted for this revision. */
92
143
  readonly diagnostics: readonly GenerationDiagnostic[];
93
144
  /** Known dependency graph; outer reads remain conservative model-wide dependencies. */
94
145
  readonly dependencies: ModelDependencies;
95
- /**
96
- * Releases this snapshot's geometry references and invalidates its parts, bounds and stats accessors.
97
- * Idempotent. Diagnostics, dependencies and previously obtained parts remain usable.
98
- */
99
- dispose(): void;
100
146
  }
101
147
  /** Known dependencies for inspection; plain JavaScript bindings do not reveal their parameter origin. */
102
148
  export interface ModelDependencies {
103
- /** Parameter keys read outside computed callbacks, affecting structure or ordinary code. */
149
+ /** Parameter keys read outside memo functions, affecting structure or ordinary code. */
104
150
  readonly modelParameters: readonly string[];
105
151
  /** Direct dependencies recorded by successfully evaluated computations. */
106
152
  readonly computations: readonly {
107
- /** Session-local computation identity. */
153
+ /** Revision-local diagnostic memo identity; it is not a cache key. */
108
154
  readonly id: string;
109
155
  /** Direct top-level parameter reads. */
110
156
  readonly parameters: readonly string[];
111
- /** Direct computed-reader dependencies. */
157
+ /** Known object-value dependencies between memo calls; scalar origins are not observable. */
112
158
  readonly computations: readonly string[];
113
159
  }[];
114
- /** Part reader roots and known transitive parameter dependencies. */
160
+ /** Known memo origins of part geometry and placement, and their parameter dependencies. */
115
161
  readonly parts: readonly {
116
162
  /** Stable semantic output part identity. */
117
163
  readonly id: string;
118
- /** Computed readers supplied as geometry or placement roots. */
164
+ /** Memo calls known to contribute object values to geometry or placement. */
119
165
  readonly computations: readonly string[];
120
166
  /** Known transitive parameter dependencies through these roots. */
121
167
  readonly parameters: readonly string[];
122
168
  }[];
123
169
  }
124
- /** Stateful execution owner; a failed revision cannot change previously returned snapshots. */
125
- export interface ModelSession<P> {
126
- /** Generates an atomic manufacturing snapshot or throws; parameters are copied and frozen. */
127
- run(params: Readonly<P>): ModelSnapshot;
128
- /** Runs declaration and reached assertions without realizing returned parts. */
129
- validate(params: Readonly<P>): readonly GenerationDiagnostic[];
130
- /** Clears optional caches without invalidating captured snapshots. */
170
+ /** Stateful execution owner; a failed revision cannot change previously returned results. */
171
+ export interface ModelSession<P extends object> {
172
+ /** Generates durable immutable data or throws; parameters are copied and frozen. Empty parameters may be omitted. */
173
+ run(
174
+ ...args: Record<never, never> extends P
175
+ ? [parameters?: Readonly<P>]
176
+ : [parameters: Readonly<P>]
177
+ ): ModelResult;
178
+ /** Returns reached assertion errors and warnings without finalizing returned geometry; unexpected errors throw. */
179
+ check(
180
+ ...args: Record<never, never> extends P
181
+ ? [parameters?: Readonly<P>]
182
+ : [parameters: Readonly<P>]
183
+ ): readonly GenerationDiagnostic[];
184
+ /** Clears optional caches without invalidating returned results. */
131
185
  clearCache(): void;
132
- /** Releases session ownership; idempotent, captured snapshots remain usable. */
186
+ /** Releases session ownership; idempotent, returned results remain usable. */
133
187
  dispose(): void;
134
188
  }
135
- /**
136
- * Manufacturing buffers accepted by the snapshot exporter.
137
- */
138
- export interface ExportMeshPart extends TriangleMesh {
139
- /** Stable canonical lowercase identity; unique within the containing topology or output. */
140
- readonly id: string;
141
- /** Optional six-digit hex RGB display color. */
142
- readonly color?: string;
143
- }
144
- /**
145
- * Completed-snapshot serialization settings; filename selection belongs to the host.
146
- */
147
- export interface Export3mfOptions {
148
- /** Optional bounded geometric solid checks on captured buffers; defaults to indexed topology validation. */
149
- readonly meshValidation?: "topology" | "solid";
150
- /** Document display name; defaults to MetaMesh model. */
151
- readonly name?: string;
152
- }
153
189
  /** Kernel asset initialization. Networking and Worker ownership remain with the host. */
154
190
  export interface ModelEngineOptions {
155
191
  /** Fixed kernel WASM asset URL; defaults to the package asset. Browser hosts supply their emitted URL. */
@@ -164,18 +200,13 @@ export declare const modelingWasmUrl: string;
164
200
 
165
201
  /**
166
202
  * Runs declaration and immediate assertions without initializing a kernel or finalizing parts.
167
- * Geometry observations require an initialized session's `validate` method instead.
203
+ * Returns reached assertion errors and warnings; unexpected execution failures throw.
204
+ * Returned geometry is not realized or validated.
205
+ * Geometry observations require an initialized session's `check` method instead.
168
206
  */
169
- export declare function validateModel<P, S>(
207
+ export declare function checkModel<P extends object, S>(
170
208
  program: ModelProgram<P, S>,
171
- params: Readonly<P>,
172
- ...settings: keyof S extends never
173
- ? [options?: SessionOptions<S>]
174
- : [
175
- options: SessionOptions<S> & {
176
- readonly services: S;
177
- },
178
- ]
209
+ ...args: ModelRunArguments<P, S, SessionOptions<S>>
179
210
  ): readonly GenerationDiagnostic[];
180
211
  /**
181
212
  * Initializes one host kernel and returns a lifecycle-safe engine. No generator initializes WASM.
@@ -184,20 +215,12 @@ export declare function validateModel<P, S>(
184
215
  * ```ts
185
216
  * import { box, generate } from "@metamesh/modeling";
186
217
  * import { createModelEngine } from "@metamesh/modeling/engine";
218
+ * import { export3mf } from "@metamesh/modeling/export";
187
219
  *
188
220
  * const engine = await createModelEngine();
189
221
  * const model = generate<Record<never, never>>(({ part }) => [part("body", box({ size: [30, 20, 8] }))]);
190
- * const session = engine.createSession(model);
191
- * try {
192
- * const snapshot = session.run({});
193
- * try {
194
- * await engine.export3mf(snapshot.parts);
195
- * } finally {
196
- * snapshot.dispose();
197
- * }
198
- * } finally {
199
- * session.dispose();
200
- * }
222
+ * const result = engine.run(model);
223
+ * await export3mf(result.parts);
201
224
  * ```
202
225
  */
203
226
  export declare function createModelEngine(
@@ -0,0 +1,2 @@
1
+ export { export3mf, write3mf } from "./export.js";
2
+ export type { ExportDiagnostic, ExportFormat, ExportGeometry, ExportLimits, ExportMaterial, ExportOptions, ExportPart, ExportReport, ExportedFile, ExportSink, Export3mfOptions } from "./export.js";
@@ -0,0 +1,2 @@
1
+ export { exportGlb, writeGlb } from "./export.js";
2
+ export type { ExportDiagnostic, ExportFormat, ExportGeometry, ExportLimits, ExportMaterial, ExportOptions, ExportPart, ExportReport, ExportedFile, ExportSink, ExportGlbOptions } from "./export.js";
@@ -0,0 +1,2 @@
1
+ export { exportStl, writeStl } from "./export.js";
2
+ export type { ExportDiagnostic, ExportFormat, ExportGeometry, ExportLimits, ExportMaterial, ExportOptions, ExportPart, ExportReport, ExportedFile, ExportSink, ExportStlOptions } from "./export.js";
@@ -0,0 +1,160 @@
1
+ import type {
2
+ ImmutableBuffer,
3
+ TriangleMeshInput,
4
+ Transform3Data,
5
+ } from "@metamesh/modeling/geometry";
6
+
7
+ /** Local millimetre, Z-up indexed geometry; optional unit normals describe display shading only. */
8
+ export type ExportGeometry = TriangleMeshInput & {
9
+ /** One finite unit XYZ normal per position; omitted normals are derived for GLB. */
10
+ readonly normals?: Float32Array | ImmutableBuffer<Float32Array>;
11
+ };
12
+ /** A semantic part referencing reusable local geometry, with placement and appearance kept separate. */
13
+ export interface ExportPart {
14
+ /** Unique canonical lowercase kebab-case identity, at most 64 characters. */
15
+ readonly id: string;
16
+ /** Local geometry; engine results and decoded Worker parts are accepted directly. */
17
+ readonly geometry: ExportGeometry;
18
+ /** Proper rigid row-major local-to-world matrix; translations are millimetres. Defaults to identity. */
19
+ readonly transform?: Transform3Data;
20
+ /** Six-digit sRGB display color; overrides the assigned material's suggested display color. */
21
+ readonly color?: string;
22
+ /** Stable print material identity from options.materials; never inferred from display color. */
23
+ readonly materialId?: string;
24
+ }
25
+ /** Portable print material intent. Equal display colors do not merge different identities. */
26
+ export interface ExportMaterial {
27
+ /** Unique canonical lowercase kebab-case identity, preserved by 3MF as the base-material name. */
28
+ readonly id: string;
29
+ /** Suggested six-digit sRGB display color; does not select filament, extruder, or physical tray. */
30
+ readonly color: string;
31
+ }
32
+ /** Supported completed-mesh file formats. */
33
+ export type ExportFormat = "3mf" | "stl" | "glb";
34
+ /** Independent trusted export ceilings; output limits also apply to streaming writers. */
35
+ export interface ExportLimits {
36
+ /** Maximum selected semantic parts. */
37
+ readonly maxParts: number;
38
+ /** Maximum aggregate input vertices across selected instances. */
39
+ readonly maxVertices: number;
40
+ /** Maximum aggregate input triangles across selected instances. */
41
+ readonly maxTriangles: number;
42
+ /** Maximum captured unique numeric buffer-view bytes, including authored normals. */
43
+ readonly maxBytes: number;
44
+ /** Maximum encoded file bytes; defaults to 512 MiB. */
45
+ readonly maxOutputBytes: number;
46
+ }
47
+ /** Shared serialization policy; hosts own scheduling, filenames, and delivery. */
48
+ export interface ExportOptions {
49
+ /** Display name, one through 1024 valid XML characters; defaults to MetaMesh model. */
50
+ readonly name?: string;
51
+ /** Explicit export ceilings, independent of engine/session configuration. */
52
+ readonly limits?: Partial<ExportLimits>;
53
+ /** Topology validation by default; solid additionally checks bounded intersections and shell nesting. */
54
+ readonly meshValidation?: "topology" | "solid";
55
+ /** Portable material identities referenced by parts. No slicer or device mapping is implied. */
56
+ readonly materials?: readonly ExportMaterial[];
57
+ /** Cancellation checked between bounded writing tasks; browser hosts should schedule CPU work in a Worker. */
58
+ readonly signal?: AbortSignal;
59
+ }
60
+ /** 3MF serialization of closed manufacturing meshes in millimetres; colored output uses the standard Materials extension. */
61
+ export type Export3mfOptions = ExportOptions;
62
+ /** Binary STL serialization in millimetres; open triangle surfaces are permitted by default. */
63
+ export type ExportStlOptions = ExportOptions;
64
+ /** Uncompressed glTF 2.0 binary serialization; converts millimetres/Z-up to metres/Y-up. */
65
+ export interface ExportGlbOptions extends ExportOptions {
66
+ /** Normal smoothing threshold in degrees from zero through 180; defaults to 20. Authored normals take precedence. */
67
+ readonly creaseAngle?: number;
68
+ }
69
+ /** Expected information loss imposed by the selected file format. */
70
+ export interface ExportDiagnostic {
71
+ /** Stable category; human-readable wording is not an API contract. */
72
+ readonly code:
73
+ | "APPEARANCE_DROPPED"
74
+ | "MATERIAL_ASSIGNMENTS_DROPPED"
75
+ | "PART_NAMES_DROPPED";
76
+ /** Description of the information the selected format cannot preserve. */
77
+ readonly message: string;
78
+ /** Affected semantic part identities, in input order. */
79
+ readonly partIds: readonly string[];
80
+ }
81
+ /** Completed writer metadata; successful completion means the sink accepted every chunk. */
82
+ export interface ExportReport {
83
+ /** Registered file media type. */
84
+ readonly mediaType: string;
85
+ /** File extension without a leading dot. */
86
+ readonly extension: ExportFormat;
87
+ /** Expected format losses; invalid input and failed delivery reject instead. */
88
+ readonly diagnostics: readonly ExportDiagnostic[];
89
+ /** Encoded bytes delivered to the sink. */
90
+ readonly byteLength: number;
91
+ }
92
+ /** Owned file bytes and format metadata, usable in both Node and browsers. */
93
+ export interface ExportedFile extends ExportReport {
94
+ /** Fresh mutable bytes; never aliases the input snapshot. */
95
+ readonly bytes: Uint8Array<ArrayBuffer>;
96
+ }
97
+ /** Receives owned chunks in order. Writers await each call for backpressure; the host closes its destination. */
98
+ export type ExportSink = (chunk: Uint8Array) => void | Promise<void>;
99
+
100
+ /** Default standalone export policy: 64 parts, one million vertices, two million triangles, 96 MiB input, 512 MiB output. */
101
+ export declare const defaultExportLimits: ExportLimits;
102
+
103
+ /**
104
+ * Serializes a captured model as binary STL in millimetres and Z-up coordinates.
105
+ * Placement is baked into triangles. Diagnostics describe dropped names, appearance and materials.
106
+ * Mutable input is captured before the first await; no engine or renderer is needed.
107
+ */
108
+ export declare function exportStl(
109
+ parts: readonly ExportPart[],
110
+ options?: ExportStlOptions,
111
+ ): Promise<ExportedFile>;
112
+ /**
113
+ * Writes owned binary STL chunks to a sink, awaiting backpressure after each bounded chunk.
114
+ * The host owns sink completion and recovery after failure. Honors cancellation and output limits.
115
+ */
116
+ export declare function writeStl(
117
+ parts: readonly ExportPart[],
118
+ sink: ExportSink,
119
+ options?: ExportStlOptions,
120
+ ): Promise<ExportReport>;
121
+
122
+ /**
123
+ * Writes 3MF with local mesh reuse, semantic parts, rigid placement, and standard color groups.
124
+ * Colored output requires the Materials extension. Explicit material IDs remain distinct base-material
125
+ * names, combined with appearance through multiproperties; display colors never select filament.
126
+ * Captures mutable inputs before awaiting and awaits each owned output chunk for backpressure.
127
+ * The host owns destination closing and cleanup of partial output after rejection.
128
+ */
129
+ export declare function write3mf(
130
+ parts: readonly ExportPart[],
131
+ sink: ExportSink,
132
+ options?: Export3mfOptions,
133
+ ): Promise<ExportReport>;
134
+ /** Serializes selected completed meshes as an owned 3MF file without initializing an engine. */
135
+ export declare function export3mf(
136
+ parts: readonly ExportPart[],
137
+ options?: Export3mfOptions,
138
+ ): Promise<ExportedFile>;
139
+
140
+ /**
141
+ * Serializes captured local meshes as uncompressed glTF 2.0 binary, in metres and Y-up.
142
+ * Preserves named parts, placement, shared geometry and display appearance. Authored normals take
143
+ * precedence over crease-aware shading; no engine, renderer or optional compression codec is loaded.
144
+ */
145
+ export declare function exportGlb(
146
+ parts: readonly ExportPart[],
147
+ options?: ExportGlbOptions,
148
+ ): Promise<ExportedFile>;
149
+ /**
150
+ * Writes owned GLB chunks with backpressure, cancellation and explicit output limits.
151
+ * Plans accessor and container lengths before writing, then emits bounded binary chunks.
152
+ * Hosts own sink completion, scheduling and recovery after a partially written failure.
153
+ */
154
+ export declare function writeGlb(
155
+ parts: readonly ExportPart[],
156
+ sink: ExportSink,
157
+ options?: ExportGlbOptions,
158
+ ): Promise<ExportReport>;
159
+
160
+ /** Runtime-independent completed-mesh export. All input coordinates are millimetres, right-handed, and Z-up. @packageDocumentation */