@metamesh/modeling 0.15.0 → 0.17.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 (719) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +54 -6
  3. package/dist/api/engine.d.ts +4 -3
  4. package/dist/api/geometry.d.ts +608 -266
  5. package/dist/api/index.d.ts +516 -110
  6. package/dist/api/text.d.ts +6 -6
  7. package/dist/docs/guides/concepts.md +298 -106
  8. package/dist/docs/guides/fonts.md +9 -8
  9. package/dist/docs/guides/fundamentals.md +17 -21
  10. package/dist/docs/guides/generation.md +24 -23
  11. package/dist/docs/guides/hosting.md +25 -20
  12. package/dist/docs/guides/recipes.md +68 -36
  13. package/dist/docs/guides/standalone-model.md +42 -0
  14. package/dist/docs/manifest.json +1034 -296
  15. package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
  16. package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
  17. package/dist/docs/reference/engine/GenerationOptions.md +1 -1
  18. package/dist/docs/reference/engine/GeometryResource.md +1 -1
  19. package/dist/docs/reference/engine/ModelDependencies.md +1 -1
  20. package/dist/docs/reference/engine/ModelEngine.md +1 -1
  21. package/dist/docs/reference/engine/ModelEngineOptions.md +1 -1
  22. package/dist/docs/reference/engine/ModelSession.md +1 -1
  23. package/dist/docs/reference/engine/ModelSnapshot.md +2 -2
  24. package/dist/docs/reference/engine/SessionOptions.md +1 -1
  25. package/dist/docs/reference/engine/SnapshotPart.md +7 -4
  26. package/dist/docs/reference/engine/categories/host-lifecycle.md +8 -3
  27. package/dist/docs/reference/engine/createModelEngine.md +1 -1
  28. package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
  29. package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
  30. package/dist/docs/reference/engine/validateModel.md +1 -1
  31. package/dist/docs/reference/engine.md +6 -2
  32. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +5 -1
  33. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +1 -1
  34. package/dist/docs/reference/geometry/Anchor3-type.md +6 -5
  35. package/dist/docs/reference/geometry/ArcCurve2.md +7 -3
  36. package/dist/docs/reference/geometry/ArcCurve3.md +9 -5
  37. package/dist/docs/reference/geometry/AttachOptions.md +2 -1
  38. package/dist/docs/reference/geometry/AxisAngleRotation3.md +2 -1
  39. package/dist/docs/reference/geometry/Bounds2-type.md +127 -0
  40. package/dist/docs/reference/geometry/Bounds2Data.md +45 -0
  41. package/dist/docs/reference/geometry/Bounds2Input.md +21 -0
  42. package/dist/docs/reference/geometry/Bounds2Options.md +72 -0
  43. package/dist/docs/reference/geometry/Bounds3-type.md +127 -0
  44. package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
  45. package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
  46. package/dist/docs/reference/geometry/Bounds3Options.md +72 -0
  47. package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
  48. package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
  49. package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
  50. package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
  51. package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
  52. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  53. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  54. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  55. package/dist/docs/reference/geometry/BoxOptions.md +3 -3
  56. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
  57. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
  58. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  59. package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
  60. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
  61. package/dist/docs/reference/geometry/CircularResolutionOptions.md +1 -1
  62. package/dist/docs/reference/geometry/CircularSampling.md +41 -0
  63. package/dist/docs/reference/geometry/CircularSamplingOptions.md +14 -0
  64. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
  65. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
  66. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
  67. package/dist/docs/reference/geometry/Contour.md +10 -4
  68. package/dist/docs/reference/geometry/ContourCurve.md +5 -1
  69. package/dist/docs/reference/geometry/ContourPoint.md +6 -1
  70. package/dist/docs/reference/geometry/ContourSegment.md +5 -1
  71. package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
  72. package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
  73. package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
  74. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
  75. package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
  76. package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
  77. package/dist/docs/reference/geometry/Curve2.md +5 -1
  78. package/dist/docs/reference/geometry/Curve3.md +5 -1
  79. package/dist/docs/reference/geometry/CurveSamplingOptions.md +5 -1
  80. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
  81. package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
  82. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -3
  83. package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
  84. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +6 -1
  85. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
  86. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
  87. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +5 -1
  88. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
  89. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
  90. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
  91. package/dist/docs/reference/geometry/CylindricalGearSpec.md +6 -1
  92. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  93. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  94. package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
  95. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  96. package/dist/docs/reference/geometry/ExtrudeOptions.md +5 -1
  97. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -1
  98. package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
  99. package/dist/docs/reference/geometry/Frame3.md +10 -6
  100. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  101. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  102. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  103. package/dist/docs/reference/geometry/GeometryResolution.md +1 -1
  104. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
  105. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  106. package/dist/docs/reference/geometry/GridPatternOptions.md +4 -4
  107. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
  108. package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
  109. package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
  110. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +5 -1
  111. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +5 -1
  112. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
  113. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
  114. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +5 -1
  115. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
  116. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
  117. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
  118. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
  119. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
  120. package/dist/docs/reference/geometry/LineCurve2.md +8 -4
  121. package/dist/docs/reference/geometry/LineCurve3.md +8 -4
  122. package/dist/docs/reference/geometry/LinearPatternOptions.md +1 -1
  123. package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
  124. package/dist/docs/reference/geometry/LoftMeshStation.md +5 -1
  125. package/dist/docs/reference/geometry/LoftOptions.md +5 -1
  126. package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
  127. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
  128. package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
  129. package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
  130. package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
  131. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
  132. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
  133. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  134. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
  135. package/dist/docs/reference/geometry/Path2-type.md +12 -8
  136. package/dist/docs/reference/geometry/Path2Data.md +40 -4
  137. package/dist/docs/reference/geometry/Path2Input.md +8 -3
  138. package/dist/docs/reference/geometry/Path3-type.md +12 -8
  139. package/dist/docs/reference/geometry/Path3Data.md +40 -4
  140. package/dist/docs/reference/geometry/Path3Input.md +8 -3
  141. package/dist/docs/reference/geometry/PathFrame.md +9 -5
  142. package/dist/docs/reference/geometry/PathLocation.md +5 -1
  143. package/dist/docs/reference/geometry/PathNormalGuide.md +8 -4
  144. package/dist/docs/reference/geometry/PathOptions.md +5 -1
  145. package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
  146. package/dist/docs/reference/geometry/PathPlacement.md +8 -4
  147. package/dist/docs/reference/geometry/PathResamplingOptions.md +5 -1
  148. package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
  149. package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
  150. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
  151. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +5 -1
  152. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
  153. package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
  154. package/dist/docs/reference/geometry/PolygonData.md +7 -2
  155. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +5 -1
  156. package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -1
  157. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
  158. package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
  159. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
  160. package/dist/docs/reference/geometry/Profile.md +8 -2
  161. package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
  162. package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
  163. package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
  164. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
  165. package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
  166. package/dist/docs/reference/geometry/RackPitchSpec.md +6 -1
  167. package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
  168. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  169. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  170. package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
  171. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
  172. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
  173. package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
  174. package/dist/docs/reference/geometry/RegionData.md +6 -2
  175. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +5 -1
  176. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  177. package/dist/docs/reference/geometry/RevolveOptions.md +5 -1
  178. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  179. package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
  180. package/dist/docs/reference/geometry/SampleContourOptions.md +5 -1
  181. package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
  182. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +5 -1
  183. package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
  184. package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
  185. package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
  186. package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
  187. package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
  188. package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
  189. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  190. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +5 -1
  191. package/dist/docs/reference/geometry/SphereOptions.md +1 -1
  192. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
  193. package/dist/docs/reference/geometry/StrokeCap.md +8 -1
  194. package/dist/docs/reference/geometry/StrokeJoin.md +8 -1
  195. package/dist/docs/reference/geometry/StrokeOptions.md +5 -1
  196. package/dist/docs/reference/geometry/SvgImportOptions.md +20 -1
  197. package/dist/docs/reference/geometry/SvgRegionPreflight.md +21 -2
  198. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +7 -3
  199. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +6 -1
  200. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +6 -1
  201. package/dist/docs/reference/geometry/SweepOptions.md +5 -1
  202. package/dist/docs/reference/geometry/SweepOrientation.md +5 -1
  203. package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
  204. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -1
  205. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
  206. package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
  207. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
  208. package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
  209. package/dist/docs/reference/geometry/ThreadHelixOptions.md +5 -1
  210. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
  211. package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
  212. package/dist/docs/reference/geometry/ThreadProfile-type.md +7 -3
  213. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
  214. package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
  215. package/dist/docs/reference/geometry/ThreadRole.md +8 -1
  216. package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
  217. package/dist/docs/reference/geometry/ThreadedNutOptions.md +5 -1
  218. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
  219. package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
  220. package/dist/docs/reference/geometry/ThreadedRodOptions.md +5 -1
  221. package/dist/docs/reference/geometry/TorusOptions.md +1 -1
  222. package/dist/docs/reference/geometry/Transform2-type.md +6 -5
  223. package/dist/docs/reference/geometry/Transform2Data.md +15 -0
  224. package/dist/docs/reference/geometry/Transform2Input.md +4 -3
  225. package/dist/docs/reference/geometry/Transform3-type.md +6 -5
  226. package/dist/docs/reference/geometry/Transform3Data.md +18 -0
  227. package/dist/docs/reference/geometry/Transform3Input.md +4 -3
  228. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +5 -1
  229. package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
  230. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +7 -3
  231. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
  232. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
  233. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +5 -1
  234. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
  235. package/dist/docs/reference/geometry/TriangleMeshSignature.md +7 -3
  236. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +6 -1
  237. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
  238. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
  239. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
  240. package/dist/docs/reference/geometry/TubeOptions.md +1 -1
  241. package/dist/docs/reference/geometry/Vector2-type.md +6 -5
  242. package/dist/docs/reference/geometry/Vector2Data.md +15 -0
  243. package/dist/docs/reference/geometry/Vector2Input.md +4 -3
  244. package/dist/docs/reference/geometry/Vector3-type.md +6 -5
  245. package/dist/docs/reference/geometry/Vector3Data.md +15 -0
  246. package/dist/docs/reference/geometry/Vector3Input.md +4 -3
  247. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +6 -1
  248. package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
  249. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +7 -3
  250. package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
  251. package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
  252. package/dist/docs/reference/geometry/add2.md +7 -6
  253. package/dist/docs/reference/geometry/add3.md +7 -6
  254. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
  255. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +5 -1
  256. package/dist/docs/reference/geometry/anchor3.md +2 -1
  257. package/dist/docs/reference/geometry/anchorFrame3.md +5 -1
  258. package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
  259. package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
  260. package/dist/docs/reference/geometry/attachmentTransform3.md +5 -4
  261. package/dist/docs/reference/geometry/bounds2.md +39 -0
  262. package/dist/docs/reference/geometry/bounds3.md +39 -0
  263. package/dist/docs/reference/geometry/boundsCenter.md +12 -11
  264. package/dist/docs/reference/geometry/boundsSize.md +12 -11
  265. package/dist/docs/reference/geometry/boxAnchor3.md +4 -3
  266. package/dist/docs/reference/geometry/categories/bounds-layout.md +25 -9
  267. package/dist/docs/reference/geometry/categories/curves-paths.md +21 -9
  268. package/dist/docs/reference/geometry/categories/mechanical.md +22 -10
  269. package/dist/docs/reference/geometry/categories/meshes.md +16 -7
  270. package/dist/docs/reference/geometry/categories/pattern-placement.md +6 -4
  271. package/dist/docs/reference/geometry/categories/primitive-options.md +8 -2
  272. package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -12
  273. package/dist/docs/reference/geometry/categories/resolution-errors.md +8 -3
  274. package/dist/docs/reference/geometry/categories/transforms-math.md +21 -12
  275. package/dist/docs/reference/geometry/categories/vector-import.md +11 -5
  276. package/dist/docs/reference/geometry/circleContour.md +5 -1
  277. package/dist/docs/reference/geometry/closeToAxis.md +14 -5
  278. package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
  279. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +5 -1
  280. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -1
  281. package/dist/docs/reference/geometry/composeTransform3.md +7 -6
  282. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +5 -1
  283. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +11 -2
  284. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
  285. package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +5 -1
  286. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
  287. package/dist/docs/reference/geometry/cross2.md +6 -5
  288. package/dist/docs/reference/geometry/cross3.md +7 -6
  289. package/dist/docs/reference/geometry/cylinderAnchor3.md +3 -2
  290. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
  291. package/dist/docs/reference/geometry/distance2.md +6 -5
  292. package/dist/docs/reference/geometry/distance3.md +6 -5
  293. package/dist/docs/reference/geometry/distributeAlongPath.md +5 -1
  294. package/dist/docs/reference/geometry/dot2.md +6 -5
  295. package/dist/docs/reference/geometry/dot3.md +6 -5
  296. package/dist/docs/reference/geometry/ellipseContour.md +5 -1
  297. package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
  298. package/dist/docs/reference/geometry/extrudeMesh.md +5 -1
  299. package/dist/docs/reference/geometry/fitBounds.md +10 -9
  300. package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
  301. package/dist/docs/reference/geometry/frameTransform3.md +5 -4
  302. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +5 -1
  303. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
  304. package/dist/docs/reference/geometry/gridPatternTransforms.md +4 -4
  305. package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
  306. package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +5 -1
  307. package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +5 -1
  308. package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
  309. package/dist/docs/reference/geometry/isGeometryError.md +5 -2
  310. package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
  311. package/dist/docs/reference/geometry/layoutRow.md +11 -7
  312. package/dist/docs/reference/geometry/length2.md +5 -4
  313. package/dist/docs/reference/geometry/length3.md +5 -4
  314. package/dist/docs/reference/geometry/lerp2.md +7 -6
  315. package/dist/docs/reference/geometry/lerp3.md +7 -6
  316. package/dist/docs/reference/geometry/linearPatternTransforms.md +4 -4
  317. package/dist/docs/reference/geometry/loftMesh.md +5 -1
  318. package/dist/docs/reference/geometry/matchProfiles.md +11 -2
  319. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
  320. package/dist/docs/reference/geometry/meshBounds.md +8 -4
  321. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +5 -1
  322. package/dist/docs/reference/geometry/normalize2.md +10 -6
  323. package/dist/docs/reference/geometry/normalize3.md +10 -6
  324. package/dist/docs/reference/geometry/normalizeContour.md +8 -4
  325. package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
  326. package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
  327. package/dist/docs/reference/geometry/optimizePlanarPatches.md +5 -1
  328. package/dist/docs/reference/geometry/path2.md +14 -2
  329. package/dist/docs/reference/geometry/path3.md +8 -1
  330. package/dist/docs/reference/geometry/pathPatternTransforms.md +9 -5
  331. package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
  332. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +11 -2
  333. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +13 -2
  334. package/dist/docs/reference/geometry/preflightSvgRegion.md +24 -2
  335. package/dist/docs/reference/geometry/preflightThreadedNut.md +12 -2
  336. package/dist/docs/reference/geometry/preflightThreadedRod.md +12 -2
  337. package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
  338. package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -4
  339. package/dist/docs/reference/geometry/rectangleContour.md +10 -3
  340. package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
  341. package/dist/docs/reference/geometry/regionArea.md +5 -1
  342. package/dist/docs/reference/geometry/regionBounds.md +8 -4
  343. package/dist/docs/reference/geometry/regularPolygonContour.md +8 -4
  344. package/dist/docs/reference/geometry/resamplePolyline2.md +8 -4
  345. package/dist/docs/reference/geometry/resamplePolyline3.md +8 -4
  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 +40 -0
  349. package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
  350. package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
  351. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
  352. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +5 -1
  353. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
  354. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  355. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
  356. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
  357. package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
  358. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +5 -1
  359. package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
  360. package/dist/docs/reference/geometry/revolveMesh.md +5 -1
  361. package/dist/docs/reference/geometry/rotate2.md +6 -5
  362. package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
  363. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -4
  364. package/dist/docs/reference/geometry/sampleContour.md +12 -2
  365. package/dist/docs/reference/geometry/sampleCurve2.md +6 -3
  366. package/dist/docs/reference/geometry/sampleCurve3.md +5 -1
  367. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
  368. package/dist/docs/reference/geometry/sampleHelix.md +13 -5
  369. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
  370. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
  371. package/dist/docs/reference/geometry/sampleSideProfile.md +15 -5
  372. package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
  373. package/dist/docs/reference/geometry/sampleThreadHelices.md +5 -1
  374. package/dist/docs/reference/geometry/scale2.md +6 -5
  375. package/dist/docs/reference/geometry/scale3.md +6 -5
  376. package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
  377. package/dist/docs/reference/geometry/signedContourArea.md +5 -1
  378. package/dist/docs/reference/geometry/starContour.md +8 -4
  379. package/dist/docs/reference/geometry/strokeRegionData.md +5 -1
  380. package/dist/docs/reference/geometry/subtract2.md +7 -6
  381. package/dist/docs/reference/geometry/subtract3.md +7 -6
  382. package/dist/docs/reference/geometry/sweepMesh.md +5 -1
  383. package/dist/docs/reference/geometry/threadProfile.md +5 -1
  384. package/dist/docs/reference/geometry/transform2.md +14 -7
  385. package/dist/docs/reference/geometry/transform3.md +16 -7
  386. package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
  387. package/dist/docs/reference/geometry/transformRegionData.md +5 -1
  388. package/dist/docs/reference/geometry/transformTriangleMesh.md +5 -1
  389. package/dist/docs/reference/geometry/translationTransform3.md +7 -6
  390. package/dist/docs/reference/geometry/triangulateContour.md +5 -1
  391. package/dist/docs/reference/geometry/validateSolidMesh.md +9 -2
  392. package/dist/docs/reference/geometry/validateTransform3.md +6 -5
  393. package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
  394. package/dist/docs/reference/geometry/vector2.md +10 -2
  395. package/dist/docs/reference/geometry/vector3.md +10 -2
  396. package/dist/docs/reference/geometry.md +7 -5
  397. package/dist/docs/reference/model/Anchor3.md +6 -5
  398. package/dist/docs/reference/model/AttachOptions.md +2 -1
  399. package/dist/docs/reference/model/Bounds2-type.md +125 -0
  400. package/dist/docs/reference/model/Bounds2Data.md +44 -0
  401. package/dist/docs/reference/model/Bounds2Input.md +19 -0
  402. package/dist/docs/reference/model/Bounds2Options.md +70 -0
  403. package/dist/docs/reference/model/Bounds3-type.md +125 -0
  404. package/dist/docs/reference/model/Bounds3Data.md +44 -0
  405. package/dist/docs/reference/model/Bounds3Input.md +19 -0
  406. package/dist/docs/reference/model/Bounds3Options.md +70 -0
  407. package/dist/docs/reference/model/BoxEdge.md +1 -1
  408. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  409. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  410. package/dist/docs/reference/model/BoxOptions.md +3 -3
  411. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  412. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  413. package/dist/docs/reference/model/CircleOptions.md +1 -1
  414. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
  415. package/dist/docs/reference/model/Computed.md +6 -1
  416. package/dist/docs/reference/model/ComputedValue.md +5 -1
  417. package/dist/docs/reference/model/Contour.md +6 -4
  418. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  419. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  420. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  421. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  422. package/dist/docs/reference/model/CylinderOptions.md +1 -1
  423. package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
  424. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  425. package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
  426. package/dist/docs/reference/model/EllipseOptions.md +1 -1
  427. package/dist/docs/reference/model/EndTreatments.md +1 -1
  428. package/dist/docs/reference/model/ExtrudeOptions.md +1 -1
  429. package/dist/docs/reference/model/FinalizedModel.md +3 -3
  430. package/dist/docs/reference/model/FinalizedPart.md +1 -1
  431. package/dist/docs/reference/model/Frame3.md +6 -6
  432. package/dist/docs/reference/model/GenerateCallback.md +5 -1
  433. package/dist/docs/reference/model/GenerateContext.md +5 -1
  434. package/dist/docs/reference/model/GeneratedPart.md +5 -1
  435. package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
  436. package/dist/docs/reference/model/GenerationError.md +5 -1
  437. package/dist/docs/reference/model/GeometryResolution.md +1 -1
  438. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  439. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  440. package/dist/docs/reference/model/GridPatternOptions.md +5 -4
  441. package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
  442. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +2 -1
  443. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
  444. package/dist/docs/reference/model/HoleCutterOptions.md +77 -0
  445. package/dist/docs/reference/model/HoleCutterOverrun.md +35 -0
  446. package/dist/docs/reference/model/HoleCutterRecess.md +87 -0
  447. package/dist/docs/reference/model/HullOptions.md +1 -1
  448. package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
  449. package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
  450. package/dist/docs/reference/model/ImplicitOptions.md +6 -6
  451. package/dist/docs/reference/model/InternalThreadCutterOptions.md +2 -1
  452. package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
  453. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
  454. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +38 -0
  455. package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
  456. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
  457. package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
  458. package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
  459. package/dist/docs/reference/model/LinearPatternOptions.md +2 -1
  460. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  461. package/dist/docs/reference/model/LoftOptions.md +1 -1
  462. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  463. package/dist/docs/reference/model/LoftStation.md +1 -1
  464. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  465. package/dist/docs/reference/model/ModelProgram.md +5 -1
  466. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  467. package/dist/docs/reference/model/NumericArray.md +8 -1
  468. package/dist/docs/reference/model/PartGeometry.md +5 -1
  469. package/dist/docs/reference/model/PartOptions.md +5 -1
  470. package/dist/docs/reference/model/Path2-type.md +12 -8
  471. package/dist/docs/reference/model/Path2Data.md +40 -4
  472. package/dist/docs/reference/model/Path2Input.md +8 -3
  473. package/dist/docs/reference/model/Path3-type.md +12 -8
  474. package/dist/docs/reference/model/Path3Data.md +40 -4
  475. package/dist/docs/reference/model/Path3Input.md +8 -3
  476. package/dist/docs/reference/model/PathLocation.md +5 -1
  477. package/dist/docs/reference/model/PathNormalGuide.md +4 -4
  478. package/dist/docs/reference/model/PathOptions.md +5 -1
  479. package/dist/docs/reference/model/PathPatternOptions.md +2 -1
  480. package/dist/docs/reference/model/PathResamplingOptions.md +5 -1
  481. package/dist/docs/reference/model/PatternSource.md +2 -1
  482. package/dist/docs/reference/model/Pivot2Options.md +2 -1
  483. package/dist/docs/reference/model/Pivot3Options.md +2 -1
  484. package/dist/docs/reference/model/PlaneOptions.md +1 -1
  485. package/dist/docs/reference/model/PolygonData.md +3 -2
  486. package/dist/docs/reference/model/PolygonOptions.md +1 -1
  487. package/dist/docs/reference/model/PrimitiveAttachment.md +2 -1
  488. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +2 -1
  489. package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
  490. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
  491. package/dist/docs/reference/model/Profile.md +4 -2
  492. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  493. package/dist/docs/reference/model/ProfileContour2.md +4 -2
  494. package/dist/docs/reference/model/ProfileSpan2.md +3 -3
  495. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
  496. package/dist/docs/reference/model/RadialPatternOptions.md +2 -1
  497. package/dist/docs/reference/model/RadialSizing.md +1 -1
  498. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  499. package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
  500. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  501. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  502. package/dist/docs/reference/model/RectangleOptions.md +3 -3
  503. package/dist/docs/reference/model/RegionData.md +2 -2
  504. package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
  505. package/dist/docs/reference/model/RevolveOptions.md +1 -1
  506. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  507. package/dist/docs/reference/model/Section.md +9 -2
  508. package/dist/docs/reference/model/SectionHullOptions.md +1 -1
  509. package/dist/docs/reference/model/SectionInspection.md +4 -4
  510. package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
  511. package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
  512. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  513. package/dist/docs/reference/model/Solid.md +9 -2
  514. package/dist/docs/reference/model/SolidInspection.md +4 -4
  515. package/dist/docs/reference/model/SolidSegmentHit.md +4 -4
  516. package/dist/docs/reference/model/SphereOptions.md +1 -1
  517. package/dist/docs/reference/model/StarOptions.md +1 -1
  518. package/dist/docs/reference/model/StrokeCap.md +1 -1
  519. package/dist/docs/reference/model/StrokeJoin.md +1 -1
  520. package/dist/docs/reference/model/StrokeOptions.md +1 -1
  521. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  522. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  523. package/dist/docs/reference/model/SvgSectionOptions.md +14 -1
  524. package/dist/docs/reference/model/SweepOptions.md +1 -1
  525. package/dist/docs/reference/model/SweepOrientation.md +1 -1
  526. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  527. package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
  528. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
  529. package/dist/docs/reference/model/ThreadHandedness.md +2 -1
  530. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
  531. package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
  532. package/dist/docs/reference/model/ThreadProfile.md +4 -3
  533. package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
  534. package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
  535. package/dist/docs/reference/model/ThreadedNutOptions.md +2 -1
  536. package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
  537. package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
  538. package/dist/docs/reference/model/ThreadedRodOptions.md +2 -1
  539. package/dist/docs/reference/model/TorusOptions.md +1 -1
  540. package/dist/docs/reference/model/Transform2-type.md +6 -5
  541. package/dist/docs/reference/model/Transform2Data.md +16 -0
  542. package/dist/docs/reference/model/Transform2Input.md +4 -3
  543. package/dist/docs/reference/model/Transform3-type.md +6 -5
  544. package/dist/docs/reference/model/Transform3Data.md +19 -0
  545. package/dist/docs/reference/model/Transform3Input.md +4 -3
  546. package/dist/docs/reference/model/TriangleMesh.md +1 -1
  547. package/dist/docs/reference/model/TriangleMeshAnalysis.md +3 -3
  548. package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
  549. package/dist/docs/reference/model/TubeOptions.md +1 -1
  550. package/dist/docs/reference/model/Vector2-type.md +6 -5
  551. package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
  552. package/dist/docs/reference/model/Vector2Input.md +4 -3
  553. package/dist/docs/reference/model/Vector3-type.md +6 -5
  554. package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
  555. package/dist/docs/reference/model/Vector3Input.md +4 -3
  556. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  557. package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
  558. package/dist/docs/reference/model/anchor.md +2 -1
  559. package/dist/docs/reference/model/bounds2.md +37 -0
  560. package/dist/docs/reference/model/bounds3.md +37 -0
  561. package/dist/docs/reference/model/box.md +2 -2
  562. package/dist/docs/reference/model/castSegment.md +1 -1
  563. package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
  564. package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
  565. package/dist/docs/reference/model/categories/bounds.md +38 -0
  566. package/dist/docs/reference/model/categories/contracts.md +4 -2
  567. package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
  568. package/dist/docs/reference/model/categories/explicit-profiles.md +6 -4
  569. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
  570. package/dist/docs/reference/model/categories/generation.md +11 -2
  571. package/dist/docs/reference/model/categories/hinges.md +38 -0
  572. package/dist/docs/reference/model/categories/inspection.md +9 -2
  573. package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
  574. package/dist/docs/reference/model/categories/paths.md +15 -7
  575. package/dist/docs/reference/model/categories/primitives.md +14 -4
  576. package/dist/docs/reference/model/categories/resolution.md +4 -2
  577. package/dist/docs/reference/model/categories/sections.md +10 -5
  578. package/dist/docs/reference/model/categories/threads.md +10 -7
  579. package/dist/docs/reference/model/categories/transforms-placement.md +17 -9
  580. package/dist/docs/reference/model/circle.md +1 -1
  581. package/dist/docs/reference/model/components.md +1 -1
  582. package/dist/docs/reference/model/compose.md +1 -1
  583. package/dist/docs/reference/model/cylinder.md +1 -1
  584. package/dist/docs/reference/model/distance.md +1 -1
  585. package/dist/docs/reference/model/ellipse.md +1 -1
  586. package/dist/docs/reference/model/extrude.md +1 -1
  587. package/dist/docs/reference/model/generate.md +5 -1
  588. package/dist/docs/reference/model/gridPattern.md +2 -1
  589. package/dist/docs/reference/model/heightfield.md +5 -2
  590. package/dist/docs/reference/model/holeCutter.md +45 -0
  591. package/dist/docs/reference/model/hull.md +1 -1
  592. package/dist/docs/reference/model/immutableBuffer.md +5 -1
  593. package/dist/docs/reference/model/immutableMesh.md +5 -1
  594. package/dist/docs/reference/model/implicit.md +3 -3
  595. package/dist/docs/reference/model/inspectSection.md +1 -1
  596. package/dist/docs/reference/model/inspectSolid.md +1 -1
  597. package/dist/docs/reference/model/internalThreadCutter.md +2 -1
  598. package/dist/docs/reference/model/intersect.md +1 -1
  599. package/dist/docs/reference/model/isEmpty.md +1 -1
  600. package/dist/docs/reference/model/knuckleHinge.md +47 -0
  601. package/dist/docs/reference/model/linearPattern.md +2 -1
  602. package/dist/docs/reference/model/loft.md +1 -1
  603. package/dist/docs/reference/model/matchProfiles.md +1 -1
  604. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  605. package/dist/docs/reference/model/path2.md +14 -2
  606. package/dist/docs/reference/model/path3.md +8 -1
  607. package/dist/docs/reference/model/pathPattern.md +2 -1
  608. package/dist/docs/reference/model/polygon.md +5 -2
  609. package/dist/docs/reference/model/preflightInternalThreadCutter.md +8 -2
  610. package/dist/docs/reference/model/preflightThreadedNut.md +8 -2
  611. package/dist/docs/reference/model/preflightThreadedRod.md +8 -2
  612. package/dist/docs/reference/model/radialPattern.md +2 -1
  613. package/dist/docs/reference/model/rectangle.md +5 -2
  614. package/dist/docs/reference/model/regularPolygon.md +1 -1
  615. package/dist/docs/reference/model/revolve.md +1 -1
  616. package/dist/docs/reference/model/solidFromMesh.md +1 -1
  617. package/dist/docs/reference/model/sphere.md +1 -1
  618. package/dist/docs/reference/model/split.md +1 -1
  619. package/dist/docs/reference/model/splitByPlane.md +1 -1
  620. package/dist/docs/reference/model/star.md +1 -1
  621. package/dist/docs/reference/model/stroke.md +1 -1
  622. package/dist/docs/reference/model/svgPathSection.md +1 -1
  623. package/dist/docs/reference/model/svgSection.md +5 -1
  624. package/dist/docs/reference/model/sweep.md +1 -1
  625. package/dist/docs/reference/model/textSection.md +1 -1
  626. package/dist/docs/reference/model/threadRidge.md +2 -1
  627. package/dist/docs/reference/model/threadedNut.md +2 -1
  628. package/dist/docs/reference/model/threadedRod.md +2 -1
  629. package/dist/docs/reference/model/torus.md +1 -1
  630. package/dist/docs/reference/model/transform2.md +14 -7
  631. package/dist/docs/reference/model/transform3.md +16 -7
  632. package/dist/docs/reference/model/tube.md +1 -1
  633. package/dist/docs/reference/model/union.md +1 -1
  634. package/dist/docs/reference/model/vector2.md +10 -2
  635. package/dist/docs/reference/model/vector3.md +10 -2
  636. package/dist/docs/reference/model.md +15 -8
  637. package/dist/docs/reference/text/Bounds2Data.md +34 -0
  638. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
  639. package/dist/docs/reference/text/Vector2Data.md +7 -0
  640. package/dist/docs/reference/text/VectorFont.md +7 -7
  641. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  642. package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
  643. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  644. package/dist/docs/reference/text/VectorTextLayoutOptions.md +3 -3
  645. package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
  646. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  647. package/dist/docs/reference/text/categories/font-preparation.md +6 -4
  648. package/dist/docs/reference/text/prepareVectorFont.md +1 -1
  649. package/dist/docs/reference/text.md +4 -2
  650. package/dist/engine/construction-operations.js +1 -1
  651. package/dist/engine/extrusion-finishing.js +2 -29
  652. package/dist/engine/hole-cutter-operation.js +148 -0
  653. package/dist/engine/knuckle-hinge-operation.js +128 -0
  654. package/dist/engine/loft-operations.js +1 -1
  655. package/dist/engine/mechanical-operations.js +3 -1
  656. package/dist/engine/modeling-context.js +20 -1
  657. package/dist/engine/primitive-operations.js +19 -6
  658. package/dist/engine/recipe-realization.js +4 -2
  659. package/dist/engine/section-operations.js +2 -2
  660. package/dist/engine/transform-operations.js +3 -3
  661. package/dist/geometry/bounds-value.js +121 -0
  662. package/dist/geometry/bounds.js +10 -25
  663. package/dist/geometry/circular-sampling.js +45 -0
  664. package/dist/geometry/convex-offset.js +41 -0
  665. package/dist/geometry/curves/sampling.js +1 -2
  666. package/dist/geometry/errors.js +1 -0
  667. package/dist/geometry/heightfield.js +12 -1
  668. package/dist/geometry/index.js +5 -2
  669. package/dist/geometry/math/immutable-value.js +1 -1
  670. package/dist/geometry/math/vector-value.js +11 -3
  671. package/dist/geometry/math/vector2.js +1 -0
  672. package/dist/geometry/math/vector3.js +1 -0
  673. package/dist/geometry/mechanical/index.js +1 -0
  674. package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
  675. package/dist/geometry/mechanical/thread-mesh-plan.js +7 -2
  676. package/dist/geometry/mechanical/thread-solids.js +29 -4
  677. package/dist/geometry/mesh/mesh-centroid.js +1 -0
  678. package/dist/geometry/mesh/mesh-solid.js +1 -0
  679. package/dist/geometry/paths/frames.js +1 -0
  680. package/dist/geometry/paths/helix.js +1 -0
  681. package/dist/geometry/paths/path-value.js +43 -27
  682. package/dist/geometry/paths/resampling.js +2 -2
  683. package/dist/geometry/patterns/placements.js +3 -3
  684. package/dist/geometry/patterns.js +3 -1
  685. package/dist/geometry/profiles/contour.js +1 -0
  686. package/dist/geometry/profiles/matched.js +1 -0
  687. package/dist/geometry/profiles/profiles.js +3 -23
  688. package/dist/geometry/profiles/rectangle.js +10 -1
  689. package/dist/geometry/profiles/side-profile.js +2 -0
  690. package/dist/geometry/svg/matrix.js +21 -0
  691. package/dist/geometry/svg-import.js +140 -52
  692. package/dist/geometry/sweeps/options.js +1 -1
  693. package/dist/geometry/text-fitting.js +1 -0
  694. package/dist/geometry/transform-matrix.js +1 -1
  695. package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
  696. package/dist/index.js +2 -1
  697. package/dist/model/execution-binding.js +1 -1
  698. package/dist/model/geometry-recipes.js +1 -1
  699. package/dist/model/hole-cutter.js +1 -0
  700. package/dist/model/immutable-generation-data.js +4 -12
  701. package/dist/model/knuckle-hinge.js +1 -0
  702. package/dist/model/operations.js +78 -3
  703. package/dist/model/recipe-declaration.js +11 -2
  704. package/package.json +1 -1
  705. package/dist/docs/reference/geometry/Bounds2.md +0 -39
  706. package/dist/docs/reference/geometry/Bounds3.md +0 -39
  707. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +0 -23
  708. package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
  709. package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
  710. package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
  711. package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
  712. package/dist/docs/reference/geometry/boundsFromSize.md +0 -83
  713. package/dist/docs/reference/geometry/containsBounds.md +0 -72
  714. package/dist/docs/reference/model/Bounds2.md +0 -39
  715. package/dist/docs/reference/model/Bounds3.md +0 -39
  716. package/dist/docs/reference/model/Transform2Matrix.md +0 -15
  717. package/dist/docs/reference/model/Transform3Matrix.md +0 -18
  718. package/dist/docs/reference/text/Bounds2.md +0 -34
  719. package/dist/docs/reference/text/Vector2Tuple.md +0 -7
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "formatVersion": 1,
3
3
  "packageName": "@metamesh/modeling",
4
- "packageVersion": "0.15.0",
4
+ "packageVersion": "0.17.0",
5
5
  "documents": [
6
6
  {
7
7
  "id": "modeling/guide/concepts",
8
8
  "title": "Geometry API concepts",
9
- "summary": "Choose the public Modeling modules, understand geometry and lifecycle conventions, and use them in Studio or a standalone Node or Worker host.",
9
+ "summary": "Choose shapes, paths, profiles, and modules, then compose immutable geometry with clear sampling and preflight limits.",
10
10
  "path": "guides/concepts.md",
11
11
  "importPath": "@metamesh/modeling",
12
12
  "availability": "Studio, standalone Node, and browser Workers",
@@ -15,7 +15,28 @@
15
15
  "guide",
16
16
  "concepts",
17
17
  "modeling",
18
- "explanation"
18
+ "explanation",
19
+ "geometry-api-concepts",
20
+ "choose-a-modeling-path",
21
+ "choose-the-module-for-your-host",
22
+ "use-modeling-outside-studio",
23
+ "geometry-vocabulary",
24
+ "choose-fluent-values-or-standalone-algorithms",
25
+ "fluent-vector-and-tuple-arithmetic",
26
+ "value-and-data-naming",
27
+ "query-paths-and-preserve-closure",
28
+ "path-coordinate-round-trip",
29
+ "compose-modeling-operations",
30
+ "coordinates-units-and-resolution",
31
+ "reuse-a-transform-across-shapes-and-coordinates",
32
+ "transform-composition-order",
33
+ "calculate-with-vectors",
34
+ "measure-and-compare-bounds",
35
+ "svg-sections-fills-and-strokes-are-different-inputs",
36
+ "text-and-font-variability",
37
+ "printable-threads",
38
+ "check-preflight-guarantees",
39
+ "lifecycle-and-inspection"
19
40
  ]
20
41
  },
21
42
  {
@@ -30,13 +51,16 @@
30
51
  "guide",
31
52
  "fonts",
32
53
  "engine",
33
- "how-to"
54
+ "how-to",
55
+ "prepare-fonts-for-modeling",
56
+ "install-font-support",
57
+ "prepare-one-reusable-layout"
34
58
  ]
35
59
  },
36
60
  {
37
61
  "id": "modeling/guide/fundamentals",
38
62
  "title": "Modeling fundamentals",
39
- "summary": "Understand watertight solids, coordinates, transforms, Boolean operations, and geometry ownership in Studio code Projects.",
63
+ "summary": "Combine watertight solids with Booleans and transforms, and understand geometry ownership in Studio code Projects.",
40
64
  "path": "guides/fundamentals.md",
41
65
  "importPath": "@metamesh/modeling",
42
66
  "availability": "Modeling concepts; examples use Studio code Projects",
@@ -45,13 +69,19 @@
45
69
  "guide",
46
70
  "fundamentals",
47
71
  "modeling",
48
- "explanation"
72
+ "explanation",
73
+ "modeling-fundamentals",
74
+ "coordinates-and-units",
75
+ "build-solids-compositionally",
76
+ "choose-the-boolean-by-the-material-you-want",
77
+ "valid-solid-does-not-mean-manufacturable-part",
78
+ "geometry-ownership"
49
79
  ]
50
80
  },
51
81
  {
52
82
  "id": "modeling/guide/generation",
53
83
  "title": "Code Project contract",
54
- "summary": "Understand the supported source, computed values, parts, resource ownership, recovery, and visible-model export behavior.",
84
+ "summary": "Understand Studio’s TypeScript source contract, computed caches, parts, resource ownership, and recovery.",
55
85
  "path": "guides/generation.md",
56
86
  "importPath": "@metamesh/modeling",
57
87
  "availability": "Studio source contract; generation and caching also apply to standalone programs",
@@ -60,7 +90,16 @@
60
90
  "guide",
61
91
  "generation",
62
92
  "studio",
63
- "explanation"
93
+ "explanation",
94
+ "code-project-contract",
95
+ "source-boundary",
96
+ "start-with-generate",
97
+ "assertions-and-warnings",
98
+ "reuse-unchanged-work",
99
+ "text-services",
100
+ "parts-and-placement",
101
+ "ownership-and-recovery",
102
+ "export-the-visible-snapshot"
64
103
  ]
65
104
  },
66
105
  {
@@ -75,13 +114,19 @@
75
114
  "guide",
76
115
  "hosting",
77
116
  "engine",
78
- "how-to"
117
+ "how-to",
118
+ "run-modeling-in-your-application",
119
+ "build-and-export-a-plate",
120
+ "keep-execution-synchronous",
121
+ "load-wasm-in-a-browser-worker",
122
+ "set-resource-limits",
123
+ "export-the-completed-result"
79
124
  ]
80
125
  },
81
126
  {
82
127
  "id": "modeling/guide/recipes",
83
128
  "title": "Modeling recipes",
84
- "summary": "Adapt typechecked patterns for sections, SVG, text, extrusion, sweeps, heightfields, booleans, placement, anchors, and inspection.",
129
+ "summary": "Build plates, cups, routed tubes, lofts, repeated features, SVG shapes, and lettering with complete modeling examples.",
85
130
  "path": "guides/recipes.md",
86
131
  "importPath": "@metamesh/modeling",
87
132
  "availability": "Studio code Projects; adapt host imports for standalone programs",
@@ -90,7 +135,40 @@
90
135
  "guide",
91
136
  "recipes",
92
137
  "modeling",
93
- "how-to"
138
+ "how-to",
139
+ "modeling-recipes",
140
+ "section-hole-offset-and-extrusion",
141
+ "svg-parameter-and-extrusion",
142
+ "revolve-a-radial-profile",
143
+ "choose-a-primitive",
144
+ "primitive-booleans-and-repeated-placement",
145
+ "reuse-a-2d-placement",
146
+ "rotation-minimizing-path-sweep",
147
+ "named-anchors-and-custom-frames",
148
+ "printable-threaded-rod-and-nut",
149
+ "treated-boxes-frustums-and-mirrored-arrays",
150
+ "matched-section-loft",
151
+ "sample-a-heightfield",
152
+ "text-from-a-font-parameter",
153
+ "solid-inspection"
154
+ ]
155
+ },
156
+ {
157
+ "id": "modeling/guide/standalone-model",
158
+ "title": "Write a standalone model",
159
+ "summary": "Write a TypeScript model for a plate with a hole, then check and run it with the CLI.",
160
+ "path": "guides/standalone-model.md",
161
+ "importPath": "@metamesh/modeling",
162
+ "availability": "Standalone model entry; a CLI or application hosts execution",
163
+ "canonical": "https://metamesh.studio/docs/develop/standalone-model",
164
+ "keywords": [
165
+ "guide",
166
+ "standalone-model",
167
+ "modeling",
168
+ "how-to",
169
+ "write-a-standalone-model",
170
+ "minimal-model-entry",
171
+ "check-and-run"
94
172
  ]
95
173
  },
96
174
  {
@@ -376,7 +454,7 @@
376
454
  {
377
455
  "id": "modeling/reference/engine/SnapshotPart",
378
456
  "title": "SnapshotPart",
379
- "summary": "A world-space manufacturing part plus its reusable local renderer resource. Each `positions` or `indices` read returns an owned buffer copy; retain that copy when traversing the mesh. Measurements and placement are immutable data and do not copy on access.",
457
+ "summary": "A world-space manufacturing part plus its reusable local renderer resource.",
380
458
  "path": "reference/engine/SnapshotPart.md",
381
459
  "importPath": "@metamesh/modeling/engine",
382
460
  "availability": "Host runtime · Node and Workers",
@@ -715,41 +793,181 @@
715
793
  ]
716
794
  },
717
795
  {
718
- "id": "modeling/reference/geometry/Bounds2",
796
+ "id": "modeling/reference/geometry/bounds2",
797
+ "title": "bounds2",
798
+ "summary": "Constructs immutable finite XY bounds from ordered extrema or nonnegative size in millimetres.",
799
+ "path": "reference/geometry/bounds2.md",
800
+ "importPath": "@metamesh/modeling/geometry",
801
+ "availability": "Pure TypeScript · Node and browsers",
802
+ "canonical": "https://metamesh.studio/docs/reference/geometry/bounds2",
803
+ "keywords": [
804
+ "reference",
805
+ "function",
806
+ "geometry",
807
+ "bounds-layout",
808
+ "bounds2"
809
+ ]
810
+ },
811
+ {
812
+ "id": "modeling/reference/geometry/Bounds2-type",
719
813
  "title": "Bounds2",
720
- "summary": "Axis-aligned bounds in two-dimensional model space.",
721
- "path": "reference/geometry/Bounds2.md",
814
+ "summary": "Immutable finite XY bounds in millimetres, with tuple coordinates for data interoperability.",
815
+ "path": "reference/geometry/Bounds2-type.md",
722
816
  "importPath": "@metamesh/modeling/geometry",
723
817
  "availability": "Pure TypeScript · Node and browsers",
724
- "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds2",
818
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds2-type",
725
819
  "keywords": [
726
820
  "reference",
727
821
  "interface",
728
822
  "geometry",
729
823
  "bounds-layout",
730
824
  "Bounds2",
825
+ "size",
826
+ "center",
827
+ "containsBounds",
828
+ "toData",
829
+ "max",
830
+ "min"
831
+ ]
832
+ },
833
+ {
834
+ "id": "modeling/reference/geometry/Bounds2Data",
835
+ "title": "Bounds2Data",
836
+ "summary": "Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods.",
837
+ "path": "reference/geometry/Bounds2Data.md",
838
+ "importPath": "@metamesh/modeling/geometry",
839
+ "availability": "Pure TypeScript · Node and browsers",
840
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds2Data",
841
+ "keywords": [
842
+ "reference",
843
+ "interface",
844
+ "geometry",
845
+ "bounds-layout",
846
+ "Bounds2Data",
731
847
  "max",
732
848
  "min"
733
849
  ]
734
850
  },
735
851
  {
736
- "id": "modeling/reference/geometry/Bounds3",
852
+ "id": "modeling/reference/geometry/Bounds2Input",
853
+ "title": "Bounds2Input",
854
+ "summary": "An immutable XY bounds value or its plain min/max representation.",
855
+ "path": "reference/geometry/Bounds2Input.md",
856
+ "importPath": "@metamesh/modeling/geometry",
857
+ "availability": "Pure TypeScript · Node and browsers",
858
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds2Input",
859
+ "keywords": [
860
+ "reference",
861
+ "type-alias",
862
+ "geometry",
863
+ "bounds-layout",
864
+ "Bounds2Input"
865
+ ]
866
+ },
867
+ {
868
+ "id": "modeling/reference/geometry/Bounds2Options",
869
+ "title": "Bounds2Options",
870
+ "summary": "XY bounds construction from existing extrema or nonnegative dimensions, never both.",
871
+ "path": "reference/geometry/Bounds2Options.md",
872
+ "importPath": "@metamesh/modeling/geometry",
873
+ "availability": "Pure TypeScript · Node and browsers",
874
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds2Options",
875
+ "keywords": [
876
+ "reference",
877
+ "type-alias",
878
+ "geometry",
879
+ "bounds-layout",
880
+ "Bounds2Options"
881
+ ]
882
+ },
883
+ {
884
+ "id": "modeling/reference/geometry/bounds3",
885
+ "title": "bounds3",
886
+ "summary": "Constructs immutable finite XYZ bounds from ordered extrema or nonnegative size in millimetres.",
887
+ "path": "reference/geometry/bounds3.md",
888
+ "importPath": "@metamesh/modeling/geometry",
889
+ "availability": "Pure TypeScript · Node and browsers",
890
+ "canonical": "https://metamesh.studio/docs/reference/geometry/bounds3",
891
+ "keywords": [
892
+ "reference",
893
+ "function",
894
+ "geometry",
895
+ "bounds-layout",
896
+ "bounds3"
897
+ ]
898
+ },
899
+ {
900
+ "id": "modeling/reference/geometry/Bounds3-type",
737
901
  "title": "Bounds3",
738
- "summary": "Axis-aligned bounds in three-dimensional model space.",
739
- "path": "reference/geometry/Bounds3.md",
902
+ "summary": "Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability.",
903
+ "path": "reference/geometry/Bounds3-type.md",
740
904
  "importPath": "@metamesh/modeling/geometry",
741
905
  "availability": "Pure TypeScript · Node and browsers",
742
- "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3",
906
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3-type",
743
907
  "keywords": [
744
908
  "reference",
745
909
  "interface",
746
910
  "geometry",
747
911
  "bounds-layout",
748
912
  "Bounds3",
913
+ "size",
914
+ "center",
915
+ "containsBounds",
916
+ "toData",
917
+ "max",
918
+ "min"
919
+ ]
920
+ },
921
+ {
922
+ "id": "modeling/reference/geometry/Bounds3Data",
923
+ "title": "Bounds3Data",
924
+ "summary": "Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods.",
925
+ "path": "reference/geometry/Bounds3Data.md",
926
+ "importPath": "@metamesh/modeling/geometry",
927
+ "availability": "Pure TypeScript · Node and browsers",
928
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3Data",
929
+ "keywords": [
930
+ "reference",
931
+ "interface",
932
+ "geometry",
933
+ "bounds-layout",
934
+ "Bounds3Data",
749
935
  "max",
750
936
  "min"
751
937
  ]
752
938
  },
939
+ {
940
+ "id": "modeling/reference/geometry/Bounds3Input",
941
+ "title": "Bounds3Input",
942
+ "summary": "An immutable XYZ bounds value or its plain min/max representation.",
943
+ "path": "reference/geometry/Bounds3Input.md",
944
+ "importPath": "@metamesh/modeling/geometry",
945
+ "availability": "Pure TypeScript · Node and browsers",
946
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3Input",
947
+ "keywords": [
948
+ "reference",
949
+ "type-alias",
950
+ "geometry",
951
+ "bounds-layout",
952
+ "Bounds3Input"
953
+ ]
954
+ },
955
+ {
956
+ "id": "modeling/reference/geometry/Bounds3Options",
957
+ "title": "Bounds3Options",
958
+ "summary": "XYZ bounds construction from existing extrema or nonnegative dimensions, never both.",
959
+ "path": "reference/geometry/Bounds3Options.md",
960
+ "importPath": "@metamesh/modeling/geometry",
961
+ "availability": "Pure TypeScript · Node and browsers",
962
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3Options",
963
+ "keywords": [
964
+ "reference",
965
+ "type-alias",
966
+ "geometry",
967
+ "bounds-layout",
968
+ "Bounds3Options"
969
+ ]
970
+ },
753
971
  {
754
972
  "id": "modeling/reference/geometry/boundsCenter",
755
973
  "title": "boundsCenter",
@@ -821,39 +1039,6 @@
821
1039
  "maxScale"
822
1040
  ]
823
1041
  },
824
- {
825
- "id": "modeling/reference/geometry/boundsFromSize",
826
- "title": "boundsFromSize",
827
- "summary": "Creates immutable centered XY bounds from nonnegative dimensions in millimetres.",
828
- "path": "reference/geometry/boundsFromSize.md",
829
- "importPath": "@metamesh/modeling/geometry",
830
- "availability": "Pure TypeScript · Node and browsers",
831
- "canonical": "https://metamesh.studio/docs/reference/geometry/boundsFromSize",
832
- "keywords": [
833
- "reference",
834
- "function",
835
- "geometry",
836
- "bounds-layout",
837
- "boundsFromSize"
838
- ]
839
- },
840
- {
841
- "id": "modeling/reference/geometry/BoundsFromSizeOptions",
842
- "title": "BoundsFromSizeOptions",
843
- "summary": "Placement of bounds constructed from nonnegative millimetre dimensions.",
844
- "path": "reference/geometry/BoundsFromSizeOptions.md",
845
- "importPath": "@metamesh/modeling/geometry",
846
- "availability": "Pure TypeScript · Node and browsers",
847
- "canonical": "https://metamesh.studio/docs/reference/geometry/BoundsFromSizeOptions",
848
- "keywords": [
849
- "reference",
850
- "interface",
851
- "geometry",
852
- "bounds-layout",
853
- "BoundsFromSizeOptions",
854
- "center"
855
- ]
856
- },
857
1042
  {
858
1043
  "id": "modeling/reference/geometry/boundsSize",
859
1044
  "title": "boundsSize",
@@ -1030,7 +1215,7 @@
1030
1215
  },
1031
1216
  {
1032
1217
  "id": "modeling/reference/geometry/categories/bounds-layout",
1033
- "title": "Bounds & Layout",
1218
+ "title": "Bounds and layout",
1034
1219
  "summary": "Measure finite bounds, test positioned containment, and fit or arrange geometry.",
1035
1220
  "path": "reference/geometry/categories/bounds-layout.md",
1036
1221
  "importPath": "@metamesh/modeling/geometry",
@@ -1041,7 +1226,7 @@
1041
1226
  "category",
1042
1227
  "geometry",
1043
1228
  "bounds-layout",
1044
- "Bounds & Layout"
1229
+ "Bounds and layout"
1045
1230
  ]
1046
1231
  },
1047
1232
  {
@@ -1063,7 +1248,7 @@
1063
1248
  {
1064
1249
  "id": "modeling/reference/geometry/categories/mechanical",
1065
1250
  "title": "Mechanical foundations",
1066
- "summary": "Resolve gears, fastener standards, thread profiles, fit, and predictable allocations.",
1251
+ "summary": "Resolve gears, knuckle joints, fastener standards, thread profiles, fit, and predictable allocations.",
1067
1252
  "path": "reference/geometry/categories/mechanical.md",
1068
1253
  "importPath": "@metamesh/modeling/geometry",
1069
1254
  "availability": "Pure TypeScript · Node and browsers",
@@ -1094,7 +1279,7 @@
1094
1279
  },
1095
1280
  {
1096
1281
  "id": "modeling/reference/geometry/categories/pattern-placement",
1097
- "title": "Pattern Placement",
1282
+ "title": "Pattern placement",
1098
1283
  "summary": "Calculate pure linear, radial, grid, and path transforms.",
1099
1284
  "path": "reference/geometry/categories/pattern-placement.md",
1100
1285
  "importPath": "@metamesh/modeling/geometry",
@@ -1105,7 +1290,7 @@
1105
1290
  "category",
1106
1291
  "geometry",
1107
1292
  "pattern-placement",
1108
- "Pattern Placement"
1293
+ "Pattern placement"
1109
1294
  ]
1110
1295
  },
1111
1296
  {
@@ -1279,6 +1464,41 @@
1279
1464
  "minSegments"
1280
1465
  ]
1281
1466
  },
1467
+ {
1468
+ "id": "modeling/reference/geometry/CircularSampling",
1469
+ "title": "CircularSampling",
1470
+ "summary": "Full-circle count and radial envelopes of its regular sampled polygon, in millimetres.",
1471
+ "path": "reference/geometry/CircularSampling.md",
1472
+ "importPath": "@metamesh/modeling/geometry",
1473
+ "availability": "Pure TypeScript · Node and browsers",
1474
+ "canonical": "https://metamesh.studio/docs/reference/geometry/CircularSampling",
1475
+ "keywords": [
1476
+ "reference",
1477
+ "interface",
1478
+ "geometry",
1479
+ "resolution-errors",
1480
+ "CircularSampling",
1481
+ "segments",
1482
+ "vertexRadius",
1483
+ "faceRadius"
1484
+ ]
1485
+ },
1486
+ {
1487
+ "id": "modeling/reference/geometry/CircularSamplingOptions",
1488
+ "title": "CircularSamplingOptions",
1489
+ "summary": "Nominal circle size and explicit physical sampling; supply exactly one radius or diameter.",
1490
+ "path": "reference/geometry/CircularSamplingOptions.md",
1491
+ "importPath": "@metamesh/modeling/geometry",
1492
+ "availability": "Pure TypeScript · Node and browsers",
1493
+ "canonical": "https://metamesh.studio/docs/reference/geometry/CircularSamplingOptions",
1494
+ "keywords": [
1495
+ "reference",
1496
+ "type-alias",
1497
+ "geometry",
1498
+ "resolution-errors",
1499
+ "CircularSamplingOptions"
1500
+ ]
1501
+ },
1282
1502
  {
1283
1503
  "id": "modeling/reference/geometry/ClearanceHoleDimensions",
1284
1504
  "title": "ClearanceHoleDimensions",
@@ -1317,7 +1537,7 @@
1317
1537
  {
1318
1538
  "id": "modeling/reference/geometry/closeToAxis",
1319
1539
  "title": "closeToAxis",
1320
- "summary": "Closes an open, strictly upward [radius, height] side outline to the radius-zero axis. Adds horizontal bottom/top edges at the endpoint heights, retaining axis endpoints once. Returns a counterclockwise filled-boundary contour without a repeated seam vertex. Radii must be nonnegative; the result must enclose nonzero area without touching itself. This is a solid-body closure, not a hollow-wall or mounting-bore construction.",
1540
+ "summary": "Closes an open, strictly upward [radius, height] side outline to the radius-zero axis.",
1321
1541
  "path": "reference/geometry/closeToAxis.md",
1322
1542
  "importPath": "@metamesh/modeling/geometry",
1323
1543
  "availability": "Pure TypeScript · Node and browsers",
@@ -1433,7 +1653,7 @@
1433
1653
  {
1434
1654
  "id": "modeling/reference/geometry/computeParallelTransportFrames",
1435
1655
  "title": "computeParallelTransportFrames",
1436
- "summary": "Builds rotation-minimizing frames by parallel-transporting the previous normal. This avoids the sudden profile flips produced by picking a fresh up-vector per ring. Paths exceeding maxPathPoints (default 100000) reject before frame allocation or guide evaluation. Requires open path values; raw tuples are interpreted as an open path. Invalid paths throw GeometryError. Nonfinite normals and guide results reject. A finite initial guide parallel to the tangent selects a canonical fallback.",
1656
+ "summary": "Builds rotation-minimizing frames by parallel-transporting the previous normal.",
1437
1657
  "path": "reference/geometry/computeParallelTransportFrames.md",
1438
1658
  "importPath": "@metamesh/modeling/geometry",
1439
1659
  "availability": "Pure TypeScript · Node and browsers",
@@ -1449,7 +1669,7 @@
1449
1669
  {
1450
1670
  "id": "modeling/reference/geometry/computeTriangleMeshCentroid",
1451
1671
  "title": "computeTriangleMeshCentroid",
1452
- "summary": "Computes the uniform-density volume centroid of an oriented closed solid, including cavity shells. Coordinates are millimetres. Indexed closure and positive aggregate volume are required; callers may use validateSolidMesh first when geometric intersections and shell orientation are untrusted. Fresh mutable input is inspected on every call, and buffers are never changed.",
1672
+ "summary": "Computes the uniform-density volume centroid of an oriented closed solid, including cavity shells.",
1453
1673
  "path": "reference/geometry/computeTriangleMeshCentroid.md",
1454
1674
  "importPath": "@metamesh/modeling/geometry",
1455
1675
  "availability": "Pure TypeScript · Node and browsers",
@@ -1478,26 +1698,10 @@
1478
1698
  "computeTriangleMeshSignature"
1479
1699
  ]
1480
1700
  },
1481
- {
1482
- "id": "modeling/reference/geometry/containsBounds",
1483
- "title": "containsBounds",
1484
- "summary": "Tests actual XY containment, including touching boundaries; dimensions must match.",
1485
- "path": "reference/geometry/containsBounds.md",
1486
- "importPath": "@metamesh/modeling/geometry",
1487
- "availability": "Pure TypeScript · Node and browsers",
1488
- "canonical": "https://metamesh.studio/docs/reference/geometry/containsBounds",
1489
- "keywords": [
1490
- "reference",
1491
- "function",
1492
- "geometry",
1493
- "bounds-layout",
1494
- "containsBounds"
1495
- ]
1496
- },
1497
1701
  {
1498
1702
  "id": "modeling/reference/geometry/Contour",
1499
1703
  "title": "Contour",
1500
- "summary": "A closed two-dimensional boundary whose first point is not repeated at the end.",
1704
+ "summary": "A sampled closed two-dimensional boundary whose first point is not repeated at the end.",
1501
1705
  "path": "reference/geometry/Contour.md",
1502
1706
  "importPath": "@metamesh/modeling/geometry",
1503
1707
  "availability": "Pure TypeScript · Node and browsers",
@@ -2327,7 +2531,7 @@
2327
2531
  {
2328
2532
  "id": "modeling/reference/geometry/fitTextLayout",
2329
2533
  "title": "fitTextLayout",
2330
- "summary": "Uniformly fits visible text ink inside finite XY bounds, centering it on the target. Transforms retained vector paths before sampling, so later textSection/sampleTextContours resolution remains in final millimetres. Logical advances scale without translation; line count is unchanged. The input layout is preserved.",
2534
+ "summary": "Uniformly fits visible text ink inside finite XY bounds, centering it on the target.",
2331
2535
  "path": "reference/geometry/fitTextLayout.md",
2332
2536
  "importPath": "@metamesh/modeling/geometry",
2333
2537
  "availability": "Pure TypeScript · Node and browsers",
@@ -2556,7 +2760,7 @@
2556
2760
  {
2557
2761
  "id": "modeling/reference/geometry/heightfieldMesh",
2558
2762
  "title": "heightfieldMesh",
2559
- "summary": "Builds a closed indexed mesh from a rectilinear top, matched boundary walls, and flat base. Heights run once per grid point after preflight; center-error adds one evaluation per cell. Top winding is +Z, the base is -Z, and sides face outward. Coordinates and heights must fit Float32 storage. Explicit axes are captured before sampling; shared wall vertices prevent cracks.",
2763
+ "summary": "Builds a closed indexed mesh from a rectilinear top, matched boundary walls, and flat base.",
2560
2764
  "path": "reference/geometry/heightfieldMesh.md",
2561
2765
  "importPath": "@metamesh/modeling/geometry",
2562
2766
  "availability": "Pure TypeScript · Node and browsers",
@@ -2604,7 +2808,7 @@
2604
2808
  {
2605
2809
  "id": "modeling/reference/geometry/HeightfieldPreflight",
2606
2810
  "title": "HeightfieldPreflight",
2607
- "summary": "Predictable rectilinear-grid allocation facts; this does not evaluate the height callback.",
2811
+ "summary": "Exact grid and mesh buffer allocation counts resolved without evaluating the height callback.",
2608
2812
  "path": "reference/geometry/HeightfieldPreflight.md",
2609
2813
  "importPath": "@metamesh/modeling/geometry",
2610
2814
  "availability": "Pure TypeScript · Node and browsers",
@@ -2715,7 +2919,7 @@
2715
2919
  {
2716
2920
  "id": "modeling/reference/geometry/HelicalThreadSolidMeshPreflight",
2717
2921
  "title": "HelicalThreadSolidMeshPreflight",
2718
- "summary": "Conservative allocation facts resolved before constructing a direct thread solid mesh.",
2922
+ "summary": "Selected sampling counts and conservative allocation estimates, before thread mesh construction.",
2719
2923
  "path": "reference/geometry/HelicalThreadSolidMeshPreflight.md",
2720
2924
  "importPath": "@metamesh/modeling/geometry",
2721
2925
  "availability": "Pure TypeScript · Node and browsers",
@@ -2797,7 +3001,7 @@
2797
3001
  {
2798
3002
  "id": "modeling/reference/geometry/isGeometryError",
2799
3003
  "title": "isGeometryError",
2800
- "summary": "Recognizes structured geometry errors from separately bundled Modeling copies in the same realm. Ordinary errors and unmarked code-shaped objects are rejected. The marker is execution-local and does not survive structured cloning; worker protocols carry their own serialized error envelope.",
3004
+ "summary": "Recognizes structured geometry errors from separately bundled Modeling copies in the same realm.",
2801
3005
  "path": "reference/geometry/isGeometryError.md",
2802
3006
  "importPath": "@metamesh/modeling/geometry",
2803
3007
  "availability": "Pure TypeScript · Node and browsers",
@@ -2826,10 +3030,113 @@
2826
3030
  "joinTriangleMeshes"
2827
3031
  ]
2828
3032
  },
3033
+ {
3034
+ "id": "modeling/reference/geometry/KnuckleHingeBaseSpec",
3035
+ "title": "KnuckleHingeBaseSpec",
3036
+ "summary": "Shared knuckle-joint dimensions in millimetres, independent of mounting geometry.",
3037
+ "path": "reference/geometry/KnuckleHingeBaseSpec.md",
3038
+ "importPath": "@metamesh/modeling/geometry",
3039
+ "availability": "Pure TypeScript · Node and browsers",
3040
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeBaseSpec",
3041
+ "keywords": [
3042
+ "reference",
3043
+ "interface",
3044
+ "geometry",
3045
+ "mechanical",
3046
+ "KnuckleHingeBaseSpec",
3047
+ "length",
3048
+ "knuckleCount",
3049
+ "barrelDiameter",
3050
+ "pinDiameter",
3051
+ "radialClearance",
3052
+ "axialGap"
3053
+ ]
3054
+ },
3055
+ {
3056
+ "id": "modeling/reference/geometry/KnuckleHingeDimensions",
3057
+ "title": "KnuckleHingeDimensions",
3058
+ "summary": "Immutable joint layout and conservative faceted envelopes; no engine initialization.",
3059
+ "path": "reference/geometry/KnuckleHingeDimensions.md",
3060
+ "importPath": "@metamesh/modeling/geometry",
3061
+ "availability": "Pure TypeScript · Node and browsers",
3062
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeDimensions",
3063
+ "keywords": [
3064
+ "reference",
3065
+ "interface",
3066
+ "geometry",
3067
+ "mechanical",
3068
+ "KnuckleHingeDimensions",
3069
+ "spec",
3070
+ "barrelRadius",
3071
+ "pinRadius",
3072
+ "boreRadius",
3073
+ "boreOuterRadius",
3074
+ "minimumBarrelWall",
3075
+ "knuckleLength",
3076
+ "segments",
3077
+ "knuckles",
3078
+ "pin",
3079
+ "axis"
3080
+ ]
3081
+ },
3082
+ {
3083
+ "id": "modeling/reference/geometry/KnuckleHingeInterval",
3084
+ "title": "KnuckleHingeInterval",
3085
+ "summary": "One equal-length barrel interval in the shared pin-centered frame.",
3086
+ "path": "reference/geometry/KnuckleHingeInterval.md",
3087
+ "importPath": "@metamesh/modeling/geometry",
3088
+ "availability": "Pure TypeScript · Node and browsers",
3089
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeInterval",
3090
+ "keywords": [
3091
+ "reference",
3092
+ "interface",
3093
+ "geometry",
3094
+ "mechanical",
3095
+ "KnuckleHingeInterval",
3096
+ "side",
3097
+ "start",
3098
+ "length"
3099
+ ]
3100
+ },
3101
+ {
3102
+ "id": "modeling/reference/geometry/KnuckleHingeSamplingOptions",
3103
+ "title": "KnuckleHingeSamplingOptions",
3104
+ "summary": "Shared circular sampling for barrels, shafts, and bores.",
3105
+ "path": "reference/geometry/KnuckleHingeSamplingOptions.md",
3106
+ "importPath": "@metamesh/modeling/geometry",
3107
+ "availability": "Pure TypeScript · Node and browsers",
3108
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeSamplingOptions",
3109
+ "keywords": [
3110
+ "reference",
3111
+ "interface",
3112
+ "geometry",
3113
+ "mechanical",
3114
+ "KnuckleHingeSamplingOptions",
3115
+ "segments",
3116
+ "resolution",
3117
+ "limits"
3118
+ ]
3119
+ },
3120
+ {
3121
+ "id": "modeling/reference/geometry/KnuckleHingeSpec",
3122
+ "title": "KnuckleHingeSpec",
3123
+ "summary": "Knuckle-joint construction modes and interval ownership.",
3124
+ "path": "reference/geometry/KnuckleHingeSpec.md",
3125
+ "importPath": "@metamesh/modeling/geometry",
3126
+ "availability": "Pure TypeScript · Node and browsers",
3127
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeSpec",
3128
+ "keywords": [
3129
+ "reference",
3130
+ "type-alias",
3131
+ "geometry",
3132
+ "mechanical",
3133
+ "KnuckleHingeSpec"
3134
+ ]
3135
+ },
2829
3136
  {
2830
3137
  "id": "modeling/reference/geometry/layoutRow",
2831
3138
  "title": "layoutRow",
2832
- "summary": "Returns immutable translations for a +X row of finite XYZ bounds with a nonnegative gap. Each minimum Y/Z becomes zero, and the first minimum X becomes zero. Supply bounds after any intended part rotation; translations apply to those bounds. An empty input returns [].",
3139
+ "summary": "Returns immutable translations for a +X row of finite XYZ bounds with a nonnegative gap.",
2833
3140
  "path": "reference/geometry/layoutRow.md",
2834
3141
  "importPath": "@metamesh/modeling/geometry",
2835
3142
  "availability": "Pure TypeScript · Node and browsers",
@@ -3065,7 +3372,7 @@
3065
3372
  {
3066
3373
  "id": "modeling/reference/geometry/matchProfiles",
3067
3374
  "title": "matchProfiles",
3068
- "summary": "Explicitly matches identified component/contour/span topology across a family. Every paired span uses the maximum physical subdivision count requested by any member. Cubics share a checked uniform parameter grid, including grids selected by exact paired requests. Input order and winding are preserved. Collapsed spans retain repeated logical slots, which the engine maps to shared physical vertices while omitting degenerate faces.",
3375
+ "summary": "Explicitly matches identified component/contour/span topology across a family.",
3069
3376
  "path": "reference/geometry/matchProfiles.md",
3070
3377
  "importPath": "@metamesh/modeling/geometry",
3071
3378
  "availability": "Pure TypeScript · Node and browsers",
@@ -3147,7 +3454,7 @@
3147
3454
  {
3148
3455
  "id": "modeling/reference/geometry/MetricFastenerSize",
3149
3456
  "title": "MetricFastenerSize",
3150
- "summary": "Metric fastener sizes included in the first mechanical standards table.",
3457
+ "summary": "Supported metric fastener sizes.",
3151
3458
  "path": "reference/geometry/MetricFastenerSize.md",
3152
3459
  "importPath": "@metamesh/modeling/geometry",
3153
3460
  "availability": "Pure TypeScript · Node and browsers",
@@ -3261,7 +3568,7 @@
3261
3568
  {
3262
3569
  "id": "modeling/reference/geometry/normalize2",
3263
3570
  "title": "normalize2",
3264
- "summary": "Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`). Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.",
3571
+ "summary": "Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).",
3265
3572
  "path": "reference/geometry/normalize2.md",
3266
3573
  "importPath": "@metamesh/modeling/geometry",
3267
3574
  "availability": "Pure TypeScript · Node and browsers",
@@ -3277,7 +3584,7 @@
3277
3584
  {
3278
3585
  "id": "modeling/reference/geometry/normalize3",
3279
3586
  "title": "normalize3",
3280
- "summary": "Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`). Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.",
3587
+ "summary": "Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).",
3281
3588
  "path": "reference/geometry/normalize3.md",
3282
3589
  "importPath": "@metamesh/modeling/geometry",
3283
3590
  "availability": "Pure TypeScript · Node and browsers",
@@ -3357,7 +3664,7 @@
3357
3664
  {
3358
3665
  "id": "modeling/reference/geometry/path2",
3359
3666
  "title": "path2",
3360
- "summary": "Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization. Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed. Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError. A path input retains its closure. Limits bound construction only; resampling takes its own limits.",
3667
+ "summary": "Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.",
3361
3668
  "path": "reference/geometry/path2.md",
3362
3669
  "importPath": "@metamesh/modeling/geometry",
3363
3670
  "availability": "Pure TypeScript · Node and browsers",
@@ -3386,7 +3693,7 @@
3386
3693
  "Path2",
3387
3694
  "dimension",
3388
3695
  "closed",
3389
- "toArray",
3696
+ "toData",
3390
3697
  "length",
3391
3698
  "bounds",
3392
3699
  "closestPoint",
@@ -3398,23 +3705,26 @@
3398
3705
  {
3399
3706
  "id": "modeling/reference/geometry/Path2Data",
3400
3707
  "title": "Path2Data",
3401
- "summary": "XY point tuples for interchange; closure is supplied by the consuming operation or Path2 value.",
3708
+ "summary": "Complete plain XY path representation, including topology and empty-path dimensional identity.",
3402
3709
  "path": "reference/geometry/Path2Data.md",
3403
3710
  "importPath": "@metamesh/modeling/geometry",
3404
3711
  "availability": "Pure TypeScript · Node and browsers",
3405
3712
  "canonical": "https://metamesh.studio/docs/reference/geometry/Path2Data",
3406
3713
  "keywords": [
3407
3714
  "reference",
3408
- "type-alias",
3715
+ "interface",
3409
3716
  "geometry",
3410
3717
  "curves-paths",
3411
- "Path2Data"
3718
+ "Path2Data",
3719
+ "dimension",
3720
+ "points",
3721
+ "closed"
3412
3722
  ]
3413
3723
  },
3414
3724
  {
3415
3725
  "id": "modeling/reference/geometry/Path2Input",
3416
3726
  "title": "Path2Input",
3417
- "summary": "An immutable XY sampled path or a collection of XY tuples and fluent vectors.",
3727
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
3418
3728
  "path": "reference/geometry/Path2Input.md",
3419
3729
  "importPath": "@metamesh/modeling/geometry",
3420
3730
  "availability": "Pure TypeScript · Node and browsers",
@@ -3459,7 +3769,7 @@
3459
3769
  "Path3",
3460
3770
  "dimension",
3461
3771
  "closed",
3462
- "toArray",
3772
+ "toData",
3463
3773
  "length",
3464
3774
  "bounds",
3465
3775
  "closestPoint",
@@ -3471,23 +3781,26 @@
3471
3781
  {
3472
3782
  "id": "modeling/reference/geometry/Path3Data",
3473
3783
  "title": "Path3Data",
3474
- "summary": "XYZ point tuples for interchange; closure is supplied by the consuming operation or Path3 value.",
3784
+ "summary": "Complete plain XYZ path representation, including topology and empty-path dimensional identity.",
3475
3785
  "path": "reference/geometry/Path3Data.md",
3476
3786
  "importPath": "@metamesh/modeling/geometry",
3477
3787
  "availability": "Pure TypeScript · Node and browsers",
3478
3788
  "canonical": "https://metamesh.studio/docs/reference/geometry/Path3Data",
3479
3789
  "keywords": [
3480
3790
  "reference",
3481
- "type-alias",
3791
+ "interface",
3482
3792
  "geometry",
3483
3793
  "curves-paths",
3484
- "Path3Data"
3794
+ "Path3Data",
3795
+ "dimension",
3796
+ "points",
3797
+ "closed"
3485
3798
  ]
3486
3799
  },
3487
3800
  {
3488
3801
  "id": "modeling/reference/geometry/Path3Input",
3489
3802
  "title": "Path3Input",
3490
- "summary": "An immutable XYZ sampled path or a collection of XYZ tuples and fluent vectors.",
3803
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
3491
3804
  "path": "reference/geometry/Path3Input.md",
3492
3805
  "importPath": "@metamesh/modeling/geometry",
3493
3806
  "availability": "Pure TypeScript · Node and browsers",
@@ -3595,7 +3908,7 @@
3595
3908
  {
3596
3909
  "id": "modeling/reference/geometry/pathPatternTransforms",
3597
3910
  "title": "pathPatternTransforms",
3598
- "summary": "Equal physical arc-length placements along a sampled XYZ path. Tangent orientation maps +Z onto the local path tangent; fixed orientation only translates. Closed paths omit a repeated seam. Explicit sampling ceilings bound both input points and output placements.",
3911
+ "summary": "Equal physical arc-length placements along a sampled XYZ path.",
3599
3912
  "path": "reference/geometry/pathPatternTransforms.md",
3600
3913
  "importPath": "@metamesh/modeling/geometry",
3601
3914
  "availability": "Pure TypeScript · Node and browsers",
@@ -3782,7 +4095,7 @@
3782
4095
  {
3783
4096
  "id": "modeling/reference/geometry/PolygonData",
3784
4097
  "title": "PolygonData",
3785
- "summary": "One bounded two-dimensional polygon.",
4098
+ "summary": "One filled two-dimensional polygon with an exterior and optional holes.",
3786
4099
  "path": "reference/geometry/PolygonData.md",
3787
4100
  "importPath": "@metamesh/modeling/geometry",
3788
4101
  "availability": "Pure TypeScript · Node and browsers",
@@ -3821,7 +4134,7 @@
3821
4134
  {
3822
4135
  "id": "modeling/reference/geometry/preflightHeightfield",
3823
4136
  "title": "preflightHeightfield",
3824
- "summary": "Checks grid dimensions, coordinate precision, and allocation bounds before evaluating heights.",
4137
+ "summary": "Checks grid options, Float32 axis precision, and output limits; returns exact mesh buffer counts.",
3825
4138
  "path": "reference/geometry/preflightHeightfield.md",
3826
4139
  "importPath": "@metamesh/modeling/geometry",
3827
4140
  "availability": "Pure TypeScript · Node and browsers",
@@ -3837,7 +4150,7 @@
3837
4150
  {
3838
4151
  "id": "modeling/reference/geometry/preflightHelicalThreadSolidMesh",
3839
4152
  "title": "preflightHelicalThreadSolidMesh",
3840
- "summary": "Validates a direct thread solid and returns its conservative allocation estimate without constructing vertex or index buffers.",
4153
+ "summary": "Checks thread dimensions, profile, end treatments, sampling, and conservative estimates against output limits.",
3841
4154
  "path": "reference/geometry/preflightHelicalThreadSolidMesh.md",
3842
4155
  "importPath": "@metamesh/modeling/geometry",
3843
4156
  "availability": "Pure TypeScript · Node and browsers",
@@ -3853,7 +4166,7 @@
3853
4166
  {
3854
4167
  "id": "modeling/reference/geometry/preflightInternalThreadCutter",
3855
4168
  "title": "preflightInternalThreadCutter",
3856
- "summary": "Preflights the exact extended mesh used by the internal thread cutter constructor.",
4169
+ "summary": "Resolves compensated cutter dimensions and checks extended mesh estimates against output limits.",
3857
4170
  "path": "reference/geometry/preflightInternalThreadCutter.md",
3858
4171
  "importPath": "@metamesh/modeling/geometry",
3859
4172
  "availability": "Pure TypeScript · Node and browsers",
@@ -3869,7 +4182,7 @@
3869
4182
  {
3870
4183
  "id": "modeling/reference/geometry/preflightSvgRegion",
3871
4184
  "title": "preflightSvgRegion",
3872
- "summary": "Preflights bounded SVG geometry without browser or Manifold dependencies.",
4185
+ "summary": "Parses and validates bounded SVG input, constructing its normalized sampled region and diagnostics.",
3873
4186
  "path": "reference/geometry/preflightSvgRegion.md",
3874
4187
  "importPath": "@metamesh/modeling/geometry",
3875
4188
  "availability": "Pure TypeScript · Node and browsers",
@@ -3885,7 +4198,7 @@
3885
4198
  {
3886
4199
  "id": "modeling/reference/geometry/preflightThreadedNut",
3887
4200
  "title": "preflightThreadedNut",
3888
- "summary": "Resolves a nut's exact body/cutter chamfer and preflights its extended thread mesh without allocating Manifold WASM objects.",
4201
+ "summary": "Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.",
3889
4202
  "path": "reference/geometry/preflightThreadedNut.md",
3890
4203
  "importPath": "@metamesh/modeling/geometry",
3891
4204
  "availability": "Pure TypeScript · Node and browsers",
@@ -3901,7 +4214,7 @@
3901
4214
  {
3902
4215
  "id": "modeling/reference/geometry/preflightThreadedRod",
3903
4216
  "title": "preflightThreadedRod",
3904
- "summary": "Preflights the exact compensated direct mesh used by the threaded rod constructor.",
4217
+ "summary": "Resolves compensated rod dimensions and checks conservative mesh estimates against output limits.",
3905
4218
  "path": "reference/geometry/preflightThreadedRod.md",
3906
4219
  "importPath": "@metamesh/modeling/geometry",
3907
4220
  "availability": "Pure TypeScript · Node and browsers",
@@ -4007,7 +4320,7 @@
4007
4320
  {
4008
4321
  "id": "modeling/reference/geometry/Profile",
4009
4322
  "title": "Profile",
4010
- "summary": "An explicit component/contour/span topology, before shared family sampling.",
4323
+ "summary": "An explicit component/contour/span topology, before shared family sampling with matchProfiles. Component, contour and span identities establish correspondence across a loft or sweep family.",
4011
4324
  "path": "reference/geometry/Profile.md",
4012
4325
  "importPath": "@metamesh/modeling/geometry",
4013
4326
  "availability": "Pure TypeScript · Node and browsers",
@@ -4043,7 +4356,7 @@
4043
4356
  {
4044
4357
  "id": "modeling/reference/geometry/ProfileContour2",
4045
4358
  "title": "ProfileContour2",
4046
- "summary": "Ordered, closed spans. Outer winding is CCW and hole winding is CW.",
4359
+ "summary": "An identified closed boundary of curve spans, before shared family sampling. Outer winding is CCW and hole winding is CW. matchProfiles retains span identities in sampled contours.",
4047
4360
  "path": "reference/geometry/ProfileContour2.md",
4048
4361
  "importPath": "@metamesh/modeling/geometry",
4049
4362
  "availability": "Pure TypeScript · Node and browsers",
@@ -4224,7 +4537,7 @@
4224
4537
  {
4225
4538
  "id": "modeling/reference/geometry/rectangleContour",
4226
4539
  "title": "rectangleContour",
4227
- "summary": "Creates an immutable CCW rectangle loop. Round radius zero is square; tangent saturated endpoints occur once.",
4540
+ "summary": "Creates an immutable sampled CCW rectangle boundary. Round radius zero is square; tangent saturated endpoints occur once.",
4228
4541
  "path": "reference/geometry/rectangleContour.md",
4229
4542
  "importPath": "@metamesh/modeling/geometry",
4230
4543
  "availability": "Pure TypeScript · Node and browsers",
@@ -4361,7 +4674,7 @@
4361
4674
  {
4362
4675
  "id": "modeling/reference/geometry/RegionData",
4363
4676
  "title": "RegionData",
4364
- "summary": "A two-dimensional region represented by disjoint filled polygons.",
4677
+ "summary": "A two-dimensional region represented by disjoint filled polygons. Each PolygonData owns one exterior and its holes; an empty region contains no material.",
4365
4678
  "path": "reference/geometry/RegionData.md",
4366
4679
  "importPath": "@metamesh/modeling/geometry",
4367
4680
  "availability": "Pure TypeScript · Node and browsers",
@@ -4475,6 +4788,22 @@
4475
4788
  "resolveArcSegments"
4476
4789
  ]
4477
4790
  },
4791
+ {
4792
+ "id": "modeling/reference/geometry/resolveCircularSampling",
4793
+ "title": "resolveCircularSampling",
4794
+ "summary": "Resolves circular sampling and its actual radial envelopes without allocating boundary points.",
4795
+ "path": "reference/geometry/resolveCircularSampling.md",
4796
+ "importPath": "@metamesh/modeling/geometry",
4797
+ "availability": "Pure TypeScript · Node and browsers",
4798
+ "canonical": "https://metamesh.studio/docs/reference/geometry/resolveCircularSampling",
4799
+ "keywords": [
4800
+ "reference",
4801
+ "function",
4802
+ "geometry",
4803
+ "resolution-errors",
4804
+ "resolveCircularSampling"
4805
+ ]
4806
+ },
4478
4807
  {
4479
4808
  "id": "modeling/reference/geometry/resolveCircularSegments",
4480
4809
  "title": "resolveCircularSegments",
@@ -4592,6 +4921,22 @@
4592
4921
  "resolveGeometryTolerance"
4593
4922
  ]
4594
4923
  },
4924
+ {
4925
+ "id": "modeling/reference/geometry/resolveKnuckleHinge",
4926
+ "title": "resolveKnuckleHinge",
4927
+ "summary": "Resolves equal alternating knuckles along +X, centered at the origin, in millimetres.",
4928
+ "path": "reference/geometry/resolveKnuckleHinge.md",
4929
+ "importPath": "@metamesh/modeling/geometry",
4930
+ "availability": "Pure TypeScript · Node and browsers",
4931
+ "canonical": "https://metamesh.studio/docs/reference/geometry/resolveKnuckleHinge",
4932
+ "keywords": [
4933
+ "reference",
4934
+ "function",
4935
+ "geometry",
4936
+ "mechanical",
4937
+ "resolveKnuckleHinge"
4938
+ ]
4939
+ },
4595
4940
  {
4596
4941
  "id": "modeling/reference/geometry/resolvePrintableThreadFitPolicy",
4597
4942
  "title": "resolvePrintableThreadFitPolicy",
@@ -4781,7 +5126,7 @@
4781
5126
  {
4782
5127
  "id": "modeling/reference/geometry/sampleContour",
4783
5128
  "title": "sampleContour",
4784
- "summary": "Samples 2–32 connected line/cubic segments into a simple, nonzero-area, immutable CCW XY loop. Physical scaling precedes adaptive curve sampling; the final end must repeat start exactly. Shared anchors and the closing seam are emitted once. Winding normalization may change the starting vertex. The sampled loop is checked for self-intersection and degeneracy by `normalizeContour`; this is a single contour without holes. No editor modes or normalized coordinate range are required. No native engine, SDK, or ambient resolution is used.",
5129
+ "summary": "Samples 2–32 connected line/cubic segments into a simple, nonzero-area, immutable CCW XY loop.",
4785
5130
  "path": "reference/geometry/sampleContour.md",
4786
5131
  "importPath": "@metamesh/modeling/geometry",
4787
5132
  "availability": "Pure TypeScript · Node and browsers",
@@ -4922,7 +5267,7 @@
4922
5267
  {
4923
5268
  "id": "modeling/reference/geometry/sampleHelix",
4924
5269
  "title": "sampleHelix",
4925
- "summary": "Creates `segments + 1` points including exact helix endpoints from finite positive dimensions. Integrated weights must remain finite. The maxPathPoints ceiling defaults to 100000; excessive exact counts reject before evaluating axial weights or allocating sample arrays. Invalid inputs use GeometryError; exceptions thrown by axialWeight propagate unchanged.",
5270
+ "summary": "Creates `segments + 1` points including exact helix endpoints from finite positive dimensions.",
4926
5271
  "path": "reference/geometry/sampleHelix.md",
4927
5272
  "importPath": "@metamesh/modeling/geometry",
4928
5273
  "availability": "Pure TypeScript · Node and browsers",
@@ -4992,7 +5337,7 @@
4992
5337
  {
4993
5338
  "id": "modeling/reference/geometry/sampleSideProfile",
4994
5339
  "title": "sampleSideProfile",
4995
- "summary": "Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline. Anchors must progress strictly upward; nonnegative-radius cubic controls must have ordered heights between their endpoints. Cubics use de Casteljau subdivision with a conservative control-hull chord-error bound. Lines also obey the optional physical edge-length ceiling. Neither normalized coordinates nor editor metadata are required. Endpoints are retained once; no axis closure, winding normalization, or manufacturing repair is performed.",
5340
+ "summary": "Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline.",
4996
5341
  "path": "reference/geometry/sampleSideProfile.md",
4997
5342
  "importPath": "@metamesh/modeling/geometry",
4998
5343
  "availability": "Pure TypeScript · Node and browsers",
@@ -5381,6 +5726,7 @@
5381
5726
  "geometry",
5382
5727
  "vector-import",
5383
5728
  "SvgImportOptions",
5729
+ "fit",
5384
5730
  "limits",
5385
5731
  "circularSegments",
5386
5732
  "resolution",
@@ -5390,7 +5736,7 @@
5390
5736
  {
5391
5737
  "id": "modeling/reference/geometry/SvgRegionPreflight",
5392
5738
  "title": "SvgRegionPreflight",
5393
- "summary": "Exact normalized SVG region plus bounded source, geometry, and safe-repair diagnostics.",
5739
+ "summary": "Normalized sampled SVG region plus bounded source, geometry, and safe-repair diagnostics.",
5394
5740
  "path": "reference/geometry/SvgRegionPreflight.md",
5395
5741
  "importPath": "@metamesh/modeling/geometry",
5396
5742
  "availability": "Pure TypeScript · Node and browsers",
@@ -5401,6 +5747,7 @@
5401
5747
  "geometry",
5402
5748
  "vector-import",
5403
5749
  "SvgRegionPreflight",
5750
+ "fit",
5404
5751
  "repairs",
5405
5752
  "region",
5406
5753
  "source"
@@ -5643,7 +5990,7 @@
5643
5990
  {
5644
5991
  "id": "modeling/reference/geometry/ThreadedNutPreflight",
5645
5992
  "title": "ThreadedNutPreflight",
5646
- "summary": "Allocation-free body, cutter, and end-face facts resolved for a threaded nut.",
5993
+ "summary": "Resolved body and end-face dimensions plus conservative allocation estimates for the thread cutter.",
5647
5994
  "path": "reference/geometry/ThreadedNutPreflight.md",
5648
5995
  "importPath": "@metamesh/modeling/geometry",
5649
5996
  "availability": "Pure TypeScript · Node and browsers",
@@ -5934,7 +6281,7 @@
5934
6281
  {
5935
6282
  "id": "modeling/reference/geometry/transform2",
5936
6283
  "title": "transform2",
5937
- "summary": "Creates an immutable XY transform, identity by default. Matrices are copied and validated. Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ. Zero scales and singular matrices throw GeometryError; negative scales reflect.",
6284
+ "summary": "Creates an immutable XY transform, identity by default.",
5938
6285
  "path": "reference/geometry/transform2.md",
5939
6286
  "importPath": "@metamesh/modeling/geometry",
5940
6287
  "availability": "Pure TypeScript · Node and browsers",
@@ -5969,46 +6316,46 @@
5969
6316
  "applyPoint",
5970
6317
  "applyDirection",
5971
6318
  "applyNormal",
5972
- "toMatrix",
6319
+ "toData",
5973
6320
  "to3D"
5974
6321
  ]
5975
6322
  },
5976
6323
  {
5977
- "id": "modeling/reference/geometry/Transform2Input",
5978
- "title": "Transform2Input",
5979
- "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
5980
- "path": "reference/geometry/Transform2Input.md",
6324
+ "id": "modeling/reference/geometry/Transform2Data",
6325
+ "title": "Transform2Data",
6326
+ "summary": "A row-major affine 3x3 XY matrix applied to column vectors. Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.",
6327
+ "path": "reference/geometry/Transform2Data.md",
5981
6328
  "importPath": "@metamesh/modeling/geometry",
5982
6329
  "availability": "Pure TypeScript · Node and browsers",
5983
- "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Input",
6330
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Data",
5984
6331
  "keywords": [
5985
6332
  "reference",
5986
6333
  "type-alias",
5987
6334
  "geometry",
5988
6335
  "transforms-math",
5989
- "Transform2Input"
6336
+ "Transform2Data"
5990
6337
  ]
5991
6338
  },
5992
6339
  {
5993
- "id": "modeling/reference/geometry/Transform2Matrix",
5994
- "title": "Transform2Matrix",
5995
- "summary": "A row-major affine 3x3 XY matrix applied to column vectors. Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.",
5996
- "path": "reference/geometry/Transform2Matrix.md",
6340
+ "id": "modeling/reference/geometry/Transform2Input",
6341
+ "title": "Transform2Input",
6342
+ "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
6343
+ "path": "reference/geometry/Transform2Input.md",
5997
6344
  "importPath": "@metamesh/modeling/geometry",
5998
6345
  "availability": "Pure TypeScript · Node and browsers",
5999
- "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Matrix",
6346
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Input",
6000
6347
  "keywords": [
6001
6348
  "reference",
6002
6349
  "type-alias",
6003
6350
  "geometry",
6004
6351
  "transforms-math",
6005
- "Transform2Matrix"
6352
+ "Transform2Input"
6006
6353
  ]
6007
6354
  },
6008
6355
  {
6009
6356
  "id": "modeling/reference/geometry/transform3",
6010
6357
  "title": "transform3",
6011
- "summary": "Creates an immutable XYZ transform, identity by default. Matrices are copied and validated. Calls apply in written order; rotations use degrees and pivots use current world coordinates. Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError. Use frameTransform3(frame) as the input for existing orthonormal frame placement.",
6358
+ "summary": "Creates an immutable XYZ transform, identity by default.",
6012
6359
  "path": "reference/geometry/transform3.md",
6013
6360
  "importPath": "@metamesh/modeling/geometry",
6014
6361
  "availability": "Pure TypeScript · Node and browsers",
@@ -6044,10 +6391,26 @@
6044
6391
  "applyPoint",
6045
6392
  "applyDirection",
6046
6393
  "applyNormal",
6047
- "toMatrix",
6394
+ "toData",
6048
6395
  "to2D"
6049
6396
  ]
6050
6397
  },
6398
+ {
6399
+ "id": "modeling/reference/geometry/Transform3Data",
6400
+ "title": "Transform3Data",
6401
+ "summary": "A row-major affine 4x4 matrix applied to column vectors.",
6402
+ "path": "reference/geometry/Transform3Data.md",
6403
+ "importPath": "@metamesh/modeling/geometry",
6404
+ "availability": "Pure TypeScript · Node and browsers",
6405
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Transform3Data",
6406
+ "keywords": [
6407
+ "reference",
6408
+ "type-alias",
6409
+ "geometry",
6410
+ "transforms-math",
6411
+ "Transform3Data"
6412
+ ]
6413
+ },
6051
6414
  {
6052
6415
  "id": "modeling/reference/geometry/Transform3Input",
6053
6416
  "title": "Transform3Input",
@@ -6064,22 +6427,6 @@
6064
6427
  "Transform3Input"
6065
6428
  ]
6066
6429
  },
6067
- {
6068
- "id": "modeling/reference/geometry/Transform3Matrix",
6069
- "title": "Transform3Matrix",
6070
- "summary": "A row-major affine 4x4 matrix applied to column vectors.",
6071
- "path": "reference/geometry/Transform3Matrix.md",
6072
- "importPath": "@metamesh/modeling/geometry",
6073
- "availability": "Pure TypeScript · Node and browsers",
6074
- "canonical": "https://metamesh.studio/docs/reference/geometry/Transform3Matrix",
6075
- "keywords": [
6076
- "reference",
6077
- "type-alias",
6078
- "geometry",
6079
- "transforms-math",
6080
- "Transform3Matrix"
6081
- ]
6082
- },
6083
6430
  {
6084
6431
  "id": "modeling/reference/geometry/transformDeterminant3",
6085
6432
  "title": "transformDeterminant3",
@@ -6440,7 +6787,7 @@
6440
6787
  {
6441
6788
  "id": "modeling/reference/geometry/validateSolidMesh",
6442
6789
  "title": "validateSolidMesh",
6443
- "summary": "Checks closed indexed topology, triangle intersections, and alternating nested shell orientation. Outward exterior shells and inward cavity shells are accepted. Separate shells must not touch, intersect, or overlap as material. Indexed neighbours may share their own vertex or edge.",
6790
+ "summary": "Checks closed indexed topology, triangle intersections, and alternating nested shell orientation.",
6444
6791
  "path": "reference/geometry/validateSolidMesh.md",
6445
6792
  "importPath": "@metamesh/modeling/geometry",
6446
6793
  "availability": "Pure TypeScript · Node and browsers",
@@ -6488,7 +6835,7 @@
6488
6835
  {
6489
6836
  "id": "modeling/reference/geometry/vector2",
6490
6837
  "title": "vector2",
6491
- "summary": "Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates. Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates and overflow throw `NON_FINITE_VALUE` GeometryError. Use transform2().applyDirection(value) for rotations and nonuniform scaling.",
6838
+ "summary": "Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.",
6492
6839
  "path": "reference/geometry/vector2.md",
6493
6840
  "importPath": "@metamesh/modeling/geometry",
6494
6841
  "availability": "Pure TypeScript · Node and browsers",
@@ -6526,45 +6873,45 @@
6526
6873
  "cross",
6527
6874
  "length",
6528
6875
  "distance",
6529
- "toArray"
6876
+ "toData"
6530
6877
  ]
6531
6878
  },
6532
6879
  {
6533
- "id": "modeling/reference/geometry/Vector2Input",
6534
- "title": "Vector2Input",
6535
- "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
6536
- "path": "reference/geometry/Vector2Input.md",
6880
+ "id": "modeling/reference/geometry/Vector2Data",
6881
+ "title": "Vector2Data",
6882
+ "summary": "A two-dimensional Cartesian vector or point.",
6883
+ "path": "reference/geometry/Vector2Data.md",
6537
6884
  "importPath": "@metamesh/modeling/geometry",
6538
6885
  "availability": "Pure TypeScript · Node and browsers",
6539
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Input",
6886
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Data",
6540
6887
  "keywords": [
6541
6888
  "reference",
6542
6889
  "type-alias",
6543
6890
  "geometry",
6544
6891
  "transforms-math",
6545
- "Vector2Input"
6892
+ "Vector2Data"
6546
6893
  ]
6547
6894
  },
6548
6895
  {
6549
- "id": "modeling/reference/geometry/Vector2Tuple",
6550
- "title": "Vector2Tuple",
6551
- "summary": "A two-dimensional Cartesian vector or point.",
6552
- "path": "reference/geometry/Vector2Tuple.md",
6896
+ "id": "modeling/reference/geometry/Vector2Input",
6897
+ "title": "Vector2Input",
6898
+ "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
6899
+ "path": "reference/geometry/Vector2Input.md",
6553
6900
  "importPath": "@metamesh/modeling/geometry",
6554
6901
  "availability": "Pure TypeScript · Node and browsers",
6555
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Tuple",
6902
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Input",
6556
6903
  "keywords": [
6557
6904
  "reference",
6558
6905
  "type-alias",
6559
6906
  "geometry",
6560
6907
  "transforms-math",
6561
- "Vector2Tuple"
6908
+ "Vector2Input"
6562
6909
  ]
6563
6910
  },
6564
6911
  {
6565
6912
  "id": "modeling/reference/geometry/vector3",
6566
6913
  "title": "vector3",
6567
- "summary": "Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates. Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates and overflow throw `NON_FINITE_VALUE` GeometryError. Use transform3().applyDirection(value) for rotations and nonuniform scaling.",
6914
+ "summary": "Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.",
6568
6915
  "path": "reference/geometry/vector3.md",
6569
6916
  "importPath": "@metamesh/modeling/geometry",
6570
6917
  "availability": "Pure TypeScript · Node and browsers",
@@ -6603,39 +6950,39 @@
6603
6950
  "cross",
6604
6951
  "length",
6605
6952
  "distance",
6606
- "toArray"
6953
+ "toData"
6607
6954
  ]
6608
6955
  },
6609
6956
  {
6610
- "id": "modeling/reference/geometry/Vector3Input",
6611
- "title": "Vector3Input",
6612
- "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
6613
- "path": "reference/geometry/Vector3Input.md",
6957
+ "id": "modeling/reference/geometry/Vector3Data",
6958
+ "title": "Vector3Data",
6959
+ "summary": "A three-dimensional Cartesian vector or point.",
6960
+ "path": "reference/geometry/Vector3Data.md",
6614
6961
  "importPath": "@metamesh/modeling/geometry",
6615
6962
  "availability": "Pure TypeScript · Node and browsers",
6616
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Input",
6963
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Data",
6617
6964
  "keywords": [
6618
6965
  "reference",
6619
6966
  "type-alias",
6620
6967
  "geometry",
6621
6968
  "transforms-math",
6622
- "Vector3Input"
6969
+ "Vector3Data"
6623
6970
  ]
6624
6971
  },
6625
6972
  {
6626
- "id": "modeling/reference/geometry/Vector3Tuple",
6627
- "title": "Vector3Tuple",
6628
- "summary": "A three-dimensional Cartesian vector or point.",
6629
- "path": "reference/geometry/Vector3Tuple.md",
6973
+ "id": "modeling/reference/geometry/Vector3Input",
6974
+ "title": "Vector3Input",
6975
+ "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
6976
+ "path": "reference/geometry/Vector3Input.md",
6630
6977
  "importPath": "@metamesh/modeling/geometry",
6631
6978
  "availability": "Pure TypeScript · Node and browsers",
6632
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Tuple",
6979
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Input",
6633
6980
  "keywords": [
6634
6981
  "reference",
6635
6982
  "type-alias",
6636
6983
  "geometry",
6637
6984
  "transforms-math",
6638
- "Vector3Tuple"
6985
+ "Vector3Input"
6639
6986
  ]
6640
6987
  },
6641
6988
  {
@@ -6813,41 +7160,181 @@
6813
7160
  ]
6814
7161
  },
6815
7162
  {
6816
- "id": "modeling/reference/model/Bounds2",
7163
+ "id": "modeling/reference/model/bounds2",
7164
+ "title": "bounds2",
7165
+ "summary": "Constructs immutable finite XY bounds from ordered extrema or nonnegative size in millimetres.",
7166
+ "path": "reference/model/bounds2.md",
7167
+ "importPath": "@metamesh/modeling",
7168
+ "availability": "Immutable recipes and math · Node and browsers",
7169
+ "canonical": "https://metamesh.studio/docs/reference/model/bounds2",
7170
+ "keywords": [
7171
+ "reference",
7172
+ "function",
7173
+ "model",
7174
+ "bounds",
7175
+ "bounds2"
7176
+ ]
7177
+ },
7178
+ {
7179
+ "id": "modeling/reference/model/Bounds2-type",
6817
7180
  "title": "Bounds2",
6818
- "summary": "Axis-aligned bounds in two-dimensional model space.",
6819
- "path": "reference/model/Bounds2.md",
7181
+ "summary": "Immutable finite XY bounds in millimetres, with tuple coordinates for data interoperability.",
7182
+ "path": "reference/model/Bounds2-type.md",
6820
7183
  "importPath": "@metamesh/modeling",
6821
7184
  "availability": "Immutable recipes and math · Node and browsers",
6822
- "canonical": "https://metamesh.studio/docs/reference/model/Bounds2",
7185
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds2-type",
6823
7186
  "keywords": [
6824
7187
  "reference",
6825
7188
  "interface",
6826
7189
  "model",
6827
- "core-values-errors",
7190
+ "bounds",
6828
7191
  "Bounds2",
7192
+ "size",
7193
+ "center",
7194
+ "containsBounds",
7195
+ "toData",
6829
7196
  "max",
6830
7197
  "min"
6831
7198
  ]
6832
7199
  },
6833
7200
  {
6834
- "id": "modeling/reference/model/Bounds3",
6835
- "title": "Bounds3",
6836
- "summary": "Axis-aligned bounds in three-dimensional model space.",
6837
- "path": "reference/model/Bounds3.md",
7201
+ "id": "modeling/reference/model/Bounds2Data",
7202
+ "title": "Bounds2Data",
7203
+ "summary": "Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods.",
7204
+ "path": "reference/model/Bounds2Data.md",
6838
7205
  "importPath": "@metamesh/modeling",
6839
7206
  "availability": "Immutable recipes and math · Node and browsers",
6840
- "canonical": "https://metamesh.studio/docs/reference/model/Bounds3",
7207
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds2Data",
6841
7208
  "keywords": [
6842
7209
  "reference",
6843
7210
  "interface",
6844
7211
  "model",
6845
7212
  "core-values-errors",
7213
+ "Bounds2Data",
7214
+ "max",
7215
+ "min"
7216
+ ]
7217
+ },
7218
+ {
7219
+ "id": "modeling/reference/model/Bounds2Input",
7220
+ "title": "Bounds2Input",
7221
+ "summary": "An immutable XY bounds value or its plain min/max representation.",
7222
+ "path": "reference/model/Bounds2Input.md",
7223
+ "importPath": "@metamesh/modeling",
7224
+ "availability": "Immutable recipes and math · Node and browsers",
7225
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds2Input",
7226
+ "keywords": [
7227
+ "reference",
7228
+ "type-alias",
7229
+ "model",
7230
+ "bounds",
7231
+ "Bounds2Input"
7232
+ ]
7233
+ },
7234
+ {
7235
+ "id": "modeling/reference/model/Bounds2Options",
7236
+ "title": "Bounds2Options",
7237
+ "summary": "XY bounds construction from existing extrema or nonnegative dimensions, never both.",
7238
+ "path": "reference/model/Bounds2Options.md",
7239
+ "importPath": "@metamesh/modeling",
7240
+ "availability": "Immutable recipes and math · Node and browsers",
7241
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds2Options",
7242
+ "keywords": [
7243
+ "reference",
7244
+ "type-alias",
7245
+ "model",
7246
+ "bounds",
7247
+ "Bounds2Options"
7248
+ ]
7249
+ },
7250
+ {
7251
+ "id": "modeling/reference/model/bounds3",
7252
+ "title": "bounds3",
7253
+ "summary": "Constructs immutable finite XYZ bounds from ordered extrema or nonnegative size in millimetres.",
7254
+ "path": "reference/model/bounds3.md",
7255
+ "importPath": "@metamesh/modeling",
7256
+ "availability": "Immutable recipes and math · Node and browsers",
7257
+ "canonical": "https://metamesh.studio/docs/reference/model/bounds3",
7258
+ "keywords": [
7259
+ "reference",
7260
+ "function",
7261
+ "model",
7262
+ "bounds",
7263
+ "bounds3"
7264
+ ]
7265
+ },
7266
+ {
7267
+ "id": "modeling/reference/model/Bounds3-type",
7268
+ "title": "Bounds3",
7269
+ "summary": "Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability.",
7270
+ "path": "reference/model/Bounds3-type.md",
7271
+ "importPath": "@metamesh/modeling",
7272
+ "availability": "Immutable recipes and math · Node and browsers",
7273
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds3-type",
7274
+ "keywords": [
7275
+ "reference",
7276
+ "interface",
7277
+ "model",
7278
+ "bounds",
6846
7279
  "Bounds3",
7280
+ "size",
7281
+ "center",
7282
+ "containsBounds",
7283
+ "toData",
6847
7284
  "max",
6848
7285
  "min"
6849
7286
  ]
6850
7287
  },
7288
+ {
7289
+ "id": "modeling/reference/model/Bounds3Data",
7290
+ "title": "Bounds3Data",
7291
+ "summary": "Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods.",
7292
+ "path": "reference/model/Bounds3Data.md",
7293
+ "importPath": "@metamesh/modeling",
7294
+ "availability": "Immutable recipes and math · Node and browsers",
7295
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds3Data",
7296
+ "keywords": [
7297
+ "reference",
7298
+ "interface",
7299
+ "model",
7300
+ "core-values-errors",
7301
+ "Bounds3Data",
7302
+ "max",
7303
+ "min"
7304
+ ]
7305
+ },
7306
+ {
7307
+ "id": "modeling/reference/model/Bounds3Input",
7308
+ "title": "Bounds3Input",
7309
+ "summary": "An immutable XYZ bounds value or its plain min/max representation.",
7310
+ "path": "reference/model/Bounds3Input.md",
7311
+ "importPath": "@metamesh/modeling",
7312
+ "availability": "Immutable recipes and math · Node and browsers",
7313
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds3Input",
7314
+ "keywords": [
7315
+ "reference",
7316
+ "type-alias",
7317
+ "model",
7318
+ "bounds",
7319
+ "Bounds3Input"
7320
+ ]
7321
+ },
7322
+ {
7323
+ "id": "modeling/reference/model/Bounds3Options",
7324
+ "title": "Bounds3Options",
7325
+ "summary": "XYZ bounds construction from existing extrema or nonnegative dimensions, never both.",
7326
+ "path": "reference/model/Bounds3Options.md",
7327
+ "importPath": "@metamesh/modeling",
7328
+ "availability": "Immutable recipes and math · Node and browsers",
7329
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds3Options",
7330
+ "keywords": [
7331
+ "reference",
7332
+ "type-alias",
7333
+ "model",
7334
+ "bounds",
7335
+ "Bounds3Options"
7336
+ ]
7337
+ },
6851
7338
  {
6852
7339
  "id": "modeling/reference/model/box",
6853
7340
  "title": "box",
@@ -6951,7 +7438,7 @@
6951
7438
  },
6952
7439
  {
6953
7440
  "id": "modeling/reference/model/categories/boolean-operations",
6954
- "title": "Boolean Operations",
7441
+ "title": "Boolean operations",
6955
7442
  "summary": "Combine, intersect and subtract same-dimensional shapes; construct solid envelopes and sums.",
6956
7443
  "path": "reference/model/categories/boolean-operations.md",
6957
7444
  "importPath": "@metamesh/modeling",
@@ -6962,7 +7449,7 @@
6962
7449
  "category",
6963
7450
  "model",
6964
7451
  "boolean-operations",
6965
- "Boolean Operations"
7452
+ "Boolean operations"
6966
7453
  ]
6967
7454
  },
6968
7455
  {
@@ -6981,6 +7468,22 @@
6981
7468
  "Sampled surfaces"
6982
7469
  ]
6983
7470
  },
7471
+ {
7472
+ "id": "modeling/reference/model/categories/bounds",
7473
+ "title": "Bounds",
7474
+ "summary": "Measure immutable axis-aligned extents and test positioned containment.",
7475
+ "path": "reference/model/categories/bounds.md",
7476
+ "importPath": "@metamesh/modeling",
7477
+ "availability": "Immutable recipes and math · Node and browsers",
7478
+ "canonical": "https://metamesh.studio/docs/reference/model/categories/bounds",
7479
+ "keywords": [
7480
+ "reference",
7481
+ "category",
7482
+ "model",
7483
+ "bounds",
7484
+ "Bounds"
7485
+ ]
7486
+ },
6984
7487
  {
6985
7488
  "id": "modeling/reference/model/categories/contracts",
6986
7489
  "title": "Model contracts",
@@ -6999,8 +7502,8 @@
6999
7502
  },
7000
7503
  {
7001
7504
  "id": "modeling/reference/model/categories/core-values-errors",
7002
- "title": "Core Values & Errors",
7003
- "summary": "Use the small shared vocabulary for authored geometry, coordinates, paths, and stable failures.",
7505
+ "title": "Core values",
7506
+ "summary": "Use shared coordinate, path, polygon, and bounds data.",
7004
7507
  "path": "reference/model/categories/core-values-errors.md",
7005
7508
  "importPath": "@metamesh/modeling",
7006
7509
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7010,7 +7513,7 @@
7010
7513
  "category",
7011
7514
  "model",
7012
7515
  "core-values-errors",
7013
- "Core Values & Errors"
7516
+ "Core values"
7014
7517
  ]
7015
7518
  },
7016
7519
  {
@@ -7031,7 +7534,7 @@
7031
7534
  },
7032
7535
  {
7033
7536
  "id": "modeling/reference/model/categories/extrude-revolve-sweep",
7034
- "title": "Extrude, Revolve & Sweep",
7537
+ "title": "Extrude, revolve, and sweep",
7035
7538
  "summary": "Turn sections and paths into extruded, lofted, revolved, or swept solids.",
7036
7539
  "path": "reference/model/categories/extrude-revolve-sweep.md",
7037
7540
  "importPath": "@metamesh/modeling",
@@ -7042,7 +7545,7 @@
7042
7545
  "category",
7043
7546
  "model",
7044
7547
  "extrude-revolve-sweep",
7045
- "Extrude, Revolve & Sweep"
7548
+ "Extrude, revolve, and sweep"
7046
7549
  ]
7047
7550
  },
7048
7551
  {
@@ -7061,6 +7564,22 @@
7061
7564
  "Model generation"
7062
7565
  ]
7063
7566
  },
7567
+ {
7568
+ "id": "modeling/reference/model/categories/hinges",
7569
+ "title": "Knuckle joints",
7570
+ "summary": "Compose reusable knuckle joints with independent mounting attachments.",
7571
+ "path": "reference/model/categories/hinges.md",
7572
+ "importPath": "@metamesh/modeling",
7573
+ "availability": "Immutable recipes and math · Node and browsers",
7574
+ "canonical": "https://metamesh.studio/docs/reference/model/categories/hinges",
7575
+ "keywords": [
7576
+ "reference",
7577
+ "category",
7578
+ "model",
7579
+ "hinges",
7580
+ "Knuckle joints"
7581
+ ]
7582
+ },
7064
7583
  {
7065
7584
  "id": "modeling/reference/model/categories/inspection",
7066
7585
  "title": "Solid inspection",
@@ -7079,7 +7598,7 @@
7079
7598
  },
7080
7599
  {
7081
7600
  "id": "modeling/reference/model/categories/mesh-inspection",
7082
- "title": "Mesh & Inspection",
7601
+ "title": "Mesh and inspection",
7083
7602
  "summary": "Convert validated meshes and inspect stable section or solid measurements.",
7084
7603
  "path": "reference/model/categories/mesh-inspection.md",
7085
7604
  "importPath": "@metamesh/modeling",
@@ -7090,7 +7609,7 @@
7090
7609
  "category",
7091
7610
  "model",
7092
7611
  "mesh-inspection",
7093
- "Mesh & Inspection"
7612
+ "Mesh and inspection"
7094
7613
  ]
7095
7614
  },
7096
7615
  {
@@ -7143,7 +7662,7 @@
7143
7662
  },
7144
7663
  {
7145
7664
  "id": "modeling/reference/model/categories/sections",
7146
- "title": "2D Sections",
7665
+ "title": "2D sections",
7147
7666
  "summary": "Create immutable filled XY shapes, including prepared text and bounded painted SVG.",
7148
7667
  "path": "reference/model/categories/sections.md",
7149
7668
  "importPath": "@metamesh/modeling",
@@ -7154,7 +7673,7 @@
7154
7673
  "category",
7155
7674
  "model",
7156
7675
  "sections",
7157
- "2D Sections"
7676
+ "2D sections"
7158
7677
  ]
7159
7678
  },
7160
7679
  {
@@ -7175,7 +7694,7 @@
7175
7694
  },
7176
7695
  {
7177
7696
  "id": "modeling/reference/model/categories/transforms-placement",
7178
- "title": "Transforms, Vectors & Placement",
7697
+ "title": "Transforms, vectors, and placement",
7179
7698
  "summary": "Calculate with immutable vectors, reuse transforms, and arrange geometry with explicit placement contracts.",
7180
7699
  "path": "reference/model/categories/transforms-placement.md",
7181
7700
  "importPath": "@metamesh/modeling",
@@ -7186,7 +7705,7 @@
7186
7705
  "category",
7187
7706
  "model",
7188
7707
  "transforms-placement",
7189
- "Transforms, Vectors & Placement"
7708
+ "Transforms, vectors, and placement"
7190
7709
  ]
7191
7710
  },
7192
7711
  {
@@ -7342,7 +7861,7 @@
7342
7861
  {
7343
7862
  "id": "modeling/reference/model/Contour",
7344
7863
  "title": "Contour",
7345
- "summary": "A closed two-dimensional boundary whose first point is not repeated at the end.",
7864
+ "summary": "A sampled closed two-dimensional boundary whose first point is not repeated at the end.",
7346
7865
  "path": "reference/model/Contour.md",
7347
7866
  "importPath": "@metamesh/modeling",
7348
7867
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7880,7 +8399,7 @@
7880
8399
  {
7881
8400
  "id": "modeling/reference/model/heightfield",
7882
8401
  "title": "heightfield",
7883
- "summary": "Closed rectilinear top above a flat base, with uniform or explicit XY coordinates. Samples each grid height once; center-error triangulation also samples each cell centre. The retained callback must capture independent immutable inputs, not live session readers or parameters.",
8402
+ "summary": "Closed rectilinear top above a flat base, with uniform or explicit XY coordinates.",
7884
8403
  "path": "reference/model/heightfield.md",
7885
8404
  "importPath": "@metamesh/modeling",
7886
8405
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7938,7 +8457,7 @@
7938
8457
  {
7939
8458
  "id": "modeling/reference/model/HelicalThreadSolidMeshPreflight",
7940
8459
  "title": "HelicalThreadSolidMeshPreflight",
7941
- "summary": "Conservative allocation facts resolved before constructing a direct thread solid mesh.",
8460
+ "summary": "Selected sampling counts and conservative allocation estimates, before thread mesh construction.",
7942
8461
  "path": "reference/model/HelicalThreadSolidMeshPreflight.md",
7943
8462
  "importPath": "@metamesh/modeling",
7944
8463
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7955,6 +8474,72 @@
7955
8474
  "estimatedTriangles"
7956
8475
  ]
7957
8476
  },
8477
+ {
8478
+ "id": "modeling/reference/model/holeCutter",
8479
+ "title": "holeCutter",
8480
+ "summary": "Declares a +Z hole or blind-pocket cutter with explicit end overrun in millimetres. Choose exactly one circular diameter or existing Section. A 45-degree entry chamfer supports one strictly convex contour without holes; plain profiles may have any topology. Circular entries retain nominal frustum radii; profile entries offset the supplied polygon edges. Circular head recesses are mutually exclusive with entryChamfer. Both overrun ends default to zero, so the nominal bottom remains at Z=0 and blind pocket floors are preserved. Existing Section samples are authoritative; limits and unspecified circular sampling belong to the evaluating host. Compiled packages require runtime major 9.",
8481
+ "path": "reference/model/holeCutter.md",
8482
+ "importPath": "@metamesh/modeling",
8483
+ "availability": "Immutable recipes and math · Node and browsers",
8484
+ "canonical": "https://metamesh.studio/docs/reference/model/holeCutter",
8485
+ "keywords": [
8486
+ "reference",
8487
+ "function",
8488
+ "model",
8489
+ "primitives",
8490
+ "holeCutter"
8491
+ ]
8492
+ },
8493
+ {
8494
+ "id": "modeling/reference/model/HoleCutterOptions",
8495
+ "title": "HoleCutterOptions",
8496
+ "summary": "A deferred +Z hole or pocket cutter, with exactly one circular diameter or existing Section. Profile entry chamfers expand one strictly convex contour without holes by parallel-edge offsets; the supplied sampled boundary remains authoritative. Plain profile cutters accept any Section. Circular entry chamfers retain nominal circular/frustum radii under the selected radial sizing.",
8497
+ "path": "reference/model/HoleCutterOptions.md",
8498
+ "importPath": "@metamesh/modeling",
8499
+ "availability": "Immutable recipes and math · Node and browsers",
8500
+ "canonical": "https://metamesh.studio/docs/reference/model/HoleCutterOptions",
8501
+ "keywords": [
8502
+ "reference",
8503
+ "type-alias",
8504
+ "model",
8505
+ "primitives",
8506
+ "HoleCutterOptions"
8507
+ ]
8508
+ },
8509
+ {
8510
+ "id": "modeling/reference/model/HoleCutterOverrun",
8511
+ "title": "HoleCutterOverrun",
8512
+ "summary": "Explicit extra cutter length outside the nominal Z=0..height interval, in millimetres.",
8513
+ "path": "reference/model/HoleCutterOverrun.md",
8514
+ "importPath": "@metamesh/modeling",
8515
+ "availability": "Immutable recipes and math · Node and browsers",
8516
+ "canonical": "https://metamesh.studio/docs/reference/model/HoleCutterOverrun",
8517
+ "keywords": [
8518
+ "reference",
8519
+ "interface",
8520
+ "model",
8521
+ "primitives",
8522
+ "HoleCutterOverrun",
8523
+ "bottom",
8524
+ "top"
8525
+ ]
8526
+ },
8527
+ {
8528
+ "id": "modeling/reference/model/HoleCutterRecess",
8529
+ "title": "HoleCutterRecess",
8530
+ "summary": "Circular screw seating dimensions in millimetres; allowances belong to the caller.",
8531
+ "path": "reference/model/HoleCutterRecess.md",
8532
+ "importPath": "@metamesh/modeling",
8533
+ "availability": "Immutable recipes and math · Node and browsers",
8534
+ "canonical": "https://metamesh.studio/docs/reference/model/HoleCutterRecess",
8535
+ "keywords": [
8536
+ "reference",
8537
+ "type-alias",
8538
+ "model",
8539
+ "primitives",
8540
+ "HoleCutterRecess"
8541
+ ]
8542
+ },
7958
8543
  {
7959
8544
  "id": "modeling/reference/model/hull",
7960
8545
  "title": "hull",
@@ -8204,6 +8789,152 @@
8204
8789
  "isEmpty"
8205
8790
  ]
8206
8791
  },
8792
+ {
8793
+ "id": "modeling/reference/model/knuckleHinge",
8794
+ "title": "knuckleHinge",
8795
+ "summary": "Declares separate knuckle-joint halves along the centered +X pin axis, in millimetres.",
8796
+ "path": "reference/model/knuckleHinge.md",
8797
+ "importPath": "@metamesh/modeling",
8798
+ "availability": "Immutable recipes and math · Node and browsers",
8799
+ "canonical": "https://metamesh.studio/docs/reference/model/knuckleHinge",
8800
+ "keywords": [
8801
+ "reference",
8802
+ "function",
8803
+ "model",
8804
+ "hinges",
8805
+ "knuckleHinge"
8806
+ ]
8807
+ },
8808
+ {
8809
+ "id": "modeling/reference/model/KnuckleHinge-type",
8810
+ "title": "KnuckleHinge",
8811
+ "summary": "Portable local geometry; consumers own plates, holes, part declarations, and final placement.",
8812
+ "path": "reference/model/KnuckleHinge-type.md",
8813
+ "importPath": "@metamesh/modeling",
8814
+ "availability": "Immutable recipes and math · Node and browsers",
8815
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHinge-type",
8816
+ "keywords": [
8817
+ "reference",
8818
+ "interface",
8819
+ "model",
8820
+ "hinges",
8821
+ "KnuckleHinge",
8822
+ "halfA",
8823
+ "halfB",
8824
+ "axis"
8825
+ ]
8826
+ },
8827
+ {
8828
+ "id": "modeling/reference/model/KnuckleHingeBaseSpec",
8829
+ "title": "KnuckleHingeBaseSpec",
8830
+ "summary": "Shared knuckle-joint dimensions in millimetres, independent of mounting geometry.",
8831
+ "path": "reference/model/KnuckleHingeBaseSpec.md",
8832
+ "importPath": "@metamesh/modeling",
8833
+ "availability": "Immutable recipes and math · Node and browsers",
8834
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeBaseSpec",
8835
+ "keywords": [
8836
+ "reference",
8837
+ "interface",
8838
+ "model",
8839
+ "hinges",
8840
+ "KnuckleHingeBaseSpec",
8841
+ "length",
8842
+ "knuckleCount",
8843
+ "barrelDiameter",
8844
+ "pinDiameter",
8845
+ "radialClearance",
8846
+ "axialGap"
8847
+ ]
8848
+ },
8849
+ {
8850
+ "id": "modeling/reference/model/KnuckleHingeHalfOptions",
8851
+ "title": "KnuckleHingeHalfOptions",
8852
+ "summary": "Optional mounting and edge treatment for one knuckle owner.",
8853
+ "path": "reference/model/KnuckleHingeHalfOptions.md",
8854
+ "importPath": "@metamesh/modeling",
8855
+ "availability": "Immutable recipes and math · Node and browsers",
8856
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeHalfOptions",
8857
+ "keywords": [
8858
+ "reference",
8859
+ "interface",
8860
+ "model",
8861
+ "hinges",
8862
+ "KnuckleHingeHalfOptions",
8863
+ "web",
8864
+ "chamfer"
8865
+ ]
8866
+ },
8867
+ {
8868
+ "id": "modeling/reference/model/KnuckleHingeOptions",
8869
+ "title": "KnuckleHingeOptions",
8870
+ "summary": "Joint declaration with independent attachments; unspecified sampling inherits the evaluating host.",
8871
+ "path": "reference/model/KnuckleHingeOptions.md",
8872
+ "importPath": "@metamesh/modeling",
8873
+ "availability": "Immutable recipes and math · Node and browsers",
8874
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeOptions",
8875
+ "keywords": [
8876
+ "reference",
8877
+ "type-alias",
8878
+ "model",
8879
+ "hinges",
8880
+ "KnuckleHingeOptions"
8881
+ ]
8882
+ },
8883
+ {
8884
+ "id": "modeling/reference/model/KnuckleHingeSamplingOptions",
8885
+ "title": "KnuckleHingeSamplingOptions",
8886
+ "summary": "Shared circular sampling for barrels, shafts, and bores.",
8887
+ "path": "reference/model/KnuckleHingeSamplingOptions.md",
8888
+ "importPath": "@metamesh/modeling",
8889
+ "availability": "Immutable recipes and math · Node and browsers",
8890
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeSamplingOptions",
8891
+ "keywords": [
8892
+ "reference",
8893
+ "interface",
8894
+ "model",
8895
+ "hinges",
8896
+ "KnuckleHingeSamplingOptions",
8897
+ "segments",
8898
+ "resolution",
8899
+ "limits"
8900
+ ]
8901
+ },
8902
+ {
8903
+ "id": "modeling/reference/model/KnuckleHingeSpec",
8904
+ "title": "KnuckleHingeSpec",
8905
+ "summary": "Knuckle-joint construction modes and interval ownership.",
8906
+ "path": "reference/model/KnuckleHingeSpec.md",
8907
+ "importPath": "@metamesh/modeling",
8908
+ "availability": "Immutable recipes and math · Node and browsers",
8909
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeSpec",
8910
+ "keywords": [
8911
+ "reference",
8912
+ "type-alias",
8913
+ "model",
8914
+ "hinges",
8915
+ "KnuckleHingeSpec"
8916
+ ]
8917
+ },
8918
+ {
8919
+ "id": "modeling/reference/model/KnuckleHingeWeb",
8920
+ "title": "KnuckleHingeWeb",
8921
+ "summary": "Rectangular connection from the axis into a caller-owned mounting body, in millimetres.",
8922
+ "path": "reference/model/KnuckleHingeWeb.md",
8923
+ "importPath": "@metamesh/modeling",
8924
+ "availability": "Immutable recipes and math · Node and browsers",
8925
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeWeb",
8926
+ "keywords": [
8927
+ "reference",
8928
+ "interface",
8929
+ "model",
8930
+ "hinges",
8931
+ "KnuckleHingeWeb",
8932
+ "direction",
8933
+ "reach",
8934
+ "zMin",
8935
+ "thickness"
8936
+ ]
8937
+ },
8207
8938
  {
8208
8939
  "id": "modeling/reference/model/linearPattern",
8209
8940
  "title": "linearPattern",
@@ -8469,7 +9200,7 @@
8469
9200
  {
8470
9201
  "id": "modeling/reference/model/path2",
8471
9202
  "title": "path2",
8472
- "summary": "Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization. Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed. Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError. A path input retains its closure. Limits bound construction only; resampling takes its own limits.",
9203
+ "summary": "Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.",
8473
9204
  "path": "reference/model/path2.md",
8474
9205
  "importPath": "@metamesh/modeling",
8475
9206
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8498,7 +9229,7 @@
8498
9229
  "Path2",
8499
9230
  "dimension",
8500
9231
  "closed",
8501
- "toArray",
9232
+ "toData",
8502
9233
  "length",
8503
9234
  "bounds",
8504
9235
  "closestPoint",
@@ -8510,23 +9241,26 @@
8510
9241
  {
8511
9242
  "id": "modeling/reference/model/Path2Data",
8512
9243
  "title": "Path2Data",
8513
- "summary": "XY point tuples for interchange; closure is supplied by the consuming operation or Path2 value.",
9244
+ "summary": "Complete plain XY path representation, including topology and empty-path dimensional identity.",
8514
9245
  "path": "reference/model/Path2Data.md",
8515
9246
  "importPath": "@metamesh/modeling",
8516
9247
  "availability": "Immutable recipes and math · Node and browsers",
8517
9248
  "canonical": "https://metamesh.studio/docs/reference/model/Path2Data",
8518
9249
  "keywords": [
8519
9250
  "reference",
8520
- "type-alias",
9251
+ "interface",
8521
9252
  "model",
8522
9253
  "paths",
8523
- "Path2Data"
9254
+ "Path2Data",
9255
+ "dimension",
9256
+ "points",
9257
+ "closed"
8524
9258
  ]
8525
9259
  },
8526
9260
  {
8527
9261
  "id": "modeling/reference/model/Path2Input",
8528
9262
  "title": "Path2Input",
8529
- "summary": "An immutable XY sampled path or a collection of XY tuples and fluent vectors.",
9263
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
8530
9264
  "path": "reference/model/Path2Input.md",
8531
9265
  "importPath": "@metamesh/modeling",
8532
9266
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8571,7 +9305,7 @@
8571
9305
  "Path3",
8572
9306
  "dimension",
8573
9307
  "closed",
8574
- "toArray",
9308
+ "toData",
8575
9309
  "length",
8576
9310
  "bounds",
8577
9311
  "closestPoint",
@@ -8583,23 +9317,26 @@
8583
9317
  {
8584
9318
  "id": "modeling/reference/model/Path3Data",
8585
9319
  "title": "Path3Data",
8586
- "summary": "XYZ point tuples for interchange; closure is supplied by the consuming operation or Path3 value.",
9320
+ "summary": "Complete plain XYZ path representation, including topology and empty-path dimensional identity.",
8587
9321
  "path": "reference/model/Path3Data.md",
8588
9322
  "importPath": "@metamesh/modeling",
8589
9323
  "availability": "Immutable recipes and math · Node and browsers",
8590
9324
  "canonical": "https://metamesh.studio/docs/reference/model/Path3Data",
8591
9325
  "keywords": [
8592
9326
  "reference",
8593
- "type-alias",
9327
+ "interface",
8594
9328
  "model",
8595
9329
  "paths",
8596
- "Path3Data"
9330
+ "Path3Data",
9331
+ "dimension",
9332
+ "points",
9333
+ "closed"
8597
9334
  ]
8598
9335
  },
8599
9336
  {
8600
9337
  "id": "modeling/reference/model/Path3Input",
8601
9338
  "title": "Path3Input",
8602
- "summary": "An immutable XYZ sampled path or a collection of XYZ tuples and fluent vectors.",
9339
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
8603
9340
  "path": "reference/model/Path3Input.md",
8604
9341
  "importPath": "@metamesh/modeling",
8605
9342
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8792,7 +9529,7 @@
8792
9529
  {
8793
9530
  "id": "modeling/reference/model/polygon",
8794
9531
  "title": "polygon",
8795
- "summary": "Fills one closed millimetre XY outline, explicit outer/hole topology, or compound contours. Closing edges are implicit. Compound contours use nonzero fill unless selected otherwise. Explicit topology must be simple and disjoint; compound winding may resolve overlaps.",
9532
+ "summary": "Fills one closed millimetre XY outline, explicit outer/hole topology, or compound contours.",
8796
9533
  "path": "reference/model/polygon.md",
8797
9534
  "importPath": "@metamesh/modeling",
8798
9535
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8808,7 +9545,7 @@
8808
9545
  {
8809
9546
  "id": "modeling/reference/model/PolygonData",
8810
9547
  "title": "PolygonData",
8811
- "summary": "One bounded two-dimensional polygon.",
9548
+ "summary": "One filled two-dimensional polygon with an exterior and optional holes.",
8812
9549
  "path": "reference/model/PolygonData.md",
8813
9550
  "importPath": "@metamesh/modeling",
8814
9551
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8842,7 +9579,7 @@
8842
9579
  {
8843
9580
  "id": "modeling/reference/model/preflightInternalThreadCutter",
8844
9581
  "title": "preflightInternalThreadCutter",
8845
- "summary": "Internal-thread facts using host resolution and limits; requires active synchronous model execution.",
9582
+ "summary": "Checks compensated cutter dimensions and conservative mesh estimates against host output limits.",
8846
9583
  "path": "reference/model/preflightInternalThreadCutter.md",
8847
9584
  "importPath": "@metamesh/modeling",
8848
9585
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8858,7 +9595,7 @@
8858
9595
  {
8859
9596
  "id": "modeling/reference/model/preflightThreadedNut",
8860
9597
  "title": "preflightThreadedNut",
8861
- "summary": "Nut/cutter facts using host resolution and limits; requires active synchronous model execution.",
9598
+ "summary": "Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.",
8862
9599
  "path": "reference/model/preflightThreadedNut.md",
8863
9600
  "importPath": "@metamesh/modeling",
8864
9601
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8874,7 +9611,7 @@
8874
9611
  {
8875
9612
  "id": "modeling/reference/model/preflightThreadedRod",
8876
9613
  "title": "preflightThreadedRod",
8877
- "summary": "External-thread facts using host resolution and limits; requires active synchronous model execution.",
9614
+ "summary": "Checks compensated rod dimensions and conservative mesh estimates against host output limits.",
8878
9615
  "path": "reference/model/preflightThreadedRod.md",
8879
9616
  "importPath": "@metamesh/modeling",
8880
9617
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8964,7 +9701,7 @@
8964
9701
  {
8965
9702
  "id": "modeling/reference/model/Profile",
8966
9703
  "title": "Profile",
8967
- "summary": "An explicit component/contour/span topology, before shared family sampling.",
9704
+ "summary": "An explicit component/contour/span topology, before shared family sampling with matchProfiles. Component, contour and span identities establish correspondence across a loft or sweep family.",
8968
9705
  "path": "reference/model/Profile.md",
8969
9706
  "importPath": "@metamesh/modeling",
8970
9707
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9000,7 +9737,7 @@
9000
9737
  {
9001
9738
  "id": "modeling/reference/model/ProfileContour2",
9002
9739
  "title": "ProfileContour2",
9003
- "summary": "Ordered, closed spans. Outer winding is CCW and hole winding is CW.",
9740
+ "summary": "An identified closed boundary of curve spans, before shared family sampling. Outer winding is CCW and hole winding is CW. matchProfiles retains span identities in sampled contours.",
9004
9741
  "path": "reference/model/ProfileContour2.md",
9005
9742
  "importPath": "@metamesh/modeling",
9006
9743
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9207,7 +9944,7 @@
9207
9944
  {
9208
9945
  "id": "modeling/reference/model/RegionData",
9209
9946
  "title": "RegionData",
9210
- "summary": "A two-dimensional region represented by disjoint filled polygons.",
9947
+ "summary": "A two-dimensional region represented by disjoint filled polygons. Each PolygonData owns one exterior and its holes; an empty region contains no material.",
9211
9948
  "path": "reference/model/RegionData.md",
9212
9949
  "importPath": "@metamesh/modeling",
9213
9950
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9312,7 +10049,7 @@
9312
10049
  {
9313
10050
  "id": "modeling/reference/model/Section",
9314
10051
  "title": "Section",
9315
- "summary": "Immutable deferred filled XY section recipe. Construction and composition require no engine. Ordinary recipes may be reused across sessions regardless of where constructed. Observed components and recipes using them can only be evaluated in their originating session. Methods leave the source unchanged; observations require a synchronous model execution. Distances use millimetres; rotations use counterclockwise degrees. Explicit resolution settings are captured; unspecified settings inherit the evaluating host's defaults.",
10052
+ "summary": "Immutable deferred filled XY section recipe.",
9316
10053
  "path": "reference/model/Section.md",
9317
10054
  "importPath": "@metamesh/modeling",
9318
10055
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9438,7 +10175,7 @@
9438
10175
  {
9439
10176
  "id": "modeling/reference/model/Solid",
9440
10177
  "title": "Solid",
9441
- "summary": "Immutable deferred solid recipe. Construction and composition require no engine. Ordinary recipes may be reused across sessions regardless of where constructed. Explicit resolution settings are captured; unspecified settings inherit the evaluating host's defaults. Observed components and recipes using them can only be evaluated in their originating session. Methods leave the source unchanged and use millimetres and degrees. A no-op may reuse the receiver; final part placement belongs in `part` options.",
10178
+ "summary": "Immutable deferred solid recipe.",
9442
10179
  "path": "reference/model/Solid.md",
9443
10180
  "importPath": "@metamesh/modeling",
9444
10181
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9779,6 +10516,7 @@
9779
10516
  "model",
9780
10517
  "sections",
9781
10518
  "SvgSectionOptions",
10519
+ "fit",
9782
10520
  "limits",
9783
10521
  "circularSegments",
9784
10522
  "resolution",
@@ -9943,7 +10681,7 @@
9943
10681
  {
9944
10682
  "id": "modeling/reference/model/ThreadedNutPreflight",
9945
10683
  "title": "ThreadedNutPreflight",
9946
- "summary": "Allocation-free body, cutter, and end-face facts resolved for a threaded nut.",
10684
+ "summary": "Resolved body and end-face dimensions plus conservative allocation estimates for the thread cutter.",
9947
10685
  "path": "reference/model/ThreadedNutPreflight.md",
9948
10686
  "importPath": "@metamesh/modeling",
9949
10687
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10207,7 +10945,7 @@
10207
10945
  {
10208
10946
  "id": "modeling/reference/model/transform2",
10209
10947
  "title": "transform2",
10210
- "summary": "Creates an immutable XY transform, identity by default. Matrices are copied and validated. Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ. Zero scales and singular matrices throw GeometryError; negative scales reflect.",
10948
+ "summary": "Creates an immutable XY transform, identity by default.",
10211
10949
  "path": "reference/model/transform2.md",
10212
10950
  "importPath": "@metamesh/modeling",
10213
10951
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10242,46 +10980,46 @@
10242
10980
  "applyPoint",
10243
10981
  "applyDirection",
10244
10982
  "applyNormal",
10245
- "toMatrix",
10983
+ "toData",
10246
10984
  "to3D"
10247
10985
  ]
10248
10986
  },
10249
10987
  {
10250
- "id": "modeling/reference/model/Transform2Input",
10251
- "title": "Transform2Input",
10252
- "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
10253
- "path": "reference/model/Transform2Input.md",
10988
+ "id": "modeling/reference/model/Transform2Data",
10989
+ "title": "Transform2Data",
10990
+ "summary": "A row-major affine 3x3 XY matrix applied to column vectors. Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.",
10991
+ "path": "reference/model/Transform2Data.md",
10254
10992
  "importPath": "@metamesh/modeling",
10255
10993
  "availability": "Immutable recipes and math · Node and browsers",
10256
- "canonical": "https://metamesh.studio/docs/reference/model/Transform2Input",
10994
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform2Data",
10257
10995
  "keywords": [
10258
10996
  "reference",
10259
10997
  "type-alias",
10260
10998
  "model",
10261
10999
  "transforms-placement",
10262
- "Transform2Input"
11000
+ "Transform2Data"
10263
11001
  ]
10264
11002
  },
10265
11003
  {
10266
- "id": "modeling/reference/model/Transform2Matrix",
10267
- "title": "Transform2Matrix",
10268
- "summary": "A row-major affine 3x3 XY matrix applied to column vectors. Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.",
10269
- "path": "reference/model/Transform2Matrix.md",
11004
+ "id": "modeling/reference/model/Transform2Input",
11005
+ "title": "Transform2Input",
11006
+ "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
11007
+ "path": "reference/model/Transform2Input.md",
10270
11008
  "importPath": "@metamesh/modeling",
10271
11009
  "availability": "Immutable recipes and math · Node and browsers",
10272
- "canonical": "https://metamesh.studio/docs/reference/model/Transform2Matrix",
11010
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform2Input",
10273
11011
  "keywords": [
10274
11012
  "reference",
10275
11013
  "type-alias",
10276
11014
  "model",
10277
11015
  "transforms-placement",
10278
- "Transform2Matrix"
11016
+ "Transform2Input"
10279
11017
  ]
10280
11018
  },
10281
11019
  {
10282
11020
  "id": "modeling/reference/model/transform3",
10283
11021
  "title": "transform3",
10284
- "summary": "Creates an immutable XYZ transform, identity by default. Matrices are copied and validated. Calls apply in written order; rotations use degrees and pivots use current world coordinates. Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError. Use frameTransform3(frame) as the input for existing orthonormal frame placement.",
11022
+ "summary": "Creates an immutable XYZ transform, identity by default.",
10285
11023
  "path": "reference/model/transform3.md",
10286
11024
  "importPath": "@metamesh/modeling",
10287
11025
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10317,40 +11055,40 @@
10317
11055
  "applyPoint",
10318
11056
  "applyDirection",
10319
11057
  "applyNormal",
10320
- "toMatrix",
11058
+ "toData",
10321
11059
  "to2D"
10322
11060
  ]
10323
11061
  },
10324
11062
  {
10325
- "id": "modeling/reference/model/Transform3Input",
10326
- "title": "Transform3Input",
10327
- "summary": "An immutable XYZ transform or its canonical row-major matrix for interchange.",
10328
- "path": "reference/model/Transform3Input.md",
11063
+ "id": "modeling/reference/model/Transform3Data",
11064
+ "title": "Transform3Data",
11065
+ "summary": "A row-major affine 4x4 matrix applied to column vectors.",
11066
+ "path": "reference/model/Transform3Data.md",
10329
11067
  "importPath": "@metamesh/modeling",
10330
11068
  "availability": "Immutable recipes and math · Node and browsers",
10331
- "canonical": "https://metamesh.studio/docs/reference/model/Transform3Input",
11069
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform3Data",
10332
11070
  "keywords": [
10333
11071
  "reference",
10334
11072
  "type-alias",
10335
11073
  "model",
10336
11074
  "transforms-placement",
10337
- "Transform3Input"
11075
+ "Transform3Data"
10338
11076
  ]
10339
11077
  },
10340
11078
  {
10341
- "id": "modeling/reference/model/Transform3Matrix",
10342
- "title": "Transform3Matrix",
10343
- "summary": "A row-major affine 4x4 matrix applied to column vectors.",
10344
- "path": "reference/model/Transform3Matrix.md",
11079
+ "id": "modeling/reference/model/Transform3Input",
11080
+ "title": "Transform3Input",
11081
+ "summary": "An immutable XYZ transform or its canonical row-major matrix for interchange.",
11082
+ "path": "reference/model/Transform3Input.md",
10345
11083
  "importPath": "@metamesh/modeling",
10346
11084
  "availability": "Immutable recipes and math · Node and browsers",
10347
- "canonical": "https://metamesh.studio/docs/reference/model/Transform3Matrix",
11085
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform3Input",
10348
11086
  "keywords": [
10349
11087
  "reference",
10350
11088
  "type-alias",
10351
11089
  "model",
10352
11090
  "transforms-placement",
10353
- "Transform3Matrix"
11091
+ "Transform3Input"
10354
11092
  ]
10355
11093
  },
10356
11094
  {
@@ -10474,7 +11212,7 @@
10474
11212
  {
10475
11213
  "id": "modeling/reference/model/vector2",
10476
11214
  "title": "vector2",
10477
- "summary": "Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates. Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates and overflow throw `NON_FINITE_VALUE` GeometryError. Use transform2().applyDirection(value) for rotations and nonuniform scaling.",
11215
+ "summary": "Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.",
10478
11216
  "path": "reference/model/vector2.md",
10479
11217
  "importPath": "@metamesh/modeling",
10480
11218
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10512,45 +11250,45 @@
10512
11250
  "cross",
10513
11251
  "length",
10514
11252
  "distance",
10515
- "toArray"
11253
+ "toData"
10516
11254
  ]
10517
11255
  },
10518
11256
  {
10519
- "id": "modeling/reference/model/Vector2Input",
10520
- "title": "Vector2Input",
10521
- "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
10522
- "path": "reference/model/Vector2Input.md",
11257
+ "id": "modeling/reference/model/Vector2Data",
11258
+ "title": "Vector2Data",
11259
+ "summary": "A two-dimensional Cartesian vector or point.",
11260
+ "path": "reference/model/Vector2Data.md",
10523
11261
  "importPath": "@metamesh/modeling",
10524
11262
  "availability": "Immutable recipes and math · Node and browsers",
10525
- "canonical": "https://metamesh.studio/docs/reference/model/Vector2Input",
11263
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector2Data",
10526
11264
  "keywords": [
10527
11265
  "reference",
10528
11266
  "type-alias",
10529
11267
  "model",
10530
- "transforms-placement",
10531
- "Vector2Input"
11268
+ "core-values-errors",
11269
+ "Vector2Data"
10532
11270
  ]
10533
11271
  },
10534
11272
  {
10535
- "id": "modeling/reference/model/Vector2Tuple",
10536
- "title": "Vector2Tuple",
10537
- "summary": "A two-dimensional Cartesian vector or point.",
10538
- "path": "reference/model/Vector2Tuple.md",
11273
+ "id": "modeling/reference/model/Vector2Input",
11274
+ "title": "Vector2Input",
11275
+ "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
11276
+ "path": "reference/model/Vector2Input.md",
10539
11277
  "importPath": "@metamesh/modeling",
10540
11278
  "availability": "Immutable recipes and math · Node and browsers",
10541
- "canonical": "https://metamesh.studio/docs/reference/model/Vector2Tuple",
11279
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector2Input",
10542
11280
  "keywords": [
10543
11281
  "reference",
10544
11282
  "type-alias",
10545
11283
  "model",
10546
- "core-values-errors",
10547
- "Vector2Tuple"
11284
+ "transforms-placement",
11285
+ "Vector2Input"
10548
11286
  ]
10549
11287
  },
10550
11288
  {
10551
11289
  "id": "modeling/reference/model/vector3",
10552
11290
  "title": "vector3",
10553
- "summary": "Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates. Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates and overflow throw `NON_FINITE_VALUE` GeometryError. Use transform3().applyDirection(value) for rotations and nonuniform scaling.",
11291
+ "summary": "Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.",
10554
11292
  "path": "reference/model/vector3.md",
10555
11293
  "importPath": "@metamesh/modeling",
10556
11294
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10589,39 +11327,39 @@
10589
11327
  "cross",
10590
11328
  "length",
10591
11329
  "distance",
10592
- "toArray"
11330
+ "toData"
10593
11331
  ]
10594
11332
  },
10595
11333
  {
10596
- "id": "modeling/reference/model/Vector3Input",
10597
- "title": "Vector3Input",
10598
- "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
10599
- "path": "reference/model/Vector3Input.md",
11334
+ "id": "modeling/reference/model/Vector3Data",
11335
+ "title": "Vector3Data",
11336
+ "summary": "A three-dimensional Cartesian vector or point.",
11337
+ "path": "reference/model/Vector3Data.md",
10600
11338
  "importPath": "@metamesh/modeling",
10601
11339
  "availability": "Immutable recipes and math · Node and browsers",
10602
- "canonical": "https://metamesh.studio/docs/reference/model/Vector3Input",
11340
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector3Data",
10603
11341
  "keywords": [
10604
11342
  "reference",
10605
11343
  "type-alias",
10606
11344
  "model",
10607
- "transforms-placement",
10608
- "Vector3Input"
11345
+ "core-values-errors",
11346
+ "Vector3Data"
10609
11347
  ]
10610
11348
  },
10611
11349
  {
10612
- "id": "modeling/reference/model/Vector3Tuple",
10613
- "title": "Vector3Tuple",
10614
- "summary": "A three-dimensional Cartesian vector or point.",
10615
- "path": "reference/model/Vector3Tuple.md",
11350
+ "id": "modeling/reference/model/Vector3Input",
11351
+ "title": "Vector3Input",
11352
+ "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
11353
+ "path": "reference/model/Vector3Input.md",
10616
11354
  "importPath": "@metamesh/modeling",
10617
11355
  "availability": "Immutable recipes and math · Node and browsers",
10618
- "canonical": "https://metamesh.studio/docs/reference/model/Vector3Tuple",
11356
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector3Input",
10619
11357
  "keywords": [
10620
11358
  "reference",
10621
11359
  "type-alias",
10622
11360
  "model",
10623
- "core-values-errors",
10624
- "Vector3Tuple"
11361
+ "transforms-placement",
11362
+ "Vector3Input"
10625
11363
  ]
10626
11364
  },
10627
11365
  {
@@ -10682,19 +11420,19 @@
10682
11420
  ]
10683
11421
  },
10684
11422
  {
10685
- "id": "modeling/reference/text/Bounds2",
10686
- "title": "Bounds2",
10687
- "summary": "Axis-aligned bounds in two-dimensional model space.",
10688
- "path": "reference/text/Bounds2.md",
11423
+ "id": "modeling/reference/text/Bounds2Data",
11424
+ "title": "Bounds2Data",
11425
+ "summary": "Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods.",
11426
+ "path": "reference/text/Bounds2Data.md",
10689
11427
  "importPath": "@metamesh/modeling/text",
10690
11428
  "availability": "Optional font preparation · Node and Workers",
10691
- "canonical": "https://metamesh.studio/docs/reference/text/Bounds2",
11429
+ "canonical": "https://metamesh.studio/docs/reference/text/Bounds2Data",
10692
11430
  "keywords": [
10693
11431
  "reference",
10694
11432
  "interface",
10695
11433
  "text",
10696
11434
  "font-preparation",
10697
- "Bounds2",
11435
+ "Bounds2Data",
10698
11436
  "max",
10699
11437
  "min"
10700
11438
  ]
@@ -10748,19 +11486,19 @@
10748
11486
  ]
10749
11487
  },
10750
11488
  {
10751
- "id": "modeling/reference/text/Vector2Tuple",
10752
- "title": "Vector2Tuple",
11489
+ "id": "modeling/reference/text/Vector2Data",
11490
+ "title": "Vector2Data",
10753
11491
  "summary": "A two-dimensional Cartesian vector or point.",
10754
- "path": "reference/text/Vector2Tuple.md",
11492
+ "path": "reference/text/Vector2Data.md",
10755
11493
  "importPath": "@metamesh/modeling/text",
10756
11494
  "availability": "Optional font preparation · Node and Workers",
10757
- "canonical": "https://metamesh.studio/docs/reference/text/Vector2Tuple",
11495
+ "canonical": "https://metamesh.studio/docs/reference/text/Vector2Data",
10758
11496
  "keywords": [
10759
11497
  "reference",
10760
11498
  "type-alias",
10761
11499
  "text",
10762
11500
  "font-preparation",
10763
- "Vector2Tuple"
11501
+ "Vector2Data"
10764
11502
  ]
10765
11503
  },
10766
11504
  {