@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
@@ -1,7 +1,17 @@
1
+ import type {
2
+ ImmutableBuffer,
3
+ ImmutableTriangleMesh,
4
+ NumericArray,
5
+ } from "@metamesh/modeling/geometry";
6
+ export type {
7
+ ImmutableBuffer,
8
+ ImmutableTriangleMesh,
9
+ NumericArray,
10
+ } from "@metamesh/modeling/geometry";
1
11
  /** Immutable modeling recipes and math values; the host owns geometry evaluation. @packageDocumentation */
2
12
 
3
13
  /** ACME 29-degree included-angle profile. */
4
- declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
14
+ export declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
5
15
  /** Selects the 29-degree ACME profile family. */
6
16
  readonly kind: "acme";
7
17
  /**
@@ -11,17 +21,6 @@ declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
11
21
  readonly depth?: number;
12
22
  }
13
23
 
14
- /**
15
- * Reads a copied, immutable named anchor from this exact active generation.
16
- *
17
- * @example Read the top datum
18
- * ```ts
19
- * const plate = box({ size: [30, 20, 6] });
20
- * anchor(plate, "top"); // position [0, 0, 3], direction [0, 0, 1]
21
- * ```
22
- */
23
- export declare function anchor(shape: Solid | Section, name: string): Anchor3;
24
-
25
24
  /**
26
25
  * An attachment pose on a solid or assembly.
27
26
  *
@@ -49,6 +48,13 @@ export declare interface AttachOptions {
49
48
  readonly tolerance?: GeometryToleranceOptions;
50
49
  }
51
50
 
51
+ /** One size for both ends, or independent sizes in bottom/top order. Zero disables an end. */
52
+ export declare type Bevel =
53
+ BevelSize | readonly [bottom: BevelSize, top: BevelSize];
54
+
55
+ /** Nonnegative 45-degree axial/radial bevel size in millimetres, or factory automatic sizing. */
56
+ export declare type BevelSize = number | "auto";
57
+
52
58
  /** Immutable finite XY bounds in millimetres, with tuple coordinates for data interoperability. */
53
59
  export declare interface Bounds2 extends Bounds2Data {
54
60
  /** Returns nonnegative X/Y dimensions in millimetres, including zero extents. */
@@ -68,9 +74,9 @@ export declare interface Bounds2 extends Bounds2Data {
68
74
  * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
69
75
  * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
70
76
  * Compiled Generator packages passing these values to host recipes or computed data require
71
- * runtime 9.0.0 or newer in major 9.
77
+ * runtime 10.0.0 or newer in major 10.
72
78
  */
73
- export declare function bounds2(input: Bounds2Options): Bounds2;
79
+ export declare function bounds2(input: Bounds2Options | Bounds2): Bounds2;
74
80
 
75
81
  /** Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. */
76
82
  export declare interface Bounds2Data {
@@ -85,15 +91,19 @@ export declare type Bounds2Input = Bounds2 | Bounds2Data;
85
91
 
86
92
  /** XY bounds construction from existing extrema or nonnegative dimensions, never both. */
87
93
  export declare type Bounds2Options =
88
- | (Bounds2Input & {
89
- /** Preserves the size query when snapshotting an existing fluent value. */
90
- readonly size?: Bounds2["size"];
91
- /** Preserves the center query when snapshotting an existing fluent value. */
92
- readonly center?: Bounds2["center"];
93
- })
94
+ | {
95
+ /** Inclusive minimum XY coordinates in millimetres. */
96
+ readonly min: Vector2Input;
97
+ /** Inclusive maximum XY coordinates in millimetres. */
98
+ readonly max: Vector2Input;
99
+ /** Size construction cannot be combined with extrema. */
100
+ readonly size?: never;
101
+ /** Center applies only to size construction. */
102
+ readonly center?: never;
103
+ }
94
104
  | {
95
105
  /** Nonnegative XY dimensions in millimetres. */
96
- readonly size: Vector2Data;
106
+ readonly size: Vector2Input;
97
107
  /** Center on the origin; false starts at the origin. Defaults to true. */
98
108
  readonly center?: boolean;
99
109
  /** Minimum coordinates are unavailable when size is supplied. */
@@ -121,9 +131,9 @@ export declare interface Bounds3 extends Bounds3Data {
121
131
  * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
122
132
  * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
123
133
  * Compiled Generator packages passing these values to host recipes or computed data require
124
- * runtime 9.0.0 or newer in major 9.
134
+ * runtime 10.0.0 or newer in major 10.
125
135
  */
126
- export declare function bounds3(input: Bounds3Options): Bounds3;
136
+ export declare function bounds3(input: Bounds3Options | Bounds3): Bounds3;
127
137
 
128
138
  /** Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods. */
129
139
  export declare interface Bounds3Data {
@@ -138,15 +148,19 @@ export declare type Bounds3Input = Bounds3 | Bounds3Data;
138
148
 
139
149
  /** XYZ bounds construction from existing extrema or nonnegative dimensions, never both. */
140
150
  export declare type Bounds3Options =
141
- | (Bounds3Input & {
142
- /** Preserves the size query when snapshotting an existing fluent value. */
143
- readonly size?: Bounds3["size"];
144
- /** Preserves the center query when snapshotting an existing fluent value. */
145
- readonly center?: Bounds3["center"];
146
- })
151
+ | {
152
+ /** Inclusive minimum XYZ coordinates in millimetres. */
153
+ readonly min: Vector3Input;
154
+ /** Inclusive maximum XYZ coordinates in millimetres. */
155
+ readonly max: Vector3Input;
156
+ /** Size construction cannot be combined with extrema. */
157
+ readonly size?: never;
158
+ /** Center applies only to size construction. */
159
+ readonly center?: never;
160
+ }
147
161
  | {
148
162
  /** Nonnegative XYZ dimensions in millimetres. */
149
- readonly size: Vector3Data;
163
+ readonly size: Vector3Input;
150
164
  /** Center on the origin; false starts at the origin. Defaults to true. */
151
165
  readonly center?: boolean;
152
166
  /** Minimum coordinates are unavailable when size is supplied. */
@@ -200,16 +214,16 @@ export declare interface BoxOptions extends PrimitiveAttachment {
200
214
  */
201
215
  readonly center?: boolean;
202
216
  /** Positive uniform size or explicit `[X, Y, Z]` extents in millimetres. */
203
- readonly size: number | Vector3Data;
217
+ readonly size: number | Vector3Input;
204
218
  /** Uniform treatment or independent disjoint nominal edge/group treatments. */
205
219
  readonly treatment?: EdgeTreatment | BoxEdgeTreatments;
206
220
  }
207
221
 
208
222
  /** Axial side carrying the near-normal pressure flank of a buttress thread. */
209
- declare type ButtressPressureFlankSide = "negative" | "positive";
223
+ export declare type ButtressPressureFlankSide = "negative" | "positive";
210
224
 
211
225
  /** Asymmetric printable buttress profile with 7/45-degree flanks. */
212
- declare interface ButtressThreadProfileSpec extends ThreadProfileBaseSpec {
226
+ export declare interface ButtressThreadProfileSpec extends ThreadProfileBaseSpec {
213
227
  /** Selects the asymmetric printable buttress profile family. */
214
228
  readonly kind: "buttress";
215
229
  /**
@@ -225,13 +239,6 @@ declare interface ButtressThreadProfileSpec extends ThreadProfileBaseSpec {
225
239
  readonly pressureFlankSide?: ButtressPressureFlankSide;
226
240
  }
227
241
 
228
- /** Copies intersections along the finite directed origin-to-endpoint segment. */
229
- export declare function castSegment(
230
- solid: Solid,
231
- origin: Vector3Input,
232
- endpoint: Vector3Input,
233
- ): readonly SolidSegmentHit[];
234
-
235
242
  /**
236
243
  * A planar edge or corner chamfer with equal or independent surface setbacks.
237
244
  */
@@ -292,40 +299,12 @@ export declare interface CircularPrimitiveOptions {
292
299
  readonly resolution?: GeometryResolution;
293
300
  }
294
301
 
295
- /**
296
- * Observes disconnected material pieces as session-restricted solid selections.
297
- *
298
- * Each piece retains its enclosed cavities. A sealed hollow box is one component; adding a loose
299
- * ball inside its cavity produces two. Recombining the pieces preserves the original material.
300
- * This does not cut connected geometry. Containment is bounded to 2,000,000 comparisons.
301
- * Selection order and cardinality depend on evaluated topology. Results and recipes using them
302
- * can only be evaluated in this session; composition itself requires no engine.
303
- *
304
- * @example Move disconnected pieces independently
305
- * ```ts
306
- * const islands = union([box({ size: 8 }), box({ size: 8 }).translate([12, 0, 0])]);
307
- * const pieces = components(islands);
308
- * // Component order is unspecified; the index only sets a display height here.
309
- * union(pieces.map((piece, index) => piece.translate([0, 0, index * 6])));
310
- * ```
311
- */
312
- export declare function components(solid: Solid): readonly Solid[];
313
-
314
- /**
315
- * Observes filled 2D islands, retaining each island's holes; empty gives [].
316
- * Selections and recipes using them can only be evaluated in this session.
317
- */
318
- export declare function components(section: Section): readonly Section[];
319
-
320
- /** Combines disjoint components without resolving overlap. */
321
- export declare function compose(solids: readonly Solid[]): Solid;
322
-
323
302
  /** A lazy session-owned reader. Calling it tracks its output in the current computation. */
324
303
  export declare interface Computed<T> {
325
304
  /** Compile-time ownership brand; readers are created by the engine's context helper. */
326
305
  readonly [computedBrand]: "Computed";
327
306
  /** Reads immutable data or a deferred recipe; evaluation is synchronous and cached. */
328
- (): T;
307
+ (): ImmutableValue<T>;
329
308
  }
330
309
 
331
310
  declare const computedBrand: unique symbol;
@@ -380,7 +359,7 @@ export declare type CorrespondingProfileStation = LoftPlacement & {
380
359
  /**
381
360
  * Explicit physical sampling and allocation policy for reusable curves.
382
361
  */
383
- declare interface CurveSamplingOptions {
362
+ export declare interface CurveSamplingOptions {
384
363
  /** Exact segment count overrides physical criteria; curve parameters are spaced uniformly. */
385
364
  readonly segments?: number;
386
365
  /** Millimetre sampling policy; circularSegments applies only to arcs. */
@@ -392,7 +371,7 @@ declare interface CurveSamplingOptions {
392
371
  }
393
372
 
394
373
  /** Caller-defined periodic axial/radial profile in millimetres. */
395
- declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
374
+ export declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
396
375
  /** Selects a caller-defined periodic profile. */
397
376
  readonly kind: "custom";
398
377
  /**
@@ -451,25 +430,13 @@ export declare type CylinderOptions = CircularPrimitiveOptions &
451
430
  export declare interface DiagnosticOptions<P> {
452
431
  /** Existing top-level parameter key. */
453
432
  readonly parameterId?: Extract<keyof P, string> | undefined;
433
+ /** Relative field path, at most 32 nonnegative safe indices or 1–120 character field names.
434
+ * Starts within parameterId's value, or the whole input map when no parameterId is supplied.
435
+ * Omitted or empty addresses the whole value; paths do not validate field existence.
436
+ */
437
+ readonly path?: readonly (string | number)[] | undefined;
454
438
  }
455
439
 
456
- /**
457
- * Measures the minimum separation between two nonempty solids in millimetres.
458
- *
459
- * Uses actual geometry, not bounding-box separation or distance between object origins.
460
- * Contact or overlapping material returns zero, including one solid inside another.
461
- * The kernel's search range is managed internally; the result is not capped at a caller limit.
462
- * Empty geometry and component selections from another session reject. Results follow native numeric precision.
463
- *
464
- * @example Measure the gap between two blocks
465
- * ```ts
466
- * const left = box({ size: 10 });
467
- * const right = box({ size: 10 }).translate([13, 0, 0]);
468
- * const gap = distance(left, right); // 3 mm
469
- * ```
470
- */
471
- export declare function distance(solid: Solid, other: Solid): number;
472
-
473
440
  /**
474
441
  * Uniform finishing vocabulary shared by applicable solid edges and profile corners.
475
442
  */
@@ -496,13 +463,13 @@ export declare type EllipseContourOptions = CircularPrimitiveOptions &
496
463
  (
497
464
  | {
498
465
  /** Positive XY radii in millimetres; mutually exclusive with size. */
499
- readonly radius: Vector2Data;
466
+ readonly radius: Vector2Input;
500
467
  /** Full XY extents are unavailable when radius is supplied. */
501
468
  readonly size?: never;
502
469
  }
503
470
  | {
504
471
  /** Positive full XY extents in millimetres; mutually exclusive with radius. */
505
- readonly size: Vector2Data;
472
+ readonly size: Vector2Input;
506
473
  /** XY radii are unavailable when size is supplied. */
507
474
  readonly radius?: never;
508
475
  }
@@ -526,8 +493,8 @@ export declare interface EndTreatments {
526
493
  }
527
494
 
528
495
  /**
529
- * Extrudes explicit corresponding contours along +Z with degree twist and top scaling.
530
- * Filled Sections use `section.extrude(options)`.
496
+ * Extrudes a filled Section or explicit corresponding contours along +Z with degree twist and top scaling.
497
+ * Use `section.extrude(options)` in fluent sequences, or this function for generic profile inputs.
531
498
  *
532
499
  * @example Extrude
533
500
  * ```ts
@@ -539,24 +506,28 @@ export declare interface EndTreatments {
539
506
  * ```
540
507
  */
541
508
  export declare function extrude(
542
- shape: CorrespondingProfile,
509
+ shape: Section | CorrespondingProfile,
543
510
  options: ExtrudeOptions,
544
511
  ): Solid;
545
512
 
546
513
  /**
547
- * Dimensions and sampling shared by native and pure +Z extrusion.
514
+ * Dimensions and sampling for pure +Z mesh extrusion, without end treatments.
548
515
  */
549
- export declare interface ExtrudeOptions extends ExtrusionSamplingOptions {
516
+ export declare interface ExtrudeMeshOptions extends ExtrusionSamplingOptions {
550
517
  /** Positive extrusion height in millimetres. */
551
518
  readonly height: number;
552
519
  /** Center the extrusion on Z; otherwise its bottom is at zero. Defaults to false. */
553
520
  readonly center?: boolean;
521
+ }
522
+
523
+ /** Native +Z extrusion with optional inward end treatments. */
524
+ export declare interface ExtrudeOptions extends ExtrudeMeshOptions {
554
525
  /** Independent inward end treatments on straight convex single-contour extrusions. */
555
526
  readonly ends?: EndTreatments;
556
527
  }
557
528
 
558
529
  /** Shared sampling controls for a twisted or scaled linear extrusion. */
559
- declare interface ExtrusionSamplingOptions {
530
+ export declare interface ExtrusionSamplingOptions {
560
531
  /** Exact number of intermediate profiles, nonnegative; overrides physical sampling. */
561
532
  readonly divisions?: number;
562
533
  /** Explicit output and sampling allocation ceilings. */
@@ -569,43 +540,6 @@ declare interface ExtrusionSamplingOptions {
569
540
  readonly twist?: number;
570
541
  }
571
542
 
572
- /** Finalized manufacturing snapshot. Its arrays are independent of all native values. */
573
- export declare interface FinalizedModel {
574
- /** Ordered finalized manufacturing parts with copied transferable arrays. */
575
- readonly parts: readonly FinalizedPart[];
576
- /** Axis-aligned XYZ bounds in millimetres. */
577
- readonly bounds: Bounds3Data;
578
- /** Aggregate counts, unique backing storage, volume, and execution timings. */
579
- readonly stats: {
580
- /** Number of declared output parts, including repeated geometry instances. */
581
- readonly partCount: number;
582
- /** Aggregate position-buffer vertex count. */
583
- readonly vertexCount: number;
584
- /** Aggregate indexed triangle count. */
585
- readonly triangleCount: number;
586
- /** Signed enclosed volume of all selected parts in cubic millimetres. */
587
- readonly volumeMm3: number;
588
- /** Unique transferable backing-buffer bytes, counted once across all parts. */
589
- readonly byteCount: number;
590
- /** Synchronous callback duration in milliseconds. */
591
- readonly buildMs: number;
592
- /** Manufacturing validation and buffer finalization duration in milliseconds. */
593
- readonly finalizationMs: number;
594
- /** Total generation duration, including cache retention and native cleanup, in milliseconds. */
595
- readonly generationMs: number;
596
- };
597
- }
598
-
599
- /** Copied manufacturing part with facts computed from the finalized mesh. */
600
- export declare interface FinalizedPart extends TriangleMesh {
601
- /** Stable canonical lowercase identity; unique within the containing topology or output. */
602
- readonly id: string;
603
- /** Optional six-digit hex RGB display color. */
604
- readonly color?: string;
605
- /** Fresh validated facts for these exact finalized buffers. */
606
- readonly measurements: TriangleMeshAnalysis;
607
- }
608
-
609
543
  /** A right-handed orthonormal coordinate frame expressed in world coordinates. */
610
544
  export declare interface Frame3 {
611
545
  /** World-space origin of the local frame. */
@@ -619,7 +553,9 @@ export declare interface Frame3 {
619
553
  }
620
554
 
621
555
  /**
622
- * Defines a typed model without executing it. Use `computed` only for work worth reusing.
556
+ * Defines a typed model without executing it. Parameters are an object map of capturable data;
557
+ * runtime capture rejects arrays at the root, ordinary class instances, mutable buffers, and functions.
558
+ * Supply live capabilities through services. Use `computed` only for work worth reusing.
623
559
  *
624
560
  * @example A simple model
625
561
  * ```ts
@@ -629,19 +565,25 @@ export declare interface Frame3 {
629
565
  * });
630
566
  * ```
631
567
  */
632
- export declare function generate<P, S = Record<never, never>>(
568
+ export declare function generate<P extends object, S = Record<never, never>>(
633
569
  callback: GenerateCallback<P, S>,
634
570
  ): ModelProgram<P, S>;
635
571
 
636
572
  /** Pure synchronous callback returning one declared part or an array; caches are optional. */
637
- export declare type GenerateCallback<P, S = Record<never, never>> = (
573
+ export declare type GenerateCallback<
574
+ P extends object,
575
+ S = Record<never, never>,
576
+ > = (
638
577
  context: GenerateContext<P, S>,
639
- ) => GeneratedPart | readonly GeneratedPart[];
578
+ ) => PartDeclaration | readonly PartDeclaration[];
640
579
 
641
580
  /** The sole synchronous authoring context, supplied independently of Studio. */
642
- export declare interface GenerateContext<P, S = Record<never, never>> {
581
+ export declare interface GenerateContext<
582
+ P extends object,
583
+ S = Record<never, never>,
584
+ > {
643
585
  /** Frozen ordinary parameter values; synchronous top-level reads are tracked. */
644
- readonly params: Readonly<P>;
586
+ readonly params: ImmutableValue<P>;
645
587
  /** Host-prepared readonly synchronous capabilities, fixed for the session. */
646
588
  readonly services: Readonly<S>;
647
589
  /**
@@ -655,11 +597,13 @@ export declare interface GenerateContext<P, S = Record<never, never>> {
655
597
  dependencies?: readonly unknown[],
656
598
  ) => Computed<T>;
657
599
  /** Declares a semantic part with identity placement, or explicit placement and appearance. */
658
- readonly part: {
659
- (id: string, geometry: ComputedValue<PartGeometry>): GeneratedPart;
660
- (id: string, options: PartOptions): GeneratedPart;
661
- };
662
- /** Immediately aborts on false; geometry observations in the condition run first. */
600
+ readonly part: (
601
+ id: string,
602
+ input: ComputedValue<PartGeometry> | PartOptions,
603
+ ) => PartDeclaration;
604
+ /** Immediately aborts on false; geometry observations in the condition run first.
605
+ * This diagnostic helper does not narrow TypeScript types; use an explicit conditional guard when needed.
606
+ */
663
607
  readonly assert: {
664
608
  (condition: false, message: string, options?: DiagnosticOptions<P>): never;
665
609
  (condition: boolean, message: string, options?: DiagnosticOptions<P>): void;
@@ -668,12 +612,6 @@ export declare interface GenerateContext<P, S = Record<never, never>> {
668
612
  readonly warn: (message: string, options?: DiagnosticOptions<P>) => void;
669
613
  }
670
614
 
671
- /** One declared output part. Construct with the context's `part` helper. */
672
- export declare interface GeneratedPart extends PartOptions {
673
- /** Unique canonical lowercase hyphen-separated identity, at most 64 characters. */
674
- readonly id: string;
675
- }
676
-
677
615
  /** Structured user-facing issue associated with the attempted revision. */
678
616
  export declare interface GenerationDiagnostic {
679
617
  /** An error aborts generation; a warning allows generation to continue. */
@@ -682,6 +620,8 @@ export declare interface GenerationDiagnostic {
682
620
  readonly message: string;
683
621
  /** Optional control identity, validated against the supplied parameters. */
684
622
  readonly parameterId?: string | undefined;
623
+ /** Relative field location within the parameter, or input map when parameterId is omitted. */
624
+ readonly path?: readonly (string | number)[] | undefined;
685
625
  }
686
626
 
687
627
  /** A user-correctable assertion failure. Successful computation caches never retain failures. */
@@ -692,6 +632,60 @@ export declare class GenerationError extends Error {
692
632
  constructor(diagnostics: readonly GenerationDiagnostic[]);
693
633
  }
694
634
 
635
+ /**
636
+ * Error raised when a geometry precondition or invariant is not satisfied.
637
+ *
638
+ * Callers may use `code` for coarse recovery decisions. Human-facing details
639
+ * remain in `message`; messages are descriptive but are not a stable API.
640
+ *
641
+ * @example
642
+ * ```ts
643
+ * const error = new GeometryError("INVALID_ARGUMENT", "Radius must be positive.", {
644
+ * operation: "example",
645
+ * details: { radius: 0 },
646
+ * });
647
+ * ```
648
+ */
649
+ export declare class GeometryError extends Error {
650
+ /** Machine-readable failure category. */
651
+ readonly code: GeometryErrorCode;
652
+ /** Operation and scalar facts associated with the failure. */
653
+ readonly context: GeometryErrorContext;
654
+ /**
655
+ * Creates a geometry error with a stable category, operation, and descriptive message.
656
+ *
657
+ * @param code - Machine-readable failure category.
658
+ * @param message - Human-readable diagnostic message.
659
+ * @param context - Operation and optional scalar facts. Defaults to `{ operation: "geometry" }`.
660
+ */
661
+ constructor(
662
+ code: GeometryErrorCode,
663
+ message: string,
664
+ context?: GeometryErrorContext,
665
+ );
666
+ }
667
+
668
+ /** Stable categories for invalid inputs, topology, allocation, and runtime failures. */
669
+ export declare type GeometryErrorCode =
670
+ | "COMPLEXITY_LIMIT"
671
+ | "DEGENERATE_GEOMETRY"
672
+ | "INVALID_ARGUMENT"
673
+ | "INVALID_MESH"
674
+ | "INVALID_TOPOLOGY"
675
+ | "INVALID_TOLERANCE"
676
+ | "NON_FINITE_VALUE"
677
+ | "SELF_INTERSECTION"
678
+ | "SINGULAR_TRANSFORM"
679
+ | "UNSUPPORTED_RUNTIME";
680
+
681
+ /** Serializable context attached to a geometry failure. */
682
+ export declare interface GeometryErrorContext {
683
+ /** Optional scalar facts useful for diagnostics without parsing the message. */
684
+ readonly details?: Readonly<Record<string, boolean | number | string>>;
685
+ /** Stable operation name, such as `normalizeContour` or `extrude`. */
686
+ readonly operation: string;
687
+ }
688
+
695
689
  /**
696
690
  * Tessellation policy for sampled geometry measured in millimetres.
697
691
  */
@@ -815,11 +809,11 @@ export declare type HeightfieldOptions = {
815
809
  } & (
816
810
  | {
817
811
  /** Positive XY footprint for uniform sampling. */
818
- readonly size: Vector2Data;
812
+ readonly size: Vector2Input;
819
813
  /** Exact positive integer X/Y interval counts. */
820
814
  readonly segments: readonly [x: number, y: number];
821
815
  /** Lower-left footprint XY. Omitted centers the footprint on XY. */
822
- readonly origin?: Vector2Data;
816
+ readonly origin?: Vector2Input;
823
817
  /** Explicit coordinates cannot be combined with uniform sampling. */
824
818
  readonly coordinates?: never;
825
819
  }
@@ -843,54 +837,17 @@ export declare type HeightfieldOptions = {
843
837
  }
844
838
  );
845
839
 
846
- /** Runtime-neutral options for the dedicated helical ridge mesher. */
847
- export declare interface HelicalThreadRidgeMeshOptions {
848
- /**
849
- * Optional bottom/top ridge-end treatments. Standalone ridges honor the requested boundaries;
850
- * BOSL2-style non-cut lead-in scaling is available on complete thread solids.
851
- */
852
- readonly ends?: ThreadEndTreatmentOptions;
853
- /** Helix direction. Default: `right`. */
854
- readonly handedness?: ThreadHandedness;
855
- /** Total threaded axial length in millimetres. */
856
- readonly length: number;
857
- /** Explicit output and circular allocation ceilings. */
858
- readonly limits?: Partial<ModelingLimits>;
859
- /** Nominal major diameter before any caller-owned fit compensation. */
860
- readonly majorDiameter: number;
861
- /** Angular offset of the first start in degrees. Default: `0`. */
862
- readonly phase?: number;
863
- /** Validated periodic profile repeated around the shaft. */
864
- readonly profile: ThreadProfile;
865
- /** Optional circular-resolution policy. */
866
- readonly resolution?: GeometryResolution;
867
- /** Number of evenly phased starts. Default: `1`. */
868
- readonly starts?: number;
869
- /** Optional numerical tolerance overrides. */
870
- readonly tolerance?: GeometryToleranceOptions;
871
- }
872
-
873
- /** Selected sampling counts and conservative allocation estimates, before thread mesh construction. */
874
- export declare interface HelicalThreadSolidMeshPreflight {
875
- /** Uniform axial intervals required only by a requested physical segment-length limit. */
876
- readonly axialIntervals: number;
877
- /** Start-aligned full-circle segment count used by the surface mesh. */
878
- readonly circularSegments: number;
879
- /** Conservative surface-row count across profile breaks, ends, and bevel stations. */
880
- readonly estimatedRows: number;
881
- /** Conservative triangle count used by the selected output allocation policy. */
882
- readonly estimatedTriangles: number;
883
- }
884
-
885
840
  /**
886
841
  * Declares a +Z hole or blind-pocket cutter with explicit end overrun in millimetres.
842
+ *
843
+ * @remarks
887
844
  * Choose exactly one circular diameter or existing Section. A 45-degree entry chamfer
888
845
  * supports one strictly convex contour without holes; plain profiles may have any topology.
889
846
  * Circular entries retain nominal frustum radii; profile entries offset the supplied polygon edges.
890
847
  * Circular head recesses are mutually exclusive with entryChamfer. Both overrun ends default
891
848
  * to zero, so the nominal bottom remains at Z=0 and blind pocket floors are preserved.
892
849
  * Existing Section samples are authoritative; limits and unspecified circular sampling belong
893
- * to the evaluating host. Compiled packages require runtime major 9.
850
+ * to the evaluating host.
894
851
  *
895
852
  * @example A blind hex pocket with an open top
896
853
  * ```ts
@@ -1013,18 +970,6 @@ export declare type HullOptions =
1013
970
  readonly points?: never;
1014
971
  };
1015
972
 
1016
- /** Owned immutable numeric data. Use copy() to obtain mutable storage for numerical work. */
1017
- export declare interface ImmutableBuffer<T extends NumericArray> {
1018
- /** Opaque element-storage brand; construct buffers with immutableBuffer(). */
1019
- readonly [immutableBufferBrand]: T;
1020
- /** Number of numeric elements, independent of their byte width. */
1021
- readonly length: number;
1022
- /** Reads an integer offset; negative offsets count from the end. Invalid offsets return undefined. */
1023
- at(this: void, index: number): number | undefined;
1024
- /** Returns a fresh mutable array of the original numeric type; never exposes cached storage. */
1025
- copy(this: void): T;
1026
- }
1027
-
1028
973
  /**
1029
974
  * Copies numeric data once into private storage. This pure helper needs no active generation.
1030
975
  * @example
@@ -1033,6 +978,7 @@ export declare interface ImmutableBuffer<T extends NumericArray> {
1033
978
  * const heights = immutableBuffer(new Float32Array([2, 4, 6]));
1034
979
  * const count = heights.length;
1035
980
  * const first = heights.at(0);
981
+ * const doubled = Array.from(heights, (height) => height * 2);
1036
982
  * const editable = heights.copy();
1037
983
  * editable[0] = 8; // heights still contains 2, 4, 6.
1038
984
  * ```
@@ -1041,33 +987,18 @@ export declare function immutableBuffer<T extends NumericArray>(
1041
987
  source: T,
1042
988
  ): ImmutableBuffer<T>;
1043
989
 
1044
- declare const immutableBufferBrand: unique symbol;
1045
-
1046
990
  /**
1047
- * Copies mesh buffers into immutable data; geometric validation still occurs when modeling or finalizing.
1048
- * @example
1049
- * ```ts
1050
- * import { generate, immutableMesh } from "@metamesh/modeling";
1051
- * import { heightfieldMesh } from "@metamesh/modeling/geometry";
1052
- * const model = generate(({ computed, part }) => {
1053
- * const surface = computed("surface", () => immutableMesh(heightfieldMesh({
1054
- * size: [10, 10], segments: [8, 8], height: () => 2,
1055
- * })));
1056
- * return [part("surface", surface)];
1057
- * });
1058
- * ```
991
+ * Deeply readonly view of captured generation data, including nested arrays and tuples.
992
+ * Modeling value methods keep their signatures, including explicit mutable copies.
993
+ * This type does not make unsupported runtime values valid generation data.
1059
994
  */
1060
- export declare function immutableMesh(
1061
- mesh: TriangleMesh,
1062
- ): ImmutableTriangleMesh;
1063
-
1064
- /** Immutable local XYZ positions and triangle indices, suitable for a computed value or part. */
1065
- export declare interface ImmutableTriangleMesh {
1066
- /** Packed XYZ coordinates in millimetres. */
1067
- readonly positions: ImmutableBuffer<Float32Array>;
1068
- /** Zero-based vertex indices, three per triangle. */
1069
- readonly indices: ImmutableBuffer<Uint32Array>;
1070
- }
995
+ export declare type ImmutableValue<T> = T extends (...args: never[]) => unknown
996
+ ? T
997
+ : T extends object
998
+ ? {
999
+ readonly [Key in keyof T]: ImmutableValue<T[Key]>;
1000
+ }
1001
+ : T;
1071
1002
 
1072
1003
  /**
1073
1004
  * Bounded positive-inside implicit field constructor.
@@ -1089,28 +1020,6 @@ export declare interface ImplicitOptions {
1089
1020
  readonly tolerance?: number;
1090
1021
  }
1091
1022
 
1092
- /**
1093
- * Copies lightweight section measurements.
1094
- *
1095
- * @example Check filled area
1096
- * ```ts
1097
- * const facts = inspectSection(rectangle({ size: [20, 10] }));
1098
- * facts.area; // 200 mm²
1099
- * ```
1100
- */
1101
- export declare function inspectSection(section: Section): SectionInspection;
1102
-
1103
- /**
1104
- * Reads immutable native facts once per solid; temporary components are owned by the build.
1105
- *
1106
- * @example Check dimensions and volume
1107
- * ```ts
1108
- * const facts = inspectSolid(box({ size: [30, 20, 6] }));
1109
- * facts.volume; // 3600 mm³
1110
- * ```
1111
- */
1112
- export declare function inspectSolid(solid: Solid): SolidInspection;
1113
-
1114
1023
  /**
1115
1024
  * Compensated internal threaded cutter.
1116
1025
  *
@@ -1130,9 +1039,7 @@ export declare function internalThreadCutter(
1130
1039
 
1131
1040
  /** Options for a compensated internal-thread subtraction tool along +Z. */
1132
1041
  export declare interface InternalThreadCutterOptions
1133
- extends
1134
- Omit<HelicalThreadRidgeMeshOptions, "majorDiameter">,
1135
- ThreadBevelOptions {
1042
+ extends Omit<ThreadRidgeOptions, "majorDiameter">, ThreadBevelOptions {
1136
1043
  /** Printable fit or caller-calibrated allowances. Default: `normal`. */
1137
1044
  readonly fit?: PrintableThreadFit | PrintableThreadFitPolicy;
1138
1045
  /** Nominal major diameter before female compensation and faceting correction. */
@@ -1140,7 +1047,7 @@ export declare interface InternalThreadCutterOptions
1140
1047
  }
1141
1048
 
1142
1049
  /**
1143
- * Robust intersection.
1050
+ * Robust intersection of one or more shapes; empty input rejects during declaration.
1144
1051
  *
1145
1052
  * @example Intersect
1146
1053
  * ```ts
@@ -1153,20 +1060,12 @@ export declare function intersect(solids: readonly Solid[]): Solid;
1153
1060
  export declare function intersect(sections: readonly Section[]): Section;
1154
1061
 
1155
1062
  /**
1156
- * Checks whether a solid or filled section contains no geometry during host execution.
1157
- *
1158
- * Accepts a 3D Solid or 2D Section handle, not a finalized model or raw triangle mesh.
1159
- * Useful after a Boolean operation whose inputs may not overlap; no mesh is extracted.
1063
+ * Recognizes structured geometry errors from separately bundled Modeling copies in the same realm.
1160
1064
  *
1161
- * @example Check a missed intersection
1162
- * ```ts
1163
- * const body = box({ size: 10 });
1164
- * const distant = box({ size: 10 }).translate([30, 0, 0]);
1165
- * const empty = intersect([body, distant]);
1166
- * const missed = isEmpty(empty); // true
1167
- * ```
1065
+ * Ordinary errors and unmarked code-shaped objects are rejected. The marker is execution-local and
1066
+ * does not survive structured cloning; worker protocols carry their own serialized error envelope.
1168
1067
  */
1169
- export declare function isEmpty(shape: Solid | Section): boolean;
1068
+ export declare function isGeometryError(value: unknown): value is GeometryError;
1170
1069
 
1171
1070
  /** Portable local geometry; consumers own plates, holes, part declarations, and final placement. */
1172
1071
  export declare interface KnuckleHinge {
@@ -1188,7 +1087,7 @@ export declare interface KnuckleHinge {
1188
1087
  * Each half's `chamfer` bevels its barrel outer rims and all web edges. Consumers own plates, screw holes,
1189
1088
  * pin retention, fit policy, and part placement. Added mounting material must preserve the bores.
1190
1089
  * No opening range or collision freedom is implied for arbitrary caller attachments.
1191
- * Compiled Generator packages using this operation require runtime 9.0.0 or newer in major 9.
1090
+ * Compiled Generator packages using this operation require runtime 10.0.0 or newer in major 10.
1192
1091
  *
1193
1092
  * @example Integral-pin hinge with two mounting webs
1194
1093
  * ```ts
@@ -1344,7 +1243,8 @@ export declare type LinearPatternOptions<Dimension extends 2 | 3 = 3> = {
1344
1243
  );
1345
1244
 
1346
1245
  /**
1347
- * Lofts primitive Sections at z heights or frames; arbitrary Sections and loops require an explicit correspondence method.
1246
+ * Lofts Sections and point loops at z heights or frames. Known primitive landmarks are retained;
1247
+ * other profiles default to direct correspondence, preserving their supplied seams.
1348
1248
  *
1349
1249
  * @example Loft
1350
1250
  * ```ts
@@ -1382,10 +1282,10 @@ export declare type LoftCorrespondence =
1382
1282
  "direct" | "reindex" | "fast-distance" | "distance";
1383
1283
 
1384
1284
  /**
1385
- * Shared controls for native and pure lofts. Point data and arbitrary Sections require explicit correspondence.
1285
+ * Shared controls for native and pure lofts. Point data and arbitrary Sections default to direct correspondence.
1386
1286
  */
1387
1287
  export declare interface LoftOptions {
1388
- /** One method or one per consecutive station gap. Omitted preserves known landmarks, including circle/ellipse-to-rectangle corners, or maps other unlike primitive seams directly. */
1288
+ /** One method or one per consecutive station gap. Omitted preserves known primitive landmarks, including circle/ellipse-to-rectangle corners, and otherwise uses direct correspondence with the supplied seams. */
1389
1289
  readonly correspondence?: LoftCorrespondence | readonly LoftCorrespondence[];
1390
1290
  /** Extra points follow edge length or distribute equally across existing segments. Defaults to perimeter for direct/reindex, or segments when any distance method is selected; distance methods require segments. */
1391
1291
  readonly distribution?: "perimeter" | "segments";
@@ -1457,16 +1357,21 @@ export declare interface ModelingLimits extends GeometrySamplingLimits {
1457
1357
  }
1458
1358
 
1459
1359
  /** Stateless portable program descriptor. Execution and caches belong to an engine session. */
1460
- export declare interface ModelProgram<P, S = Record<never, never>> {
1360
+ export declare interface ModelProgram<
1361
+ P extends object,
1362
+ S = Record<never, never>,
1363
+ > {
1461
1364
  /** Exact generation protocol discriminator. */
1462
1365
  readonly kind: "metamesh-model";
1463
1366
  /** Typed synchronous declaration callback. */
1464
1367
  readonly generate: GenerateCallback<P, S>;
1465
1368
  }
1466
1369
 
1467
- /** Numeric storage supported by immutable generation buffers. */
1468
- export declare type NumericArray =
1469
- Float32Array | Float64Array | Uint32Array | Uint8Array | Int32Array;
1370
+ /** One declared output part. Construct with the context's `part` helper. */
1371
+ export declare interface PartDeclaration extends PartOptions {
1372
+ /** Unique canonical lowercase hyphen-separated identity, at most 64 characters. */
1373
+ readonly id: string;
1374
+ }
1470
1375
 
1471
1376
  /** Manufacturing geometry; filled sections are intermediate construction values. */
1472
1377
  export declare type PartGeometry = Solid | TriangleMesh | ImmutableTriangleMesh;
@@ -1475,10 +1380,10 @@ export declare type PartGeometry = Solid | TriangleMesh | ImmutableTriangleMesh;
1475
1380
  export declare interface PartOptions {
1476
1381
  /** Local geometry or a lazy reader; native objects never cross a revision. */
1477
1382
  readonly geometry: ComputedValue<PartGeometry>;
1478
- /** XYZ vector or tuple translation in millimetres, applied after rotation; defaults to zero. */
1479
- readonly position?: ComputedValue<Vector3Input>;
1480
- /** XYZ vector or tuple of fixed global X, Y, Z rotations in degrees; defaults to zero. */
1481
- readonly rotation?: ComputedValue<Vector3Input>;
1383
+ /** Rigid local-to-world transform; translation uses millimetres. Defaults to identity.
1384
+ * Accepts a fluent transform or row-major 4x4 matrix. Scale, shear, and reflection are invalid.
1385
+ */
1386
+ readonly transform?: ComputedValue<Transform3Input>;
1482
1387
  /** Optional six-digit hexadecimal semantic part color. */
1483
1388
  readonly color?: string;
1484
1389
  }
@@ -1754,7 +1659,7 @@ export declare type PolygonOptions =
1754
1659
  */
1755
1660
  export declare function preflightInternalThreadCutter(
1756
1661
  options: InternalThreadCutterOptions,
1757
- ): HelicalThreadSolidMeshPreflight;
1662
+ ): ThreadSolidPreflight;
1758
1663
 
1759
1664
  /**
1760
1665
  * Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
@@ -1780,7 +1685,7 @@ export declare function preflightThreadedNut(
1780
1685
  */
1781
1686
  export declare function preflightThreadedRod(
1782
1687
  options: ThreadedRodOptions,
1783
- ): HelicalThreadSolidMeshPreflight;
1688
+ ): ThreadSolidPreflight;
1784
1689
 
1785
1690
  /** Anchor attachment shared by solid and filled-section factories. */
1786
1691
  export declare interface PrimitiveAttachment {
@@ -1979,7 +1884,7 @@ export declare function rectangle(options: RectangleOptions): Section;
1979
1884
  */
1980
1885
  export declare interface RectangleContourOptions {
1981
1886
  /** Positive uniform size or explicit XY extents in millimetres. */
1982
- readonly size: number | Vector2Data;
1887
+ readonly size: number | Vector2Input;
1983
1888
  /** Center on XY; otherwise the minimum corner is the origin. Defaults to true. */
1984
1889
  readonly center?: boolean;
1985
1890
  /** Uniform treatment or four corner treatments. Exact round segments describe a complete circle and must divide by four. */
@@ -2042,8 +1947,8 @@ export declare type RegularPolygonOptions = RadialSizingOptions &
2042
1947
  };
2043
1948
 
2044
1949
  /**
2045
- * Revolves explicit corresponding radial/Z contours around +Z, with caps for partial sweeps.
2046
- * Filled Sections use `section.revolve(options)`.
1950
+ * Revolves a filled Section or explicit corresponding radial/Z contours around +Z, with caps for partial sweeps.
1951
+ * Use `section.revolve(options)` in fluent sequences, or this function for generic profile inputs.
2047
1952
  *
2048
1953
  * @example Revolve
2049
1954
  * ```ts
@@ -2056,7 +1961,7 @@ export declare type RegularPolygonOptions = RadialSizingOptions &
2056
1961
  * ```
2057
1962
  */
2058
1963
  export declare function revolve(
2059
- shape: CorrespondingProfile,
1964
+ shape: Section | CorrespondingProfile,
2060
1965
  options?: RevolveOptions,
2061
1966
  ): Solid;
2062
1967
 
@@ -2069,7 +1974,7 @@ export declare interface RevolveOptions extends CircularPrimitiveOptions {
2069
1974
  * smaller sweeps form partial revolutions with end caps.
2070
1975
  * Segment counts describe a complete circle and scale to this angular span. Native filled
2071
1976
  * revolutions require at least three sweep intervals: adaptive sampling refines to that floor,
2072
- * while exact counts that imply fewer intervals reject. Pure revolveMesh supports one interval.
1977
+ * while exact counts that imply fewer intervals reject. Pure mesh.revolve supports one interval.
2073
1978
  * @defaultValue `360`
2074
1979
  */
2075
1980
  readonly degrees?: number;
@@ -2100,7 +2005,7 @@ export declare interface RoundedEdgeTreatment extends CircularPrimitiveOptions {
2100
2005
  * @example Extrude an outline with a border
2101
2006
  * ```ts
2102
2007
  * const body = rectangle({ size: [20, 12] })
2103
- * .subtract([rectangle({ size: [16, 8] })])
2008
+ * .subtract(rectangle({ size: [16, 8] }))
2104
2009
  * .offset(0.5)
2105
2010
  * .extrude({ height: 4 });
2106
2011
  * ```
@@ -2130,8 +2035,14 @@ export declare interface Section {
2130
2035
  transform(this: Section, placement: Transform2Input): Section;
2131
2036
  /** Copies canonical filled polygons for interchange; requires an active model execution. */
2132
2037
  toRegionData(this: Section): RegionData;
2133
- /** Native section difference; an empty cutter array preserves the source. */
2134
- subtract(this: Section, cutters: readonly Section[]): Section;
2038
+ /** Filled union with one or more sections; an empty operand array preserves this section. */
2039
+ union(this: Section, operands: Section | readonly Section[]): Section;
2040
+ /** Filled intersection with every supplied section; an empty operand array preserves this section. */
2041
+ intersect(this: Section, operands: Section | readonly Section[]): Section;
2042
+ /** Filled difference removing one cutter or the union of all supplied cutters.
2043
+ * An empty cutter array preserves this section.
2044
+ */
2045
+ subtract(this: Section, cutters: Section | readonly Section[]): Section;
2135
2046
  /**
2136
2047
  * Simplifies filled 2D contours using an explicit positive millimetre tolerance.
2137
2048
  *
@@ -2166,6 +2077,19 @@ export declare interface Section {
2166
2077
  * Sweeps this filled section using the selected frame policy and degree twist.
2167
2078
  */
2168
2079
  sweep(this: Section, path: Path3Input, options?: SweepOptions): Solid;
2080
+ /** Reads immutable bounds, filled area in mm², and component/contour/vertex counts.
2081
+ * Requires active synchronous model execution; repeated reads share scoped native results.
2082
+ */
2083
+ inspect(this: Section): SectionInspection;
2084
+ /** Checks whether this section contains no filled geometry during active synchronous model execution. */
2085
+ isEmpty(this: Section): boolean;
2086
+ /** Observes filled XY islands, retaining each island's holes; empty geometry gives [].
2087
+ * Requires active synchronous model execution. Selection order is unspecified.
2088
+ * Selections and recipes using them can only be evaluated in this session.
2089
+ */
2090
+ components(this: Section): readonly Section[];
2091
+ /** Reads a copied immutable named anchor during active synchronous model execution. */
2092
+ anchor(this: Section, name: string): Anchor3;
2169
2093
  }
2170
2094
 
2171
2095
  declare const sectionBrand: unique symbol;
@@ -2196,10 +2120,8 @@ export declare interface SectionInspection {
2196
2120
  readonly area: number;
2197
2121
  /** Number of extracted outer and hole contours. */
2198
2122
  readonly contourCount: number;
2199
- /** Inclusive maximum coordinates in millimetres. */
2200
- readonly max: Vector2Data;
2201
- /** Inclusive minimum coordinates in millimetres. */
2202
- readonly min: Vector2Data;
2123
+ /** Immutable axis-aligned XY bounds in millimetres. */
2124
+ readonly bounds: Bounds2Data;
2203
2125
  /** Number of disconnected filled section components. */
2204
2126
  readonly componentCount: number;
2205
2127
  /** Number of native section vertices. */
@@ -2248,7 +2170,7 @@ export declare interface SmoothEdgeTreatment {
2248
2170
  * @example Shape a body with a through bore
2249
2171
  * ```ts
2250
2172
  * const body = box({ size: [30, 20, 6] })
2251
- * .subtract([cylinder({ height: 8, radius: 3 })])
2173
+ * .subtract(cylinder({ height: 8, radius: 3 }))
2252
2174
  * .rotate([0, 0, 45]);
2253
2175
  * ```
2254
2176
  */
@@ -2279,12 +2201,19 @@ export declare interface Solid {
2279
2201
  mirror(this: Solid, normal: Vector3Input): Solid;
2280
2202
  /** Applies a reusable XYZ placement or canonical row-major matrix. */
2281
2203
  transform(this: Solid, placement: Transform3Input): Solid;
2282
- /** Copies manufacturing mesh buffers for interchange; requires an active model execution. */
2283
- toTriangleMesh(this: Solid): TriangleMesh;
2204
+ /** Copies indexed Float32 XYZ and Uint32 triangle buffers in millimetres for interchange.
2205
+ * Requires an active synchronous model execution; the returned TriangleMesh is caller-owned.
2206
+ */
2207
+ toMesh(this: Solid): TriangleMesh;
2208
+ /** Robust union with one or more solids; an empty operand array preserves this solid. */
2209
+ union(this: Solid, operands: Solid | readonly Solid[]): Solid;
2210
+ /** Robust intersection with every supplied solid; an empty operand array preserves this solid. */
2211
+ intersect(this: Solid, operands: Solid | readonly Solid[]): Solid;
2284
2212
  /**
2285
- * Robust difference; an empty cutter array preserves the source.
2213
+ * Robust difference removing one cutter or the union of all supplied cutters.
2214
+ * An empty cutter array preserves this solid.
2286
2215
  */
2287
- subtract(this: Solid, cutters: readonly Solid[]): Solid;
2216
+ subtract(this: Solid, cutters: Solid | readonly Solid[]): Solid;
2288
2217
  /**
2289
2218
  * Simplifies a solid using an explicit positive millimetre tolerance.
2290
2219
  *
@@ -2311,6 +2240,42 @@ export declare interface Solid {
2311
2240
  projectSection(this: Solid): Section;
2312
2241
  /** Takes a filled horizontal slice at Z millimetres. */
2313
2242
  sliceSection(this: Solid, z: number): Section;
2243
+ /** Reads immutable bounds, volume in mm³, surface area in mm², and material-component count.
2244
+ * Requires active synchronous model execution; repeated reads share scoped native results.
2245
+ */
2246
+ inspect(this: Solid): SolidInspection;
2247
+ /** Checks whether this solid contains no geometry during active synchronous model execution. */
2248
+ isEmpty(this: Solid): boolean;
2249
+ /** Observes disconnected material pieces, retaining each piece's enclosed cavities.
2250
+ * Requires active synchronous model execution. Empty geometry gives []; order is unspecified.
2251
+ * Selections and recipes using them can only be evaluated in this session.
2252
+ * Containment is bounded to 2,000,000 comparisons; this does not cut connected geometry.
2253
+ */
2254
+ components(this: Solid): readonly Solid[];
2255
+ /** Reads a copied immutable named anchor during active synchronous model execution. */
2256
+ anchor(this: Solid, name: string): Anchor3;
2257
+ /** Measures actual minimum separation in millimetres during active synchronous model execution.
2258
+ * Contact or overlapping material gives zero; empty geometry and cross-session selections reject.
2259
+ * The kernel manages its search range; results follow native numeric precision.
2260
+ */
2261
+ distance(this: Solid, other: Solid): number;
2262
+ /** Copies intersections along the finite directed origin-to-endpoint segment in millimetres.
2263
+ * Requires active synchronous model execution.
2264
+ */
2265
+ castSegment(
2266
+ this: Solid,
2267
+ origin: Vector3Input,
2268
+ endpoint: Vector3Input,
2269
+ ): readonly SolidSegmentHit[];
2270
+ /** Splits into [inside the cutter, outside the cutter]; the cutter itself is not returned.
2271
+ * Either result may be empty or contain multiple disconnected components.
2272
+ */
2273
+ split(this: Solid, cutter: Solid): readonly [Solid, Solid];
2274
+ /** Splits into [positive-normal side, negative side] with closed cut faces.
2275
+ * The nonzero normal is normalized; offset is its signed distance from the origin in millimetres.
2276
+ * Offset defaults to zero. Either result may be empty.
2277
+ */
2278
+ splitByPlane(this: Solid, plane: PlaneOptions): readonly [Solid, Solid];
2314
2279
  }
2315
2280
 
2316
2281
  declare const solidBrand: unique symbol;
@@ -2321,10 +2286,11 @@ declare const solidBrand: unique symbol;
2321
2286
  * @example Mesh import
2322
2287
  * ```ts
2323
2288
  * import { solidFromMesh } from "@metamesh/modeling";
2324
- * import { extrudeMesh, rectangleContour } from "@metamesh/modeling/geometry";
2289
+ * import * as mesh from "@metamesh/modeling/geometry/mesh";
2290
+ * import { rectangleContour } from "@metamesh/modeling/geometry";
2325
2291
  *
2326
- * const mesh = extrudeMesh(rectangleContour({ size: [20, 12] }), { height: 6 });
2327
- * solidFromMesh(mesh);
2292
+ * const plate = mesh.extrude(rectangleContour({ size: [20, 12] }), { height: 6 });
2293
+ * solidFromMesh(plate);
2328
2294
  * ```
2329
2295
  */
2330
2296
  export declare function solidFromMesh(
@@ -2338,10 +2304,8 @@ export declare function solidFromMesh(
2338
2304
  export declare interface SolidInspection {
2339
2305
  /** Whether this native solid contains no material. */
2340
2306
  readonly isEmpty: boolean;
2341
- /** Inclusive maximum coordinates in millimetres. */
2342
- readonly max: Vector3Data;
2343
- /** Inclusive minimum coordinates in millimetres. */
2344
- readonly min: Vector3Data;
2307
+ /** Immutable axis-aligned XYZ bounds in millimetres. */
2308
+ readonly bounds: Bounds3Data;
2345
2309
  /** Number of disconnected material components, each retaining enclosed cavities. */
2346
2310
  readonly componentCount: number;
2347
2311
  /** Enclosed native solid volume in cubic millimetres. */
@@ -2394,54 +2358,8 @@ export declare type SphereOptions = CircularPrimitiveOptions &
2394
2358
  }
2395
2359
  );
2396
2360
 
2397
- /**
2398
- * Splits a solid into [inside the cutter, outside the cutter].
2399
- *
2400
- * The first result is the intersection; the second is the subtraction. The cutter itself
2401
- * is not returned. Either result may be empty or contain multiple disconnected components.
2402
- *
2403
- * @example Keep the plug and the surrounding body
2404
- * ```ts
2405
- * const body = box({ size: [30, 20, 8] });
2406
- * const cutter = cylinder({ height: 10, diameter: 8 });
2407
- * const [plug, remainder] = split(body, cutter);
2408
- * // Move the plug beside the body to show both results.
2409
- * union([plug.translate([0, -20, 0]), remainder]);
2410
- * ```
2411
- */
2412
- export declare function split(
2413
- solid: Solid,
2414
- cutter: Solid,
2415
- ): readonly [Solid, Solid];
2416
-
2417
- /**
2418
- * Splits a solid into [positive-normal side, negative side] at a world-space plane.
2419
- *
2420
- * The nonzero normal is normalized; offset is the signed distance from the origin in
2421
- * millimetres, defaulting to zero. Both cut faces are closed. Select either tuple result
2422
- * to retain one side; either result may be empty.
2423
- *
2424
- * @example Separate two halves at X = 0
2425
- * ```ts
2426
- * const body = box({ size: [30, 20, 8] });
2427
- * const [right, left] = splitByPlane(body, { normal: [1, 0, 0] });
2428
- * // The gap is only for display; the cut itself removes no material.
2429
- * union([right.translate([4, 0, 0]), left.translate([-4, 0, 0])]);
2430
- * ```
2431
- *
2432
- * @example Keep only the positive half
2433
- * ```ts
2434
- * const [right] = splitByPlane(box({ size: [30, 20, 8] }), { normal: [1, 0, 0] });
2435
- * right;
2436
- * ```
2437
- */
2438
- export declare function splitByPlane(
2439
- solid: Solid,
2440
- plane: PlaneOptions,
2441
- ): readonly [Solid, Solid];
2442
-
2443
2361
  /** Square profile with equal crest and root widths. */
2444
- declare interface SquareThreadProfileSpec extends ThreadProfileBaseSpec {
2362
+ export declare interface SquareThreadProfileSpec extends ThreadProfileBaseSpec {
2445
2363
  /** Selects the square profile family. */
2446
2364
  readonly kind: "square";
2447
2365
  /**
@@ -2461,22 +2379,26 @@ declare interface SquareThreadProfileSpec extends ThreadProfileBaseSpec {
2461
2379
  */
2462
2380
  export declare function star(options: StarOptions): Section;
2463
2381
 
2464
- /**
2465
- * Alternating outer and inner vertices, centered on the XY origin.
2466
- */
2467
- export declare interface StarOptions extends PrimitiveAttachment {
2468
- /** Explicit sampling ceilings, bounded by the host policy. */
2469
- readonly limits?: Partial<GeometrySamplingLimits>;
2382
+ /** Alternating vertex radii and exact point count for a centered XY star. */
2383
+ export declare interface StarContourOptions {
2470
2384
  /** Positive outer vertex radius in millimetres. */
2471
2385
  readonly outerRadius: number;
2472
- /** Positive inner vertex radius, smaller than the outer radius. */
2386
+ /** Positive inner vertex radius in millimetres, smaller than the outer radius. */
2473
2387
  readonly innerRadius: number;
2474
- /** Integer outer point count from three through 50000. */
2388
+ /** Integer outer point count, at least three; output contains twice as many vertices. */
2475
2389
  readonly points: number;
2476
- /** Initial counterclockwise rotation in degrees; defaults to zero. */
2390
+ /** Counterclockwise rotation in degrees; defaults to zero with an outer vertex on +X. */
2477
2391
  readonly rotation?: number;
2392
+ /** Explicit sampling ceilings, bounded by the host policy during modeling. */
2393
+ readonly limits?: Partial<GeometrySamplingLimits>;
2478
2394
  }
2479
2395
 
2396
+ /**
2397
+ * Alternating outer and inner vertices, centered on the XY origin.
2398
+ */
2399
+ export declare interface StarOptions
2400
+ extends StarContourOptions, PrimitiveAttachment {}
2401
+
2480
2402
  /**
2481
2403
  * Creates a centered-width native Section along a sampled XY path.
2482
2404
  *
@@ -2579,8 +2501,8 @@ export declare interface SvgSectionOptions {
2579
2501
  }
2580
2502
 
2581
2503
  /**
2582
- * Sweeps explicit corresponding contours using the selected frame policy.
2583
- * Filled Sections use `section.sweep(path, options)`.
2504
+ * Sweeps a filled Section or explicit corresponding contours using the selected frame policy.
2505
+ * Use `section.sweep(path, options)` in fluent sequences, or this function for generic profile inputs.
2584
2506
  *
2585
2507
  * @example Sweep
2586
2508
  * ```ts
@@ -2594,7 +2516,7 @@ export declare interface SvgSectionOptions {
2594
2516
  * ```
2595
2517
  */
2596
2518
  export declare function sweep(
2597
- shape: CorrespondingProfile,
2519
+ shape: Section | CorrespondingProfile,
2598
2520
  path: Path3Input,
2599
2521
  options?: SweepOptions,
2600
2522
  ): Solid;
@@ -2674,17 +2596,11 @@ export declare interface TextSectionOptions {
2674
2596
  readonly resolution?: GeometryResolution;
2675
2597
  }
2676
2598
 
2677
- /** End bevel controls shared by threaded rods and cutters. */
2678
- declare interface ThreadBevelOptions {
2679
- /** Apply a 45-degree bevel at Z=0. */
2680
- readonly bevelBottom?: boolean;
2681
- /**
2682
- * Axial bevel extent in millimetres. Active blunt ends default to one sixth of the compensated
2683
- * male minor radius or female major radius; other ends default to the profile depth.
2684
- */
2685
- readonly bevelSize?: number;
2686
- /** Apply a 45-degree bevel at Z=length. */
2687
- readonly bevelTop?: boolean;
2599
+ /** 45-degree end bevels for compensated rods and cutters. */
2600
+ export declare interface ThreadBevelOptions {
2601
+ /** Bottom/top sizes in millimetres. Omitted disables both. Auto uses profile depth for standard/tapered ends,
2602
+ * or one sixth of the compensated male minor/female major radius for blunt ends. */
2603
+ readonly bevel?: Bevel;
2688
2604
  }
2689
2605
 
2690
2606
  /**
@@ -2701,25 +2617,20 @@ declare interface ThreadBevelOptions {
2701
2617
  */
2702
2618
  export declare function threadedNut(options: ThreadedNutOptions): Solid;
2703
2619
 
2704
- /** Nut-edge bevel selection. */
2705
- export declare type ThreadedNutBevel =
2706
- "automatic" | "both" | "inside" | "none" | "outside";
2707
-
2708
2620
  /**
2709
2621
  * Options for a compensated nut with an internal thread.
2710
2622
  */
2711
2623
  export declare interface ThreadedNutOptions extends Omit<
2712
2624
  InternalThreadCutterOptions,
2713
- "bevelBottom" | "bevelSize" | "bevelTop" | "length"
2625
+ "bevel" | "length"
2714
2626
  > {
2715
- /** Nut body bevel selection. Default: `automatic`. */
2716
- readonly bevel?: ThreadedNutBevel;
2627
+ /** Opening bevels in [bottom, top] order. Omitted or auto uses min(profile.depth, thickness/4); zero disables. */
2628
+ readonly innerBevel?: Bevel;
2629
+ /** Body bevels in [bottom, top] order. Omitted or auto uses min(profile.depth, thickness/4).
2630
+ * Use [0, "auto"] to keep the outside bottom flat without disabling its inner opening bevel. */
2631
+ readonly outerBevel?: Bevel;
2717
2632
  /** Optional physical policy for a round body, independent of the thread's matched facet grid. */
2718
2633
  readonly bodyResolution?: GeometryResolution;
2719
- /** 45-degree body chamfer extent. Default: `min(profile.depth, thickness/4)`. */
2720
- readonly chamferSize?: number;
2721
- /** Leave the bottom outside edge flat for build-plate adhesion. Default: `false`. */
2722
- readonly flushBuildPlateBottom?: boolean;
2723
2634
  /** Nut body shape. */
2724
2635
  readonly shape: ThreadedNutShape;
2725
2636
  /** Nut thickness along +Z in millimetres. */
@@ -2732,8 +2643,10 @@ export declare interface ThreadedNutOptions extends Omit<
2732
2643
  export declare interface ThreadedNutPreflight {
2733
2644
  /** Polygon segment count used by the nut body. */
2734
2645
  readonly bodySegments: number;
2735
- /** Shared 45-degree chamfer size applied to the selected body and cutter edges. */
2736
- readonly chamferSize: number;
2646
+ /** Resolved opening bevel sizes in millimetres, [bottom, top]. */
2647
+ readonly innerBevel: readonly [bottom: number, top: number];
2648
+ /** Resolved body bevel sizes in millimetres, [bottom, top]. */
2649
+ readonly outerBevel: readonly [bottom: number, top: number];
2737
2650
  /** Maximum compensated cutter radius at either requested face. */
2738
2651
  readonly cutterFaceRadius: number;
2739
2652
  /** Minimum nut-body inradius across the requested top and bottom faces. */
@@ -2741,7 +2654,7 @@ export declare interface ThreadedNutPreflight {
2741
2654
  /** Smallest radial wall left between the body and cutter at either requested face. */
2742
2655
  readonly minimumFaceWall: number;
2743
2656
  /** Conservative allocation estimates for the extended cutter; excludes the body and Boolean result. */
2744
- readonly thread: HelicalThreadSolidMeshPreflight;
2657
+ readonly thread: ThreadSolidPreflight;
2745
2658
  /** Start-aligned circular facet count used by the compensated thread cutter. */
2746
2659
  readonly threadCircularSegments: number;
2747
2660
  }
@@ -2769,9 +2682,7 @@ export declare function threadedRod(options: ThreadedRodOptions): Solid;
2769
2682
  * Options for a compensated external threaded rod along +Z.
2770
2683
  */
2771
2684
  export declare interface ThreadedRodOptions
2772
- extends
2773
- Omit<HelicalThreadRidgeMeshOptions, "majorDiameter">,
2774
- ThreadBevelOptions {
2685
+ extends Omit<ThreadRidgeOptions, "majorDiameter">, ThreadBevelOptions {
2775
2686
  /** Printable fit or caller-calibrated allowances. Default: `normal`. */
2776
2687
  readonly fit?: PrintableThreadFit | PrintableThreadFitPolicy;
2777
2688
  /** Nominal major diameter before male compensation. */
@@ -2848,7 +2759,7 @@ export declare interface ThreadProfile {
2848
2759
  }
2849
2760
 
2850
2761
  /** Fields shared by all thread profile specifications. */
2851
- declare interface ThreadProfileBaseSpec {
2762
+ export declare interface ThreadProfileBaseSpec {
2852
2763
  /** Adjacent axial thread spacing in millimetres. */
2853
2764
  readonly pitch: number;
2854
2765
  /** Optional numerical tolerance overrides. */
@@ -2858,7 +2769,7 @@ declare interface ThreadProfileBaseSpec {
2858
2769
  /**
2859
2770
  * Supported built-in and caller-defined thread profiles.
2860
2771
  */
2861
- declare type ThreadProfileSpec =
2772
+ export declare type ThreadProfileSpec =
2862
2773
  | AcmeThreadProfileSpec
2863
2774
  | ButtressThreadProfileSpec
2864
2775
  | CustomThreadProfileSpec
@@ -2869,8 +2780,44 @@ declare type ThreadProfileSpec =
2869
2780
  /** Helical ridge mesh construction. */
2870
2781
  export declare function threadRidge(options: ThreadRidgeOptions): Solid;
2871
2782
 
2872
- /** Parameters for a helical ridge before solid construction. */
2873
- export declare type ThreadRidgeOptions = HelicalThreadRidgeMeshOptions;
2783
+ /** Runtime-neutral options for the dedicated helical ridge mesher. */
2784
+ export declare interface ThreadRidgeOptions {
2785
+ /**
2786
+ * Optional bottom/top ridge-end treatments. Standalone ridges honor the requested boundaries;
2787
+ * BOSL2-style non-cut lead-in scaling is available on complete thread solids.
2788
+ */
2789
+ readonly ends?: ThreadEndTreatmentOptions;
2790
+ /** Helix direction. Default: `right`. */
2791
+ readonly handedness?: ThreadHandedness;
2792
+ /** Total threaded axial length in millimetres. */
2793
+ readonly length: number;
2794
+ /** Explicit output and circular allocation ceilings. */
2795
+ readonly limits?: Partial<ModelingLimits>;
2796
+ /** Nominal major diameter before any caller-owned fit compensation. */
2797
+ readonly majorDiameter: number;
2798
+ /** Angular offset of the first start in degrees. Default: `0`. */
2799
+ readonly phase?: number;
2800
+ /** Validated periodic profile repeated around the shaft. */
2801
+ readonly profile: ThreadProfile;
2802
+ /** Optional circular-resolution policy. */
2803
+ readonly resolution?: GeometryResolution;
2804
+ /** Number of evenly phased starts. Default: `1`. */
2805
+ readonly starts?: number;
2806
+ /** Optional numerical tolerance overrides. */
2807
+ readonly tolerance?: GeometryToleranceOptions;
2808
+ }
2809
+
2810
+ /** Selected sampling counts and conservative allocation estimates, before thread mesh construction. */
2811
+ export declare interface ThreadSolidPreflight {
2812
+ /** Uniform axial intervals required only by a requested physical segment-length limit. */
2813
+ readonly axialIntervals: number;
2814
+ /** Start-aligned full-circle segment count used by the surface mesh. */
2815
+ readonly circularSegments: number;
2816
+ /** Conservative surface-row count across profile breaks, ends, and bevel stations. */
2817
+ readonly estimatedRows: number;
2818
+ /** Conservative triangle count used by the selected output allocation policy. */
2819
+ readonly estimatedTriangles: number;
2820
+ }
2874
2821
 
2875
2822
  /**
2876
2823
  * Torus around +Z.
@@ -3038,7 +2985,7 @@ export declare type Transform3Data = readonly [
3038
2985
  export declare type Transform3Input = Transform3 | Transform3Data;
3039
2986
 
3040
2987
  /** Trapezoidal thread profile with a configurable included angle. */
3041
- declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
2988
+ export declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
3042
2989
  /** Selects the trapezoidal profile family. */
3043
2990
  readonly kind: "trapezoidal";
3044
2991
  /**
@@ -3054,13 +3001,11 @@ declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
3054
3001
  readonly includedAngle?: number;
3055
3002
  }
3056
3003
 
3057
- /**
3058
- * A topology-preserving indexed triangle mesh with XYZ vertex positions.
3059
- */
3004
+ /** A topology-preserving indexed triangle mesh with mutable owned XYZ buffers. */
3060
3005
  export declare interface TriangleMesh {
3061
3006
  /** Three unsigned vertex indices per triangle. */
3062
3007
  readonly indices: Uint32Array;
3063
- /** Flat XYZ coordinates, three finite values per vertex. */
3008
+ /** Flat XYZ coordinates in millimetres. */
3064
3009
  readonly positions: Float32Array;
3065
3010
  }
3066
3011
 
@@ -3068,8 +3013,9 @@ export declare interface TriangleMesh {
3068
3013
  * Measurements and optional edge-connected topology from one validated mesh traversal.
3069
3014
  */
3070
3015
  export declare interface TriangleMeshAnalysis extends TriangleMeshMeasurements {
3071
- /** Number of referenced edge-connected boundary shells when `includeTopology` is requested; cavities count separately. */
3072
- readonly connectedComponentCount?: number;
3016
+ /** Number of surface shells connected by shared indexed edges when includeTopology is requested.
3017
+ * Cavities count separately; shells may be open unless requireClosed is enabled. Coordinates are not welded. */
3018
+ readonly shellCount?: number;
3073
3019
  /** Number of distinct indexed undirected edges when `includeTopology` is requested. */
3074
3020
  readonly edgeCount?: number;
3075
3021
  }
@@ -3090,10 +3036,18 @@ export declare interface TriangleMeshMeasurements {
3090
3036
  readonly vertexCount: number;
3091
3037
  }
3092
3038
 
3039
+ /** Mesh measurements with the indexed surface-shell and edge counts requested by includeTopology. */
3040
+ export declare interface TriangleMeshTopologyAnalysis extends TriangleMeshAnalysis {
3041
+ /** Number of surface shells connected by shared indexed edges; cavities count separately. */
3042
+ readonly shellCount: number;
3043
+ /** Number of distinct indexed undirected edges. */
3044
+ readonly edgeCount: number;
3045
+ }
3046
+
3093
3047
  /**
3094
3048
  * ISO/UTS-like 60-degree truncated triangular profile.
3095
3049
  */
3096
- declare interface TriangularThreadProfileSpec extends ThreadProfileBaseSpec {
3050
+ export declare interface TriangularThreadProfileSpec extends ThreadProfileBaseSpec {
3097
3051
  /** Selects the 60-degree triangular profile family. */
3098
3052
  readonly kind: "triangular";
3099
3053
  /**
@@ -3121,23 +3075,44 @@ export declare function tube(options: TubeOptions): Solid;
3121
3075
  /**
3122
3076
  * Dimensions, placement, and tessellation for a hollow Z-axis tube.
3123
3077
  */
3124
- export declare interface TubeOptions
3125
- extends CircularPrimitiveOptions, PrimitiveAttachment {
3126
- /**
3127
- * Centers the tube on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
3128
- * @defaultValue `true`
3129
- */
3130
- readonly center?: boolean;
3131
- /** Total height along Z in millimetres. */
3132
- readonly height: number;
3133
- /** Positive inner radius in millimetres. */
3134
- readonly innerRadius: number;
3135
- /** Outer radius in millimetres; greater than {@link TubeOptions.innerRadius}. */
3136
- readonly outerRadius: number;
3137
- }
3078
+ export declare type TubeOptions = CircularPrimitiveOptions &
3079
+ PrimitiveAttachment & {
3080
+ /**
3081
+ * Centers the tube on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
3082
+ * @defaultValue `true`
3083
+ */
3084
+ readonly center?: boolean;
3085
+ /** Total height along Z in millimetres. */
3086
+ readonly height: number;
3087
+ /** Inner nominal dimension meets polygon vertices or faces; defaults to vertex. */
3088
+ readonly innerSizing?: RadialSizing;
3089
+ /** Outer nominal dimension meets polygon vertices or faces; defaults to vertex. */
3090
+ readonly outerSizing?: RadialSizing;
3091
+ } & (
3092
+ | {
3093
+ /** Positive nominal inner radius in millimetres. */
3094
+ readonly innerRadius: number;
3095
+ /** Nominal outer radius in millimetres, greater than innerRadius. */
3096
+ readonly outerRadius: number;
3097
+ /** Diameter dimensions cannot be combined with radius dimensions. */
3098
+ readonly innerDiameter?: never;
3099
+ /** Diameter dimensions cannot be combined with radius dimensions. */
3100
+ readonly outerDiameter?: never;
3101
+ }
3102
+ | {
3103
+ /** Positive nominal inner diameter in millimetres. */
3104
+ readonly innerDiameter: number;
3105
+ /** Nominal outer diameter in millimetres, greater than innerDiameter. */
3106
+ readonly outerDiameter: number;
3107
+ /** Radius dimensions cannot be combined with diameter dimensions. */
3108
+ readonly innerRadius?: never;
3109
+ /** Radius dimensions cannot be combined with diameter dimensions. */
3110
+ readonly outerRadius?: never;
3111
+ }
3112
+ );
3138
3113
 
3139
3114
  /**
3140
- * Robust union.
3115
+ * Robust union of one or more shapes; empty input rejects during declaration.
3141
3116
  *
3142
3117
  * @example Union
3143
3118
  * ```ts