@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
@@ -0,0 +1,133 @@
1
+ # Choose resolution and check geometry
2
+
3
+ Set physical sampling, understand preflight limits, and inspect evaluated dimensions and topology.
4
+
5
+ Choose enough geometric detail for the feature you are making, then check the generated result.
6
+ Sampling policy, preflight reports, and inspection answer different questions; a successful check
7
+ does not establish a suitable manufacturing fit.
8
+
9
+ ## Coordinates, units, and resolution
10
+
11
+ MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
12
+ tolerances are millimetres; angular arguments such as `rotate` use degrees.
13
+ Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-value rotations also take degrees.
14
+ The low-level [`rotationTransform3`](../reference/geometry/rotationTransform3.md) constructor
15
+ requires an explicit `{ degrees }` or `{ radians }` angle.
16
+
17
+ `GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
18
+ chord error, 16–512 segments per complete circle, and no maximum segment length. Settings apply
19
+ in this order:
20
+
21
+ 1. An operation-specific `segments` or `circularSegments` count.
22
+ 2. The operation's local `resolution`.
23
+ 3. Host session defaults.
24
+
25
+ A shape doesn't carry its sampling policy into later operations; pass it explicitly where needed.
26
+
27
+ Use an exact segment count for intentionally faceted geometry or when two sampled contours must
28
+ match point for point. Use physical chord and segment limits for ordinary printable curves. If a
29
+ requested tolerance can't fit within the safety cap, the operation fails instead of silently
30
+ returning a coarser shape.
31
+
32
+ ## Check preflight guarantees
33
+
34
+ Use a preflight to check inputs and see what an operation will require. Each preflight checks
35
+ different things, so read what its report covers:
36
+
37
+ - [`mesh.preflightHeightfield`](../reference/mesh/preflightHeightfield.md) checks grid dimensions,
38
+ coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
39
+ and byte counts without evaluating heights.
40
+ - [`mesh.preflightThreadSolid`](../reference/mesh/preflightThreadSolid.md)
41
+ and related thread preflights check dimensions, sampling, and conservative allocation estimates.
42
+ They return the sampling plan without constructing the final mesh or native solid.
43
+ - [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
44
+ SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
45
+ at the selected resolution; they do not predict later mesh allocation.
46
+
47
+ The `/geometry` and `mesh` preflights run without an engine and use explicit options or package defaults.
48
+ The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
49
+ [`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
50
+ [`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
51
+ model execution and use the host's resolution and limits.
52
+
53
+ Passing a preflight covers only its documented checks. Construction can still fail while running
54
+ callbacks, meshing, or evaluating native geometry. Constructors enforce their limits even when
55
+ you skip a preflight; use one when its plan or diagnostics help you make a decision.
56
+
57
+ ## Lifecycle and inspection
58
+
59
+ Studio or your standalone host handles initialization, cleanup, finalization, Worker recovery,
60
+ preview, and file delivery. Don't manually delete `Section` or `Solid` values. Use
61
+ `shape.inspect()` for bounds, topology counts, area, and volume.
62
+ Its immutable extrema are nested under `facts.bounds.min` and `facts.bounds.max`.
63
+ Native `componentCount` counts disconnected material components. Mesh analysis and signatures use
64
+ `shellCount` for surfaces connected by shared indexed edges: one sealed hollow body has one material
65
+ component and two shells. Open mesh analysis can also count open shells; this count does not certify
66
+ closed topology or geometric validity.
67
+
68
+ Queries such as `shape.inspect()`, `shape.isEmpty()`, `shape.components()`, `shape.anchor(name)`,
69
+ `solid.distance(other)`, and `solid.castSegment(origin, endpoint)` read evaluated geometry.
70
+ These queries and interchange with `solid.toMesh()` or `section.toRegionData()` require the host's
71
+ active synchronous generation. `solid.split(cutter)` returns the intersection and remainder;
72
+ `solid.splitByPlane(plane)` returns the positive and negative sides of the plane.
73
+ Constructing or combining a recipe outside generation doesn't evaluate it.
74
+
75
+ An inspection result describes the generated geometry; it doesn't certify wall thickness,
76
+ overhangs, fits, loads, or manufacturability. Express those requirements in your parameters and
77
+ validation, then check them in your manufacturing workflow.
78
+
79
+ Before preview or export, the host finalizes returned geometry under its configured validation
80
+ and resource policy. Inspecting one shape does not finalize every returned part.
81
+
82
+ ## Solid inspection
83
+
84
+ Use `solid.inspect()` during generation to check bounds, volume, and component count. This example
85
+ runs inside a [Studio code Project](https://metamesh.studio/docs/develop/code-projects); a standalone program uses the
86
+ same queries inside its synchronous generation callback:
87
+
88
+
89
+
90
+ ```ts
91
+ import { box } from "@metamesh/modeling";
92
+ import { generate } from "@metamesh/project";
93
+
94
+ export default generate(({ part }) => {
95
+ const result = box({ size: [40, 30, 5] });
96
+ const measurements = result.inspect();
97
+
98
+ if (measurements.bounds.min[2] < -2.5 || measurements.componentCount !== 1) {
99
+ throw new Error("Unexpected placement or disconnected result.");
100
+ }
101
+
102
+ return [part("model", result)];
103
+ });
104
+ ```
105
+
106
+
107
+
108
+ Use [`layoutRow`](../reference/geometry/layoutRow.md) to arrange pieces along +X with an explicit
109
+ gap and place their minimum Y/Z at zero. Pass bounds after any intended rotation, then use the
110
+ returned translations in `part` placement options so you can reuse the geometry.
111
+
112
+
113
+
114
+ ```ts
115
+ import { box, generate, transform3 } from "@metamesh/modeling";
116
+ import { layoutRow } from "@metamesh/modeling/geometry";
117
+
118
+ export const rowModel = generate<Record<never, never>>(({ part }) => {
119
+ const pieces = [box({ size: [20, 10, 6] }), box({ size: [12, 16, 8] })];
120
+ const positions = layoutRow(
121
+ pieces.map((piece) => piece.inspect().bounds),
122
+ { gap: 4 }
123
+ );
124
+ return pieces.map((geometry, index) =>
125
+ part(`piece-${index}`, { geometry, transform: transform3().translate(positions[index]!) })
126
+ );
127
+ });
128
+ ```
129
+
130
+
131
+
132
+ Check the default, smallest and largest supported dimensions, and every optional feature after
133
+ adapting a recipe. Inspect the current result before [exporting it](https://metamesh.studio/docs/use/export-3mf).
@@ -0,0 +1,126 @@
1
+ # Join a feature to a base
2
+
3
+ Add a smooth or straight transition between independently modeled solids while retaining their geometry.
4
+
5
+ Use a solid join to connect a mounting boss, handle root, or similar feature to a base. Model and
6
+ position the complete feature first. Choose a smooth blend or straight transition; both retain
7
+ the supplied solids and their existing details.
8
+
9
+ Run the examples in a [Studio code Project](https://metamesh.studio/docs/develop/code-projects), where Studio supplies
10
+ typed controls and prepared services. For a local model, follow the
11
+ [standalone workflow](standalone-model.md) and use its host entry point.
12
+
13
+ ## Join an independently modeled feature
14
+
15
+
16
+
17
+ ```ts
18
+ import { box, cylinder } from "@metamesh/modeling";
19
+ import { anchor3 } from "@metamesh/modeling/geometry";
20
+ import { generate } from "@metamesh/project";
21
+
22
+ const base = box({ size: [40, 28, 6] });
23
+ const feature = cylinder({
24
+ diameter: 12,
25
+ height: 14,
26
+ center: false,
27
+ ends: { top: { kind: "chamfer", distance: 0.5 } },
28
+ })
29
+ .translate([0, 0, 2])
30
+ .subtract(
31
+ cylinder({ diameter: 4, height: 16, center: false }).rotate([90, 0, 0]).translate([0, 8, 12])
32
+ )
33
+ // Boolean geometry defines its own datum; the collar below the cross-bore stays straight.
34
+ .withAnchors({ mount: anchor3([0, 0, 2], [0, 0, -1]) });
35
+
36
+ const mount = base.join(feature, {
37
+ source: "mount",
38
+ transition: { width: 3, height: 4 },
39
+ });
40
+
41
+ export default generate(({ part }) => part("mount", mount));
42
+ ```
43
+
44
+ The supplied boss keeps its top chamfer and cross-bore; the join adds only the root transition.
45
+
46
+
47
+
48
+ Construct and position the feature independently. Here its lower cap lies inside the plate,
49
+ and a straight collar remains below the cross-bore. The Boolean-composed feature defines a
50
+ `mount` datum with its outward normal pointing toward the base. `source: "mount"` resolves that
51
+ datum when the join evaluates, so the completed recipe can be declared before an engine exists.
52
+
53
+ The result has no inherited anchors. Define result datums with `withAnchors` when later work needs them.
54
+
55
+ ## Define the connection
56
+
57
+ Call [`solid.join(feature, options)`](../reference/model/Solid.md#join) after constructing and
58
+ positioning the feature. Supply `source`, a named feature datum or explicit `Anchor3`, and a
59
+ `transition` with `width`, `height`, and optional `kind`. The named datum resolves lazily;
60
+ recipe declaration needs no engine.
61
+ The source plane may lie in empty space when the existing feature already spans the selected
62
+ support patch; it is a lower datum, not a required contact plane.
63
+ Joining preserves both operands and adds material, while `union` remains ordinary Boolean fusion.
64
+
65
+ The datum selects the complete feature section in its plane. Holes and disconnected roots are
66
+ supported when each satisfies the same connection requirements. Two straight roots sharing a
67
+ datum plane and axis can therefore receive their transitions in one join; the datum is not a
68
+ selector for the nearest root.
69
+
70
+ Only the local feature collar must be straight and constant-section. The rest of the feature may
71
+ contain bores or other geometry. The actual support patch may be planar, tilted, or curved when
72
+ it forms a continuous height chart along that collar's axis. Unsupported or ambiguous contact,
73
+ an incomplete collar, a gap, or exhausted validation rejects. Joining never positions or extends
74
+ the feature. The straight collar must continue by `height` beyond the highest support contact
75
+ anywhere under the expanded footprint, including its outer transition boundary.
76
+
77
+ Join `width` is the projected normal offset from the feature boundary and `height` is reach along
78
+ its collar axis above local contact. Miter corners can extend farther than the width. Both dimensions
79
+ must be positive, or both zero to disable added blending while still validating the connection.
80
+
81
+ ## Choose the transition
82
+
83
+
84
+
85
+ ```ts
86
+ import { box, transform3 } from "@metamesh/modeling";
87
+ import { generate } from "@metamesh/project";
88
+
89
+ const base = box({ size: [24, 20, 4] });
90
+ const rib = box({ size: [8, 4, 12] }).translate([0, 0, 7]);
91
+
92
+ const smooth = base.join(rib, {
93
+ source: "bottom",
94
+ transition: { width: 2, height: 3 },
95
+ });
96
+ const straight = base.join(rib, {
97
+ source: "bottom",
98
+ transition: { kind: "straight", width: 2, height: 3 },
99
+ });
100
+
101
+ export default generate(({ part }) => [
102
+ part("smooth", {
103
+ geometry: smooth,
104
+ color: "#6f9eaa",
105
+ transform: transform3().translate([-16, 0, 0]),
106
+ }),
107
+ part("straight", {
108
+ geometry: straight,
109
+ color: "#d6aa58",
110
+ transform: transform3().translate([16, 0, 0]),
111
+ }),
112
+ ]);
113
+ ```
114
+
115
+
116
+
117
+ - `"smooth"` is the default and adds a tangent-matching cubic blend.
118
+ - `"straight"` adds a linear planar bevel along each sampled support facet. On curved support,
119
+ this does not imply one constant bevel angle around the connection.
120
+
121
+ These settings describe transition width and height, rather than a circular fillet radius.
122
+ `"chamfer"` and `"round"` are not join kinds, and a `radius` option is rejected. Use the
123
+ [`JoinOptions`](../reference/model/JoinOptions.md) contract for exact fields. Apply independent
124
+ [free-end finishing](profiles-and-extrusion.md#finish-a-profile-with-a-hole) while
125
+ constructing the feature. Sampling follows the physical policy and preserves the operands'
126
+ supplied facets.
@@ -40,4 +40,4 @@ pnpm exec metamesh run model.ts --kind model
40
40
  Continue with [inspection and rendering](https://metamesh.studio/docs/develop/agent-authoring#inspect-the-captured-result),
41
41
  or [host the program in your application](hosting.md).
42
42
  When you're ready for a different shape, the
43
- [construction chooser](concepts.md#choose-a-modeling-path) helps you pick an approach.
43
+ [construction chooser](recipes.md#choose-a-technique) helps you pick an approach.
@@ -0,0 +1,215 @@
1
+ # Make solids from SVG and text
2
+
3
+ Extrude imported SVG artwork or exact-font lettering, and fit its visible outline in millimetres.
4
+
5
+ Build a badge, sign, or label from vector artwork. SVG controls supply painted shapes; Font and
6
+ Text controls supply exact lettering. Both become filled Sections that you can extrude or combine
7
+ with other material.
8
+
9
+ Run the examples in a [Studio code Project](https://metamesh.studio/docs/develop/code-projects), where Studio supplies
10
+ typed controls and prepared services. For a local model, follow the
11
+ [standalone workflow](standalone-model.md) and use its host entry point.
12
+
13
+ ## SVG sections: fills and strokes are different inputs
14
+
15
+ Use `svgSection` for a complete SVG document, where supported visible fills and bounded strokes
16
+ contribute material. Use `svgPathSection` for path-data text: it is fill-only and does not apply
17
+ stroke styling. Both convert SVG’s Y-down coordinates to the model’s Y-up plane and center the
18
+ painted bounds by default. `origin: "document"` retains the converted document viewport origin.
19
+
20
+ ## SVG parameter and extrusion
21
+
22
+ Pass an SVG control's string value from `params` directly to `svgSection`. This example aliases
23
+ `params` as `parameters`:
24
+
25
+
26
+
27
+ ```ts
28
+ import { svgSection } from "@metamesh/modeling";
29
+ import { generate } from "@metamesh/project";
30
+
31
+ export default generate(({ params: parameters, part }) => {
32
+ const profile = svgSection(parameters.profile6);
33
+ return [part("model", profile.extrude({ height: 3, center: true }))];
34
+ });
35
+ ```
36
+
37
+
38
+
39
+ The property name matches the ID in **Model controls**: `profile6` in this example, or
40
+ `parameters.logo` for a control with ID `logo`.
41
+
42
+ `svgSection` also accepts literal SVG documents. Here two nested subpaths make a badge
43
+ with a rectangular opening:
44
+
45
+
46
+
47
+ ```ts
48
+ import { svgSection } from "@metamesh/modeling";
49
+ import { generate } from "@metamesh/project";
50
+
51
+ export default generate(({ part }) => {
52
+ // Physical root units make the imported artwork exactly 48 × 32 mm.
53
+ // Even-odd filling turns the second closed subpath into an opening.
54
+ const badge = svgSection(`
55
+ <svg xmlns="http://www.w3.org/2000/svg" width="48mm" height="32mm" viewBox="0 0 48 32">
56
+ <path
57
+ fill-rule="evenodd"
58
+ d="M 0 0 H 48 V 32 H 0 Z M 14 8 H 34 V 24 H 14 Z"
59
+ />
60
+ </svg>
61
+ `);
62
+ // Check the imported topology before using it in the manufacturing solid.
63
+ const measurements = badge.inspect();
64
+ if (measurements.componentCount !== 1 || measurements.contourCount !== 2) {
65
+ throw new Error("Expected one badge with one rectangular opening.");
66
+ }
67
+ return [part("model", badge.extrude({ height: 4, center: true }))];
68
+ });
69
+ ```
70
+
71
+ The 48 × 32 mm SVG document retains its physical size and even-odd opening after extrusion.
72
+
73
+
74
+
75
+ The even-odd fill rule makes the second subpath a hole regardless of winding. Complete documents
76
+ honor supported physical root units and `viewBox`. With `svgPathSection`, one user unit defaults
77
+ to 1 mm; its `scale` option chooses another millimetres-per-unit conversion.
78
+
79
+ To choose the finished artwork size, pass `fit` with positioned XY bounds. Fitting preserves
80
+ aspect ratio and centers the painted geometry inside the target; unused SVG canvas margins do
81
+ not reserve space. Adaptive curve tolerance and edge spacing apply at the final millimetre size:
82
+
83
+
84
+
85
+ ```ts
86
+ import { bounds2, svgSection } from "@metamesh/modeling";
87
+ import { generate } from "@metamesh/project";
88
+
89
+ export default generate(({ part }) => {
90
+ const artwork = svgSection('<svg><circle r="1"/></svg>', {
91
+ fit: bounds2({ size: [30, 18] }),
92
+ resolution: { maxChordError: 0.05 },
93
+ });
94
+ return part("artwork", artwork.extrude({ height: 0.8 }));
95
+ });
96
+ ```
97
+
98
+
99
+
100
+ To prepare SVG without an engine, `preflightSvgRegion` from `@metamesh/modeling/geometry` accepts
101
+ the same fit target and returns its applied `fit`, final region, and review metrics. The scale
102
+ and translation map the selected origin's SVG millimetres to model millimetres. Reuse them to
103
+ align layers imported with the same document coordinate system and origin.
104
+ Exact circular segment counts retain precedence over adaptive sampling. Empty artwork cannot
105
+ be fitted, and fitting rejects a requested resolution that exceeds the sampling limits.
106
+
107
+ Visible fills and bounded strokes contribute geometry; editor metadata is ignored. Editor text is
108
+ outlined to visible paths on Apply. Live `<text>`, images, `<use>`, external resources, class-based
109
+ stylesheets, nested SVG viewports, clipping, masks, filters, scripts, animation, gradients, patterns,
110
+ and percentage dimensions are rejected. To generate lettering
111
+ directly, use the [text recipe](#text-from-a-font-parameter). These helpers don't support SVG export,
112
+ project assets, custom font uploads, text on paths, or general SVG layout.
113
+
114
+ ## Text and font variability
115
+
116
+ Studio prepares the selected font before generation. `services.text.layout()` shapes the text
117
+ synchronously; cache an expensive shared layout with `memo`, then pass it to `textSection`. A
118
+ stable helper that needs parameters and fixed services receives the full generation context.
119
+ There is no ambient font provider, and export uses the captured mesh rather than shaping again.
120
+
121
+ ## Text from a Font parameter
122
+
123
+ Use this recipe for a label, plaque, or raised lettering whose font remains adjustable.
124
+
125
+ 1. Open **Model controls**, add a **Font** control with ID `font`, and choose its default face and
126
+ weight. Outfit and JetBrains Mono are bundled starter fonts.
127
+ 2. Choose **Apply & return** and use the generation program below in `model.ts`.
128
+ Studio prepares the selected font before the program lays out and extrudes its text.
129
+ 3. To make the wording adjustable, add a **Text** control with ID `label` and a non-empty default,
130
+ then replace the literal `"MetaMesh"` with `params.label`.
131
+
132
+
133
+
134
+ ```ts
135
+ import { textSection } from "@metamesh/modeling";
136
+ import { generate } from "@metamesh/project";
137
+
138
+ export default generate(({ params, services, part }) => {
139
+ // The host has loaded the exact selected font before generation.
140
+ const layout = services.text.layout("MetaMesh", {
141
+ fontSize: 8,
142
+ font: params.font,
143
+ letterSpacing: 0.15,
144
+ });
145
+ // textSection preserves counters, such as the enclosed hole in the letter a.
146
+ return [part("label", textSection(layout).extrude({ height: 1.2 }))];
147
+ });
148
+ ```
149
+
150
+ The poster uses a pinned bundled Outfit face and preserves the counters inside each letter.
151
+
152
+
153
+
154
+ `textSection(layout)` converts prepared vector curves into a filled section, preserving holes in
155
+ letters. Extrude that section or combine it with other sections and solids. Use `layout.metrics`
156
+ and its visible `bounds` to size a backing plate or reject text without visible outlines.
157
+
158
+ Check a positioned label with [`bounds.containsBounds()`](../reference/geometry/bounds2.md),
159
+ using [`bounds2({ size })`](../reference/geometry/bounds2.md) for the available rectangle.
160
+ Horizontal `align: "center"` centers advance width; visible ink can remain asymmetric.
161
+ To resize the ink uniformly and center it inside a target, use
162
+ [`fitTextLayout`](../reference/geometry/fitTextLayout.md) before `textSection`. It transforms
163
+ the retained vector paths before sampling, keeping curve tolerance in final millimetres.
164
+ `maxScale: 1` permits shrinking without enlargement. Choose a minimum readable letter height
165
+ and write parameter-specific error messages for your model.
166
+
167
+
168
+
169
+ ```ts
170
+ import {
171
+ bounds2,
172
+ fitTextLayout,
173
+ type FittedTextLayout,
174
+ type VectorTextLayout,
175
+ } from "@metamesh/modeling/geometry";
176
+
177
+ export function labelFits(layout: VectorTextLayout): boolean {
178
+ const ink = layout.metrics.bounds;
179
+ return ink !== null && bounds2({ size: [40, 12] }).containsBounds(ink);
180
+ }
181
+
182
+ export function fitLabel(layout: VectorTextLayout): FittedTextLayout {
183
+ // Fit visible ink while preserving proportions and preventing enlargement.
184
+ return fitTextLayout(layout, bounds2({ size: [40, 12] }), { maxScale: 1 });
185
+ }
186
+ ```
187
+
188
+
189
+
190
+ | Setting | Meaning |
191
+ | --------------- | ------------------------------------------------------------------------------ |
192
+ | `font` | The complete Font control value, including the exact face revision and weight |
193
+ | `fontSize` | Em size in millimetres; visible capital height depends on the font |
194
+ | `letterSpacing` | Extra millimetres between shaped glyph clusters |
195
+ | `align` | Left, center, or right alignment using the text's advance |
196
+ | `verticalAlign` | First-line baseline by default, or top, center, or bottom using visible bounds |
197
+ | `lineHeight` | Baseline-spacing multiplier; omitted uses the font's natural line spacing |
198
+
199
+ For a circular label, add a [`baseline`](../reference/geometry/VectorTextArcBaseline.md) with
200
+ `kind: "arc"` and a positive `radius` in millimetres to the layout options. The baseline is centered
201
+ at the XY origin; `centerAngle` chooses its alignment datum and `direction` chooses the
202
+ reading direction. Each shaped glyph group rotates without bending. Circular text requires one
203
+ line and baseline vertical alignment; its default horizontal alignment is centered. These helpers
204
+ don't support arbitrary path text or automatic wrapping.
205
+
206
+ Text uses positive Y upward and supports line breaks, with at most 512 UTF-16 units and 16 lines.
207
+ Empty or whitespace-only text can be measured but cannot create a section. Return a parameter error
208
+ for that expected input; a missing glyph also requires different wording or a font that supports it.
209
+ See [`TextSectionOptions`](../reference/model/TextSectionOptions.md) for exact options.
210
+
211
+ Studio loads declared fonts before generation. Export uses the captured visible mesh. Saving a Project
212
+ preserves the exact selection, including its revision, without embedding font bytes. Fonts beyond
213
+ the bundled starters can require internet; ordinary browser caching does not guarantee them offline.
214
+ If loading fails, Studio preserves the selection and last valid model so you can retry or choose a
215
+ replacement. Studio does not support custom font uploads.
@@ -0,0 +1,179 @@
1
+ # Build sweeps, lofts, and heightfields
2
+
3
+ Sweep a section along a curved path, blend different cross sections with a loft, or sample a heightfield.
4
+
5
+ Use a sweep when one cross section follows a route, a loft when cross sections change between
6
+ stations, or a heightfield when an XY grid can describe the top surface. Choose the representation
7
+ before increasing sampling detail.
8
+
9
+ Run the examples in a [Studio code Project](https://metamesh.studio/docs/develop/code-projects), where Studio supplies
10
+ typed controls and prepared services. For a local model, follow the
11
+ [standalone workflow](standalone-model.md) and use its host entry point.
12
+
13
+ ## Rotation-minimizing path sweep
14
+
15
+
16
+
17
+ ```ts
18
+ import { rectangle } from "@metamesh/modeling";
19
+ import { generate } from "@metamesh/project";
20
+
21
+ export default generate(({ part }) => {
22
+ // An asymmetric section makes the frame orientation visible in the result.
23
+ const section = rectangle({
24
+ size: [8, 3],
25
+ treatment: { kind: "round", radius: 0.8 },
26
+ });
27
+ const path = [
28
+ [0, 0, 0],
29
+ [15, 0, 8],
30
+ [25, 10, 18],
31
+ [25, 25, 24],
32
+ ] as const;
33
+ // The initial normal sets profile +X; transport carries it along the path.
34
+ // The path is open, so the sweep closes both ends with caps.
35
+ return [
36
+ part(
37
+ "model",
38
+ section.sweep(path, { orientation: { kind: "transport", initialNormal: [0, 1, 0] } })
39
+ ),
40
+ ];
41
+ });
42
+ ```
43
+
44
+ The asymmetric section makes its transported orientation visible as the path turns.
45
+
46
+
47
+
48
+ `section.sweep(path, options)` transports a filled shape along a path:
49
+
50
+ - `orientation: { kind: "transport", initialNormal: [0, 1, 0] }` chooses the starting profile-X
51
+ direction. Fixed normals, directed normal guides, and discrete Frenet frames are alternatives;
52
+ the sweep rejects a selected policy that becomes singular.
53
+ - `twist` adds total rotation by physical path length. Set `twistBy: "stations"` to use the authored
54
+ station schedule instead.
55
+ - `scale` accepts a positive uniform size, an XY pair, or one XY pair per normalized station.
56
+ - `closed: true` joins an implicitly closed path without repeated endpoints. Orientation, scales,
57
+ and `seamProfileOffset` must describe a compatible closing seam.
58
+
59
+ Start with the open path above, inspect the first cap and the turns, then replace the rectangle
60
+ with a [`circle`](../reference/model/circle.md) for a round rod. A sweep follows the supplied path
61
+ stations; it does not infer a smooth curve between them. Sample a curve with the
62
+ [path helpers](../reference/geometry/categories/curves-paths.md) when you need a curved trajectory.
63
+
64
+ ## Matched-section loft
65
+
66
+
67
+
68
+ ```ts
69
+ import { loft, rectangle } from "@metamesh/modeling";
70
+ import { generate } from "@metamesh/project";
71
+
72
+ export default generate(({ part }) => {
73
+ const base = rectangle({
74
+ size: [24, 16],
75
+ treatment: { kind: "round", radius: 3 },
76
+ });
77
+ // Transform the Section in its XY plane; loft supplies the station heights.
78
+ // Keeping the original rectangle landmarks preserves corner correspondence.
79
+ const top = base.scale([0.8, 1.2]).rotate(10).translate([3, 0]);
80
+ return [
81
+ part(
82
+ "model",
83
+ loft([
84
+ {
85
+ profile: base,
86
+ z: 0,
87
+ },
88
+ {
89
+ profile: top,
90
+ z: 18,
91
+ },
92
+ ])
93
+ ),
94
+ ];
95
+ });
96
+ ```
97
+
98
+ The two rounded rectangles retain matching corner identities while their size and pose change.
99
+
100
+
101
+
102
+ This [`loft`](../reference/model/loft.md) example places a rounded rectangle at two heights. Use
103
+ `scale`, `rotate` and `translate` to pose the top profile in XY; `rotate` takes degrees. Each
104
+ station uses `z` for an ordinary horizontal plane. To tilt a station, pass
105
+ `frame: anchorFrame3(anchor3(position, direction, up))` instead; the direction chooses its
106
+ normal and a nonparallel `up` vector chooses its roll.
107
+
108
+ The primitive retains its corner identities, so `loft` pairs corresponding landmarks without
109
+ extra setup. The same approach works when corners become square or fully rounded. For a hollow
110
+ adapter, loft the outer shape and bore separately, then subtract the bore.
111
+
112
+ Compatible circle or ellipse stations can also transition to rectangles. Invertible XY transforms
113
+ must retain consistent handedness across the stations.
114
+
115
+ Custom hole topology or disconnected components can use an explicit
116
+ [`Profile`](../reference/geometry/Profile.md) family with stable component, contour, and span IDs.
117
+ Prepare [`matchProfiles`](../reference/geometry/matchProfiles.md) once and pass its
118
+ [`CorrespondingProfile`](../reference/geometry/CorrespondingProfile.md) stations to the same `loft`
119
+ function. Topology must remain constant across stations. Arbitrary Boolean Sections default to
120
+ `correspondence: "direct"`; choose `"reindex"`, `"fast-distance"`, or `"distance"` to change the
121
+ association strategy, or use explicit profiles for landmarks. Direct association preserves the supplied seams;
122
+ reindex also chooses a cyclic phase, while distance methods optimize ordered connections. See
123
+ [`LoftOptions`](../reference/geometry/LoftOptions.md) for sampling and work limits.
124
+
125
+ ## Sample a heightfield
126
+
127
+ Build a relief tile from absolute Z heights over a rectangular XY grid.
128
+ [`heightfield`](../reference/model/heightfield.md) returns a Solid for Booleans and placement during
129
+ generation. Pure [`mesh.heightfield`](../reference/mesh/heightfield.md) accepts the same options
130
+ and returns an indexed mesh without an engine. Pass it directly as a mesh part, or wrap it in
131
+ [`mesh.immutable`](../reference/mesh/immutable.md) when returning it from a cached computation.
132
+
133
+
134
+
135
+ ```ts
136
+ import { heightfield } from "@metamesh/modeling";
137
+ import { generate } from "@metamesh/project";
138
+
139
+ export default generate(({ part }) => {
140
+ return [
141
+ part(
142
+ "model",
143
+ heightfield({
144
+ coordinates: {
145
+ x: [-20, -18, -14, -8, 0, 8, 14, 18, 20],
146
+ y: [-12, -10, -6, 0, 6, 10, 12],
147
+ },
148
+ triangulation: "min-edge",
149
+ height: ([x, y]) => 3 + 0.8 * Math.cos(x / 6) * Math.cos(y / 5),
150
+ })
151
+ ),
152
+ ];
153
+ });
154
+ ```
155
+
156
+
157
+
158
+ The uneven axes place more samples near the border. Coordinates are absolute millimetres, strictly
159
+ increasing, and must remain distinct in Float32 storage. For a uniform grid, replace `coordinates`
160
+ with `size: [40, 24]` and `segments: [40, 24]`; this centers the footprint unless `origin` supplies
161
+ its lower-left corner. Choose one sampling form per call.
162
+
163
+ `baseZ` defaults to zero. Every height is an absolute Z coordinate strictly above that base;
164
+ the builder preserves the sampled heights without rescaling them. It closes the top with shared
165
+ boundary walls and a flat underside.
166
+
167
+ | `triangulation` | Selection per top cell |
168
+ | ---------------- | ---------------------------------------------------------------------------- |
169
+ | `"fixed"` | The default lower-left to upper-right diagonal |
170
+ | `"min-edge"` | The shorter 3D diagonal, using the existing corner heights |
171
+ | `"center-error"` | The diagonal whose interpolated center is closest to one extra height sample |
172
+
173
+ All choices keep two triangles per cell and the same vertices. Center matching evaluates one
174
+ additional physical midpoint per cell. Both selection policies use the fixed diagonal for ties.
175
+ Choose sample spacing for the surface detail you need: these policies do not adapt the grid or
176
+ guarantee accuracy throughout each cell. Explicit axes let your model refine selected regions
177
+ while keeping allocation bounded.
178
+ [`mesh.preflightHeightfield`](../reference/mesh/preflightHeightfield.md) reports output counts and
179
+ checks limits without evaluating heights.