@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,507 +1,44 @@
1
1
  # Geometry API concepts
2
2
 
3
- Choose shapes, paths, profiles, and modules, then compose immutable geometry with clear sampling and preflight limits.
3
+ Choose geometry representations and modules, then find the conventions and host setup for your model.
4
4
 
5
- Use Sections for filled 2D shapes, Solids for 3D material, and paths or profiles for boundaries
6
- and correspondence. Import modeling functions from the package root:
5
+ Modeling separates the shape you describe from the host that evaluates it. Build immutable
6
+ Sections and Solids for material, use pure geometry values for calculations, and let Studio or
7
+ your standalone engine produce the finished result.
7
8
 
9
+ ## Choose the representation
8
10
 
11
+ | You need | Use |
12
+ | ------------------------------------------------------ | -------------------------------- |
13
+ | Filled material for Booleans, extrusion, or revolution | A `Section` or `Solid` |
14
+ | Sampled coordinates and traversal queries | A `Path2`, `Path3`, or `Contour` |
15
+ | Matching landmarks across cross sections | An identified `Profile` family |
16
+ | Triangle buffers for a renderer or mesh algorithm | A `TriangleMesh` |
9
17
 
10
- ```ts
11
- import { box, cylinder } from "@metamesh/modeling";
12
- import { generate } from "@metamesh/project";
13
- ```
18
+ [Geometry values and representations](geometry-values.md) explains these choices,
19
+ plain interchange data, and conversion between them. [Placement](transforms-and-placement.md)
20
+ covers vectors, transforms, anchors, patterns, and bounds. [Resolution and inspection](resolution-and-inspection.md)
21
+ explains sampling, preflight guarantees, and evaluated measurements.
14
22
 
23
+ ## Choose the module
15
24
 
25
+ - [`@metamesh/modeling`](../reference/model.md): shapes, Booleans, construction, and generation programs.
26
+ - [`@metamesh/modeling/geometry`](../reference/geometry.md): pure paths, profiles, transforms, and calculations.
27
+ - [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md): triangle mesh construction, processing, and inspection.
28
+ - [`@metamesh/modeling/engine`](../reference/engine.md): standalone execution and finalization.
29
+ - [`@metamesh/modeling/export`](../reference/export.md): renderer-independent STL, 3MF, and GLB export.
30
+ - [`@metamesh/modeling/text`](../reference/text.md): exact font preparation and vector layouts.
16
31
 
17
- Studio supplies the API and runtime to code Projects. Standalone applications use the same
18
- values in a generation program. Use the [Model API reference](../reference/model.md) for exact
19
- signatures.
32
+ Constructing and combining ordinary recipes doesn't need an engine. Geometry observations run
33
+ inside synchronous generation. The host owns evaluation, prepared services, and native resources;
34
+ [inspect the result](resolution-and-inspection.md#lifecycle-and-inspection) before relying
35
+ on its dimensions.
20
36
 
21
- ## Choose a modeling path
37
+ ## Choose where to run
22
38
 
23
- | Starting intent | Construction | Main decision |
24
- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
25
- | A block, cylinder, sphere, or cone | Primitives and [solid Booleans](fundamentals.md#choose-the-boolean-by-the-material-you-want) | Combine material or remove it with cutters |
26
- | A plate, gasket, logo, or outline with holes | A filled `Section`, section Booleans or offsets, then [extrusion](recipes.md#section-hole-offset-and-extrusion) | Solve the outline before adding thickness |
27
- | A hollow sleeve with a flange, cup, or knob | [Revolve a closed radial profile](recipes.md#revolve-a-radial-profile) around +Z | Describe the material, including walls and bores, in radius/height coordinates |
28
- | A routed strip or tube | [Sweep a section along a path](recipes.md#rotation-minimizing-path-sweep) | Choose section orientation and the closed seam |
29
- | A transition between different cross sections | [Loft corresponding boundaries](recipes.md#matched-section-loft) | Match landmarks and holes between stations |
30
- | Repeated holes or features | [Patterns and placement](recipes.md#primitive-booleans-and-repeated-placement) | Position one feature before repeating it |
31
- | Separate mating parts | [Explicit anchors](recipes.md#named-anchors-and-custom-frames) and [shared thread settings](https://metamesh.studio/docs/develop/printable-threads) | Share a mating datum and clearance decisions |
39
+ - **Studio:** follow the [code Project path](https://metamesh.studio/docs/develop#follow-the-studio-path). Studio supplies
40
+ controls, prepared services, preview, and export.
41
+ - **Locally:** follow the [standalone path](https://metamesh.studio/docs/engine#follow-the-standalone-path). The CLI or
42
+ your application supplies the host.
32
43
 
33
- Combine these constructions as needed: join a flange to a sleeve, then bore either with a
34
- repeated cutter. Prefer an existing primitive when it fits; use `tube` for a concentric straight
35
- sleeve.
36
-
37
- Start with synchronous generation and return named parts. Geometry values are immutable recipes
38
- that the host evaluates. Add `computed` when expensive work stays unchanged across edits. See
39
- [generation and parameter changes](generation.md#start-with-generate) and the
40
- [standalone CLI entry contract](https://metamesh.studio/docs/develop/agent-authoring#model-entries).
41
-
42
- ## Choose the module for your host
43
-
44
- | Import | Use it for | Who owns execution |
45
- | --------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------- |
46
- | [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, transforms, Booleans, sweeps, lofts, and patterns | A synchronous generation program |
47
- | [`@metamesh/modeling/geometry`](../reference/geometry.md) | Pure paths, profiles, calculations, and indexed meshes | Your ordinary TypeScript code |
48
- | [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
49
- | [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
50
-
51
- Construct shapes, vectors, paths, and transforms in ordinary TypeScript and reuse them in
52
- synchronous generation. The host owns evaluation, observations, and export.
53
-
54
- ## Use Modeling outside Studio
55
-
56
- Start with a [complete standalone model](standalone-model.md), or follow
57
- [Run Modeling in your application](hosting.md)
58
- to initialize the engine, build a model, load WASM, and export its completed snapshot.
59
- For lettering, [prepare exact font bytes](fonts.md) before building.
60
-
61
- ## Geometry vocabulary
62
-
63
- Choose the representation by the information you need to retain:
64
-
65
- | Representation | Retains | Typical use |
66
- | -------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------ |
67
- | `Vector2` / `Vector3` | Immutable finite coordinates and arithmetic methods | Readable calculations |
68
- | `Path2` / `Path3` | Sampled points, traversal order, and closure | Trajectories and boundary queries |
69
- | `Contour` | One closed boundary's point tuples, without a repeated endpoint | Custom calculations and meshing |
70
- | `PolygonData` / `RegionData` | One exterior plus holes / a collection of filled polygons | Serialized filled topology |
71
- | `Profile` / `ProfileContour2` | Identified family topology / one closed boundary of identified spans | Correspondence across related shapes |
72
- | `CorrespondingProfile` | Shared sampled landmarks from `matchProfiles` | Loft or sweep stations |
73
- | `Section` / `Solid` | Immutable filled 2D / 3D recipes | Booleans and model construction |
74
- | `Vector2Data` / `Vector3Data`, `Path2Data` / `Path3Data` | Vector tuples and complete path records | Interchange and numerical kernels |
75
- | `Bounds2` / `Bounds3` | Immutable axis-aligned extents and measurement methods | Containment and placement queries |
76
- | `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
77
- | `Anchor3` | An attachment frame | Relative placement |
78
-
79
- `Section` and `Solid` are opaque immutable recipes. Construction and composition need no engine;
80
- ordinary recipes can be reused across sessions regardless of where they were constructed.
81
- Explicitly supplied resolution settings are captured; unspecified settings inherit the evaluating
82
- host's defaults. The host owns evaluation caches and native kernel values. `components()` is an
83
- observation: its selected shapes, and recipes using them, can only be evaluated in the originating
84
- session because component identity depends on evaluated topology.
85
-
86
- Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
87
- contour factories such as `circleContour` and `rectangleContour` when custom calculations or
88
- meshing need point data. These rectangle factories share size, center, corner treatment, and
89
- sampling options:
90
-
91
- | You need | Choose | Result |
92
- | ------------------------------------------------- | --------------------------------------------------------------- | --------- |
93
- | Filled material for Booleans or extrusion | [`rectangle`](../reference/model/rectangle.md) | `Section` |
94
- | Sampled boundary coordinates | [`rectangleContour`](../reference/geometry/rectangleContour.md) | `Contour` |
95
- | Stable edge and corner identities across stations | [`rectangleProfile`](../reference/geometry/rectangleProfile.md) | `Profile` |
96
-
97
- [`polygon`](../reference/model/polygon.md) fills boundaries in four forms:
98
-
99
- - `polygon(points)` fills one contour.
100
- - `polygon({ outer, holes })` validates exterior/hole topology and normalizes winding.
101
- - `polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
102
- explicit `"evenodd"` fill.
103
- - `polygon({ polygons: data })` accepts existing `RegionData`.
104
-
105
- Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
106
- disconnected components. Use `section.toRegionData()` inside synchronous generation to observe
107
- the evaluated shape; keep serialized point data for interchange or pure preparation.
108
-
109
- `rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
110
- identified spans for custom geometry. Prepare a complete explicit family with `matchProfiles`
111
- when loft stations or a sweep need authored holes, seams, or landmarks beyond ordinary primitives.
112
-
113
- Identified spans also accept cubic Béziers with the same endpoints and controls as
114
- [`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
115
- grid; physical sampling refines every member before choosing the family count. Collapsed spans
116
- retain repeated logical slots, while the completed loft removes degenerate faces.
117
-
118
- ## Choose fluent values or standalone algorithms
119
-
120
- Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
121
- `path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
122
- outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
123
- [`sweepMesh`](../reference/geometry/sweepMesh.md), or
124
- [`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
125
-
126
- ### Fluent vector and tuple arithmetic
127
-
128
- Tuple kernels remain useful in numerical loops. The same arithmetic can be written in either form:
129
-
130
-
131
-
132
- ```ts
133
- import { vector3 } from "@metamesh/modeling";
134
- import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry";
135
-
136
- export const fluentDirection = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
137
- export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10);
138
- // fluentDirection.toData() and tupleDirection contain the same coordinates.
139
- ```
140
-
141
-
142
-
143
- Fluent vectors validate finite inputs and results and allocate immutable values. Basic tuple
144
- arithmetic such as `add3` avoids those wrappers and assumes valid inputs; overflow can produce
145
- nonfinite results. Individual kernels document additional checks, such as zero-length rejection
146
- in `normalize3`.
147
-
148
- ## Value and data naming
149
-
150
- Modeling values use domain names such as `Vector2`, `Transform2`, `Path2`, and `Bounds2`.
151
- Their plain representations consistently use `Data`: `Vector2Data`, `Transform2Data`,
152
- `Path2Data`, and `Bounds2Data`. Each value exposes `toData()` for a stable, deeply frozen
153
- representation, and its factory accepts that data again. `Input` types describe accepted values,
154
- data, and any supported construction shorthand.
155
-
156
- Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
157
- and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
158
- when a numerical algorithm needs only coordinates; use the full record to retain topology.
159
- Options, reports, geometry descriptors, and recipes keep their descriptive contracts. Use
160
- `toTriangleMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a mesh
161
- or a Section as a region.
162
-
163
- ## Query paths and preserve closure
164
-
165
- Use `path2(points, { closed: true })` or `path3(points, { closed: true })` for a reusable boundary.
166
- `length()` includes the closing edge. [`closestPoint`](../reference/geometry/Path3-type.md#closestpoint)
167
- returns a [`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
168
- millimetres, `edgeIndex`, and clamped `fraction` within that edge. Equal-distance ties select the
169
- first edge in traversal order. The fraction is local to an edge; it is not a whole-path or analytic
170
- curve parameter.
171
-
172
- ### Path coordinate round trip
173
-
174
-
175
-
176
- ```ts
177
- import { path3 } from "@metamesh/modeling";
178
-
179
- export const boundary = path3(
180
- [
181
- [0, 0, 0],
182
- [10, 0, 0],
183
- [10, 10, 0],
184
- [0, 10, 0],
185
- ],
186
- { closed: true }
187
- );
188
- export const nearest = boundary.closestPoint([-2, 5, 0]);
189
- // point: [0, 5, 0], distance: 2, edgeIndex: 3, fraction: 0.5
190
- export const restoredPath = path3(boundary.toData());
191
- // Both paths include the closing edge and have length 40 mm.
192
- ```
193
-
194
-
195
-
196
- `toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
197
- value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
198
- Closed paths omit the duplicated endpoint. Open paths may be empty; their bounds are `undefined`,
199
- and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
200
- not a filled interior or underlying analytic curve.
201
-
202
- Chain `transform`, `reverse`, and equal-distance `resample` to create new paths. Transforming a path
203
- preserves traversal even after reflection. `polygon(path)` requires a closed planar value and
204
- establishes exterior/hole winding; `stroke`, sweeps, and path patterns accept paths in the matching
205
- dimension. Authored point collections accept fluent vectors or tuples; serialized data uses tuples.
206
-
207
- ## Compose modeling operations
208
-
209
- Name meaningful intermediate values and choose a curve tolerance that preserves the required
210
- shape. Many high-resolution Boolean operands increase generation time.
211
-
212
- Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
213
- filled Section and `box({ size: [24, 16, 6] })` creates a Solid. `union` and `intersect`
214
- combine same-dimensional arrays. `shape.subtract(cutters)` accepts an array of same-dimensional
215
- cutters. `section.offset(distance, options)` stays in the filled XY plane.
216
-
217
- - `section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
218
- `center: true` is requested.
219
- - `section.revolve({ degrees })` rotates radial/Z geometry around +Z.
220
- - `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
221
- rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. Invertible
222
- XY transforms must keep consistent handedness. Use corresponding Profile stations for custom
223
- topology. Boolean Sections and point contours need a `correspondence` method (`"direct"`,
224
- `"reindex"`, `"fast-distance"`, or `"distance"`) or explicit profiles; contour order alone does
225
- not establish semantic correspondence.
226
- - `section.sweep(path, options)` supports open or closed paths, degree twist, uniform/XY/per-station
227
- scales, and an explicit compatible closed seam.
228
-
229
- ## Coordinates, units, and resolution
230
-
231
- MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
232
- tolerances are millimetres; angular arguments such as `rotate` use degrees.
233
- Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-value rotations also take degrees.
234
- The low-level [`rotationTransform3`](../reference/geometry/rotationTransform3.md) constructor
235
- requires an explicit `{ degrees }` or `{ radians }` angle.
236
-
237
- `GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
238
- chord error, 16–512 segments per complete circle, and no maximum segment length. Settings apply
239
- in this order:
240
-
241
- 1. An operation-specific `segments` or `circularSegments` count.
242
- 2. The operation's local `resolution`.
243
- 3. Host session defaults.
244
-
245
- A shape does not carry its sampling policy into later operations; pass it explicitly where needed.
246
-
247
- Use an exact segment count for intentionally faceted geometry or when two sampled contours must
248
- match point for point. Use physical chord and segment limits for ordinary printable curves. If a
249
- requested tolerance cannot fit within the safety cap, the operation fails instead of silently
250
- returning a coarser shape.
251
-
252
- `regularPolygon({ radius, sides, rotation, sizing })` makes a filled regular polygon.
253
- `sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
254
- meet the nominal radius. `circle` and `cylinder` support the same radial convention.
255
-
256
- Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
257
- `profile` points:
258
-
259
- - Boxes select disjoint named edges or groups; rectangles select individual corners.
260
- - Cylinder/frustum and straight convex extrusion rims use independent `ends.bottom` and `ends.top`.
261
- - Zero radius, zero chamfer/smooth distance, or an all-zero distance pair leaves a feature untreated.
262
- Other setback pairs require two positive values; negative and nonfinite amounts reject.
263
- - Disabled extrusion end treatments retain ordinary support, including holes and twist.
264
-
265
- `attachment` maps a shape-local anchor to a world anchor after construction, using alignment,
266
- millimetre gap, and degree spin. It accepts named or explicit anchors; Sections must stay in XY.
267
-
268
- ## Reuse a transform across shapes and coordinates
269
-
270
- Use [`transform2`](../reference/geometry/transform2.md) and
271
- [`transform3`](../reference/geometry/transform3.md) chains for reusable placements. They are immutable
272
- and pure; no engine initialization is needed. Calls apply in written order. A rotation followed
273
- by a translation rotates around the origin, then moves the result:
274
-
275
-
276
-
277
- ```ts
278
- import { transform3, vector3 } from "@metamesh/modeling";
279
-
280
- // Calls apply in written order: rotate, then translate.
281
- const placement = transform3().rotate([0, 0, 90]).translate([20, 0, 5]);
282
- export const placedPoint = placement.applyPoint([10, 0, 0]); // approximately [20, 10, 5]
283
- export const placedDirection = placement.applyDirection([10, 0, 0]); // approximately [0, 10, 0]
284
- ```
285
-
286
-
287
-
288
- Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
289
- matching path helpers. `toData()` supplies a canonical matrix when another system needs it.
290
- Construct the placement once and reuse it across point collections.
291
-
292
- `current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
293
- same-dimensional matrix. `inverse()` returns the reverse placement. Transform-building operations
294
- return new chains, so shared placements can branch safely.
295
-
296
- Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
297
- the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
298
- Z; `rotateAxis(axis, degrees, { pivot })` normalizes its nonzero axis. Omitted pivots use the
299
- coordinate origin. Uniform and per-axis scales must be finite and nonzero; negative factors reflect.
300
- Nonfinite inputs, invalid axes, and singular matrices throw `GeometryError`.
301
-
302
- `applyPoint` includes translation. `applyDirection` excludes translation and preserves scale;
303
- its result is not normalized. `applyNormal` applies the inverse transpose and returns a unit normal,
304
- including under nonuniform scaling; it rejects zero normals. All three return fluent vectors.
305
-
306
- `Transform2` works directly with Sections and pure XY helpers; its `Transform2Data` is the same
307
- canonical 3x3 representation throughout. Use `to3D()` when that XY placement
308
- also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
309
- that move the XY plane or collapse its dimensions; it does not project 3D points.
310
- See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
311
-
312
- ### Transform composition order
313
-
314
- For low-level matrix interoperability, the factories accept existing canonical matrices. Use
315
- `transform3(frameTransform3(frame))` for an orthonormal frame. The raw constructors and
316
- `composeTransform3(after, before)` remain available; composition applies `before` first:
317
-
318
-
319
-
320
- ```ts
321
- import { transform3 } from "@metamesh/modeling";
322
- import { applyTransformPoint3, composeTransform3 } from "@metamesh/modeling/geometry";
323
-
324
- const current = transform3().rotate([0, 0, 90]);
325
- const next = transform3().translate([20, 0, 5]);
326
- export const chainedPoint = current.andThen(next).applyPoint([10, 0, 0]);
327
- export const composedPoint = applyTransformPoint3(
328
- composeTransform3(next.toData(), current.toData()),
329
- [10, 0, 0]
330
- ); // Both results are approximately [20, 10, 5].
331
- export const reversedPoint = next.andThen(current).applyPoint([10, 0, 0]);
332
- // approximately [0, 30, 5]
333
- ```
334
-
335
-
336
-
337
- ## Calculate with vectors
338
-
339
- Use [`vector2`](../reference/geometry/vector2.md) and [`vector3`](../reference/geometry/vector3.md)
340
- for readable arithmetic chains. Operands accept tuples or vectors; `dot`, `length` and `distance`
341
- return numbers. `cross` returns a signed scalar in 2D and a right-handed vector in 3D.
342
-
343
-
344
-
345
- ```ts
346
- export const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
347
- export const alignment = direction.dot([0, 0, 1]); // number
348
- ```
349
-
350
-
351
-
352
- Values snapshot their input and operations return new values. `toData()` returns the value's
353
- frozen coordinate tuple without allocating another copy. Normalization rejects zero-length vectors;
354
- nonfinite coordinates, scalar parameters and overflowing results throw `GeometryError`.
355
-
356
- For rotations and nonuniform scaling, use a reusable transform's `applyDirection`. Use
357
- `applyNormal` for surface normals:
358
-
359
-
360
-
361
- ```ts
362
- const stretched = transform3().scale([2, 1, 1]);
363
- export const normal = stretched.applyNormal([1, 1, 0]);
364
- export const tangent = stretched.applyDirection([1, -1, 0]);
365
- export const perpendicular = normal.dot(tangent); // approximately 0
366
- ```
367
-
368
-
369
-
370
- Fluent math, shape transforms, and part placement accept vector values directly. Serialized
371
- geometry and low-level kernels use tuples. Keep model-specific equations beside the model.
372
-
373
- ## Measure and compare bounds
374
-
375
- Use [`bounds2`](../reference/geometry/bounds2.md) and
376
- [`bounds3`](../reference/geometry/bounds3.md) for immutable axis-aligned bounds. `size()` and
377
- `center()` return fluent vectors. `containsBounds(other)` tests positioned containment in the
378
- same coordinate frame, including touching boundaries. It does not establish a manufacturing fit.
379
-
380
-
381
-
382
- ```ts
383
- import { bounds3 } from "@metamesh/modeling";
384
- import {
385
- extrudeMesh,
386
- fitBounds,
387
- layoutRow,
388
- meshBounds,
389
- rectangleContour,
390
- } from "@metamesh/modeling/geometry";
391
-
392
- export const envelope = bounds3({ min: [-10, -5, 0], max: [10, 5, 8] });
393
- export const size = envelope.size(); // Vector3: [20, 10, 8] mm
394
- export const center = envelope.center(); // Vector3: [0, 0, 4] mm
395
-
396
- const mesh = extrudeMesh(rectangleContour({ size: [12, 6] }), { height: 4 });
397
- // Mesh measurements are plain data. Wrap once for fluent queries.
398
- export const measured = bounds3(meshBounds(mesh));
399
- export const fits = envelope.containsBounds(measured); // true
400
- export const data = measured.toData(); // Frozen { min, max } record for interchange.
401
-
402
- // Collection and placement algorithms accept bounds values directly.
403
- export const fitting = fitBounds(measured, envelope, { maxScale: 1 });
404
- export const positions = layoutRow([measured, envelope], { gap: 2 });
405
- ```
406
-
407
-
408
-
409
- Factories snapshot finite, ordered coordinates with finite extents; zero extents are valid.
410
- Alternatively construct from nonnegative dimensions with `bounds2({ size: [30, 18] })` or
411
- `bounds3({ size: [30, 18, 8], center: false })`. Size construction centers on the origin by default;
412
- size and min/max construction are mutually exclusive.
413
- `min` and `max` are frozen tuples, and `toData()` returns the value's stable frozen plain record.
414
- Path `bounds()` queries return matching fluent bounds, or `undefined` for an empty path.
415
- Mesh and region measurements, inspection results, and engine snapshots retain plain
416
- `Bounds2Data` or `Bounds3Data`; wrap a measurement when you need fluent queries.
417
- Compiled Generator packages passing bounds values to host recipes or computed data require
418
- runtime `9.0.0` or newer in major 9.
419
-
420
- Keep [`fitBounds`](../reference/geometry/fitBounds.md) and
421
- [`layoutRow`](../reference/geometry/layoutRow.md) as standalone algorithms: they compute placement
422
- reports and collection layouts. Both accept values or plain records. Supply bounds after any
423
- intended rotation; an axis-aligned box alone does not describe the underlying shape.
424
-
425
- ## SVG sections: fills and strokes are different inputs
426
-
427
- [`svgSection`](../reference/model/svgSection.md) converts a bounded complete SVG document into one
428
- painted `Section`. Supported visible **fills and bounded strokes both contribute geometry**. It
429
- handles supported shapes, paths, affine transforms, physical root units, `viewBox` scaling, and
430
- allowlisted inline fill and stroke presentation.
431
-
432
- [`svgPathSection`](../reference/model/svgPathSection.md) accepts SVG path-data text rather than a
433
- document. It is a **fill-only** path operation: stroke styling is not part of that contract. Path
434
- units default to millimetres and can be converted with its scale option.
435
-
436
- Both functions convert SVG's Y-down plane to MetaMesh's Y-up plane and center the final painted
437
- bounds by default. Use `origin: "document"` with `svgSection` when the converted document viewport
438
- origin must remain meaningful. Adaptive flattening happens after supported transforms and unit
439
- conversion, so tolerances apply in final millimetre space.
440
-
441
- Unsupported layout or external content fails rather than disappearing silently. The current public
442
- contract does not include nested SVG viewports, `<use>`, images, live text, external stylesheets,
443
- clipping, masks, filters, scripts, animation, gradients, patterns, uploaded project assets, or
444
- custom font files. Use the [SVG extrusion recipe](recipes.md#svg-parameter-and-extrusion)
445
- for a complete authored example.
446
-
447
- ## Text and font variability
448
-
449
- `services.text.layout()` shapes text inside generation. Cache an expensive shared layout with
450
- `computed`, measure its `metrics`, and pass it to `textSection(layout())`. There is no
451
- ambient font provider or repeated shaping during export. Declare a Text control for the wording
452
- and a Font control for the face and weight.
453
-
454
- Font size is the em size in millimetres, not the height of a particular letter. Layout supports
455
- horizontal lines, spacing, and alignment, or a single circular baseline through
456
- [`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). Follow the
457
- [text recipe](recipes.md#text-from-a-font-parameter) for the control setup,
458
- layout conventions, and font availability limits.
459
-
460
- ## Printable threads
461
-
462
- The public API provides coordinated external threads, internal cutters, and threaded nuts. Reuse
463
- one profile and fit policy across mating parts, then prove them with a short calibration print.
464
-
465
- Follow [Build printable threads](https://metamesh.studio/docs/develop/printable-threads) for the illustrated workflow,
466
- complete source, profile and fit choices, end treatments, and links into the exact API contracts.
467
-
468
- ## Check preflight guarantees
469
-
470
- Preflights expose operation-specific checks and reports. Read their return contracts before
471
- using a successful result as a guarantee:
472
-
473
- - [`preflightHeightfield`](../reference/geometry/preflightHeightfield.md) checks grid dimensions,
474
- coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
475
- and byte counts without evaluating heights.
476
- - [`preflightHelicalThreadSolidMesh`](../reference/geometry/preflightHelicalThreadSolidMesh.md)
477
- and related thread preflights check dimensions, sampling, and conservative allocation estimates.
478
- They return the sampling plan without constructing the final mesh or native solid.
479
- - [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
480
- SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
481
- at the selected resolution; they do not predict later mesh allocation.
482
-
483
- The `/geometry` preflights run without an engine and use explicit options or package defaults.
484
- The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
485
- [`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
486
- [`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
487
- model execution and use the host's resolution and limits.
488
-
489
- Passing a preflight covers its documented checks. Construction can still fail during callback
490
- evaluation, meshing, or native evaluation. Constructors enforce their applicable limits even when
491
- you omit an explicit preflight; preflight is an optional planning and diagnostics step.
492
-
493
- ## Lifecycle and inspection
494
-
495
- Studio or your standalone host owns initialization, cleanup, finalization, Worker recovery,
496
- preview, and file delivery. Do not manually delete `Section` or `Solid` values. Use
497
- `inspectSection()` and `inspectSolid()` for bounds, topology counts, area, and volume.
498
-
499
- Observations, including `section.toRegionData()`, require the host's active synchronous generation.
500
- Constructing or composing a recipe outside generation does not evaluate it.
501
-
502
- An inspection result describes the generated geometry; it does not certify wall thickness,
503
- overhangs, fits, loads, or manufacturability. Keep those product decisions in parameters,
504
- validation, and your downstream manufacturing checks.
505
-
506
- - [Use geometry recipes](recipes.md)
507
- - [Browse exact signatures](../reference/model.md)
44
+ When you're ready to shape a part, choose a [worked modeling technique](recipes.md).
@@ -2,9 +2,9 @@
2
2
 
3
3
  Prepare licensed font bytes and a reusable text layout before building a model outside Studio.
4
4
 
5
- Load font bytes before synchronous generation. Your application supplies bytes for a font you
6
- are licensed to use and prepares them through the optional `@metamesh/modeling/text` entry point.
7
- In Studio, use the [Font control recipe](recipes.md#text-from-a-font-parameter).
5
+ To add lettering outside Studio, load a font you're licensed to use and prepare it through the
6
+ optional `@metamesh/modeling/text` entry point before synchronous generation. In Studio, use the
7
+ [Font control recipe](svg-and-text.md#text-from-a-font-parameter).
8
8
 
9
9
  ## Install font support
10
10
 
@@ -15,11 +15,12 @@ pnpm add fontkit
15
15
  pnpm add woff2-encoder
16
16
  ```
17
17
 
18
- TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. The library
19
- does not fetch fonts; your application supplies their bytes.
18
+ TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. Your
19
+ application supplies the font bytes; the library doesn't fetch them.
20
20
 
21
- For a static face whose actual weight is not 400, pass that weight through `staticWeight` when
22
- preparing it. This identifies the supplied face; it does not synthesize another weight.
21
+ If you're using a static face whose actual weight isn't 400, pass that weight through
22
+ `staticWeight` when preparing it. This identifies the supplied face; it doesn't synthesize
23
+ another weight.
23
24
 
24
25
  ## Prepare one reusable layout
25
26
 
@@ -44,17 +45,17 @@ export async function makeLabelLayout(fontBytes: Uint8Array): Promise<{
44
45
 
45
46
 
46
47
 
47
- Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and metrics
48
- in Y-up millimetres, plus a separate `svg` string.
48
+ Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and
49
+ measurements in millimetres, with Y pointing up, plus a separate `svg` string.
49
50
 
50
51
  Pass the `layout` to [`textSection`](../reference/model/textSection.md) inside generation, then
51
52
  extrude the filled section. Prepare layouts ahead of time, or supply a deterministic text service
52
- and cache layouts with `computed`.
53
+ and cache layouts with `memo`.
53
54
 
54
55
  The same layout options support horizontal lines or one circular line through
55
- [`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). The
56
- [text recipe](recipes.md#text-from-a-font-parameter) explains units, alignment,
56
+ [`VectorTextArcBaseline`](../reference/geometry/VectorTextArcBaseline.md). The
57
+ [text recipe](svg-and-text.md#text-from-a-font-parameter) explains units, alignment,
57
58
  metrics, and circular-text constraints.
58
59
 
59
60
  Use the [Font preparation reference](../reference/text.md) for font and layout options, or
60
- [Run Modeling in your application](hosting.md) for the host lifecycle.
61
+ [Run Modeling in your application](hosting.md) for engine setup, export, and cleanup.