@metamesh/modeling 0.17.0 → 0.18.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 (871) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/README.md +137 -163
  3. package/dist/api/engine.d.ts +128 -65
  4. package/dist/api/geometry.d.ts +246 -457
  5. package/dist/api/index.d.ts +394 -419
  6. package/dist/api/mesh.d.ts +460 -0
  7. package/dist/api/text.d.ts +1 -1
  8. package/dist/docs/guides/concepts.md +126 -86
  9. package/dist/docs/guides/fonts.md +11 -10
  10. package/dist/docs/guides/fundamentals.md +30 -29
  11. package/dist/docs/guides/generation.md +44 -31
  12. package/dist/docs/guides/hosting.md +122 -46
  13. package/dist/docs/guides/recipes.md +65 -54
  14. package/dist/docs/guides/standalone-model.md +8 -7
  15. package/dist/docs/manifest.json +2740 -902
  16. package/dist/docs/reference/engine/Export3mfOptions.md +19 -2
  17. package/dist/docs/reference/engine/ExportMeshPart.md +5 -39
  18. package/dist/docs/reference/engine/GenerationOptions.md +4 -3
  19. package/dist/docs/reference/engine/GeometryResource.md +13 -13
  20. package/dist/docs/reference/engine/ModelDependencies.md +1 -1
  21. package/dist/docs/reference/engine/ModelEngine.md +26 -23
  22. package/dist/docs/reference/engine/ModelEngineOptions.md +6 -1
  23. package/dist/docs/reference/engine/ModelPart.md +108 -0
  24. package/dist/docs/reference/engine/ModelResult.md +175 -0
  25. package/dist/docs/reference/engine/ModelRunArguments.md +28 -0
  26. package/dist/docs/reference/engine/ModelRunOptions.md +104 -0
  27. package/dist/docs/reference/engine/ModelSession.md +16 -16
  28. package/dist/docs/reference/engine/ModelingLimits.md +121 -0
  29. package/dist/docs/reference/engine/SessionOptions.md +13 -8
  30. package/dist/docs/reference/engine/categories/host-lifecycle.md +25 -15
  31. package/dist/docs/reference/engine/checkModel.md +43 -0
  32. package/dist/docs/reference/engine/createModelEngine.md +4 -13
  33. package/dist/docs/reference/engine/defaultModelingLimits.md +8 -1
  34. package/dist/docs/reference/engine/export3mf.md +55 -0
  35. package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
  36. package/dist/docs/reference/engine.md +8 -15
  37. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +1 -1
  38. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +1 -1
  39. package/dist/docs/reference/geometry/Anchor3-type.md +1 -1
  40. package/dist/docs/reference/geometry/ArcCurve2.md +1 -1
  41. package/dist/docs/reference/geometry/ArcCurve3.md +1 -1
  42. package/dist/docs/reference/geometry/AttachOptions.md +1 -1
  43. package/dist/docs/reference/geometry/AxisAngleRotation3.md +1 -1
  44. package/dist/docs/reference/geometry/Bevel.md +18 -0
  45. package/dist/docs/reference/geometry/BevelSize.md +14 -0
  46. package/dist/docs/reference/geometry/Bounds2-type.md +1 -1
  47. package/dist/docs/reference/geometry/Bounds2Data.md +1 -1
  48. package/dist/docs/reference/geometry/Bounds2Input.md +1 -1
  49. package/dist/docs/reference/geometry/Bounds2Options.md +48 -8
  50. package/dist/docs/reference/geometry/Bounds3-type.md +1 -1
  51. package/dist/docs/reference/geometry/Bounds3Data.md +1 -1
  52. package/dist/docs/reference/geometry/Bounds3Input.md +1 -1
  53. package/dist/docs/reference/geometry/Bounds3Options.md +48 -8
  54. package/dist/docs/reference/geometry/BoundsFit2.md +1 -1
  55. package/dist/docs/reference/geometry/BoundsFit3.md +1 -1
  56. package/dist/docs/reference/geometry/BoundsFitOptions.md +1 -1
  57. package/dist/docs/reference/geometry/BoxAnchorFace.md +1 -1
  58. package/dist/docs/reference/geometry/BoxAnchorOptions.md +4 -4
  59. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  60. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  61. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  62. package/dist/docs/reference/geometry/BoxOptions.md +3 -3
  63. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +1 -1
  64. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +1 -1
  65. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  66. package/dist/docs/reference/geometry/CircleContourOptions.md +1 -1
  67. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -3
  68. package/dist/docs/reference/geometry/CircularResolutionOptions.md +1 -1
  69. package/dist/docs/reference/geometry/CircularSampling.md +1 -1
  70. package/dist/docs/reference/geometry/CircularSamplingOptions.md +1 -1
  71. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +1 -1
  72. package/dist/docs/reference/geometry/ClearanceHoleFit.md +1 -1
  73. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +1 -1
  74. package/dist/docs/reference/geometry/Contour.md +1 -1
  75. package/dist/docs/reference/geometry/ContourCurve.md +1 -1
  76. package/dist/docs/reference/geometry/ContourPoint.md +1 -1
  77. package/dist/docs/reference/geometry/ContourSegment.md +1 -1
  78. package/dist/docs/reference/geometry/CorrespondingComponent.md +1 -1
  79. package/dist/docs/reference/geometry/CorrespondingContour.md +1 -1
  80. package/dist/docs/reference/geometry/CorrespondingProfile.md +1 -1
  81. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +1 -1
  82. package/dist/docs/reference/geometry/CubicBezierCurve2.md +1 -1
  83. package/dist/docs/reference/geometry/CubicBezierCurve3.md +1 -1
  84. package/dist/docs/reference/geometry/Curve2.md +1 -1
  85. package/dist/docs/reference/geometry/Curve3.md +1 -1
  86. package/dist/docs/reference/geometry/CurveSamplingOptions.md +1 -1
  87. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +1 -1
  88. package/dist/docs/reference/geometry/CylinderAnchorFace.md +1 -1
  89. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +3 -3
  90. package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
  91. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +1 -1
  92. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +1 -1
  93. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +1 -1
  94. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +1 -1
  95. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +1 -1
  96. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +1 -1
  97. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +1 -1
  98. package/dist/docs/reference/geometry/CylindricalGearSpec.md +1 -1
  99. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  100. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  101. package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -3
  102. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  103. package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +130 -0
  104. package/dist/docs/reference/geometry/ExtrudeOptions.md +17 -9
  105. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +3 -3
  106. package/dist/docs/reference/geometry/FittedTextLayout.md +1 -1
  107. package/dist/docs/reference/geometry/Frame3.md +1 -1
  108. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  109. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  110. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  111. package/dist/docs/reference/geometry/GeometryResolution.md +1 -1
  112. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +1 -1
  113. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  114. package/dist/docs/reference/geometry/GridPatternOptions.md +1 -1
  115. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +1 -1
  116. package/dist/docs/reference/geometry/HeightfieldOptions.md +3 -2
  117. package/dist/docs/reference/geometry/HeightfieldPreflight.md +1 -1
  118. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +1 -1
  119. package/dist/docs/reference/geometry/ImmutableBuffer-type.md +108 -0
  120. package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +43 -0
  121. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +52 -83
  122. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +1 -1
  123. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +1 -1
  124. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +1 -1
  125. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +1 -1
  126. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +1 -1
  127. package/dist/docs/reference/geometry/LineCurve2.md +1 -1
  128. package/dist/docs/reference/geometry/LineCurve3.md +1 -1
  129. package/dist/docs/reference/geometry/LinearPatternOptions.md +1 -1
  130. package/dist/docs/reference/geometry/LoftCorrespondence.md +1 -1
  131. package/dist/docs/reference/geometry/LoftMeshStation.md +1 -1
  132. package/dist/docs/reference/geometry/LoftOptions.md +3 -3
  133. package/dist/docs/reference/geometry/LoftPlacement.md +1 -1
  134. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +1 -1
  135. package/dist/docs/reference/geometry/MatchProfilesOptions.md +1 -1
  136. package/dist/docs/reference/geometry/MetricFastenerSize.md +1 -1
  137. package/dist/docs/reference/geometry/MetricFastenerStandard.md +1 -1
  138. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +1 -1
  139. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +1 -1
  140. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  141. package/dist/docs/reference/geometry/NumericArray.md +14 -0
  142. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +1 -1
  143. package/dist/docs/reference/geometry/Path2-type.md +1 -1
  144. package/dist/docs/reference/geometry/Path2Data.md +1 -1
  145. package/dist/docs/reference/geometry/Path2Input.md +1 -1
  146. package/dist/docs/reference/geometry/Path3-type.md +1 -1
  147. package/dist/docs/reference/geometry/Path3Data.md +1 -1
  148. package/dist/docs/reference/geometry/Path3Input.md +1 -1
  149. package/dist/docs/reference/geometry/PathFrame.md +1 -1
  150. package/dist/docs/reference/geometry/PathLocation.md +1 -1
  151. package/dist/docs/reference/geometry/PathNormalGuide.md +1 -1
  152. package/dist/docs/reference/geometry/PathOptions.md +1 -1
  153. package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
  154. package/dist/docs/reference/geometry/PathPlacement.md +1 -1
  155. package/dist/docs/reference/geometry/PathResamplingOptions.md +1 -1
  156. package/dist/docs/reference/geometry/Pivot2Options.md +1 -1
  157. package/dist/docs/reference/geometry/Pivot3Options.md +1 -1
  158. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +1 -1
  159. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +1 -1
  160. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +1 -1
  161. package/dist/docs/reference/geometry/PlanarPatchQuality.md +1 -1
  162. package/dist/docs/reference/geometry/PolygonData.md +1 -1
  163. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +1 -1
  164. package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -3
  165. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
  166. package/dist/docs/reference/geometry/PrintableThreadFit.md +1 -1
  167. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +1 -1
  168. package/dist/docs/reference/geometry/Profile.md +1 -1
  169. package/dist/docs/reference/geometry/ProfileComponent2.md +1 -1
  170. package/dist/docs/reference/geometry/ProfileContour2.md +1 -1
  171. package/dist/docs/reference/geometry/ProfileSpan2.md +1 -1
  172. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +1 -1
  173. package/dist/docs/reference/geometry/RackPitchDimensions.md +1 -1
  174. package/dist/docs/reference/geometry/RackPitchSpec.md +1 -1
  175. package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
  176. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  177. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  178. package/dist/docs/reference/geometry/RectangleContourOptions.md +3 -3
  179. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +1 -1
  180. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +1 -1
  181. package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
  182. package/dist/docs/reference/geometry/RegionData.md +1 -1
  183. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +1 -1
  184. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  185. package/dist/docs/reference/geometry/RevolveOptions.md +2 -2
  186. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  187. package/dist/docs/reference/geometry/RowLayoutOptions.md +1 -1
  188. package/dist/docs/reference/geometry/SampleContourOptions.md +1 -1
  189. package/dist/docs/reference/geometry/SampleHelixOptions.md +1 -1
  190. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +1 -1
  191. package/dist/docs/reference/geometry/SampledCurve2.md +1 -1
  192. package/dist/docs/reference/geometry/SampledCurve3.md +1 -1
  193. package/dist/docs/reference/geometry/SampledThreadHelices.md +1 -1
  194. package/dist/docs/reference/geometry/SideProfileCurve.md +1 -1
  195. package/dist/docs/reference/geometry/SideProfilePoint.md +1 -1
  196. package/dist/docs/reference/geometry/SideProfileSegment.md +1 -1
  197. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  198. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +1 -1
  199. package/dist/docs/reference/geometry/SphereOptions.md +1 -1
  200. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +1 -1
  201. package/dist/docs/reference/geometry/StarContourOptions.md +74 -0
  202. package/dist/docs/reference/geometry/StrokeCap.md +1 -1
  203. package/dist/docs/reference/geometry/StrokeJoin.md +1 -1
  204. package/dist/docs/reference/geometry/StrokeOptions.md +1 -1
  205. package/dist/docs/reference/geometry/SvgImportOptions.md +1 -1
  206. package/dist/docs/reference/geometry/SvgRegionPreflight.md +1 -1
  207. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +1 -1
  208. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +1 -1
  209. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +1 -1
  210. package/dist/docs/reference/geometry/SweepOptions.md +1 -1
  211. package/dist/docs/reference/geometry/SweepOrientation.md +1 -1
  212. package/dist/docs/reference/geometry/ThreadBevelOptions.md +7 -30
  213. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +1 -1
  214. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +1 -1
  215. package/dist/docs/reference/geometry/ThreadEndStyle.md +1 -1
  216. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +1 -1
  217. package/dist/docs/reference/geometry/ThreadHandedness.md +1 -1
  218. package/dist/docs/reference/geometry/ThreadHelixOptions.md +1 -1
  219. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +1 -1
  220. package/dist/docs/reference/geometry/ThreadLeadInShape.md +1 -1
  221. package/dist/docs/reference/geometry/ThreadProfile-type.md +2 -2
  222. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +1 -1
  223. package/dist/docs/reference/geometry/ThreadProfileSpec.md +1 -1
  224. package/dist/docs/reference/geometry/{HelicalThreadRidgeMeshOptions.md → ThreadRidgeOptions.md} +4 -4
  225. package/dist/docs/reference/geometry/ThreadRole.md +1 -1
  226. package/dist/docs/reference/geometry/{HelicalThreadSolidMeshOptions.md → ThreadSolidOptions.md} +18 -65
  227. package/dist/docs/reference/geometry/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +2 -2
  228. package/dist/docs/reference/geometry/ThreadedNutOptions.md +75 -86
  229. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +18 -6
  230. package/dist/docs/reference/geometry/ThreadedNutShape.md +1 -1
  231. package/dist/docs/reference/geometry/ThreadedRodOptions.md +52 -83
  232. package/dist/docs/reference/geometry/TorusOptions.md +1 -1
  233. package/dist/docs/reference/geometry/Transform2-type.md +1 -1
  234. package/dist/docs/reference/geometry/Transform2Data.md +1 -1
  235. package/dist/docs/reference/geometry/Transform2Input.md +1 -1
  236. package/dist/docs/reference/geometry/Transform3-type.md +1 -1
  237. package/dist/docs/reference/geometry/Transform3Data.md +1 -1
  238. package/dist/docs/reference/geometry/Transform3Input.md +1 -1
  239. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +1 -1
  240. package/dist/docs/reference/geometry/TriangleMesh.md +3 -8
  241. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +10 -4
  242. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +2 -2
  243. package/dist/docs/reference/geometry/TriangleMeshInput.md +19 -0
  244. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +1 -1
  245. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +1 -1
  246. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +1 -1
  247. package/dist/docs/reference/geometry/TriangleMeshSignature.md +3 -3
  248. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +1 -1
  249. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +1 -1
  250. package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +131 -0
  251. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +1 -1
  252. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +1 -1
  253. package/dist/docs/reference/geometry/TubeOptions.md +10 -86
  254. package/dist/docs/reference/geometry/Vector2-type.md +1 -1
  255. package/dist/docs/reference/geometry/Vector2Data.md +1 -1
  256. package/dist/docs/reference/geometry/Vector2Input.md +1 -1
  257. package/dist/docs/reference/geometry/Vector3-type.md +1 -1
  258. package/dist/docs/reference/geometry/Vector3Data.md +1 -1
  259. package/dist/docs/reference/geometry/Vector3Input.md +1 -1
  260. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +1 -1
  261. package/dist/docs/reference/geometry/VectorTextLayout.md +1 -1
  262. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +3 -3
  263. package/dist/docs/reference/geometry/VectorTextMetrics.md +1 -1
  264. package/dist/docs/reference/geometry/VectorTextOptions.md +1 -1
  265. package/dist/docs/reference/geometry/add2.md +1 -1
  266. package/dist/docs/reference/geometry/add3.md +1 -1
  267. package/dist/docs/reference/geometry/anchor3.md +1 -1
  268. package/dist/docs/reference/geometry/anchorFrame3.md +1 -1
  269. package/dist/docs/reference/geometry/applyTransformDirection3.md +1 -1
  270. package/dist/docs/reference/geometry/applyTransformPoint3.md +1 -1
  271. package/dist/docs/reference/geometry/attachmentTransform3.md +1 -1
  272. package/dist/docs/reference/geometry/bounds2.md +4 -4
  273. package/dist/docs/reference/geometry/bounds3.md +4 -4
  274. package/dist/docs/reference/geometry/boundsCenter.md +1 -1
  275. package/dist/docs/reference/geometry/boundsSize.md +1 -1
  276. package/dist/docs/reference/geometry/boxAnchor3.md +3 -3
  277. package/dist/docs/reference/geometry/categories/bounds-layout.md +3 -3
  278. package/dist/docs/reference/geometry/categories/curves-paths.md +2 -2
  279. package/dist/docs/reference/geometry/categories/mechanical.md +8 -10
  280. package/dist/docs/reference/geometry/categories/meshes.md +19 -32
  281. package/dist/docs/reference/geometry/categories/pattern-placement.md +2 -2
  282. package/dist/docs/reference/geometry/categories/primitive-options.md +3 -3
  283. package/dist/docs/reference/geometry/categories/profiles-regions.md +5 -4
  284. package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -3
  285. package/dist/docs/reference/geometry/categories/transforms-math.md +3 -2
  286. package/dist/docs/reference/geometry/categories/vector-import.md +3 -3
  287. package/dist/docs/reference/geometry/circleContour.md +1 -1
  288. package/dist/docs/reference/geometry/closeToAxis.md +1 -1
  289. package/dist/docs/reference/geometry/compensateThreadDiameters.md +1 -1
  290. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +1 -1
  291. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +1 -1
  292. package/dist/docs/reference/geometry/composeTransform3.md +1 -1
  293. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +1 -1
  294. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +1 -1
  295. package/dist/docs/reference/geometry/contourContainsPoint.md +1 -1
  296. package/dist/docs/reference/geometry/cross2.md +1 -1
  297. package/dist/docs/reference/geometry/cross3.md +1 -1
  298. package/dist/docs/reference/geometry/cylinderAnchor3.md +2 -2
  299. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +1 -1
  300. package/dist/docs/reference/geometry/distance2.md +1 -1
  301. package/dist/docs/reference/geometry/distance3.md +1 -1
  302. package/dist/docs/reference/geometry/distributeAlongPath.md +1 -1
  303. package/dist/docs/reference/geometry/dot2.md +1 -1
  304. package/dist/docs/reference/geometry/dot3.md +1 -1
  305. package/dist/docs/reference/geometry/ellipseContour.md +1 -1
  306. package/dist/docs/reference/geometry/eulerTransform3.md +1 -1
  307. package/dist/docs/reference/geometry/fitBounds.md +1 -1
  308. package/dist/docs/reference/geometry/fitTextLayout.md +1 -1
  309. package/dist/docs/reference/geometry/frameTransform3.md +1 -1
  310. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +1 -1
  311. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +1 -1
  312. package/dist/docs/reference/geometry/gridPatternTransforms.md +1 -1
  313. package/dist/docs/reference/geometry/immutableBuffer.md +49 -0
  314. package/dist/docs/reference/geometry/inverseTransform3.md +1 -1
  315. package/dist/docs/reference/geometry/isGeometryError.md +1 -1
  316. package/dist/docs/reference/geometry/layoutRow.md +1 -1
  317. package/dist/docs/reference/geometry/length2.md +1 -1
  318. package/dist/docs/reference/geometry/length3.md +1 -1
  319. package/dist/docs/reference/geometry/lerp2.md +1 -1
  320. package/dist/docs/reference/geometry/lerp3.md +1 -1
  321. package/dist/docs/reference/geometry/linearPatternTransforms.md +1 -1
  322. package/dist/docs/reference/geometry/matchProfiles.md +1 -1
  323. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +1 -1
  324. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +1 -1
  325. package/dist/docs/reference/geometry/normalize2.md +1 -1
  326. package/dist/docs/reference/geometry/normalize3.md +1 -1
  327. package/dist/docs/reference/geometry/normalizeContour.md +1 -1
  328. package/dist/docs/reference/geometry/normalizePolygon.md +1 -1
  329. package/dist/docs/reference/geometry/normalizeRegion.md +1 -1
  330. package/dist/docs/reference/geometry/path2.md +1 -1
  331. package/dist/docs/reference/geometry/path3.md +1 -1
  332. package/dist/docs/reference/geometry/pathPatternTransforms.md +1 -1
  333. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +18 -25
  334. package/dist/docs/reference/geometry/preflightSvgRegion.md +1 -1
  335. package/dist/docs/reference/geometry/preflightThreadedNut.md +24 -26
  336. package/dist/docs/reference/geometry/preflightThreadedRod.md +18 -25
  337. package/dist/docs/reference/geometry/projectOntoPlane3.md +1 -1
  338. package/dist/docs/reference/geometry/radialPatternTransforms.md +1 -1
  339. package/dist/docs/reference/geometry/rectangleContour.md +10 -5
  340. package/dist/docs/reference/geometry/rectangleProfile.md +2 -2
  341. package/dist/docs/reference/geometry/regionArea.md +1 -1
  342. package/dist/docs/reference/geometry/regionBounds.md +1 -1
  343. package/dist/docs/reference/geometry/regularPolygonContour.md +2 -2
  344. package/dist/docs/reference/geometry/resamplePolyline2.md +1 -1
  345. package/dist/docs/reference/geometry/resamplePolyline3.md +1 -1
  346. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +1 -1
  347. package/dist/docs/reference/geometry/resolveArcSegments.md +1 -1
  348. package/dist/docs/reference/geometry/resolveCircularSampling.md +1 -1
  349. package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
  350. package/dist/docs/reference/geometry/resolveCylindricalGear.md +1 -1
  351. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +1 -1
  352. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +1 -1
  353. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +1 -1
  354. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  355. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +1 -1
  356. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +1 -1
  357. package/dist/docs/reference/geometry/resolveRackPitch.md +1 -1
  358. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +1 -1
  359. package/dist/docs/reference/geometry/rotate2.md +1 -1
  360. package/dist/docs/reference/geometry/rotationTransform3.md +1 -1
  361. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +1 -1
  362. package/dist/docs/reference/geometry/sampleContour.md +1 -1
  363. package/dist/docs/reference/geometry/sampleCurve2.md +1 -1
  364. package/dist/docs/reference/geometry/sampleCurve3.md +1 -1
  365. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +1 -1
  366. package/dist/docs/reference/geometry/sampleHelix.md +1 -1
  367. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +1 -1
  368. package/dist/docs/reference/geometry/sampleRackToothPath.md +1 -1
  369. package/dist/docs/reference/geometry/sampleSideProfile.md +1 -1
  370. package/dist/docs/reference/geometry/sampleTextContours.md +1 -1
  371. package/dist/docs/reference/geometry/sampleThreadHelices.md +1 -1
  372. package/dist/docs/reference/geometry/scale2.md +1 -1
  373. package/dist/docs/reference/geometry/scale3.md +1 -1
  374. package/dist/docs/reference/geometry/scaleTransform3.md +1 -1
  375. package/dist/docs/reference/geometry/signedContourArea.md +1 -1
  376. package/dist/docs/reference/geometry/starContour.md +17 -15
  377. package/dist/docs/reference/geometry/strokeRegionData.md +1 -1
  378. package/dist/docs/reference/geometry/subtract2.md +1 -1
  379. package/dist/docs/reference/geometry/subtract3.md +1 -1
  380. package/dist/docs/reference/geometry/threadProfile.md +1 -1
  381. package/dist/docs/reference/geometry/transform2.md +1 -1
  382. package/dist/docs/reference/geometry/transform3.md +1 -1
  383. package/dist/docs/reference/geometry/transformDeterminant3.md +1 -1
  384. package/dist/docs/reference/geometry/transformRegionData.md +1 -1
  385. package/dist/docs/reference/geometry/translationTransform3.md +1 -1
  386. package/dist/docs/reference/geometry/triangulateContour.md +1 -1
  387. package/dist/docs/reference/geometry/validateRigidTransform3.md +35 -0
  388. package/dist/docs/reference/geometry/validateTransform3.md +1 -1
  389. package/dist/docs/reference/geometry/vector2.md +1 -1
  390. package/dist/docs/reference/geometry/vector3.md +1 -1
  391. package/dist/docs/reference/geometry.md +9 -9
  392. package/dist/docs/reference/mesh/AcmeThreadProfileSpec.md +79 -0
  393. package/dist/docs/reference/mesh/Bevel.md +18 -0
  394. package/dist/docs/reference/mesh/BevelSize.md +14 -0
  395. package/dist/docs/reference/mesh/Bounds2.md +125 -0
  396. package/dist/docs/reference/mesh/Bounds2Data.md +43 -0
  397. package/dist/docs/reference/mesh/Bounds2Input.md +19 -0
  398. package/dist/docs/reference/mesh/Bounds3.md +125 -0
  399. package/dist/docs/reference/mesh/Bounds3Data.md +43 -0
  400. package/dist/docs/reference/mesh/Bounds3Input.md +19 -0
  401. package/dist/docs/reference/mesh/ButtressPressureFlankSide.md +14 -0
  402. package/dist/docs/reference/mesh/ButtressThreadProfileSpec.md +97 -0
  403. package/dist/docs/reference/mesh/CircularPrimitiveOptions.md +60 -0
  404. package/dist/docs/reference/mesh/CurveSamplingOptions.md +69 -0
  405. package/dist/docs/reference/mesh/CustomThreadProfileSpec.md +77 -0
  406. package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +129 -0
  407. package/dist/docs/reference/mesh/ExtrusionSamplingOptions.md +81 -0
  408. package/dist/docs/reference/mesh/Frame3.md +62 -0
  409. package/dist/docs/reference/mesh/GeometryResolution.md +74 -0
  410. package/dist/docs/reference/mesh/GeometrySamplingLimits.md +66 -0
  411. package/dist/docs/reference/mesh/GeometryToleranceOptions.md +46 -0
  412. package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +18 -0
  413. package/dist/docs/reference/mesh/HeightfieldOptions.md +72 -0
  414. package/dist/docs/reference/mesh/HeightfieldPreflight.md +58 -0
  415. package/dist/docs/reference/mesh/ImmutableBuffer.md +108 -0
  416. package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +43 -0
  417. package/dist/docs/reference/mesh/LoftCorrespondence.md +24 -0
  418. package/dist/docs/reference/mesh/LoftMeshStation.md +31 -0
  419. package/dist/docs/reference/mesh/LoftOptions.md +88 -0
  420. package/dist/docs/reference/mesh/LoftPlacement.md +70 -0
  421. package/dist/docs/reference/mesh/ModelingLimits.md +130 -0
  422. package/dist/docs/reference/mesh/NumericArray.md +14 -0
  423. package/dist/docs/reference/mesh/Path2.md +197 -0
  424. package/dist/docs/reference/mesh/Path2Data.md +50 -0
  425. package/dist/docs/reference/mesh/Path2Input.md +20 -0
  426. package/dist/docs/reference/mesh/Path3.md +197 -0
  427. package/dist/docs/reference/mesh/Path3Data.md +50 -0
  428. package/dist/docs/reference/mesh/Path3Input.md +20 -0
  429. package/dist/docs/reference/mesh/PathLocation.md +69 -0
  430. package/dist/docs/reference/mesh/PathNormalGuide.md +43 -0
  431. package/dist/docs/reference/mesh/PathResamplingOptions.md +84 -0
  432. package/dist/docs/reference/mesh/Pivot2Options.md +26 -0
  433. package/dist/docs/reference/mesh/Pivot3Options.md +26 -0
  434. package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +14 -0
  435. package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +160 -0
  436. package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +124 -0
  437. package/dist/docs/reference/mesh/PlanarPatchQuality.md +194 -0
  438. package/dist/docs/reference/mesh/RevolveOptions.md +91 -0
  439. package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +38 -0
  440. package/dist/docs/reference/mesh/SquareThreadProfileSpec.md +79 -0
  441. package/dist/docs/reference/mesh/SweepOptions.md +113 -0
  442. package/dist/docs/reference/mesh/SweepOrientation.md +113 -0
  443. package/dist/docs/reference/mesh/ThreadEndStyle.md +14 -0
  444. package/dist/docs/reference/mesh/ThreadEndTreatmentOptions.md +117 -0
  445. package/dist/docs/reference/mesh/ThreadHandedness.md +14 -0
  446. package/dist/docs/reference/mesh/ThreadLeadInEnvelope.md +14 -0
  447. package/dist/docs/reference/mesh/ThreadLeadInShape.md +14 -0
  448. package/dist/docs/reference/mesh/ThreadProfile.md +86 -0
  449. package/dist/docs/reference/mesh/ThreadProfileBaseSpec.md +53 -0
  450. package/dist/docs/reference/mesh/ThreadProfileSpec.md +23 -0
  451. package/dist/docs/reference/{model/HelicalThreadRidgeMeshOptions.md → mesh/ThreadRidgeOptions.md} +14 -10
  452. package/dist/docs/reference/mesh/ThreadSolidOptions.md +222 -0
  453. package/dist/docs/reference/mesh/ThreadSolidPreflight.md +58 -0
  454. package/dist/docs/reference/mesh/Transform2.md +256 -0
  455. package/dist/docs/reference/mesh/Transform2Data.md +14 -0
  456. package/dist/docs/reference/mesh/Transform2Input.md +19 -0
  457. package/dist/docs/reference/mesh/Transform3.md +296 -0
  458. package/dist/docs/reference/mesh/Transform3Data.md +17 -0
  459. package/dist/docs/reference/mesh/Transform3Input.md +19 -0
  460. package/dist/docs/reference/mesh/TrapezoidalThreadProfileSpec.md +96 -0
  461. package/dist/docs/reference/mesh/TriangleMesh.md +34 -0
  462. package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +129 -0
  463. package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +79 -0
  464. package/dist/docs/reference/mesh/TriangleMeshInput.md +19 -0
  465. package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +79 -0
  466. package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +43 -0
  467. package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +194 -0
  468. package/dist/docs/reference/mesh/TriangleMeshSignature.md +111 -0
  469. package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +46 -0
  470. package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +34 -0
  471. package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +131 -0
  472. package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +55 -0
  473. package/dist/docs/reference/mesh/TriangularThreadProfileSpec.md +95 -0
  474. package/dist/docs/reference/mesh/Vector2.md +270 -0
  475. package/dist/docs/reference/mesh/Vector2Data.md +14 -0
  476. package/dist/docs/reference/mesh/Vector2Input.md +19 -0
  477. package/dist/docs/reference/mesh/Vector3.md +282 -0
  478. package/dist/docs/reference/mesh/Vector3Data.md +14 -0
  479. package/dist/docs/reference/mesh/Vector3Input.md +19 -0
  480. package/dist/docs/reference/mesh/analyze.md +96 -0
  481. package/dist/docs/reference/{geometry/analyzeTriangleMeshQuality.md → mesh/analyzeQuality.md} +9 -9
  482. package/dist/docs/reference/mesh/bounds.md +39 -0
  483. package/dist/docs/reference/mesh/categories/operations.md +147 -0
  484. package/dist/docs/reference/{geometry/computeTriangleMeshCentroid.md → mesh/centroid.md} +7 -7
  485. package/dist/docs/reference/mesh/extrude.md +73 -0
  486. package/dist/docs/reference/{geometry/heightfieldMesh.md → mesh/heightfield.md} +7 -8
  487. package/dist/docs/reference/mesh/immutable.md +47 -0
  488. package/dist/docs/reference/{geometry/joinTriangleMeshes.md → mesh/join.md} +7 -6
  489. package/dist/docs/reference/{geometry/loftMesh.md → mesh/loft.md} +15 -15
  490. package/dist/docs/reference/mesh/optimizePlanarPatches.md +96 -0
  491. package/dist/docs/reference/{geometry → mesh}/preflightHeightfield.md +5 -6
  492. package/dist/docs/reference/mesh/preflightThreadSolid.md +90 -0
  493. package/dist/docs/reference/{geometry/reverseTriangleMesh.md → mesh/reverse.md} +6 -5
  494. package/dist/docs/reference/{geometry/revolveMesh.md → mesh/revolve.md} +13 -13
  495. package/dist/docs/reference/{geometry/computeTriangleMeshSignature.md → mesh/signature.md} +11 -11
  496. package/dist/docs/reference/mesh/sweep.md +86 -0
  497. package/dist/docs/reference/mesh/threadRidge.md +72 -0
  498. package/dist/docs/reference/mesh/threadSolid.md +90 -0
  499. package/dist/docs/reference/{geometry/transformTriangleMesh.md → mesh/transform.md} +7 -6
  500. package/dist/docs/reference/{geometry/validateTriangleMesh.md → mesh/validate.md} +17 -11
  501. package/dist/docs/reference/{geometry/validateSolidMesh.md → mesh/validateSolid.md} +15 -9
  502. package/dist/docs/reference/mesh.md +21 -0
  503. package/dist/docs/reference/model/AcmeThreadProfileSpec.md +80 -0
  504. package/dist/docs/reference/model/Anchor3.md +1 -1
  505. package/dist/docs/reference/model/AttachOptions.md +1 -1
  506. package/dist/docs/reference/model/Bevel.md +19 -0
  507. package/dist/docs/reference/model/{ThreadedNutBevel.md → BevelSize.md} +4 -4
  508. package/dist/docs/reference/model/Bounds2-type.md +1 -1
  509. package/dist/docs/reference/model/Bounds2Data.md +1 -1
  510. package/dist/docs/reference/model/Bounds2Input.md +1 -1
  511. package/dist/docs/reference/model/Bounds2Options.md +48 -8
  512. package/dist/docs/reference/model/Bounds3-type.md +1 -1
  513. package/dist/docs/reference/model/Bounds3Data.md +1 -1
  514. package/dist/docs/reference/model/Bounds3Input.md +1 -1
  515. package/dist/docs/reference/model/Bounds3Options.md +48 -8
  516. package/dist/docs/reference/model/BoxEdge.md +1 -1
  517. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  518. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  519. package/dist/docs/reference/model/BoxOptions.md +3 -3
  520. package/dist/docs/reference/model/ButtressPressureFlankSide.md +15 -0
  521. package/dist/docs/reference/model/ButtressThreadProfileSpec.md +98 -0
  522. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  523. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  524. package/dist/docs/reference/model/CircleOptions.md +1 -1
  525. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -3
  526. package/dist/docs/reference/model/Computed.md +7 -3
  527. package/dist/docs/reference/model/ComputedValue.md +1 -1
  528. package/dist/docs/reference/model/Contour.md +1 -1
  529. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  530. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  531. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  532. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  533. package/dist/docs/reference/model/CurveSamplingOptions.md +68 -0
  534. package/dist/docs/reference/model/CustomThreadProfileSpec.md +78 -0
  535. package/dist/docs/reference/model/CylinderOptions.md +1 -1
  536. package/dist/docs/reference/model/DiagnosticOptions.md +15 -1
  537. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  538. package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
  539. package/dist/docs/reference/model/EllipseOptions.md +1 -1
  540. package/dist/docs/reference/model/EndTreatments.md +1 -1
  541. package/dist/docs/reference/model/ExtrudeMeshOptions.md +133 -0
  542. package/dist/docs/reference/model/ExtrudeOptions.md +17 -8
  543. package/dist/docs/reference/model/ExtrusionSamplingOptions.md +84 -0
  544. package/dist/docs/reference/model/Frame3.md +1 -1
  545. package/dist/docs/reference/model/GenerateCallback.md +5 -5
  546. package/dist/docs/reference/model/GenerateContext.md +15 -63
  547. package/dist/docs/reference/model/GenerationDiagnostic.md +13 -1
  548. package/dist/docs/reference/model/GenerationError.md +1 -1
  549. package/dist/docs/reference/model/GeometryError.md +102 -0
  550. package/dist/docs/reference/model/GeometryErrorCode.md +15 -0
  551. package/dist/docs/reference/model/GeometryErrorContext.md +35 -0
  552. package/dist/docs/reference/model/GeometryResolution.md +1 -1
  553. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  554. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  555. package/dist/docs/reference/model/GridPatternOptions.md +1 -1
  556. package/dist/docs/reference/model/HeightfieldOptions.md +3 -2
  557. package/dist/docs/reference/model/HoleCutterOptions.md +1 -1
  558. package/dist/docs/reference/model/HoleCutterOverrun.md +1 -1
  559. package/dist/docs/reference/model/HoleCutterRecess.md +1 -1
  560. package/dist/docs/reference/model/HullOptions.md +1 -1
  561. package/dist/docs/reference/model/ImmutableBuffer-type.md +27 -3
  562. package/dist/docs/reference/model/ImmutableTriangleMesh.md +8 -3
  563. package/dist/docs/reference/model/ImmutableValue.md +20 -0
  564. package/dist/docs/reference/model/ImplicitOptions.md +1 -1
  565. package/dist/docs/reference/model/InternalThreadCutterOptions.md +54 -84
  566. package/dist/docs/reference/model/KnuckleHinge-type.md +1 -1
  567. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +1 -1
  568. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +1 -1
  569. package/dist/docs/reference/model/KnuckleHingeOptions.md +1 -1
  570. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +1 -1
  571. package/dist/docs/reference/model/KnuckleHingeSpec.md +1 -1
  572. package/dist/docs/reference/model/KnuckleHingeWeb.md +1 -1
  573. package/dist/docs/reference/model/LinearPatternOptions.md +1 -1
  574. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  575. package/dist/docs/reference/model/LoftOptions.md +3 -3
  576. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  577. package/dist/docs/reference/model/LoftStation.md +1 -1
  578. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  579. package/dist/docs/reference/model/ModelProgram.md +2 -2
  580. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  581. package/dist/docs/reference/model/NumericArray.md +1 -1
  582. package/dist/docs/reference/model/{GeneratedPart.md → PartDeclaration.md} +8 -23
  583. package/dist/docs/reference/model/PartGeometry.md +2 -2
  584. package/dist/docs/reference/model/PartOptions.md +8 -19
  585. package/dist/docs/reference/model/Path2-type.md +1 -1
  586. package/dist/docs/reference/model/Path2Data.md +1 -1
  587. package/dist/docs/reference/model/Path2Input.md +1 -1
  588. package/dist/docs/reference/model/Path3-type.md +1 -1
  589. package/dist/docs/reference/model/Path3Data.md +1 -1
  590. package/dist/docs/reference/model/Path3Input.md +1 -1
  591. package/dist/docs/reference/model/PathLocation.md +1 -1
  592. package/dist/docs/reference/model/PathNormalGuide.md +1 -1
  593. package/dist/docs/reference/model/PathOptions.md +1 -1
  594. package/dist/docs/reference/model/PathPatternOptions.md +1 -1
  595. package/dist/docs/reference/model/PathResamplingOptions.md +7 -6
  596. package/dist/docs/reference/model/PatternSource.md +1 -1
  597. package/dist/docs/reference/model/Pivot2Options.md +1 -1
  598. package/dist/docs/reference/model/Pivot3Options.md +1 -1
  599. package/dist/docs/reference/model/PlaneOptions.md +1 -1
  600. package/dist/docs/reference/model/PolygonData.md +1 -1
  601. package/dist/docs/reference/model/PolygonOptions.md +1 -1
  602. package/dist/docs/reference/model/PrimitiveAttachment.md +1 -3
  603. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +1 -1
  604. package/dist/docs/reference/model/PrintableThreadFit.md +1 -1
  605. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +1 -1
  606. package/dist/docs/reference/model/Profile.md +1 -1
  607. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  608. package/dist/docs/reference/model/ProfileContour2.md +1 -1
  609. package/dist/docs/reference/model/ProfileSpan2.md +1 -1
  610. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +1 -1
  611. package/dist/docs/reference/model/RadialPatternOptions.md +1 -1
  612. package/dist/docs/reference/model/RadialSizing.md +1 -1
  613. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  614. package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
  615. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  616. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  617. package/dist/docs/reference/model/RectangleOptions.md +3 -3
  618. package/dist/docs/reference/model/RegionData.md +1 -1
  619. package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
  620. package/dist/docs/reference/model/RevolveOptions.md +2 -2
  621. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  622. package/dist/docs/reference/model/Section.md +131 -6
  623. package/dist/docs/reference/model/SectionHullOptions.md +1 -1
  624. package/dist/docs/reference/model/SectionInspection.md +5 -17
  625. package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
  626. package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
  627. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  628. package/dist/docs/reference/model/Solid.md +245 -8
  629. package/dist/docs/reference/model/SolidInspection.md +5 -17
  630. package/dist/docs/reference/model/SolidSegmentHit.md +5 -1
  631. package/dist/docs/reference/model/SphereOptions.md +1 -1
  632. package/dist/docs/reference/model/SquareThreadProfileSpec.md +80 -0
  633. package/dist/docs/reference/model/StarContourOptions.md +81 -0
  634. package/dist/docs/reference/model/StarOptions.md +38 -16
  635. package/dist/docs/reference/model/StrokeCap.md +1 -1
  636. package/dist/docs/reference/model/StrokeJoin.md +1 -1
  637. package/dist/docs/reference/model/StrokeOptions.md +1 -1
  638. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  639. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  640. package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
  641. package/dist/docs/reference/model/SweepOptions.md +1 -1
  642. package/dist/docs/reference/model/SweepOrientation.md +1 -1
  643. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  644. package/dist/docs/reference/model/ThreadBevelOptions.md +35 -0
  645. package/dist/docs/reference/model/ThreadEndStyle.md +1 -1
  646. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +1 -1
  647. package/dist/docs/reference/model/ThreadHandedness.md +1 -1
  648. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +1 -1
  649. package/dist/docs/reference/model/ThreadLeadInShape.md +1 -1
  650. package/dist/docs/reference/model/ThreadProfile.md +2 -2
  651. package/dist/docs/reference/model/ThreadProfileBaseSpec.md +54 -0
  652. package/dist/docs/reference/model/ThreadProfileSpec.md +24 -0
  653. package/dist/docs/reference/model/ThreadRidgeOptions.md +126 -4
  654. package/dist/docs/reference/model/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +2 -2
  655. package/dist/docs/reference/model/ThreadedNutOptions.md +75 -86
  656. package/dist/docs/reference/model/ThreadedNutPreflight.md +18 -6
  657. package/dist/docs/reference/model/ThreadedNutShape.md +1 -1
  658. package/dist/docs/reference/model/ThreadedRodOptions.md +54 -84
  659. package/dist/docs/reference/model/TorusOptions.md +1 -1
  660. package/dist/docs/reference/model/Transform2-type.md +1 -1
  661. package/dist/docs/reference/model/Transform2Data.md +1 -1
  662. package/dist/docs/reference/model/Transform2Input.md +1 -1
  663. package/dist/docs/reference/model/Transform3-type.md +1 -1
  664. package/dist/docs/reference/model/Transform3Data.md +1 -1
  665. package/dist/docs/reference/model/Transform3Input.md +1 -1
  666. package/dist/docs/reference/model/TrapezoidalThreadProfileSpec.md +97 -0
  667. package/dist/docs/reference/model/TriangleMesh.md +3 -11
  668. package/dist/docs/reference/model/TriangleMeshAnalysis.md +10 -4
  669. package/dist/docs/reference/model/TriangleMeshMeasurements.md +1 -1
  670. package/dist/docs/reference/model/TriangleMeshTopologyAnalysis.md +131 -0
  671. package/dist/docs/reference/model/TriangularThreadProfileSpec.md +96 -0
  672. package/dist/docs/reference/model/TubeOptions.md +10 -86
  673. package/dist/docs/reference/model/Vector2-type.md +1 -1
  674. package/dist/docs/reference/model/Vector2Data.md +1 -1
  675. package/dist/docs/reference/model/Vector2Input.md +1 -1
  676. package/dist/docs/reference/model/Vector3-type.md +1 -1
  677. package/dist/docs/reference/model/Vector3Data.md +1 -1
  678. package/dist/docs/reference/model/Vector3Input.md +1 -1
  679. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  680. package/dist/docs/reference/model/VectorTextMetrics.md +1 -1
  681. package/dist/docs/reference/model/bounds2.md +4 -4
  682. package/dist/docs/reference/model/bounds3.md +4 -4
  683. package/dist/docs/reference/model/box.md +2 -2
  684. package/dist/docs/reference/model/categories/boolean-operations.md +6 -10
  685. package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -1
  686. package/dist/docs/reference/model/categories/bounds.md +2 -2
  687. package/dist/docs/reference/model/categories/contracts.md +3 -5
  688. package/dist/docs/reference/model/categories/core-values-errors.md +17 -3
  689. package/dist/docs/reference/model/categories/explicit-profiles.md +1 -1
  690. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +10 -8
  691. package/dist/docs/reference/model/categories/generation.md +8 -8
  692. package/dist/docs/reference/model/categories/hinges.md +1 -1
  693. package/dist/docs/reference/model/categories/mesh-inspection.md +15 -6
  694. package/dist/docs/reference/model/categories/paths.md +4 -3
  695. package/dist/docs/reference/model/categories/primitives.md +5 -5
  696. package/dist/docs/reference/model/categories/resolution.md +1 -1
  697. package/dist/docs/reference/model/categories/sections.md +4 -3
  698. package/dist/docs/reference/model/categories/threads.md +16 -6
  699. package/dist/docs/reference/model/categories/transforms-placement.md +2 -3
  700. package/dist/docs/reference/model/circle.md +1 -1
  701. package/dist/docs/reference/model/cylinder.md +1 -1
  702. package/dist/docs/reference/model/ellipse.md +1 -1
  703. package/dist/docs/reference/model/extrude.md +5 -4
  704. package/dist/docs/reference/model/generate.md +4 -4
  705. package/dist/docs/reference/model/gridPattern.md +1 -1
  706. package/dist/docs/reference/model/heightfield.md +1 -1
  707. package/dist/docs/reference/model/holeCutter.md +12 -2
  708. package/dist/docs/reference/model/hull.md +1 -1
  709. package/dist/docs/reference/model/immutableBuffer.md +5 -4
  710. package/dist/docs/reference/model/implicit.md +1 -1
  711. package/dist/docs/reference/model/internalThreadCutter.md +12 -20
  712. package/dist/docs/reference/model/intersect.md +3 -3
  713. package/dist/docs/reference/model/isGeometryError.md +34 -0
  714. package/dist/docs/reference/model/knuckleHinge.md +2 -2
  715. package/dist/docs/reference/model/linearPattern.md +1 -1
  716. package/dist/docs/reference/model/loft.md +6 -5
  717. package/dist/docs/reference/model/matchProfiles.md +1 -1
  718. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  719. package/dist/docs/reference/model/path2.md +1 -1
  720. package/dist/docs/reference/model/path3.md +1 -1
  721. package/dist/docs/reference/model/pathPattern.md +1 -1
  722. package/dist/docs/reference/model/polygon.md +1 -1
  723. package/dist/docs/reference/model/preflightInternalThreadCutter.md +15 -23
  724. package/dist/docs/reference/model/preflightThreadedNut.md +22 -25
  725. package/dist/docs/reference/model/preflightThreadedRod.md +15 -23
  726. package/dist/docs/reference/model/radialPattern.md +1 -1
  727. package/dist/docs/reference/model/rectangle.md +2 -2
  728. package/dist/docs/reference/model/regularPolygon.md +1 -1
  729. package/dist/docs/reference/model/revolve.md +6 -5
  730. package/dist/docs/reference/model/solidFromMesh.md +7 -6
  731. package/dist/docs/reference/model/sphere.md +1 -1
  732. package/dist/docs/reference/model/star.md +7 -7
  733. package/dist/docs/reference/model/stroke.md +1 -1
  734. package/dist/docs/reference/model/svgPathSection.md +1 -1
  735. package/dist/docs/reference/model/svgSection.md +1 -1
  736. package/dist/docs/reference/model/sweep.md +5 -4
  737. package/dist/docs/reference/model/textSection.md +1 -1
  738. package/dist/docs/reference/model/threadRidge.md +14 -14
  739. package/dist/docs/reference/model/threadedNut.md +22 -25
  740. package/dist/docs/reference/model/threadedRod.md +12 -20
  741. package/dist/docs/reference/model/torus.md +1 -1
  742. package/dist/docs/reference/model/transform2.md +1 -1
  743. package/dist/docs/reference/model/transform3.md +1 -1
  744. package/dist/docs/reference/model/tube.md +1 -36
  745. package/dist/docs/reference/model/union.md +3 -3
  746. package/dist/docs/reference/model/vector2.md +1 -1
  747. package/dist/docs/reference/model/vector3.md +1 -1
  748. package/dist/docs/reference/model.md +15 -19
  749. package/dist/docs/reference/text/Bounds2Data.md +1 -1
  750. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +2 -2
  751. package/dist/docs/reference/text/Vector2Data.md +1 -1
  752. package/dist/docs/reference/text/VectorFont.md +7 -7
  753. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  754. package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
  755. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  756. package/dist/docs/reference/text/VectorTextLayoutOptions.md +3 -3
  757. package/dist/docs/reference/text/VectorTextMetrics.md +1 -1
  758. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  759. package/dist/docs/reference/text/categories/font-preparation.md +3 -3
  760. package/dist/docs/reference/text/prepareVectorFont.md +1 -1
  761. package/dist/docs/reference/text.md +4 -4
  762. package/dist/engine/execution.js +10 -6
  763. package/dist/engine/export-3mf.js +22 -115
  764. package/dist/engine/finalization.js +10 -10
  765. package/dist/engine/index.js +25 -31
  766. package/dist/engine/model-parts.js +8 -0
  767. package/dist/engine/model-summary.js +5 -5
  768. package/dist/engine/native/index.js +1 -1
  769. package/dist/engine/native/material-components.js +3 -3
  770. package/dist/engine/native/operations.js +0 -7
  771. package/dist/engine/native/scoped-primitives.js +5 -4
  772. package/dist/engine/native/threads.js +14 -14
  773. package/dist/engine/{construction-operations.js → operations/construction.js} +25 -23
  774. package/dist/engine/{modeling-context.js → operations/context.js} +10 -10
  775. package/dist/engine/{operation-environment.js → operations/environment.js} +2 -2
  776. package/dist/engine/{extrusion-finishing.js → operations/extrusion-finishing.js} +7 -7
  777. package/dist/engine/{hole-cutter-operation.js → operations/hole-cutter.js} +3 -3
  778. package/dist/engine/{inspection-operations.js → operations/inspection.js} +6 -6
  779. package/dist/engine/{knuckle-hinge-operation.js → operations/knuckle-hinge.js} +4 -4
  780. package/dist/engine/{loft-operations.js → operations/loft.js} +13 -12
  781. package/dist/engine/{mechanical-operations.js → operations/mechanical.js} +2 -2
  782. package/dist/engine/{pattern-operations.js → operations/patterns.js} +4 -4
  783. package/dist/engine/{primitive-anchors.js → operations/primitives/anchors.js} +9 -4
  784. package/dist/engine/{primitive-operations.js → operations/primitives/construction.js} +18 -19
  785. package/dist/engine/{primitive-correspondence.js → operations/primitives/correspondence.js} +4 -4
  786. package/dist/engine/{profile-mesh.js → operations/primitives/profile-mesh.js} +12 -12
  787. package/dist/engine/{primitive-profiles.js → operations/primitives/profiles.js} +7 -7
  788. package/dist/engine/{section-operations.js → operations/sections.js} +8 -8
  789. package/dist/engine/{transform-operations.js → operations/transforms.js} +8 -8
  790. package/dist/engine/placement.js +3 -4
  791. package/dist/engine/recipe-realization.js +1 -1
  792. package/dist/engine/serialize-3mf.js +116 -0
  793. package/dist/engine/{deferred-context.js → session/deferred-context.js} +4 -4
  794. package/dist/engine/{model-dependencies.js → session/dependencies.js} +1 -1
  795. package/dist/engine/{session-graph.js → session/graph.js} +13 -11
  796. package/dist/engine/{session-native.js → session/native-cache.js} +1 -1
  797. package/dist/engine/{session.js → session/session.js} +16 -10
  798. package/dist/engine/{session-snapshot.js → session/snapshot-cache.js} +29 -59
  799. package/dist/geometry/anchors.js +4 -11
  800. package/dist/geometry/bounds-value.js +20 -10
  801. package/dist/geometry/heightfield.js +10 -12
  802. package/dist/{model → geometry}/immutable-buffer.js +28 -7
  803. package/dist/geometry/index.js +16 -22
  804. package/dist/geometry/loft/loft.js +11 -6
  805. package/dist/geometry/mechanical/index.js +5 -5
  806. package/dist/geometry/mechanical/threads/bevel.js +24 -0
  807. package/dist/geometry/mechanical/{threads.js → threads/fit.js} +4 -4
  808. package/dist/geometry/mechanical/{thread-helices.js → threads/helices.js} +3 -3
  809. package/dist/geometry/mechanical/{thread-mesh-plan.js → threads/mesh-plan.js} +38 -53
  810. package/dist/geometry/mechanical/{thread-mesh.js → threads/mesh.js} +9 -9
  811. package/dist/geometry/mechanical/{thread-profiles.js → threads/profiles.js} +3 -3
  812. package/dist/geometry/mechanical/{thread-solids.js → threads/solids.js} +58 -89
  813. package/dist/geometry/mechanical/{thread-surface.js → threads/surface.js} +7 -8
  814. package/dist/geometry/mesh/mesh-centroid.js +3 -2
  815. package/dist/geometry/mesh/mesh-planar.js +27 -8
  816. package/dist/geometry/mesh/mesh-quality.js +2 -1
  817. package/dist/geometry/mesh/mesh-signature.js +7 -6
  818. package/dist/geometry/mesh/mesh-solid.js +2 -3
  819. package/dist/geometry/mesh/mesh-types.js +1 -0
  820. package/dist/geometry/mesh/mesh.js +13 -22
  821. package/dist/geometry/mesh-api.js +14 -0
  822. package/dist/geometry/primitive-resolvers.js +42 -14
  823. package/dist/geometry/profiles/primitives/circle.js +19 -0
  824. package/dist/geometry/profiles/{shapes.js → primitives/ellipse.js} +6 -10
  825. package/dist/geometry/profiles/{rectangle.js → primitives/rectangle.js} +14 -12
  826. package/dist/geometry/profiles/primitives/regular-polygon.js +33 -0
  827. package/dist/geometry/profiles/primitives/star.js +28 -0
  828. package/dist/geometry/revolve/revolve-mesh.js +1 -1
  829. package/dist/geometry/{svg-import.js → svg/import.js} +10 -10
  830. package/dist/geometry/sweeps/sweep-mesh.js +1 -1
  831. package/dist/geometry/transform3.js +29 -0
  832. package/dist/index.js +2 -1
  833. package/dist/model/diagnostic-path.js +26 -0
  834. package/dist/model/execution-binding.js +3 -3
  835. package/dist/model/generation.js +8 -2
  836. package/dist/model/geometry-recipes.js +1 -1
  837. package/dist/model/immutable-generation-data.js +33 -2
  838. package/dist/model/operations.js +14 -144
  839. package/dist/model/recipe-declaration.js +6 -2
  840. package/dist/model/shape-handles.js +30 -7
  841. package/dist/text/index.js +1 -1
  842. package/package.json +21 -11
  843. package/dist/docs/reference/engine/ModelSnapshot.md +0 -184
  844. package/dist/docs/reference/engine/SnapshotPart.md +0 -133
  845. package/dist/docs/reference/engine/validateModel.md +0 -48
  846. package/dist/docs/reference/geometry/ThreadedNutBevel.md +0 -14
  847. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +0 -61
  848. package/dist/docs/reference/geometry/extrudeMesh.md +0 -77
  849. package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +0 -72
  850. package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +0 -106
  851. package/dist/docs/reference/geometry/meshBounds.md +0 -39
  852. package/dist/docs/reference/geometry/optimizePlanarPatches.md +0 -95
  853. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +0 -105
  854. package/dist/docs/reference/geometry/sweepMesh.md +0 -86
  855. package/dist/docs/reference/model/FinalizedModel.md +0 -131
  856. package/dist/docs/reference/model/FinalizedPart.md +0 -87
  857. package/dist/docs/reference/model/anchor.md +0 -47
  858. package/dist/docs/reference/model/castSegment.md +0 -40
  859. package/dist/docs/reference/model/categories/inspection.md +0 -29
  860. package/dist/docs/reference/model/components.md +0 -71
  861. package/dist/docs/reference/model/compose.md +0 -31
  862. package/dist/docs/reference/model/distance.md +0 -45
  863. package/dist/docs/reference/model/immutableMesh.md +0 -44
  864. package/dist/docs/reference/model/inspectSection.md +0 -38
  865. package/dist/docs/reference/model/inspectSolid.md +0 -38
  866. package/dist/docs/reference/model/isEmpty.md +0 -39
  867. package/dist/docs/reference/model/split.md +0 -54
  868. package/dist/docs/reference/model/splitByPlane.md +0 -66
  869. package/dist/geometry/profiles/profiles.js +0 -71
  870. /package/dist/engine/{primitive-profile-types.js → operations/primitives/profile-types.js} +0 -0
  871. /package/dist/geometry/profiles/{matched.js → match-profiles.js} +0 -0
@@ -2,8 +2,9 @@
2
2
 
3
3
  Choose shapes, paths, profiles, and modules, then compose immutable geometry with clear sampling and preflight limits.
4
4
 
5
- Use Sections for filled 2D shapes, Solids for 3D material, and paths or profiles for boundaries
6
- and correspondence. Import modeling functions from the package root:
5
+ 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:
7
8
 
8
9
 
9
10
 
@@ -14,8 +15,8 @@ import { generate } from "@metamesh/project";
14
15
 
15
16
 
16
17
 
17
- Studio supplies the API and runtime to code Projects. Standalone applications use the same
18
- values in a generation program. Use the [Model API reference](../reference/model.md) for exact
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
19
20
  signatures.
20
21
 
21
22
  ## Choose a modeling path
@@ -30,32 +31,34 @@ signatures.
30
31
  | Repeated holes or features | [Patterns and placement](recipes.md#primitive-booleans-and-repeated-placement) | Position one feature before repeating it |
31
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 |
32
33
 
33
- Combine these constructions as needed: join a flange to a sleeve, then bore either with a
34
- repeated cutter. Prefer an existing primitive when it fits; use `tube` for a concentric straight
35
- sleeve.
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.
36
37
 
37
- Start with synchronous generation and return named parts. Geometry values are immutable recipes
38
- that the host evaluates. Add `computed` when expensive work stays unchanged across edits. See
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
39
41
  [generation and parameter changes](generation.md#start-with-generate) and the
40
42
  [standalone CLI entry contract](https://metamesh.studio/docs/develop/agent-authoring#model-entries).
41
43
 
42
44
  ## Choose the module for your host
43
45
 
44
- | Import | Use it for | Who owns execution |
45
- | --------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------- |
46
- | [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, transforms, Booleans, sweeps, lofts, and patterns | A synchronous generation program |
47
- | [`@metamesh/modeling/geometry`](../reference/geometry.md) | Pure paths, profiles, calculations, and indexed meshes | Your ordinary TypeScript code |
48
- | [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
49
- | [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
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 |
50
53
 
51
54
  Construct shapes, vectors, paths, and transforms in ordinary TypeScript and reuse them in
52
- synchronous generation. The host owns evaluation, observations, and export.
55
+ synchronous generation. Studio or your standalone engine handles evaluation, measurements, and export.
53
56
 
54
57
  ## Use Modeling outside Studio
55
58
 
56
59
  Start with a [complete standalone model](standalone-model.md), or follow
57
60
  [Run Modeling in your application](hosting.md)
58
- to initialize the engine, build a model, load WASM, and export its completed snapshot.
61
+ to initialize the engine, build a model, load WASM, and export the completed result.
59
62
  For lettering, [prepare exact font bytes](fonts.md) before building.
60
63
 
61
64
  ## Geometry vocabulary
@@ -76,12 +79,14 @@ Choose the representation by the information you need to retain:
76
79
  | `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
77
80
  | `Anchor3` | An attachment frame | Relative placement |
78
81
 
79
- `Section` and `Solid` are opaque immutable recipes. Construction and composition need no engine;
80
- ordinary recipes can be reused across sessions regardless of where they were constructed.
81
- Explicitly supplied resolution settings are captured; unspecified settings inherit the evaluating
82
- host's defaults. The host owns evaluation caches and native kernel values. `components()` is an
83
- observation: its selected shapes, and recipes using them, can only be evaluated in the originating
84
- session because component identity depends on evaluated topology.
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.
85
90
 
86
91
  Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
87
92
  contour factories such as `circleContour` and `rectangleContour` when custom calculations or
@@ -103,12 +108,12 @@ sampling options:
103
108
  - `polygon({ polygons: data })` accepts existing `RegionData`.
104
109
 
105
110
  Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
106
- disconnected components. Use `section.toRegionData()` inside synchronous generation to observe
107
- the evaluated shape; keep serialized point data for interchange or pure preparation.
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.
108
113
 
109
114
  `rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
110
- identified spans for custom geometry. Prepare a complete explicit family with `matchProfiles`
111
- when loft stations or a sweep need authored holes, seams, or landmarks beyond ordinary primitives.
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.
112
117
 
113
118
  Identified spans also accept cubic Béziers with the same endpoints and controls as
114
119
  [`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
@@ -117,10 +122,26 @@ retain repeated logical slots, while the completed loft removes degenerate faces
117
122
 
118
123
  ## Choose fluent values or standalone algorithms
119
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
+
120
141
  Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
121
142
  `path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
122
143
  outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
123
- [`sweepMesh`](../reference/geometry/sweepMesh.md), or
144
+ [`mesh.sweep`](../reference/mesh/sweep.md), or
124
145
  [`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
125
146
 
126
147
  ### Fluent vector and tuple arithmetic
@@ -155,9 +176,9 @@ data, and any supported construction shorthand.
155
176
 
156
177
  Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
157
178
  and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
158
- when a numerical algorithm needs only coordinates; use the full record to retain topology.
159
- Options, reports, geometry descriptors, and recipes keep their descriptive contracts. Use
160
- `toTriangleMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a mesh
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
161
182
  or a Section as a region.
162
183
 
163
184
  ## Query paths and preserve closure
@@ -195,7 +216,7 @@ export const restoredPath = path3(boundary.toData());
195
216
 
196
217
  `toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
197
218
  value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
198
- Closed paths omit the duplicated endpoint. Open paths may be empty; their bounds are `undefined`,
219
+ Don't repeat the endpoint of a closed path. Open paths may be empty; their bounds are `undefined`,
199
220
  and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
200
221
  not a filled interior or underlying analytic curve.
201
222
 
@@ -206,13 +227,21 @@ dimension. Authored point collections accept fluent vectors or tuples; serialize
206
227
 
207
228
  ## Compose modeling operations
208
229
 
209
- Name meaningful intermediate values and choose a curve tolerance that preserves the required
210
- shape. Many high-resolution Boolean operands increase generation time.
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.
211
239
 
212
240
  Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
213
- filled Section and `box({ size: [24, 16, 6] })` creates a Solid. `union` and `intersect`
214
- combine same-dimensional arrays. `shape.subtract(cutters)` accepts an array of same-dimensional
215
- cutters. `section.offset(distance, options)` stays in the filled XY plane.
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.
216
245
 
217
246
  - `section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
218
247
  `center: true` is requested.
@@ -220,9 +249,9 @@ cutters. `section.offset(distance, options)` stays in the filled XY plane.
220
249
  - `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
221
250
  rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. Invertible
222
251
  XY transforms must keep consistent handedness. Use corresponding Profile stations for custom
223
- topology. Boolean Sections and point contours need a `correspondence` method (`"direct"`,
224
- `"reindex"`, `"fast-distance"`, or `"distance"`) or explicit profiles; contour order alone does
225
- not establish semantic correspondence.
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.
226
255
  - `section.sweep(path, options)` supports open or closed paths, degree twist, uniform/XY/per-station
227
256
  scales, and an explicit compatible closed seam.
228
257
 
@@ -242,16 +271,21 @@ in this order:
242
271
  2. The operation's local `resolution`.
243
272
  3. Host session defaults.
244
273
 
245
- A shape does not carry its sampling policy into later operations; pass it explicitly where needed.
274
+ A shape doesn't carry its sampling policy into later operations; pass it explicitly where needed.
246
275
 
247
276
  Use an exact segment count for intentionally faceted geometry or when two sampled contours must
248
277
  match point for point. Use physical chord and segment limits for ordinary printable curves. If a
249
- requested tolerance cannot fit within the safety cap, the operation fails instead of silently
278
+ requested tolerance can't fit within the safety cap, the operation fails instead of silently
250
279
  returning a coarser shape.
251
280
 
252
281
  `regularPolygon({ radius, sides, rotation, sizing })` makes a filled regular polygon.
253
282
  `sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
254
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.
255
289
 
256
290
  Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
257
291
  `profile` points:
@@ -269,8 +303,8 @@ millimetre gap, and degree spin. It accepts named or explicit anchors; Sections
269
303
 
270
304
  Use [`transform2`](../reference/geometry/transform2.md) and
271
305
  [`transform3`](../reference/geometry/transform3.md) chains for reusable placements. They are immutable
272
- and pure; no engine initialization is needed. Calls apply in written order. A rotation followed
273
- by a translation rotates around the origin, then moves the result:
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:
274
308
 
275
309
 
276
310
 
@@ -286,12 +320,14 @@ export const placedDirection = placement.applyDirection([10, 0, 0]); // approxim
286
320
 
287
321
 
288
322
  Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
289
- matching path helpers. `toData()` supplies a canonical matrix when another system needs it.
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.
290
326
  Construct the placement once and reuse it across point collections.
291
327
 
292
328
  `current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
293
- same-dimensional matrix. `inverse()` returns the reverse placement. Transform-building operations
294
- return new chains, so shared placements can branch safely.
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.
295
331
 
296
332
  Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
297
333
  the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
@@ -306,7 +342,7 @@ including under nonuniform scaling; it rejects zero normals. All three return fl
306
342
  `Transform2` works directly with Sections and pure XY helpers; its `Transform2Data` is the same
307
343
  canonical 3x3 representation throughout. Use `to3D()` when that XY placement
308
344
  also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
309
- that move the XY plane or collapse its dimensions; it does not project 3D points.
345
+ that move the XY plane or collapse its dimensions; it doesn't project 3D points.
310
346
  See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
311
347
 
312
348
  ### Transform composition order
@@ -367,7 +403,7 @@ export const perpendicular = normal.dot(tangent); // approximately 0
367
403
 
368
404
 
369
405
 
370
- Fluent math, shape transforms, and part placement accept vector values directly. Serialized
406
+ Fluent math and shape transforms accept vector values directly; compose a transform for part placement. Serialized
371
407
  geometry and low-level kernels use tuples. Keep model-specific equations beside the model.
372
408
 
373
409
  ## Measure and compare bounds
@@ -375,27 +411,22 @@ geometry and low-level kernels use tuples. Keep model-specific equations beside
375
411
  Use [`bounds2`](../reference/geometry/bounds2.md) and
376
412
  [`bounds3`](../reference/geometry/bounds3.md) for immutable axis-aligned bounds. `size()` and
377
413
  `center()` return fluent vectors. `containsBounds(other)` tests positioned containment in the
378
- same coordinate frame, including touching boundaries. It does not establish a manufacturing fit.
414
+ same coordinate frame, including touching boundaries. It doesn't establish a manufacturing fit.
379
415
 
380
416
 
381
417
 
382
418
  ```ts
383
419
  import { bounds3 } from "@metamesh/modeling";
384
- import {
385
- extrudeMesh,
386
- fitBounds,
387
- layoutRow,
388
- meshBounds,
389
- rectangleContour,
390
- } from "@metamesh/modeling/geometry";
420
+ import { fitBounds, layoutRow, rectangleContour } from "@metamesh/modeling/geometry";
421
+ import * as mesh from "@metamesh/modeling/geometry/mesh";
391
422
 
392
423
  export const envelope = bounds3({ min: [-10, -5, 0], max: [10, 5, 8] });
393
424
  export const size = envelope.size(); // Vector3: [20, 10, 8] mm
394
425
  export const center = envelope.center(); // Vector3: [0, 0, 4] mm
395
426
 
396
- const mesh = extrudeMesh(rectangleContour({ size: [12, 6] }), { height: 4 });
427
+ const triangleMesh = mesh.extrude(rectangleContour({ size: [12, 6] }), { height: 4 });
397
428
  // Mesh measurements are plain data. Wrap once for fluent queries.
398
- export const measured = bounds3(meshBounds(mesh));
429
+ export const measured = bounds3(mesh.bounds(triangleMesh));
399
430
  export const fits = envelope.containsBounds(measured); // true
400
431
  export const data = measured.toData(); // Frozen { min, max } record for interchange.
401
432
 
@@ -417,10 +448,10 @@ Mesh and region measurements, inspection results, and engine snapshots retain pl
417
448
  Compiled Generator packages passing bounds values to host recipes or computed data require
418
449
  runtime `9.0.0` or newer in major 9.
419
450
 
420
- Keep [`fitBounds`](../reference/geometry/fitBounds.md) and
421
- [`layoutRow`](../reference/geometry/layoutRow.md) as standalone algorithms: they compute placement
422
- reports and collection layouts. Both accept values or plain records. Supply bounds after any
423
- intended rotation; an axis-aligned box alone does not describe the underlying shape.
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.
424
455
 
425
456
  ## SVG sections: fills and strokes are different inputs
426
457
 
@@ -430,7 +461,7 @@ handles supported shapes, paths, affine transforms, physical root units, `viewBo
430
461
  allowlisted inline fill and stroke presentation.
431
462
 
432
463
  [`svgPathSection`](../reference/model/svgPathSection.md) accepts SVG path-data text rather than a
433
- document. It is a **fill-only** path operation: stroke styling is not part of that contract. Path
464
+ document. It is a **fill-only** path operation: it doesn't apply stroke styling. Path
434
465
  units default to millimetres and can be converted with its scale option.
435
466
 
436
467
  Both functions convert SVG's Y-down plane to MetaMesh's Y-up plane and center the final painted
@@ -438,8 +469,8 @@ bounds by default. Use `origin: "document"` with `svgSection` when the converted
438
469
  origin must remain meaningful. Adaptive flattening happens after supported transforms and unit
439
470
  conversion, so tolerances apply in final millimetre space.
440
471
 
441
- Unsupported layout or external content fails rather than disappearing silently. The current public
442
- contract does not include nested SVG viewports, `<use>`, images, live text, external stylesheets,
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,
443
474
  clipping, masks, filters, scripts, animation, gradients, patterns, uploaded project assets, or
444
475
  custom font files. Use the [SVG extrusion recipe](recipes.md#svg-parameter-and-extrusion)
445
476
  for a complete authored example.
@@ -448,8 +479,8 @@ for a complete authored example.
448
479
 
449
480
  `services.text.layout()` shapes text inside generation. Cache an expensive shared layout with
450
481
  `computed`, measure its `metrics`, and pass it to `textSection(layout())`. There is no
451
- ambient font provider or repeated shaping during export. Declare a Text control for the wording
452
- and a Font control for the face and weight.
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.
453
484
 
454
485
  Font size is the em size in millimetres, not the height of a particular letter. Layout supports
455
486
  horizontal lines, spacing, and alignment, or a single circular baseline through
@@ -467,41 +498,50 @@ complete source, profile and fit choices, end treatments, and links into the exa
467
498
 
468
499
  ## Check preflight guarantees
469
500
 
470
- Preflights expose operation-specific checks and reports. Read their return contracts before
471
- using a successful result as a guarantee:
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:
472
503
 
473
- - [`preflightHeightfield`](../reference/geometry/preflightHeightfield.md) checks grid dimensions,
504
+ - [`mesh.preflightHeightfield`](../reference/mesh/preflightHeightfield.md) checks grid dimensions,
474
505
  coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
475
506
  and byte counts without evaluating heights.
476
- - [`preflightHelicalThreadSolidMesh`](../reference/geometry/preflightHelicalThreadSolidMesh.md)
507
+ - [`mesh.preflightThreadSolid`](../reference/mesh/preflightThreadSolid.md)
477
508
  and related thread preflights check dimensions, sampling, and conservative allocation estimates.
478
509
  They return the sampling plan without constructing the final mesh or native solid.
479
510
  - [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
480
511
  SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
481
512
  at the selected resolution; they do not predict later mesh allocation.
482
513
 
483
- The `/geometry` preflights run without an engine and use explicit options or package defaults.
514
+ The `/geometry` and `mesh` preflights run without an engine and use explicit options or package defaults.
484
515
  The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
485
516
  [`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
486
517
  [`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
487
518
  model execution and use the host's resolution and limits.
488
519
 
489
- Passing a preflight covers its documented checks. Construction can still fail during callback
490
- evaluation, meshing, or native evaluation. Constructors enforce their applicable limits even when
491
- you omit an explicit preflight; preflight is an optional planning and diagnostics step.
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.
492
523
 
493
524
  ## Lifecycle and inspection
494
525
 
495
- Studio or your standalone host owns initialization, cleanup, finalization, Worker recovery,
496
- preview, and file delivery. Do not manually delete `Section` or `Solid` values. Use
497
- `inspectSection()` and `inspectSolid()` for bounds, topology counts, area, and volume.
498
-
499
- Observations, including `section.toRegionData()`, require the host's active synchronous generation.
500
- Constructing or composing a recipe outside generation does not evaluate it.
501
-
502
- An inspection result describes the generated geometry; it does not certify wall thickness,
503
- overhangs, fits, loads, or manufacturability. Keep those product decisions in parameters,
504
- validation, and your downstream manufacturing checks.
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.
505
545
 
506
546
  - [Use geometry recipes](recipes.md)
507
547
  - [Browse exact signatures](../reference/model.md)
@@ -2,9 +2,9 @@
2
2
 
3
3
  Prepare licensed font bytes and a reusable text layout before building a model outside Studio.
4
4
 
5
- Load font bytes before synchronous generation. Your application supplies bytes for a font you
6
- are licensed to use and prepares them through the optional `@metamesh/modeling/text` entry point.
7
- In Studio, use the [Font control recipe](recipes.md#text-from-a-font-parameter).
5
+ To add lettering outside Studio, load a font you're licensed to use and prepare it through the
6
+ optional `@metamesh/modeling/text` entry point before synchronous generation. In Studio, use the
7
+ [Font control recipe](recipes.md#text-from-a-font-parameter).
8
8
 
9
9
  ## Install font support
10
10
 
@@ -15,11 +15,12 @@ pnpm add fontkit
15
15
  pnpm add woff2-encoder
16
16
  ```
17
17
 
18
- TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. The library
19
- does not fetch fonts; your application supplies their bytes.
18
+ TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. Your
19
+ application supplies the font bytes; the library doesn't fetch them.
20
20
 
21
- For a static face whose actual weight is not 400, pass that weight through `staticWeight` when
22
- preparing it. This identifies the supplied face; it does not synthesize another weight.
21
+ If you're using a static face whose actual weight isn't 400, pass that weight through
22
+ `staticWeight` when preparing it. This identifies the supplied face; it doesn't synthesize
23
+ another weight.
23
24
 
24
25
  ## Prepare one reusable layout
25
26
 
@@ -44,8 +45,8 @@ export async function makeLabelLayout(fontBytes: Uint8Array): Promise<{
44
45
 
45
46
 
46
47
 
47
- Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and metrics
48
- in Y-up millimetres, plus a separate `svg` string.
48
+ Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and
49
+ measurements in millimetres, with Y pointing up, plus a separate `svg` string.
49
50
 
50
51
  Pass the `layout` to [`textSection`](../reference/model/textSection.md) inside generation, then
51
52
  extrude the filled section. Prepare layouts ahead of time, or supply a deterministic text service
@@ -57,4 +58,4 @@ The same layout options support horizontal lines or one circular line through
57
58
  metrics, and circular-text constraints.
58
59
 
59
60
  Use the [Font preparation reference](../reference/text.md) for font and layout options, or
60
- [Run Modeling in your application](hosting.md) for the host lifecycle.
61
+ [Run Modeling in your application](hosting.md) for engine setup, export, and cleanup.
@@ -6,8 +6,8 @@ Build parts by combining primitives, applying transforms, and removing material
6
6
  MetaMesh uses [Manifold](https://manifoldcad.org/docs/jsapi/), a solid-modeling kernel that works
7
7
  with **manifold meshes**: closed, consistently oriented boundaries representing solid material.
8
8
 
9
- Studio code Projects use `@metamesh/modeling` to construct immutable `Section` and `Solid` recipes.
10
- The engine evaluates them and owns the underlying kernel values.
9
+ In a Studio code Project, `@metamesh/modeling` describes your shapes as immutable `Section` and
10
+ `Solid` recipes. The engine builds their geometry and takes care of the underlying kernel values.
11
11
 
12
12
  ## Coordinates and units
13
13
 
@@ -15,8 +15,8 @@ MetaMesh uses a right-handed coordinate system with **+Z up**. Model dimensions
15
15
  Place a part intentionally around the origin, then use transforms or anchors to relate it to other
16
16
  parts.
17
17
 
18
- Transform methods preserve the input and return immutable geometry recipes, so you can name
19
- meaningful stages and reuse a source shape without tracking hidden state.
18
+ Transforms leave the original shape unchanged. Keep a base shape, give each stage a useful name,
19
+ and reuse the same base for several features.
20
20
 
21
21
  ## Build solids compositionally
22
22
 
@@ -33,7 +33,7 @@ export default generate(({ part }) => {
33
33
  // Primitives are centered by default, so both faces get 2 mm of overtravel.
34
34
  // Overtravel is for robust subtraction; it does not enlarge the hole diameter.
35
35
  const hole = cylinder({ height: 8, radius: 3 });
36
- return [part("model", plate.subtract([hole]))];
36
+ return [part("model", plate.subtract(hole))];
37
37
  });
38
38
  ```
39
39
 
@@ -42,16 +42,18 @@ The cylinder clears both faces of the plate, leaving a through-hole without coin
42
42
 
43
43
 
44
44
  The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2…2 mm`; the cutter
45
- occupies `Z = −4…4 mm`. That overtravel makes the subtraction deliberate while the hole radius
46
- stays `3 mm`. Derive cutter placement from the same datum as the body when changing dimensions.
45
+ occupies `Z = −4…4 mm`. Extending the cutter beyond both faces makes a clear through-cut while the
46
+ hole radius stays `3 mm`. Use the body's datum to place the cutter so they stay aligned when
47
+ dimensions change.
47
48
 
48
49
  Name intermediate solids by their purpose. Arrange independent repeated cutters first, then
49
- subtract them together where possible. Many high-resolution Boolean steps increase generation
50
- time and obscure design intent.
50
+ subtract them together where possible. Many high-resolution Boolean steps take longer to build
51
+ and make it harder to see what each step contributes.
51
52
 
52
- The `union` and `intersect` functions and `shape.subtract(cutters)` also combine filled Sections
53
- in XY. Choose one dimension for every operand in a call. Keep a Section native through its Boolean
54
- and offset steps, then chain `.extrude({ height })` or `.revolve(options)` to make a Solid.
53
+ The `union`, `subtract`, and `intersect` methods accept one shape or an array and also combine
54
+ filled Sections in XY. Use collection `union(shapes)` and `intersect(shapes)` when combining peers.
55
+ Use either Sections or Solids throughout each call. Keep an outline as a Section while
56
+ combining and offsetting it, then chain `.extrude({ height })` or `.revolve(options)` to make a Solid.
55
57
  Transforms apply in written order about the origin: translating then rotating also rotates the
56
58
  translated position. Place finished parts through `part` options when their geometry can be reused.
57
59
 
@@ -63,7 +65,7 @@ the final translations separate the results for comparison.
63
65
 
64
66
 
65
67
  ```ts
66
- import { box, cylinder, intersect, union } from "@metamesh/modeling";
68
+ import { box, cylinder, transform3 } from "@metamesh/modeling";
67
69
  import { generate } from "@metamesh/project";
68
70
 
69
71
  export default generate(({ part }) => {
@@ -72,15 +74,15 @@ export default generate(({ part }) => {
72
74
  // Reuse the same overlapping operands to compare the three operations.
73
75
  // Place finished parts separately so display spacing can reuse their geometry.
74
76
  return [
75
- part("union", { geometry: union([block, tool]), color: "#60a5fa" }),
77
+ part("union", { geometry: block.union(tool), color: "#60a5fa" }),
76
78
  part("difference", {
77
- geometry: block.subtract([tool]),
78
- position: [42, 0, 0],
79
+ geometry: block.subtract(tool),
80
+ transform: transform3().translate([42, 0, 0]),
79
81
  color: "#f59e0b",
80
82
  }),
81
83
  part("intersection", {
82
- geometry: intersect([block, tool]),
83
- position: [84, 0, 0],
84
+ geometry: block.intersect(tool),
85
+ transform: transform3().translate([84, 0, 0]),
84
86
  color: "#34d399",
85
87
  }),
86
88
  ];
@@ -91,11 +93,11 @@ Left: all material from union. Center: block material outside the tool. Right: m
91
93
 
92
94
 
93
95
 
94
- | Operation | Material retained | Common use |
95
- | -------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
96
- | [`union`](../reference/model/union.md) | Inside any operand | Join an overlapping boss or rib to a body |
97
- | [`shape.subtract`](../reference/model/Solid.md#subtract) | Inside the base, outside every cutter | Cut holes, pockets, and clearance envelopes |
98
- | [`intersect`](../reference/model/intersect.md) | Inside every operand | Trim a feature to an envelope or isolate shared material |
96
+ | Operation | Material retained | Common use |
97
+ | ---------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
98
+ | [`shape.union`](../reference/model/Solid.md#union) | Inside any operand | Join an overlapping boss or rib to a body |
99
+ | [`shape.subtract`](../reference/model/Solid.md#subtract) | Inside the base, outside every cutter | Cut holes, pockets, and clearance envelopes |
100
+ | [`shape.intersect`](../reference/model/Solid.md#intersect) | Inside every operand | Trim a feature to an envelope or isolate shared material |
99
101
 
100
102
  Use intentional overlap for joined features and overtravel for through-cutters. A face or point
101
103
  that only touches another feature is not a reliable connection for a manufacturing part. Inspect
@@ -103,7 +105,7 @@ the result when thin walls, tangencies, or disconnected components are possible.
103
105
 
104
106
  ## Valid solid does not mean manufacturable part
105
107
 
106
- The kernel can enforce solid topology, but it does not know your printer, material, load case,
108
+ The kernel can enforce solid topology, but it doesn't know your printer, material, load case,
107
109
  tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
108
110
  cross-field errors in the Project, then verify the exported file in its downstream tool.
109
111
 
@@ -111,12 +113,11 @@ Empty or zero-volume output is invalid; non-empty output still needs engineering
111
113
 
112
114
  ## Geometry ownership
113
115
 
114
- `Section` and `Solid` values are immutable recipes. Evaluating them creates native resources
115
- owned and cleaned up by Studio. Do not initialize the kernel or manually delete shapes in
116
- `model.ts`.
116
+ Studio creates and cleans up the native resources needed to evaluate your `Section` and `Solid`
117
+ recipes. Don't initialize the kernel or manually delete shapes in `model.ts`.
117
118
 
118
- Use `inspectSection()` or `inspectSolid()` for measurements such as bounds, area, volume, and
119
- `componentCount`. `components()` returns disconnected material pieces, preserving holes and
119
+ Use `shape.inspect()` for measurements such as bounds, area, volume, and
120
+ `componentCount`. `shape.components()` returns disconnected material pieces, preserving holes and
120
121
  enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
121
122
  makes two. Recombining the pieces preserves the original material.
122
123