@metamesh/modeling 0.18.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 (843) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +73 -57
  3. package/dist/api/engine.d.ts +7 -47
  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 +7 -7
  9. package/dist/api/index.d.ts +85 -35
  10. package/dist/api/mesh.d.ts +35 -6
  11. package/dist/docs/guides/concepts.md +32 -535
  12. package/dist/docs/guides/fonts.md +4 -4
  13. package/dist/docs/guides/generation.md +52 -45
  14. package/dist/docs/guides/geometry-values.md +193 -0
  15. package/dist/docs/guides/hosting.md +53 -30
  16. package/dist/docs/guides/profiles-and-extrusion.md +252 -0
  17. package/dist/docs/guides/recipes.md +33 -780
  18. package/dist/docs/guides/resolution-and-inspection.md +133 -0
  19. package/dist/docs/guides/solid-joins.md +126 -0
  20. package/dist/docs/guides/standalone-model.md +1 -1
  21. package/dist/docs/guides/svg-and-text.md +215 -0
  22. package/dist/docs/guides/sweeps-and-lofts.md +179 -0
  23. package/dist/docs/guides/transforms-and-placement.md +313 -0
  24. package/dist/docs/manifest.json +2818 -5862
  25. package/dist/docs/reference/engine/GenerationOptions.md +10 -4
  26. package/dist/docs/reference/engine/GeometryResource.md +8 -2
  27. package/dist/docs/reference/engine/ModelDependencies.md +9 -3
  28. package/dist/docs/reference/engine/ModelEngine.md +9 -3
  29. package/dist/docs/reference/engine/ModelEngineOptions.md +9 -3
  30. package/dist/docs/reference/engine/ModelPart.md +9 -3
  31. package/dist/docs/reference/engine/ModelResult.md +8 -2
  32. package/dist/docs/reference/engine/ModelRunArguments.md +7 -1
  33. package/dist/docs/reference/engine/ModelRunOptions.md +10 -4
  34. package/dist/docs/reference/engine/ModelSession.md +7 -1
  35. package/dist/docs/reference/engine/SessionOptions.md +10 -4
  36. package/dist/docs/reference/engine/categories/host-lifecycle.md +3 -8
  37. package/dist/docs/reference/engine/checkModel.md +7 -1
  38. package/dist/docs/reference/engine/createModelEngine.md +10 -3
  39. package/dist/docs/reference/engine/defaultModelingLimits.md +9 -3
  40. package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
  41. package/dist/docs/reference/engine.md +7 -7
  42. package/dist/docs/reference/export/Export3mfOptions.md +24 -0
  43. package/dist/docs/reference/export/ExportDiagnostic.md +59 -0
  44. package/dist/docs/reference/export/ExportFormat.md +25 -0
  45. package/dist/docs/reference/export/ExportGeometry.md +39 -0
  46. package/dist/docs/reference/export/ExportGlbOptions.md +118 -0
  47. package/dist/docs/reference/export/ExportLimits.md +83 -0
  48. package/dist/docs/reference/export/ExportMaterial.md +47 -0
  49. package/dist/docs/reference/export/ExportOptions.md +94 -0
  50. package/dist/docs/reference/export/ExportPart.md +88 -0
  51. package/dist/docs/reference/export/ExportReport.md +82 -0
  52. package/dist/docs/reference/export/ExportSink.md +39 -0
  53. package/dist/docs/reference/export/ExportStlOptions.md +24 -0
  54. package/dist/docs/reference/export/ExportedFile.md +110 -0
  55. package/dist/docs/reference/export/categories/mesh-serialization.md +47 -0
  56. package/dist/docs/reference/export/defaultExportLimits.md +20 -0
  57. package/dist/docs/reference/export/export3mf.md +64 -0
  58. package/dist/docs/reference/export/exportGlb.md +68 -0
  59. package/dist/docs/reference/export/exportStl.md +64 -0
  60. package/dist/docs/reference/export/write3mf.md +71 -0
  61. package/dist/docs/reference/export/writeGlb.md +75 -0
  62. package/dist/docs/reference/export/writeStl.md +71 -0
  63. package/dist/docs/reference/export.md +21 -0
  64. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +16 -2
  65. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +7 -1
  66. package/dist/docs/reference/geometry/Anchor3-type.md +13 -3
  67. package/dist/docs/reference/geometry/ArcCurve2.md +8 -2
  68. package/dist/docs/reference/geometry/ArcCurve3.md +8 -2
  69. package/dist/docs/reference/geometry/AttachOptions.md +13 -3
  70. package/dist/docs/reference/geometry/AxisAngleRotation3.md +9 -3
  71. package/dist/docs/reference/geometry/Bevel.md +16 -2
  72. package/dist/docs/reference/geometry/BevelSize.md +16 -2
  73. package/dist/docs/reference/geometry/Bounds2-type.md +18 -4
  74. package/dist/docs/reference/geometry/Bounds2Data.md +22 -4
  75. package/dist/docs/reference/geometry/Bounds2Input.md +18 -4
  76. package/dist/docs/reference/geometry/Bounds2Options.md +14 -4
  77. package/dist/docs/reference/geometry/Bounds3-type.md +18 -4
  78. package/dist/docs/reference/geometry/Bounds3Data.md +18 -4
  79. package/dist/docs/reference/geometry/Bounds3Input.md +18 -4
  80. package/dist/docs/reference/geometry/Bounds3Options.md +14 -4
  81. package/dist/docs/reference/geometry/BoundsFit2.md +10 -4
  82. package/dist/docs/reference/geometry/BoundsFit3.md +10 -4
  83. package/dist/docs/reference/geometry/BoundsFitOptions.md +10 -4
  84. package/dist/docs/reference/geometry/BoxAnchorFace.md +9 -3
  85. package/dist/docs/reference/geometry/BoxAnchorOptions.md +9 -3
  86. package/dist/docs/reference/geometry/BoxEdge.md +11 -1
  87. package/dist/docs/reference/geometry/BoxEdgeSelection.md +11 -1
  88. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +11 -1
  89. package/dist/docs/reference/geometry/BoxOptions.md +11 -1
  90. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +16 -2
  91. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +16 -2
  92. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +11 -1
  93. package/dist/docs/reference/geometry/CircleContourOptions.md +12 -2
  94. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +15 -1
  95. package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
  96. package/dist/docs/reference/geometry/CircularSampling.md +7 -1
  97. package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
  98. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +8 -2
  99. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -2
  100. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +8 -2
  101. package/dist/docs/reference/geometry/Contour.md +12 -2
  102. package/dist/docs/reference/geometry/ContourCurve.md +8 -2
  103. package/dist/docs/reference/geometry/ContourPoint.md +8 -2
  104. package/dist/docs/reference/geometry/ContourSegment.md +8 -2
  105. package/dist/docs/reference/geometry/CorrespondingComponent.md +12 -2
  106. package/dist/docs/reference/geometry/CorrespondingContour.md +12 -2
  107. package/dist/docs/reference/geometry/CorrespondingProfile.md +12 -2
  108. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +12 -2
  109. package/dist/docs/reference/geometry/CubicBezierCurve2.md +8 -2
  110. package/dist/docs/reference/geometry/CubicBezierCurve3.md +8 -2
  111. package/dist/docs/reference/geometry/Curve2.md +8 -2
  112. package/dist/docs/reference/geometry/Curve3.md +8 -2
  113. package/dist/docs/reference/geometry/CurveSamplingOptions.md +16 -2
  114. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +16 -2
  115. package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
  116. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +9 -3
  117. package/dist/docs/reference/geometry/CylinderOptions.md +11 -1
  118. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -2
  119. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -2
  120. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +8 -2
  121. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +8 -2
  122. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +8 -2
  123. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +8 -2
  124. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +8 -2
  125. package/dist/docs/reference/geometry/CylindricalGearSpec.md +8 -2
  126. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
  127. package/dist/docs/reference/geometry/EdgeTreatment.md +11 -1
  128. package/dist/docs/reference/geometry/EllipseContourOptions.md +12 -2
  129. package/dist/docs/reference/geometry/EndTreatments.md +12 -2
  130. package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +16 -2
  131. package/dist/docs/reference/geometry/ExtrudeOptions.md +13 -3
  132. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +16 -2
  133. package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
  134. package/dist/docs/reference/geometry/Frame3.md +16 -2
  135. package/dist/docs/reference/geometry/GeometryError.md +11 -1
  136. package/dist/docs/reference/geometry/GeometryErrorCode.md +11 -1
  137. package/dist/docs/reference/geometry/GeometryErrorContext.md +11 -1
  138. package/dist/docs/reference/geometry/GeometryResolution.md +15 -1
  139. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +16 -2
  140. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +15 -1
  141. package/dist/docs/reference/geometry/GridPatternOptions.md +12 -2
  142. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +12 -2
  143. package/dist/docs/reference/geometry/HeightfieldOptions.md +16 -2
  144. package/dist/docs/reference/geometry/HeightfieldPreflight.md +12 -2
  145. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +9 -3
  146. package/dist/docs/reference/geometry/ImmutableBuffer-type.md +16 -14
  147. package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +17 -3
  148. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +12 -2
  149. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +12 -2
  150. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +8 -2
  151. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +8 -2
  152. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +12 -2
  153. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +12 -2
  154. package/dist/docs/reference/geometry/LineCurve2.md +8 -2
  155. package/dist/docs/reference/geometry/LineCurve3.md +8 -2
  156. package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -2
  157. package/dist/docs/reference/geometry/LoftCorrespondence.md +16 -2
  158. package/dist/docs/reference/geometry/LoftMeshStation.md +12 -2
  159. package/dist/docs/reference/geometry/LoftOptions.md +16 -2
  160. package/dist/docs/reference/geometry/LoftPlacement.md +16 -2
  161. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +8 -2
  162. package/dist/docs/reference/geometry/MatchProfilesOptions.md +12 -2
  163. package/dist/docs/reference/geometry/MetricFastenerSize.md +8 -2
  164. package/dist/docs/reference/geometry/MetricFastenerStandard.md +8 -2
  165. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +8 -2
  166. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +8 -2
  167. package/dist/docs/reference/geometry/ModelingLimits.md +19 -1
  168. package/dist/docs/reference/geometry/NumericArray.md +16 -2
  169. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
  170. package/dist/docs/reference/geometry/Path2-type.md +16 -2
  171. package/dist/docs/reference/geometry/Path2Data.md +16 -2
  172. package/dist/docs/reference/geometry/Path2Input.md +16 -2
  173. package/dist/docs/reference/geometry/Path3-type.md +16 -2
  174. package/dist/docs/reference/geometry/Path3Data.md +16 -2
  175. package/dist/docs/reference/geometry/Path3Input.md +16 -2
  176. package/dist/docs/reference/geometry/PathFrame.md +8 -2
  177. package/dist/docs/reference/geometry/PathLocation.md +16 -2
  178. package/dist/docs/reference/geometry/PathNormalGuide.md +16 -2
  179. package/dist/docs/reference/geometry/PathOptions.md +12 -2
  180. package/dist/docs/reference/geometry/PathPatternOptions.md +12 -2
  181. package/dist/docs/reference/geometry/PathPlacement.md +8 -2
  182. package/dist/docs/reference/geometry/PathResamplingOptions.md +16 -2
  183. package/dist/docs/reference/geometry/Pivot2Options.md +17 -3
  184. package/dist/docs/reference/geometry/Pivot3Options.md +17 -3
  185. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +12 -2
  186. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +12 -2
  187. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +12 -2
  188. package/dist/docs/reference/geometry/PlanarPatchQuality.md +12 -2
  189. package/dist/docs/reference/geometry/PolygonData.md +12 -2
  190. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
  191. package/dist/docs/reference/geometry/PrimitiveAttachment.md +11 -1
  192. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +11 -1
  193. package/dist/docs/reference/geometry/PrintableThreadFit.md +12 -2
  194. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +12 -2
  195. package/dist/docs/reference/geometry/Profile.md +8 -2
  196. package/dist/docs/reference/geometry/ProfileComponent2.md +12 -2
  197. package/dist/docs/reference/geometry/ProfileContour2.md +12 -2
  198. package/dist/docs/reference/geometry/ProfileSpan2.md +12 -2
  199. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +11 -1
  200. package/dist/docs/reference/geometry/RackPitchDimensions.md +8 -2
  201. package/dist/docs/reference/geometry/RackPitchSpec.md +8 -2
  202. package/dist/docs/reference/geometry/RadialPatternOptions.md +12 -2
  203. package/dist/docs/reference/geometry/RadialSizing.md +11 -1
  204. package/dist/docs/reference/geometry/RadialSizingOptions.md +11 -1
  205. package/dist/docs/reference/geometry/RectangleContourOptions.md +12 -2
  206. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +12 -2
  207. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +12 -2
  208. package/dist/docs/reference/geometry/RectangleProfileOptions.md +8 -2
  209. package/dist/docs/reference/geometry/RegionData.md +12 -2
  210. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
  211. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
  212. package/dist/docs/reference/geometry/RevolveOptions.md +16 -2
  213. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +11 -1
  214. package/dist/docs/reference/geometry/RowLayoutOptions.md +10 -4
  215. package/dist/docs/reference/geometry/SampleContourOptions.md +8 -2
  216. package/dist/docs/reference/geometry/SampleHelixOptions.md +8 -2
  217. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +8 -2
  218. package/dist/docs/reference/geometry/SampledCurve2.md +8 -2
  219. package/dist/docs/reference/geometry/SampledCurve3.md +8 -2
  220. package/dist/docs/reference/geometry/SampledThreadHelices.md +8 -2
  221. package/dist/docs/reference/geometry/SideProfileCurve.md +8 -2
  222. package/dist/docs/reference/geometry/SideProfilePoint.md +8 -2
  223. package/dist/docs/reference/geometry/SideProfileSegment.md +8 -2
  224. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +11 -1
  225. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +12 -2
  226. package/dist/docs/reference/geometry/SphereOptions.md +11 -1
  227. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +16 -2
  228. package/dist/docs/reference/geometry/StarContourOptions.md +12 -2
  229. package/dist/docs/reference/geometry/StrokeCap.md +12 -2
  230. package/dist/docs/reference/geometry/StrokeJoin.md +12 -2
  231. package/dist/docs/reference/geometry/StrokeOptions.md +12 -2
  232. package/dist/docs/reference/geometry/SvgImportOptions.md +8 -2
  233. package/dist/docs/reference/geometry/SvgRegionPreflight.md +8 -2
  234. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +8 -2
  235. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +8 -2
  236. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +8 -2
  237. package/dist/docs/reference/geometry/SweepOptions.md +16 -2
  238. package/dist/docs/reference/geometry/SweepOrientation.md +16 -2
  239. package/dist/docs/reference/geometry/ThreadBevelOptions.md +12 -2
  240. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +8 -2
  241. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +8 -2
  242. package/dist/docs/reference/geometry/ThreadEndStyle.md +16 -2
  243. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +16 -2
  244. package/dist/docs/reference/geometry/ThreadHandedness.md +16 -2
  245. package/dist/docs/reference/geometry/ThreadHelixOptions.md +8 -2
  246. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +16 -2
  247. package/dist/docs/reference/geometry/ThreadLeadInShape.md +16 -2
  248. package/dist/docs/reference/geometry/ThreadProfile-type.md +16 -2
  249. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
  250. package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
  251. package/dist/docs/reference/geometry/ThreadRidgeOptions.md +16 -2
  252. package/dist/docs/reference/geometry/ThreadRole.md +8 -2
  253. package/dist/docs/reference/geometry/ThreadSolidOptions.md +12 -2
  254. package/dist/docs/reference/geometry/ThreadSolidPreflight.md +16 -2
  255. package/dist/docs/reference/geometry/ThreadedNutOptions.md +12 -2
  256. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +12 -2
  257. package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
  258. package/dist/docs/reference/geometry/ThreadedRodOptions.md +12 -2
  259. package/dist/docs/reference/geometry/TorusOptions.md +11 -1
  260. package/dist/docs/reference/geometry/Transform2-type.md +17 -3
  261. package/dist/docs/reference/geometry/Transform2Data.md +17 -3
  262. package/dist/docs/reference/geometry/Transform2Input.md +17 -3
  263. package/dist/docs/reference/geometry/Transform3-type.md +17 -3
  264. package/dist/docs/reference/geometry/Transform3Data.md +17 -3
  265. package/dist/docs/reference/geometry/Transform3Input.md +17 -3
  266. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +16 -2
  267. package/dist/docs/reference/geometry/TriangleMesh.md +20 -2
  268. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +16 -2
  269. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +12 -2
  270. package/dist/docs/reference/geometry/TriangleMeshInput.md +12 -2
  271. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +16 -2
  272. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +12 -2
  273. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +12 -2
  274. package/dist/docs/reference/geometry/TriangleMeshSignature.md +12 -2
  275. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +12 -2
  276. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +12 -2
  277. package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +16 -2
  278. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +12 -2
  279. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +16 -2
  280. package/dist/docs/reference/geometry/TubeOptions.md +11 -1
  281. package/dist/docs/reference/geometry/Vector2-type.md +17 -3
  282. package/dist/docs/reference/geometry/Vector2Data.md +21 -3
  283. package/dist/docs/reference/geometry/Vector2Input.md +17 -3
  284. package/dist/docs/reference/geometry/Vector3-type.md +17 -3
  285. package/dist/docs/reference/geometry/Vector3Data.md +17 -3
  286. package/dist/docs/reference/geometry/Vector3Input.md +17 -3
  287. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +12 -2
  288. package/dist/docs/reference/geometry/VectorTextLayout.md +16 -2
  289. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +12 -2
  290. package/dist/docs/reference/geometry/VectorTextMetrics.md +16 -2
  291. package/dist/docs/reference/geometry/VectorTextOptions.md +12 -2
  292. package/dist/docs/reference/geometry/add2.md +9 -3
  293. package/dist/docs/reference/geometry/add3.md +9 -3
  294. package/dist/docs/reference/geometry/anchor3.md +9 -3
  295. package/dist/docs/reference/geometry/anchorFrame3.md +8 -2
  296. package/dist/docs/reference/geometry/applyTransformDirection3.md +9 -3
  297. package/dist/docs/reference/geometry/applyTransformPoint3.md +9 -3
  298. package/dist/docs/reference/geometry/attachmentTransform3.md +9 -3
  299. package/dist/docs/reference/geometry/bounds2.md +16 -6
  300. package/dist/docs/reference/geometry/bounds3.md +16 -6
  301. package/dist/docs/reference/geometry/boundsCenter.md +10 -4
  302. package/dist/docs/reference/geometry/boundsSize.md +10 -4
  303. package/dist/docs/reference/geometry/boxAnchor3.md +9 -3
  304. package/dist/docs/reference/geometry/categories/bounds-layout.md +4 -4
  305. package/dist/docs/reference/geometry/categories/curves-paths.md +2 -2
  306. package/dist/docs/reference/geometry/categories/mechanical.md +2 -2
  307. package/dist/docs/reference/geometry/categories/meshes.md +3 -3
  308. package/dist/docs/reference/geometry/categories/pattern-placement.md +2 -2
  309. package/dist/docs/reference/geometry/categories/primitive-options.md +2 -2
  310. package/dist/docs/reference/geometry/categories/profiles-regions.md +2 -2
  311. package/dist/docs/reference/geometry/categories/resolution-errors.md +1 -1
  312. package/dist/docs/reference/geometry/categories/transforms-math.md +3 -3
  313. package/dist/docs/reference/geometry/categories/vector-import.md +2 -2
  314. package/dist/docs/reference/geometry/circleContour.md +8 -2
  315. package/dist/docs/reference/geometry/closeToAxis.md +8 -2
  316. package/dist/docs/reference/geometry/compensateThreadDiameters.md +8 -2
  317. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +8 -2
  318. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +8 -2
  319. package/dist/docs/reference/geometry/composeTransform3.md +9 -3
  320. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +8 -2
  321. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -2
  322. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -2
  323. package/dist/docs/reference/geometry/cross2.md +9 -3
  324. package/dist/docs/reference/geometry/cross3.md +9 -3
  325. package/dist/docs/reference/geometry/cylinderAnchor3.md +9 -3
  326. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
  327. package/dist/docs/reference/geometry/distance2.md +9 -3
  328. package/dist/docs/reference/geometry/distance3.md +9 -3
  329. package/dist/docs/reference/geometry/distributeAlongPath.md +8 -2
  330. package/dist/docs/reference/geometry/dot2.md +9 -3
  331. package/dist/docs/reference/geometry/dot3.md +9 -3
  332. package/dist/docs/reference/geometry/ellipseContour.md +8 -2
  333. package/dist/docs/reference/geometry/eulerTransform3.md +9 -3
  334. package/dist/docs/reference/geometry/fitBounds.md +10 -4
  335. package/dist/docs/reference/geometry/fitTextLayout.md +8 -2
  336. package/dist/docs/reference/geometry/frameTransform3.md +9 -3
  337. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +8 -2
  338. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +8 -2
  339. package/dist/docs/reference/geometry/gridPatternTransforms.md +8 -2
  340. package/dist/docs/reference/geometry/immutableBuffer.md +12 -2
  341. package/dist/docs/reference/geometry/inverseTransform3.md +9 -3
  342. package/dist/docs/reference/geometry/isGeometryError.md +11 -1
  343. package/dist/docs/reference/geometry/layoutRow.md +10 -4
  344. package/dist/docs/reference/geometry/length2.md +9 -3
  345. package/dist/docs/reference/geometry/length3.md +9 -3
  346. package/dist/docs/reference/geometry/lerp2.md +9 -3
  347. package/dist/docs/reference/geometry/lerp3.md +9 -3
  348. package/dist/docs/reference/geometry/linearPatternTransforms.md +8 -2
  349. package/dist/docs/reference/geometry/matchProfiles.md +8 -2
  350. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +8 -2
  351. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +8 -2
  352. package/dist/docs/reference/geometry/normalize2.md +9 -3
  353. package/dist/docs/reference/geometry/normalize3.md +9 -3
  354. package/dist/docs/reference/geometry/normalizeContour.md +8 -2
  355. package/dist/docs/reference/geometry/normalizePolygon.md +8 -2
  356. package/dist/docs/reference/geometry/normalizeRegion.md +8 -2
  357. package/dist/docs/reference/geometry/path2.md +12 -2
  358. package/dist/docs/reference/geometry/path3.md +12 -2
  359. package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -2
  360. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +8 -2
  361. package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
  362. package/dist/docs/reference/geometry/preflightThreadedNut.md +8 -2
  363. package/dist/docs/reference/geometry/preflightThreadedRod.md +8 -2
  364. package/dist/docs/reference/geometry/projectOntoPlane3.md +9 -3
  365. package/dist/docs/reference/geometry/radialPatternTransforms.md +8 -2
  366. package/dist/docs/reference/geometry/rectangleContour.md +8 -2
  367. package/dist/docs/reference/geometry/rectangleProfile.md +8 -2
  368. package/dist/docs/reference/geometry/regionArea.md +8 -2
  369. package/dist/docs/reference/geometry/regionBounds.md +8 -2
  370. package/dist/docs/reference/geometry/regularPolygonContour.md +8 -2
  371. package/dist/docs/reference/geometry/resamplePolyline2.md +8 -2
  372. package/dist/docs/reference/geometry/resamplePolyline3.md +8 -2
  373. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +7 -1
  374. package/dist/docs/reference/geometry/resolveArcSegments.md +7 -1
  375. package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
  376. package/dist/docs/reference/geometry/resolveCircularSegments.md +7 -1
  377. package/dist/docs/reference/geometry/resolveCylindricalGear.md +8 -2
  378. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +8 -2
  379. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +8 -2
  380. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +8 -2
  381. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +7 -1
  382. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +8 -2
  383. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +8 -2
  384. package/dist/docs/reference/geometry/resolveRackPitch.md +8 -2
  385. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -2
  386. package/dist/docs/reference/geometry/rotate2.md +9 -3
  387. package/dist/docs/reference/geometry/rotationTransform3.md +9 -3
  388. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -2
  389. package/dist/docs/reference/geometry/sampleContour.md +8 -2
  390. package/dist/docs/reference/geometry/sampleCurve2.md +8 -2
  391. package/dist/docs/reference/geometry/sampleCurve3.md +8 -2
  392. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +8 -2
  393. package/dist/docs/reference/geometry/sampleHelix.md +8 -2
  394. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +8 -2
  395. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -2
  396. package/dist/docs/reference/geometry/sampleSideProfile.md +8 -2
  397. package/dist/docs/reference/geometry/sampleTextContours.md +8 -2
  398. package/dist/docs/reference/geometry/sampleThreadHelices.md +8 -2
  399. package/dist/docs/reference/geometry/scale2.md +9 -3
  400. package/dist/docs/reference/geometry/scale3.md +9 -3
  401. package/dist/docs/reference/geometry/scaleTransform3.md +9 -3
  402. package/dist/docs/reference/geometry/signedContourArea.md +8 -2
  403. package/dist/docs/reference/geometry/starContour.md +8 -2
  404. package/dist/docs/reference/geometry/strokeRegionData.md +8 -2
  405. package/dist/docs/reference/geometry/subtract2.md +9 -3
  406. package/dist/docs/reference/geometry/subtract3.md +9 -3
  407. package/dist/docs/reference/geometry/threadProfile.md +8 -2
  408. package/dist/docs/reference/geometry/transform2.md +13 -3
  409. package/dist/docs/reference/geometry/transform3.md +13 -3
  410. package/dist/docs/reference/geometry/transformDeterminant3.md +9 -3
  411. package/dist/docs/reference/geometry/transformRegionData.md +8 -2
  412. package/dist/docs/reference/geometry/translationTransform3.md +9 -3
  413. package/dist/docs/reference/geometry/triangulateContour.md +8 -2
  414. package/dist/docs/reference/geometry/validateRigidTransform3.md +9 -3
  415. package/dist/docs/reference/geometry/validateTransform3.md +9 -3
  416. package/dist/docs/reference/geometry/vector2.md +13 -3
  417. package/dist/docs/reference/geometry/vector3.md +13 -3
  418. package/dist/docs/reference/geometry.md +2 -2
  419. package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
  420. package/dist/docs/reference/mesh/RenderMesh.md +68 -0
  421. package/dist/docs/reference/mesh/analyze.md +12 -6
  422. package/dist/docs/reference/mesh/analyzeQuality.md +11 -5
  423. package/dist/docs/reference/mesh/bounds.md +10 -4
  424. package/dist/docs/reference/mesh/categories/operations.md +5 -95
  425. package/dist/docs/reference/mesh/centroid.md +10 -4
  426. package/dist/docs/reference/mesh/extrude.md +11 -5
  427. package/dist/docs/reference/mesh/heightfield.md +11 -5
  428. package/dist/docs/reference/mesh/immutable.md +13 -9
  429. package/dist/docs/reference/mesh/join.md +10 -4
  430. package/dist/docs/reference/mesh/loft.md +11 -5
  431. package/dist/docs/reference/mesh/optimizePlanarPatches.md +11 -5
  432. package/dist/docs/reference/mesh/preflightHeightfield.md +11 -5
  433. package/dist/docs/reference/mesh/preflightThreadSolid.md +10 -4
  434. package/dist/docs/reference/mesh/render.md +57 -0
  435. package/dist/docs/reference/mesh/reverse.md +10 -4
  436. package/dist/docs/reference/mesh/revolve.md +11 -5
  437. package/dist/docs/reference/mesh/signature.md +11 -5
  438. package/dist/docs/reference/mesh/sweep.md +12 -6
  439. package/dist/docs/reference/mesh/threadRidge.md +10 -4
  440. package/dist/docs/reference/mesh/threadSolid.md +10 -4
  441. package/dist/docs/reference/mesh/transform.md +11 -5
  442. package/dist/docs/reference/mesh/validate.md +10 -4
  443. package/dist/docs/reference/mesh/validateSolid.md +10 -4
  444. package/dist/docs/reference/mesh.md +1 -1
  445. package/dist/docs/reference/model/CircleOptions.md +13 -7
  446. package/dist/docs/reference/model/DiagnosticOptions.md +7 -1
  447. package/dist/docs/reference/model/EllipseOptions.md +13 -7
  448. package/dist/docs/reference/model/GenerateCallback.md +7 -1
  449. package/dist/docs/reference/model/GenerateContext.md +14 -39
  450. package/dist/docs/reference/model/GenerationDiagnostic.md +7 -1
  451. package/dist/docs/reference/model/GenerationError.md +8 -2
  452. package/dist/docs/reference/model/HoleCutterOptions.md +17 -10
  453. package/dist/docs/reference/model/HoleCutterOverrun.md +10 -3
  454. package/dist/docs/reference/model/HoleCutterRecess.md +10 -3
  455. package/dist/docs/reference/model/HullOptions.md +13 -6
  456. package/dist/docs/reference/model/ImmutableValue.md +7 -1
  457. package/dist/docs/reference/model/ImplicitOptions.md +12 -6
  458. package/dist/docs/reference/model/JoinOptions.md +76 -0
  459. package/dist/docs/reference/model/JoinTransition.md +54 -0
  460. package/dist/docs/reference/model/KnuckleHinge-type.md +9 -3
  461. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
  462. package/dist/docs/reference/model/KnuckleHingeOptions.md +10 -4
  463. package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
  464. package/dist/docs/reference/model/LoftStation.md +16 -9
  465. package/dist/docs/reference/model/Memo.md +54 -0
  466. package/dist/docs/reference/model/ModelProgram.md +7 -1
  467. package/dist/docs/reference/model/PartDeclaration.md +11 -6
  468. package/dist/docs/reference/model/PartGeometry.md +10 -4
  469. package/dist/docs/reference/model/PartOptions.md +11 -6
  470. package/dist/docs/reference/model/PatternSource.md +10 -4
  471. package/dist/docs/reference/model/PlaneOptions.md +11 -4
  472. package/dist/docs/reference/model/PolygonOptions.md +20 -14
  473. package/dist/docs/reference/model/Profile.md +10 -4
  474. package/dist/docs/reference/model/RectangleOptions.md +28 -22
  475. package/dist/docs/reference/model/RegularPolygonOptions.md +13 -7
  476. package/dist/docs/reference/model/Section.md +68 -74
  477. package/dist/docs/reference/model/SectionHullOptions.md +13 -6
  478. package/dist/docs/reference/model/SectionInspection.md +10 -4
  479. package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
  480. package/dist/docs/reference/model/SectionOffsetOptions.md +12 -6
  481. package/dist/docs/reference/model/Solid.md +101 -53
  482. package/dist/docs/reference/model/SolidInspection.md +10 -4
  483. package/dist/docs/reference/model/SolidSegmentHit.md +11 -5
  484. package/dist/docs/reference/model/StarOptions.md +24 -18
  485. package/dist/docs/reference/model/SvgOrigin.md +10 -4
  486. package/dist/docs/reference/model/SvgPathSectionOptions.md +14 -8
  487. package/dist/docs/reference/model/SvgSectionOptions.md +16 -10
  488. package/dist/docs/reference/model/TextSectionOptions.md +14 -8
  489. package/dist/docs/reference/model/box.md +18 -11
  490. package/dist/docs/reference/model/categories/boolean-operations.md +8 -2
  491. package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -7
  492. package/dist/docs/reference/model/categories/explicit-profiles.md +1 -14
  493. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +6 -20
  494. package/dist/docs/reference/model/categories/generation.md +5 -10
  495. package/dist/docs/reference/model/categories/hinges.md +1 -4
  496. package/dist/docs/reference/model/categories/mesh-inspection.md +2 -6
  497. package/dist/docs/reference/model/categories/primitives.md +5 -21
  498. package/dist/docs/reference/model/categories/sections.md +4 -15
  499. package/dist/docs/reference/model/categories/threads.md +2 -39
  500. package/dist/docs/reference/model/categories/transforms-placement.md +4 -33
  501. package/dist/docs/reference/model/circle.md +10 -4
  502. package/dist/docs/reference/model/cylinder.md +13 -6
  503. package/dist/docs/reference/model/ellipse.md +10 -4
  504. package/dist/docs/reference/model/extrude.md +26 -19
  505. package/dist/docs/reference/model/generate.md +8 -2
  506. package/dist/docs/reference/model/gridPattern.md +15 -9
  507. package/dist/docs/reference/model/heightfield.md +10 -4
  508. package/dist/docs/reference/model/holeCutter.md +10 -3
  509. package/dist/docs/reference/model/hull.md +9 -2
  510. package/dist/docs/reference/model/implicit.md +9 -3
  511. package/dist/docs/reference/model/internalThreadCutter.md +23 -17
  512. package/dist/docs/reference/model/intersect.md +9 -2
  513. package/dist/docs/reference/model/join.md +89 -0
  514. package/dist/docs/reference/model/knuckleHinge.md +7 -1
  515. package/dist/docs/reference/model/linearPattern.md +15 -9
  516. package/dist/docs/reference/model/loft.md +31 -24
  517. package/dist/docs/reference/model/matchProfiles.md +14 -8
  518. package/dist/docs/reference/model/minkowskiSum.md +9 -2
  519. package/dist/docs/reference/model/pathPattern.md +25 -19
  520. package/dist/docs/reference/model/polygon.md +13 -7
  521. package/dist/docs/reference/model/preflightInternalThreadCutter.md +25 -19
  522. package/dist/docs/reference/model/preflightThreadedNut.md +29 -23
  523. package/dist/docs/reference/model/preflightThreadedRod.md +25 -19
  524. package/dist/docs/reference/model/radialPattern.md +15 -9
  525. package/dist/docs/reference/model/rectangle.md +14 -8
  526. package/dist/docs/reference/model/regularPolygon.md +10 -4
  527. package/dist/docs/reference/model/revolve.md +22 -15
  528. package/dist/docs/reference/model/solidFromMesh.md +12 -6
  529. package/dist/docs/reference/model/sphere.md +13 -6
  530. package/dist/docs/reference/model/star.md +12 -6
  531. package/dist/docs/reference/model/stroke.md +21 -15
  532. package/dist/docs/reference/model/svgPathSection.md +12 -6
  533. package/dist/docs/reference/model/svgSection.md +13 -7
  534. package/dist/docs/reference/model/sweep.md +27 -20
  535. package/dist/docs/reference/model/textSection.md +15 -9
  536. package/dist/docs/reference/model/threadRidge.md +21 -15
  537. package/dist/docs/reference/model/threadedNut.md +27 -21
  538. package/dist/docs/reference/model/threadedRod.md +23 -17
  539. package/dist/docs/reference/model/torus.md +20 -13
  540. package/dist/docs/reference/model/tube.md +13 -6
  541. package/dist/docs/reference/model/union.md +9 -2
  542. package/dist/docs/reference/model.md +3 -8
  543. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -1
  544. package/dist/docs/reference/text/VectorFont.md +39 -33
  545. package/dist/docs/reference/text/VectorFontOptions.md +7 -1
  546. package/dist/docs/reference/text/categories/font-preparation.md +1 -13
  547. package/dist/docs/reference/text/prepareVectorFont.md +7 -1
  548. package/dist/docs/reference/text.md +1 -1
  549. package/dist/engine/finalization.js +2 -74
  550. package/dist/engine/index.js +2 -2
  551. package/dist/engine/native/construction-mesh.js +41 -0
  552. package/dist/engine/native/material-components.js +2 -51
  553. package/dist/engine/native/mesh-observation.js +55 -0
  554. package/dist/engine/native/regions.js +2 -1
  555. package/dist/engine/operations/context.js +2 -0
  556. package/dist/engine/operations/extrusion-finishing.js +17 -16
  557. package/dist/engine/operations/join-collar-profile.js +120 -0
  558. package/dist/engine/operations/join.js +508 -0
  559. package/dist/engine/recipe-realization.js +1 -1
  560. package/dist/engine/session/dependencies.js +89 -42
  561. package/dist/engine/session/graph.js +319 -342
  562. package/dist/engine/session/native-cache.js +1 -1
  563. package/dist/engine/session/session.js +5 -5
  564. package/dist/engine/session/snapshot-cache.js +2 -2
  565. package/dist/export/3mf.js +190 -0
  566. package/dist/export/capture.js +178 -0
  567. package/dist/export/glb.js +209 -0
  568. package/dist/export/index.js +5 -0
  569. package/dist/export/limits.js +18 -0
  570. package/dist/export/stl.js +105 -0
  571. package/dist/export/types.js +1 -0
  572. package/dist/export/writer.js +54 -0
  573. package/dist/geometry/bounds-value.js +4 -4
  574. package/dist/geometry/immutable-buffer.js +4 -6
  575. package/dist/geometry/join-geometry.js +839 -0
  576. package/dist/geometry/mesh/mesh-render.js +205 -0
  577. package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
  578. package/dist/geometry/mesh/mesh-solid.js +6 -2
  579. package/dist/geometry/mesh-api.js +1 -0
  580. package/dist/geometry/region-offset.js +278 -0
  581. package/dist/geometry/regions.js +11 -1
  582. package/dist/model/execution-binding.js +3 -3
  583. package/dist/model/generation.js +2 -2
  584. package/dist/model/immutable-generation-data.js +13 -13
  585. package/dist/model/join.js +1 -0
  586. package/dist/model/operations.js +20 -0
  587. package/dist/model/recipe-declaration.js +1 -0
  588. package/dist/model/shape-handles.js +1 -0
  589. package/package.json +18 -1
  590. package/dist/docs/reference/engine/Export3mfOptions.md +0 -46
  591. package/dist/docs/reference/engine/ExportMeshPart.md +0 -31
  592. package/dist/docs/reference/engine/ModelingLimits.md +0 -121
  593. package/dist/docs/reference/engine/export3mf.md +0 -55
  594. package/dist/docs/reference/mesh/AcmeThreadProfileSpec.md +0 -79
  595. package/dist/docs/reference/mesh/Bevel.md +0 -18
  596. package/dist/docs/reference/mesh/BevelSize.md +0 -14
  597. package/dist/docs/reference/mesh/Bounds2.md +0 -125
  598. package/dist/docs/reference/mesh/Bounds2Data.md +0 -43
  599. package/dist/docs/reference/mesh/Bounds2Input.md +0 -19
  600. package/dist/docs/reference/mesh/Bounds3.md +0 -125
  601. package/dist/docs/reference/mesh/Bounds3Data.md +0 -43
  602. package/dist/docs/reference/mesh/Bounds3Input.md +0 -19
  603. package/dist/docs/reference/mesh/ButtressPressureFlankSide.md +0 -14
  604. package/dist/docs/reference/mesh/ButtressThreadProfileSpec.md +0 -97
  605. package/dist/docs/reference/mesh/CircularPrimitiveOptions.md +0 -60
  606. package/dist/docs/reference/mesh/CurveSamplingOptions.md +0 -69
  607. package/dist/docs/reference/mesh/CustomThreadProfileSpec.md +0 -77
  608. package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +0 -129
  609. package/dist/docs/reference/mesh/ExtrusionSamplingOptions.md +0 -81
  610. package/dist/docs/reference/mesh/Frame3.md +0 -62
  611. package/dist/docs/reference/mesh/GeometryResolution.md +0 -74
  612. package/dist/docs/reference/mesh/GeometrySamplingLimits.md +0 -66
  613. package/dist/docs/reference/mesh/GeometryToleranceOptions.md +0 -46
  614. package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +0 -18
  615. package/dist/docs/reference/mesh/HeightfieldOptions.md +0 -72
  616. package/dist/docs/reference/mesh/HeightfieldPreflight.md +0 -58
  617. package/dist/docs/reference/mesh/ImmutableBuffer.md +0 -108
  618. package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +0 -43
  619. package/dist/docs/reference/mesh/LoftCorrespondence.md +0 -24
  620. package/dist/docs/reference/mesh/LoftMeshStation.md +0 -31
  621. package/dist/docs/reference/mesh/LoftOptions.md +0 -88
  622. package/dist/docs/reference/mesh/LoftPlacement.md +0 -70
  623. package/dist/docs/reference/mesh/ModelingLimits.md +0 -130
  624. package/dist/docs/reference/mesh/NumericArray.md +0 -14
  625. package/dist/docs/reference/mesh/Path2.md +0 -197
  626. package/dist/docs/reference/mesh/Path2Data.md +0 -50
  627. package/dist/docs/reference/mesh/Path2Input.md +0 -20
  628. package/dist/docs/reference/mesh/Path3.md +0 -197
  629. package/dist/docs/reference/mesh/Path3Data.md +0 -50
  630. package/dist/docs/reference/mesh/Path3Input.md +0 -20
  631. package/dist/docs/reference/mesh/PathLocation.md +0 -69
  632. package/dist/docs/reference/mesh/PathNormalGuide.md +0 -43
  633. package/dist/docs/reference/mesh/PathResamplingOptions.md +0 -84
  634. package/dist/docs/reference/mesh/Pivot2Options.md +0 -26
  635. package/dist/docs/reference/mesh/Pivot3Options.md +0 -26
  636. package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +0 -14
  637. package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +0 -160
  638. package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +0 -124
  639. package/dist/docs/reference/mesh/PlanarPatchQuality.md +0 -194
  640. package/dist/docs/reference/mesh/RevolveOptions.md +0 -91
  641. package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +0 -38
  642. package/dist/docs/reference/mesh/SquareThreadProfileSpec.md +0 -79
  643. package/dist/docs/reference/mesh/SweepOptions.md +0 -113
  644. package/dist/docs/reference/mesh/SweepOrientation.md +0 -113
  645. package/dist/docs/reference/mesh/ThreadEndStyle.md +0 -14
  646. package/dist/docs/reference/mesh/ThreadEndTreatmentOptions.md +0 -117
  647. package/dist/docs/reference/mesh/ThreadHandedness.md +0 -14
  648. package/dist/docs/reference/mesh/ThreadLeadInEnvelope.md +0 -14
  649. package/dist/docs/reference/mesh/ThreadLeadInShape.md +0 -14
  650. package/dist/docs/reference/mesh/ThreadProfile.md +0 -86
  651. package/dist/docs/reference/mesh/ThreadProfileBaseSpec.md +0 -53
  652. package/dist/docs/reference/mesh/ThreadProfileSpec.md +0 -23
  653. package/dist/docs/reference/mesh/ThreadRidgeOptions.md +0 -145
  654. package/dist/docs/reference/mesh/ThreadSolidOptions.md +0 -222
  655. package/dist/docs/reference/mesh/ThreadSolidPreflight.md +0 -58
  656. package/dist/docs/reference/mesh/Transform2.md +0 -256
  657. package/dist/docs/reference/mesh/Transform2Data.md +0 -14
  658. package/dist/docs/reference/mesh/Transform2Input.md +0 -19
  659. package/dist/docs/reference/mesh/Transform3.md +0 -296
  660. package/dist/docs/reference/mesh/Transform3Data.md +0 -17
  661. package/dist/docs/reference/mesh/Transform3Input.md +0 -19
  662. package/dist/docs/reference/mesh/TrapezoidalThreadProfileSpec.md +0 -96
  663. package/dist/docs/reference/mesh/TriangleMesh.md +0 -34
  664. package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +0 -129
  665. package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +0 -79
  666. package/dist/docs/reference/mesh/TriangleMeshInput.md +0 -19
  667. package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +0 -79
  668. package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +0 -43
  669. package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +0 -194
  670. package/dist/docs/reference/mesh/TriangleMeshSignature.md +0 -111
  671. package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +0 -46
  672. package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +0 -34
  673. package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +0 -131
  674. package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +0 -55
  675. package/dist/docs/reference/mesh/TriangularThreadProfileSpec.md +0 -95
  676. package/dist/docs/reference/mesh/Vector2.md +0 -270
  677. package/dist/docs/reference/mesh/Vector2Data.md +0 -14
  678. package/dist/docs/reference/mesh/Vector2Input.md +0 -19
  679. package/dist/docs/reference/mesh/Vector3.md +0 -282
  680. package/dist/docs/reference/mesh/Vector3Data.md +0 -14
  681. package/dist/docs/reference/mesh/Vector3Input.md +0 -19
  682. package/dist/docs/reference/model/AcmeThreadProfileSpec.md +0 -80
  683. package/dist/docs/reference/model/Anchor3.md +0 -55
  684. package/dist/docs/reference/model/AttachOptions.md +0 -69
  685. package/dist/docs/reference/model/Bevel.md +0 -19
  686. package/dist/docs/reference/model/BevelSize.md +0 -15
  687. package/dist/docs/reference/model/Bounds2-type.md +0 -125
  688. package/dist/docs/reference/model/Bounds2Data.md +0 -44
  689. package/dist/docs/reference/model/Bounds2Input.md +0 -19
  690. package/dist/docs/reference/model/Bounds2Options.md +0 -110
  691. package/dist/docs/reference/model/Bounds3-type.md +0 -125
  692. package/dist/docs/reference/model/Bounds3Data.md +0 -44
  693. package/dist/docs/reference/model/Bounds3Input.md +0 -19
  694. package/dist/docs/reference/model/Bounds3Options.md +0 -110
  695. package/dist/docs/reference/model/BoxEdge.md +0 -15
  696. package/dist/docs/reference/model/BoxEdgeSelection.md +0 -19
  697. package/dist/docs/reference/model/BoxEdgeTreatments.md +0 -20
  698. package/dist/docs/reference/model/BoxOptions.md +0 -92
  699. package/dist/docs/reference/model/ButtressPressureFlankSide.md +0 -15
  700. package/dist/docs/reference/model/ButtressThreadProfileSpec.md +0 -98
  701. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +0 -35
  702. package/dist/docs/reference/model/CircleContourOptions.md +0 -21
  703. package/dist/docs/reference/model/CircularPrimitiveOptions.md +0 -62
  704. package/dist/docs/reference/model/Computed.md +0 -44
  705. package/dist/docs/reference/model/ComputedValue.md +0 -24
  706. package/dist/docs/reference/model/Contour.md +0 -24
  707. package/dist/docs/reference/model/CorrespondingComponent.md +0 -46
  708. package/dist/docs/reference/model/CorrespondingContour.md +0 -46
  709. package/dist/docs/reference/model/CorrespondingProfile.md +0 -22
  710. package/dist/docs/reference/model/CorrespondingProfileStation.md +0 -27
  711. package/dist/docs/reference/model/CurveSamplingOptions.md +0 -68
  712. package/dist/docs/reference/model/CustomThreadProfileSpec.md +0 -78
  713. package/dist/docs/reference/model/CylinderOptions.md +0 -58
  714. package/dist/docs/reference/model/EdgeTreatment.md +0 -22
  715. package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
  716. package/dist/docs/reference/model/EndTreatments.md +0 -39
  717. package/dist/docs/reference/model/ExtrudeMeshOptions.md +0 -133
  718. package/dist/docs/reference/model/ExtrudeOptions.md +0 -149
  719. package/dist/docs/reference/model/ExtrusionSamplingOptions.md +0 -84
  720. package/dist/docs/reference/model/Frame3.md +0 -63
  721. package/dist/docs/reference/model/GeometryError.md +0 -102
  722. package/dist/docs/reference/model/GeometryErrorCode.md +0 -15
  723. package/dist/docs/reference/model/GeometryErrorContext.md +0 -35
  724. package/dist/docs/reference/model/GeometryResolution.md +0 -70
  725. package/dist/docs/reference/model/GeometrySamplingLimits.md +0 -62
  726. package/dist/docs/reference/model/GeometryToleranceOptions.md +0 -46
  727. package/dist/docs/reference/model/GridPatternOptions.md +0 -50
  728. package/dist/docs/reference/model/HeightfieldOptions.md +0 -68
  729. package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -108
  730. package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -43
  731. package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -216
  732. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +0 -77
  733. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +0 -47
  734. package/dist/docs/reference/model/KnuckleHingeSpec.md +0 -18
  735. package/dist/docs/reference/model/LinearPatternOptions.md +0 -39
  736. package/dist/docs/reference/model/LoftCorrespondence.md +0 -27
  737. package/dist/docs/reference/model/LoftOptions.md +0 -91
  738. package/dist/docs/reference/model/LoftPlacement.md +0 -73
  739. package/dist/docs/reference/model/MatchProfilesOptions.md +0 -35
  740. package/dist/docs/reference/model/ModelingLimits.md +0 -126
  741. package/dist/docs/reference/model/NumericArray.md +0 -14
  742. package/dist/docs/reference/model/Path2-type.md +0 -196
  743. package/dist/docs/reference/model/Path2Data.md +0 -50
  744. package/dist/docs/reference/model/Path2Input.md +0 -20
  745. package/dist/docs/reference/model/Path3-type.md +0 -196
  746. package/dist/docs/reference/model/Path3Data.md +0 -50
  747. package/dist/docs/reference/model/Path3Input.md +0 -20
  748. package/dist/docs/reference/model/PathLocation.md +0 -69
  749. package/dist/docs/reference/model/PathNormalGuide.md +0 -46
  750. package/dist/docs/reference/model/PathOptions.md +0 -38
  751. package/dist/docs/reference/model/PathPatternOptions.md +0 -48
  752. package/dist/docs/reference/model/PathResamplingOptions.md +0 -84
  753. package/dist/docs/reference/model/Pivot2Options.md +0 -28
  754. package/dist/docs/reference/model/Pivot3Options.md +0 -28
  755. package/dist/docs/reference/model/PolygonData.md +0 -44
  756. package/dist/docs/reference/model/PrimitiveAttachment.md +0 -39
  757. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +0 -110
  758. package/dist/docs/reference/model/PrintableThreadFit.md +0 -15
  759. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
  760. package/dist/docs/reference/model/ProfileComponent2.md +0 -46
  761. package/dist/docs/reference/model/ProfileContour2.md +0 -36
  762. package/dist/docs/reference/model/ProfileSpan2.md +0 -47
  763. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +0 -41
  764. package/dist/docs/reference/model/RadialPatternOptions.md +0 -59
  765. package/dist/docs/reference/model/RadialSizing.md +0 -15
  766. package/dist/docs/reference/model/RadialSizingOptions.md +0 -40
  767. package/dist/docs/reference/model/RectangleContourOptions.md +0 -72
  768. package/dist/docs/reference/model/RectangleCornerTreatment.md +0 -40
  769. package/dist/docs/reference/model/RectangleCornerTreatments.md +0 -20
  770. package/dist/docs/reference/model/RegionData.md +0 -19
  771. package/dist/docs/reference/model/RevolveOptions.md +0 -94
  772. package/dist/docs/reference/model/RoundedEdgeTreatment.md +0 -96
  773. package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
  774. package/dist/docs/reference/model/SphereOptions.md +0 -20
  775. package/dist/docs/reference/model/SquareThreadProfileSpec.md +0 -80
  776. package/dist/docs/reference/model/StarContourOptions.md +0 -81
  777. package/dist/docs/reference/model/StrokeCap.md +0 -16
  778. package/dist/docs/reference/model/StrokeJoin.md +0 -16
  779. package/dist/docs/reference/model/StrokeOptions.md +0 -91
  780. package/dist/docs/reference/model/SweepOptions.md +0 -116
  781. package/dist/docs/reference/model/SweepOrientation.md +0 -116
  782. package/dist/docs/reference/model/ThreadBevelOptions.md +0 -35
  783. package/dist/docs/reference/model/ThreadEndStyle.md +0 -15
  784. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +0 -118
  785. package/dist/docs/reference/model/ThreadHandedness.md +0 -15
  786. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +0 -15
  787. package/dist/docs/reference/model/ThreadLeadInShape.md +0 -15
  788. package/dist/docs/reference/model/ThreadProfile.md +0 -87
  789. package/dist/docs/reference/model/ThreadProfileBaseSpec.md +0 -54
  790. package/dist/docs/reference/model/ThreadProfileSpec.md +0 -24
  791. package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -141
  792. package/dist/docs/reference/model/ThreadSolidPreflight.md +0 -59
  793. package/dist/docs/reference/model/ThreadedNutOptions.md +0 -263
  794. package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -111
  795. package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
  796. package/dist/docs/reference/model/ThreadedRodOptions.md +0 -216
  797. package/dist/docs/reference/model/TorusOptions.md +0 -110
  798. package/dist/docs/reference/model/Transform2-type.md +0 -257
  799. package/dist/docs/reference/model/Transform2Data.md +0 -16
  800. package/dist/docs/reference/model/Transform2Input.md +0 -21
  801. package/dist/docs/reference/model/Transform3-type.md +0 -297
  802. package/dist/docs/reference/model/Transform3Data.md +0 -19
  803. package/dist/docs/reference/model/Transform3Input.md +0 -21
  804. package/dist/docs/reference/model/TrapezoidalThreadProfileSpec.md +0 -97
  805. package/dist/docs/reference/model/TriangleMesh.md +0 -34
  806. package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -129
  807. package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
  808. package/dist/docs/reference/model/TriangleMeshTopologyAnalysis.md +0 -131
  809. package/dist/docs/reference/model/TriangularThreadProfileSpec.md +0 -96
  810. package/dist/docs/reference/model/TubeOptions.md +0 -67
  811. package/dist/docs/reference/model/Vector2-type.md +0 -271
  812. package/dist/docs/reference/model/Vector2Data.md +0 -15
  813. package/dist/docs/reference/model/Vector2Input.md +0 -21
  814. package/dist/docs/reference/model/Vector3-type.md +0 -283
  815. package/dist/docs/reference/model/Vector3Data.md +0 -15
  816. package/dist/docs/reference/model/Vector3Input.md +0 -21
  817. package/dist/docs/reference/model/VectorTextLayout.md +0 -40
  818. package/dist/docs/reference/model/VectorTextMetrics.md +0 -100
  819. package/dist/docs/reference/model/bounds2.md +0 -37
  820. package/dist/docs/reference/model/bounds3.md +0 -37
  821. package/dist/docs/reference/model/categories/bounds.md +0 -38
  822. package/dist/docs/reference/model/categories/contracts.md +0 -16
  823. package/dist/docs/reference/model/categories/core-values-errors.md +0 -44
  824. package/dist/docs/reference/model/categories/paths.md +0 -42
  825. package/dist/docs/reference/model/categories/resolution.md +0 -20
  826. package/dist/docs/reference/model/immutableBuffer.md +0 -49
  827. package/dist/docs/reference/model/isGeometryError.md +0 -34
  828. package/dist/docs/reference/model/path2.md +0 -54
  829. package/dist/docs/reference/model/path3.md +0 -49
  830. package/dist/docs/reference/model/transform2.md +0 -46
  831. package/dist/docs/reference/model/transform3.md +0 -48
  832. package/dist/docs/reference/model/vector2.md +0 -40
  833. package/dist/docs/reference/model/vector3.md +0 -47
  834. package/dist/docs/reference/text/Bounds2Data.md +0 -34
  835. package/dist/docs/reference/text/Vector2Data.md +0 -7
  836. package/dist/docs/reference/text/VectorTextArcBaseline.md +0 -53
  837. package/dist/docs/reference/text/VectorTextLayout.md +0 -34
  838. package/dist/docs/reference/text/VectorTextLayoutOptions.md +0 -111
  839. package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
  840. package/dist/docs/reference/text/VectorTextOptions.md +0 -50
  841. package/dist/engine/export-3mf.js +0 -23
  842. package/dist/engine/serialize-3mf.js +0 -116
  843. /package/dist/{engine → geometry/mesh}/mesh-view-cache.js +0 -0
@@ -1,547 +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 and Solids for 3D material. Paths describe routes and boundaries;
6
- profiles help you line up related boundaries for a loft or sweep. Import modeling functions from
7
- 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.
8
8
 
9
+ ## Choose the representation
9
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` |
10
17
 
11
- ```ts
12
- import { box, cylinder } from "@metamesh/modeling";
13
- import { generate } from "@metamesh/project";
14
- ```
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.
15
22
 
23
+ ## Choose the module
16
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.
17
31
 
18
- Studio supplies the API and runtime in code Projects. You can use the same values in a standalone
19
- generation program. Use the [Model API reference](../reference/model.md) for exact
20
- 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.
21
36
 
22
- ## Choose a modeling path
37
+ ## Choose where to run
23
38
 
24
- | Starting intent | Construction | Main decision |
25
- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
26
- | 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 |
27
- | 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 |
28
- | 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 |
29
- | A routed strip or tube | [Sweep a section along a path](recipes.md#rotation-minimizing-path-sweep) | Choose section orientation and the closed seam |
30
- | A transition between different cross sections | [Loft corresponding boundaries](recipes.md#matched-section-loft) | Match landmarks and holes between stations |
31
- | Repeated holes or features | [Patterns and placement](recipes.md#primitive-booleans-and-repeated-placement) | Position one feature before repeating it |
32
- | 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.
33
43
 
34
- Combine these approaches as your part needs them: join a flange to a sleeve, then add repeated
35
- holes with cutters. Start with an existing primitive when it fits; `tube` is ready for a
36
- concentric straight sleeve.
37
-
38
- Start with synchronous generation and return named parts. Geometry values describe immutable
39
- recipes that Studio or your standalone engine evaluates. Add `computed` when expensive work
40
- stays unchanged across edits. See
41
- [generation and parameter changes](generation.md#start-with-generate) and the
42
- [standalone CLI entry contract](https://metamesh.studio/docs/develop/agent-authoring#model-entries).
43
-
44
- ## Choose the module for your host
45
-
46
- | Import | Use it for | Who owns execution |
47
- | ---------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------- |
48
- | [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, transforms, Booleans, sweeps, lofts, and patterns | A synchronous generation program |
49
- | [`@metamesh/modeling/geometry`](../reference/geometry.md) | Pure paths, profiles, calculations, and indexed meshes | Your ordinary TypeScript code |
50
- | [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md) | Triangle mesh construction, processing, and inspection | Your ordinary TypeScript code |
51
- | [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
52
- | [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
53
-
54
- Construct shapes, vectors, paths, and transforms in ordinary TypeScript and reuse them in
55
- synchronous generation. Studio or your standalone engine handles evaluation, measurements, and export.
56
-
57
- ## Use Modeling outside Studio
58
-
59
- Start with a [complete standalone model](standalone-model.md), or follow
60
- [Run Modeling in your application](hosting.md)
61
- to initialize the engine, build a model, load WASM, and export the completed result.
62
- For lettering, [prepare exact font bytes](fonts.md) before building.
63
-
64
- ## Geometry vocabulary
65
-
66
- Choose the representation by the information you need to retain:
67
-
68
- | Representation | Retains | Typical use |
69
- | -------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------ |
70
- | `Vector2` / `Vector3` | Immutable finite coordinates and arithmetic methods | Readable calculations |
71
- | `Path2` / `Path3` | Sampled points, traversal order, and closure | Trajectories and boundary queries |
72
- | `Contour` | One closed boundary's point tuples, without a repeated endpoint | Custom calculations and meshing |
73
- | `PolygonData` / `RegionData` | One exterior plus holes / a collection of filled polygons | Serialized filled topology |
74
- | `Profile` / `ProfileContour2` | Identified family topology / one closed boundary of identified spans | Correspondence across related shapes |
75
- | `CorrespondingProfile` | Shared sampled landmarks from `matchProfiles` | Loft or sweep stations |
76
- | `Section` / `Solid` | Immutable filled 2D / 3D recipes | Booleans and model construction |
77
- | `Vector2Data` / `Vector3Data`, `Path2Data` / `Path3Data` | Vector tuples and complete path records | Interchange and numerical kernels |
78
- | `Bounds2` / `Bounds3` | Immutable axis-aligned extents and measurement methods | Containment and placement queries |
79
- | `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
80
- | `Anchor3` | An attachment frame | Relative placement |
81
-
82
- `Section` and `Solid` describe shapes as immutable recipes. You can construct and combine them
83
- without an engine, then reuse ordinary recipes across sessions. Explicit resolution settings
84
- stay with the recipe; omitted settings use the evaluating host's defaults. The host manages
85
- evaluation caches and native kernel values.
86
-
87
- Calling `shape.components()` reads evaluated geometry. Its selected shapes, and recipes using them,
88
- can only be evaluated in their original session because the selection depends on that session's
89
- evaluated topology.
90
-
91
- Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
92
- contour factories such as `circleContour` and `rectangleContour` when custom calculations or
93
- meshing need point data. These rectangle factories share size, center, corner treatment, and
94
- sampling options:
95
-
96
- | You need | Choose | Result |
97
- | ------------------------------------------------- | --------------------------------------------------------------- | --------- |
98
- | Filled material for Booleans or extrusion | [`rectangle`](../reference/model/rectangle.md) | `Section` |
99
- | Sampled boundary coordinates | [`rectangleContour`](../reference/geometry/rectangleContour.md) | `Contour` |
100
- | Stable edge and corner identities across stations | [`rectangleProfile`](../reference/geometry/rectangleProfile.md) | `Profile` |
101
-
102
- [`polygon`](../reference/model/polygon.md) fills boundaries in four forms:
103
-
104
- - `polygon(points)` fills one contour.
105
- - `polygon({ outer, holes })` validates exterior/hole topology and normalizes winding.
106
- - `polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
107
- explicit `"evenodd"` fill.
108
- - `polygon({ polygons: data })` accepts existing `RegionData`.
109
-
110
- Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
111
- disconnected components. Use `section.toRegionData()` inside synchronous generation to read
112
- the evaluated shape; keep serialized point data for interchange or calculations outside generation.
113
-
114
- `rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
115
- identified spans for custom geometry. Use `matchProfiles` to prepare a complete family when loft
116
- stations or a sweep need holes, seams, or landmarks beyond ordinary primitives.
117
-
118
- Identified spans also accept cubic Béziers with the same endpoints and controls as
119
- [`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
120
- grid; physical sampling refines every member before choosing the family count. Collapsed spans
121
- retain repeated logical slots, while the completed loft removes degenerate faces.
122
-
123
- ## Choose fluent values or standalone algorithms
124
-
125
- ### Convert representations deliberately
126
-
127
- | From | Conversion | Evaluation and ownership |
128
- | -------------------------- | ---------------------------------------------- | -------------------------------------------------------------- |
129
- | `Contour` / `RegionData` | `polygon(...)` to `Section` | Captures a recipe without an engine |
130
- | `Section` | `section.toRegionData()` | Observes evaluated geometry inside a host execution |
131
- | `Profile` | `matchProfiles(...)` | Pure matching retains identified boundaries and landmarks |
132
- | Closed `Path2` / `Contour` | `mesh.extrude(...)` to `TriangleMesh` | Pure mesh construction; no `ends` treatments |
133
- | `TriangleMesh` | `solidFromMesh(...)` to `Solid` | Captures a recipe; native validation happens during evaluation |
134
- | `Solid` / `TriangleMesh` | `part(...)`, then an engine run to `ModelPart` | Host finalizes durable immutable manufacturing buffers |
135
- | `ModelPart` | Pass directly to mesh analysis or `export3mf` | No live session needed; use buffer `copy()` before mutation |
136
-
137
- Pure extrusion uses `ExtrudeMeshOptions` for height, centering, twist, top scale, and sampling.
138
- Native `Section.extrude` also supports `ends` through `ExtrudeOptions`; requesting them from
139
- `mesh.extrude` throws instead of silently returning unfinished geometry.
140
-
141
- Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
142
- `path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
143
- outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
144
- [`mesh.sweep`](../reference/mesh/sweep.md), or
145
- [`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
146
-
147
- ### Fluent vector and tuple arithmetic
148
-
149
- Tuple kernels remain useful in numerical loops. The same arithmetic can be written in either form:
150
-
151
-
152
-
153
- ```ts
154
- import { vector3 } from "@metamesh/modeling";
155
- import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry";
156
-
157
- export const fluentDirection = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
158
- export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10);
159
- // fluentDirection.toData() and tupleDirection contain the same coordinates.
160
- ```
161
-
162
-
163
-
164
- Fluent vectors validate finite inputs and results and allocate immutable values. Basic tuple
165
- arithmetic such as `add3` avoids those wrappers and assumes valid inputs; overflow can produce
166
- nonfinite results. Individual kernels document additional checks, such as zero-length rejection
167
- in `normalize3`.
168
-
169
- ## Value and data naming
170
-
171
- Modeling values use domain names such as `Vector2`, `Transform2`, `Path2`, and `Bounds2`.
172
- Their plain representations consistently use `Data`: `Vector2Data`, `Transform2Data`,
173
- `Path2Data`, and `Bounds2Data`. Each value exposes `toData()` for a stable, deeply frozen
174
- representation, and its factory accepts that data again. `Input` types describe accepted values,
175
- data, and any supported construction shorthand.
176
-
177
- Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
178
- and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
179
- when a numerical algorithm needs only coordinates; keep the full record when closure matters too.
180
- Options, reports, geometry descriptors, and recipes keep their own descriptive names. Use
181
- `toMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a triangle mesh
182
- or a Section as a region.
183
-
184
- ## Query paths and preserve closure
185
-
186
- Use `path2(points, { closed: true })` or `path3(points, { closed: true })` for a reusable boundary.
187
- `length()` includes the closing edge. [`closestPoint`](../reference/geometry/Path3-type.md#closestpoint)
188
- returns a [`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
189
- millimetres, `edgeIndex`, and clamped `fraction` within that edge. Equal-distance ties select the
190
- first edge in traversal order. The fraction is local to an edge; it is not a whole-path or analytic
191
- curve parameter.
192
-
193
- ### Path coordinate round trip
194
-
195
-
196
-
197
- ```ts
198
- import { path3 } from "@metamesh/modeling";
199
-
200
- export const boundary = path3(
201
- [
202
- [0, 0, 0],
203
- [10, 0, 0],
204
- [10, 10, 0],
205
- [0, 10, 0],
206
- ],
207
- { closed: true }
208
- );
209
- export const nearest = boundary.closestPoint([-2, 5, 0]);
210
- // point: [0, 5, 0], distance: 2, edgeIndex: 3, fraction: 0.5
211
- export const restoredPath = path3(boundary.toData());
212
- // Both paths include the closing edge and have length 40 mm.
213
- ```
214
-
215
-
216
-
217
- `toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
218
- value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
219
- Don't repeat the endpoint of a closed path. Open paths may be empty; their bounds are `undefined`,
220
- and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
221
- not a filled interior or underlying analytic curve.
222
-
223
- Chain `transform`, `reverse`, and equal-distance `resample` to create new paths. Transforming a path
224
- preserves traversal even after reflection. `polygon(path)` requires a closed planar value and
225
- establishes exterior/hole winding; `stroke`, sweeps, and path patterns accept paths in the matching
226
- dimension. Authored point collections accept fluent vectors or tuples; serialized data uses tuples.
227
-
228
- ## Compose modeling operations
229
-
230
- Give intermediate shapes meaningful names and choose a curve tolerance that preserves the detail
231
- you need. Many high-resolution Boolean operands take longer to build.
232
-
233
- Dimension inputs accept matching fluent vectors or plain coordinate tuples, such as
234
- `box({ size: vector3([30, 20, 6]) })`. Use `section.extrude(options)`, `section.revolve(options)`,
235
- and `section.sweep(path, options)` in fluent modeling sequences. Imported `extrude`, `revolve`, and
236
- `sweep` accept `Section | CorrespondingProfile`, so reusable profile functions can use either input
237
- without branching. Both forms use the same operation contracts. Use `mesh.extrude(contour, options)`
238
- when constructing triangle buffers directly.
239
-
240
- Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
241
- filled Section and `box({ size: [24, 16, 6] })` creates a Solid. The `union`, `subtract`, and `intersect`
242
- methods accept one same-dimensional shape or a readonly array; an empty array preserves the receiver.
243
- Collection `union(shapes)` and `intersect(shapes)` combine peers and require at least one shape.
244
- `section.offset(distance, options)` stays in the filled XY plane.
245
-
246
- - `section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
247
- `center: true` is requested.
248
- - `section.revolve({ degrees })` rotates radial/Z geometry around +Z.
249
- - `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
250
- rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. Invertible
251
- XY transforms must keep consistent handedness. Use corresponding Profile stations for custom
252
- topology. Boolean Sections and point contours default to `correspondence: "direct"`, preserving
253
- their supplied seams. Select `"reindex"`, `"fast-distance"`, or `"distance"` to change the
254
- association strategy. Contour order alone does not establish semantic correspondence.
255
- - `section.sweep(path, options)` supports open or closed paths, degree twist, uniform/XY/per-station
256
- scales, and an explicit compatible closed seam.
257
-
258
- ## Coordinates, units, and resolution
259
-
260
- MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
261
- tolerances are millimetres; angular arguments such as `rotate` use degrees.
262
- Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-value rotations also take degrees.
263
- The low-level [`rotationTransform3`](../reference/geometry/rotationTransform3.md) constructor
264
- requires an explicit `{ degrees }` or `{ radians }` angle.
265
-
266
- `GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
267
- chord error, 16–512 segments per complete circle, and no maximum segment length. Settings apply
268
- in this order:
269
-
270
- 1. An operation-specific `segments` or `circularSegments` count.
271
- 2. The operation's local `resolution`.
272
- 3. Host session defaults.
273
-
274
- A shape doesn't carry its sampling policy into later operations; pass it explicitly where needed.
275
-
276
- Use an exact segment count for intentionally faceted geometry or when two sampled contours must
277
- match point for point. Use physical chord and segment limits for ordinary printable curves. If a
278
- requested tolerance can't fit within the safety cap, the operation fails instead of silently
279
- returning a coarser shape.
280
-
281
- `regularPolygon({ radius, sides, rotation, sizing })` makes a filled regular polygon.
282
- `sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
283
- meet the nominal radius. `circle` and `cylinder` support the same radial convention.
284
- `tube` accepts a complete pair of inner/outer radii or diameters, with independent `innerSizing`
285
- and `outerSizing`. For example, `tube({ innerDiameter: 8, outerDiameter: 12, height: 10,
286
- innerSizing: "face" })` preserves an 8 mm clear bore between the sampled faces. Both defaults are
287
- `"vertex"`; compensation that removes the wall rejects. Sampling and sizing do not establish a
288
- manufacturing fit allowance.
289
-
290
- Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
291
- `profile` points:
292
-
293
- - Boxes select disjoint named edges or groups; rectangles select individual corners.
294
- - Cylinder/frustum and straight convex extrusion rims use independent `ends.bottom` and `ends.top`.
295
- - Zero radius, zero chamfer/smooth distance, or an all-zero distance pair leaves a feature untreated.
296
- Other setback pairs require two positive values; negative and nonfinite amounts reject.
297
- - Disabled extrusion end treatments retain ordinary support, including holes and twist.
298
-
299
- `attachment` maps a shape-local anchor to a world anchor after construction, using alignment,
300
- millimetre gap, and degree spin. It accepts named or explicit anchors; Sections must stay in XY.
301
-
302
- ## Reuse a transform across shapes and coordinates
303
-
304
- Use [`transform2`](../reference/geometry/transform2.md) and
305
- [`transform3`](../reference/geometry/transform3.md) chains for reusable placements. They are immutable
306
- and pure, so you don't need an engine to build them. Calls apply in written order. A rotation
307
- followed by a translation rotates around the origin, then moves the result:
308
-
309
-
310
-
311
- ```ts
312
- import { transform3, vector3 } from "@metamesh/modeling";
313
-
314
- // Calls apply in written order: rotate, then translate.
315
- const placement = transform3().rotate([0, 0, 90]).translate([20, 0, 5]);
316
- export const placedPoint = placement.applyPoint([10, 0, 0]); // approximately [20, 10, 5]
317
- export const placedDirection = placement.applyDirection([10, 0, 0]); // approximately [0, 10, 0]
318
- ```
319
-
320
-
321
-
322
- Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
323
- matching path helpers. Finished parts accept rigid transforms through `part(id, { geometry, transform })`;
324
- pattern and attachment matrices work directly. Part placement rejects scale, shear and reflection.
325
- `toData()` supplies a canonical matrix when another system needs it.
326
- Construct the placement once and reuse it across point collections.
327
-
328
- `current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
329
- same-dimensional matrix. `inverse()` returns the reverse placement. Each operation returns a new
330
- chain, so you can derive different placements from a shared starting point.
331
-
332
- Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
333
- the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
334
- Z; `rotateAxis(axis, degrees, { pivot })` normalizes its nonzero axis. Omitted pivots use the
335
- coordinate origin. Uniform and per-axis scales must be finite and nonzero; negative factors reflect.
336
- Nonfinite inputs, invalid axes, and singular matrices throw `GeometryError`.
337
-
338
- `applyPoint` includes translation. `applyDirection` excludes translation and preserves scale;
339
- its result is not normalized. `applyNormal` applies the inverse transpose and returns a unit normal,
340
- including under nonuniform scaling; it rejects zero normals. All three return fluent vectors.
341
-
342
- `Transform2` works directly with Sections and pure XY helpers; its `Transform2Data` is the same
343
- canonical 3x3 representation throughout. Use `to3D()` when that XY placement
344
- also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
345
- that move the XY plane or collapse its dimensions; it doesn't project 3D points.
346
- See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
347
-
348
- ### Transform composition order
349
-
350
- For low-level matrix interoperability, the factories accept existing canonical matrices. Use
351
- `transform3(frameTransform3(frame))` for an orthonormal frame. The raw constructors and
352
- `composeTransform3(after, before)` remain available; composition applies `before` first:
353
-
354
-
355
-
356
- ```ts
357
- import { transform3 } from "@metamesh/modeling";
358
- import { applyTransformPoint3, composeTransform3 } from "@metamesh/modeling/geometry";
359
-
360
- const current = transform3().rotate([0, 0, 90]);
361
- const next = transform3().translate([20, 0, 5]);
362
- export const chainedPoint = current.andThen(next).applyPoint([10, 0, 0]);
363
- export const composedPoint = applyTransformPoint3(
364
- composeTransform3(next.toData(), current.toData()),
365
- [10, 0, 0]
366
- ); // Both results are approximately [20, 10, 5].
367
- export const reversedPoint = next.andThen(current).applyPoint([10, 0, 0]);
368
- // approximately [0, 30, 5]
369
- ```
370
-
371
-
372
-
373
- ## Calculate with vectors
374
-
375
- Use [`vector2`](../reference/geometry/vector2.md) and [`vector3`](../reference/geometry/vector3.md)
376
- for readable arithmetic chains. Operands accept tuples or vectors; `dot`, `length` and `distance`
377
- return numbers. `cross` returns a signed scalar in 2D and a right-handed vector in 3D.
378
-
379
-
380
-
381
- ```ts
382
- export const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
383
- export const alignment = direction.dot([0, 0, 1]); // number
384
- ```
385
-
386
-
387
-
388
- Values snapshot their input and operations return new values. `toData()` returns the value's
389
- frozen coordinate tuple without allocating another copy. Normalization rejects zero-length vectors;
390
- nonfinite coordinates, scalar parameters and overflowing results throw `GeometryError`.
391
-
392
- For rotations and nonuniform scaling, use a reusable transform's `applyDirection`. Use
393
- `applyNormal` for surface normals:
394
-
395
-
396
-
397
- ```ts
398
- const stretched = transform3().scale([2, 1, 1]);
399
- export const normal = stretched.applyNormal([1, 1, 0]);
400
- export const tangent = stretched.applyDirection([1, -1, 0]);
401
- export const perpendicular = normal.dot(tangent); // approximately 0
402
- ```
403
-
404
-
405
-
406
- Fluent math and shape transforms accept vector values directly; compose a transform for part placement. Serialized
407
- geometry and low-level kernels use tuples. Keep model-specific equations beside the model.
408
-
409
- ## Measure and compare bounds
410
-
411
- Use [`bounds2`](../reference/geometry/bounds2.md) and
412
- [`bounds3`](../reference/geometry/bounds3.md) for immutable axis-aligned bounds. `size()` and
413
- `center()` return fluent vectors. `containsBounds(other)` tests positioned containment in the
414
- same coordinate frame, including touching boundaries. It doesn't establish a manufacturing fit.
415
-
416
-
417
-
418
- ```ts
419
- import { bounds3 } from "@metamesh/modeling";
420
- import { fitBounds, layoutRow, rectangleContour } from "@metamesh/modeling/geometry";
421
- import * as mesh from "@metamesh/modeling/geometry/mesh";
422
-
423
- export const envelope = bounds3({ min: [-10, -5, 0], max: [10, 5, 8] });
424
- export const size = envelope.size(); // Vector3: [20, 10, 8] mm
425
- export const center = envelope.center(); // Vector3: [0, 0, 4] mm
426
-
427
- const triangleMesh = mesh.extrude(rectangleContour({ size: [12, 6] }), { height: 4 });
428
- // Mesh measurements are plain data. Wrap once for fluent queries.
429
- export const measured = bounds3(mesh.bounds(triangleMesh));
430
- export const fits = envelope.containsBounds(measured); // true
431
- export const data = measured.toData(); // Frozen { min, max } record for interchange.
432
-
433
- // Collection and placement algorithms accept bounds values directly.
434
- export const fitting = fitBounds(measured, envelope, { maxScale: 1 });
435
- export const positions = layoutRow([measured, envelope], { gap: 2 });
436
- ```
437
-
438
-
439
-
440
- Factories snapshot finite, ordered coordinates with finite extents; zero extents are valid.
441
- Alternatively construct from nonnegative dimensions with `bounds2({ size: [30, 18] })` or
442
- `bounds3({ size: [30, 18, 8], center: false })`. Size construction centers on the origin by default;
443
- size and min/max construction are mutually exclusive.
444
- `min` and `max` are frozen tuples, and `toData()` returns the value's stable frozen plain record.
445
- Path `bounds()` queries return matching fluent bounds, or `undefined` for an empty path.
446
- Mesh and region measurements, inspection results, and engine snapshots retain plain
447
- `Bounds2Data` or `Bounds3Data`; wrap a measurement when you need fluent queries.
448
- Compiled Generator packages passing bounds values to host recipes or computed data require
449
- runtime `9.0.0` or newer in major 9.
450
-
451
- Use [`fitBounds`](../reference/geometry/fitBounds.md) to calculate a placement and
452
- [`layoutRow`](../reference/geometry/layoutRow.md) to arrange a collection. These standalone
453
- algorithms accept values or plain records. Supply bounds after any intended rotation; an
454
- axis-aligned box alone doesn't describe the underlying shape.
455
-
456
- ## SVG sections: fills and strokes are different inputs
457
-
458
- [`svgSection`](../reference/model/svgSection.md) converts a bounded complete SVG document into one
459
- painted `Section`. Supported visible **fills and bounded strokes both contribute geometry**. It
460
- handles supported shapes, paths, affine transforms, physical root units, `viewBox` scaling, and
461
- allowlisted inline fill and stroke presentation.
462
-
463
- [`svgPathSection`](../reference/model/svgPathSection.md) accepts SVG path-data text rather than a
464
- document. It is a **fill-only** path operation: it doesn't apply stroke styling. Path
465
- units default to millimetres and can be converted with its scale option.
466
-
467
- Both functions convert SVG's Y-down plane to MetaMesh's Y-up plane and center the final painted
468
- bounds by default. Use `origin: "document"` with `svgSection` when the converted document viewport
469
- origin must remain meaningful. Adaptive flattening happens after supported transforms and unit
470
- conversion, so tolerances apply in final millimetre space.
471
-
472
- Unsupported layout or external content fails rather than disappearing silently. These helpers
473
- don't support nested SVG viewports, `<use>`, images, live text, external stylesheets,
474
- clipping, masks, filters, scripts, animation, gradients, patterns, uploaded project assets, or
475
- custom font files. Use the [SVG extrusion recipe](recipes.md#svg-parameter-and-extrusion)
476
- for a complete authored example.
477
-
478
- ## Text and font variability
479
-
480
- `services.text.layout()` shapes text inside generation. Cache an expensive shared layout with
481
- `computed`, measure its `metrics`, and pass it to `textSection(layout())`. There is no
482
- ambient font provider, and exporting doesn't shape the text again. Declare a Text control for
483
- the wording and a Font control for the face and weight.
484
-
485
- Font size is the em size in millimetres, not the height of a particular letter. Layout supports
486
- horizontal lines, spacing, and alignment, or a single circular baseline through
487
- [`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). Follow the
488
- [text recipe](recipes.md#text-from-a-font-parameter) for the control setup,
489
- layout conventions, and font availability limits.
490
-
491
- ## Printable threads
492
-
493
- The public API provides coordinated external threads, internal cutters, and threaded nuts. Reuse
494
- one profile and fit policy across mating parts, then prove them with a short calibration print.
495
-
496
- Follow [Build printable threads](https://metamesh.studio/docs/develop/printable-threads) for the illustrated workflow,
497
- complete source, profile and fit choices, end treatments, and links into the exact API contracts.
498
-
499
- ## Check preflight guarantees
500
-
501
- Use a preflight to check inputs and see what an operation will require. Each preflight checks
502
- different things, so read what its report covers:
503
-
504
- - [`mesh.preflightHeightfield`](../reference/mesh/preflightHeightfield.md) checks grid dimensions,
505
- coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
506
- and byte counts without evaluating heights.
507
- - [`mesh.preflightThreadSolid`](../reference/mesh/preflightThreadSolid.md)
508
- and related thread preflights check dimensions, sampling, and conservative allocation estimates.
509
- They return the sampling plan without constructing the final mesh or native solid.
510
- - [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
511
- SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
512
- at the selected resolution; they do not predict later mesh allocation.
513
-
514
- The `/geometry` and `mesh` preflights run without an engine and use explicit options or package defaults.
515
- The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
516
- [`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
517
- [`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
518
- model execution and use the host's resolution and limits.
519
-
520
- Passing a preflight covers only its documented checks. Construction can still fail while running
521
- callbacks, meshing, or evaluating native geometry. Constructors enforce their limits even when
522
- you skip a preflight; use one when its plan or diagnostics help you make a decision.
523
-
524
- ## Lifecycle and inspection
525
-
526
- Studio or your standalone host handles initialization, cleanup, finalization, Worker recovery,
527
- preview, and file delivery. Don't manually delete `Section` or `Solid` values. Use
528
- `shape.inspect()` for bounds, topology counts, area, and volume.
529
- Its immutable extrema are nested under `facts.bounds.min` and `facts.bounds.max`.
530
- Native `componentCount` counts disconnected material components. Mesh analysis and signatures use
531
- `shellCount` for surfaces connected by shared indexed edges: one sealed hollow body has one material
532
- component and two shells. Open mesh analysis can also count open shells; this count does not certify
533
- closed topology or geometric validity.
534
-
535
- Queries such as `shape.inspect()`, `shape.isEmpty()`, `shape.components()`, `shape.anchor(name)`,
536
- `solid.distance(other)`, and `solid.castSegment(origin, endpoint)` read evaluated geometry.
537
- These queries and interchange with `solid.toMesh()` or `section.toRegionData()` require the host's
538
- active synchronous generation. `solid.split(cutter)` returns the intersection and remainder;
539
- `solid.splitByPlane(plane)` returns the positive and negative sides of the plane.
540
- Constructing or combining a recipe outside generation doesn't evaluate it.
541
-
542
- An inspection result describes the generated geometry; it doesn't certify wall thickness,
543
- overhangs, fits, loads, or manufacturability. Express those requirements in your parameters and
544
- validation, then check them in your manufacturing workflow.
545
-
546
- - [Use geometry recipes](recipes.md)
547
- - [Browse exact signatures](../reference/model.md)
44
+ When you're ready to shape a part, choose a [worked modeling technique](recipes.md).
@@ -4,7 +4,7 @@ Prepare licensed font bytes and a reusable text layout before building a model o
4
4
 
5
5
  To add lettering outside Studio, load a font you're licensed to use and prepare it through the
6
6
  optional `@metamesh/modeling/text` entry point before synchronous generation. In Studio, use the
7
- [Font control recipe](recipes.md#text-from-a-font-parameter).
7
+ [Font control recipe](svg-and-text.md#text-from-a-font-parameter).
8
8
 
9
9
  ## Install font support
10
10
 
@@ -50,11 +50,11 @@ measurements in millimetres, with Y pointing up, plus a separate `svg` string.
50
50
 
51
51
  Pass the `layout` to [`textSection`](../reference/model/textSection.md) inside generation, then
52
52
  extrude the filled section. Prepare layouts ahead of time, or supply a deterministic text service
53
- and cache layouts with `computed`.
53
+ and cache layouts with `memo`.
54
54
 
55
55
  The same layout options support horizontal lines or one circular line through
56
- [`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). The
57
- [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,
58
58
  metrics, and circular-text constraints.
59
59
 
60
60
  Use the [Font preparation reference](../reference/text.md) for font and layout options, or