@metamesh/modeling 0.14.0 → 0.16.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 (775) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +55 -13
  3. package/dist/api/engine.d.ts +15 -7
  4. package/dist/api/geometry.d.ts +853 -562
  5. package/dist/api/index.d.ts +604 -227
  6. package/dist/api/text.d.ts +9 -7
  7. package/dist/docs/guides/concepts.md +295 -91
  8. package/dist/docs/guides/fonts.md +9 -8
  9. package/dist/docs/guides/fundamentals.md +22 -23
  10. package/dist/docs/guides/generation.md +24 -23
  11. package/dist/docs/guides/hosting.md +26 -11
  12. package/dist/docs/guides/recipes.md +74 -48
  13. package/dist/docs/guides/standalone-model.md +42 -0
  14. package/dist/docs/manifest.json +1555 -749
  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 +4 -8
  22. package/dist/docs/reference/engine/ModelSession.md +1 -1
  23. package/dist/docs/reference/engine/ModelSnapshot.md +21 -10
  24. package/dist/docs/reference/engine/SessionOptions.md +1 -1
  25. package/dist/docs/reference/engine/SnapshotPart.md +6 -3
  26. package/dist/docs/reference/engine/categories/host-lifecycle.md +7 -2
  27. package/dist/docs/reference/engine/createModelEngine.md +3 -3
  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 +4 -4
  34. package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +6 -5
  35. package/dist/docs/reference/geometry/ArcCurve2.md +11 -7
  36. package/dist/docs/reference/geometry/ArcCurve3.md +13 -9
  37. package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +11 -5
  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/Bounds3-type.md +127 -0
  43. package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
  44. package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
  45. package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
  46. package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
  47. package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
  48. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +2 -1
  49. package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
  50. package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
  51. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  52. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  53. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  54. package/dist/docs/reference/geometry/BoxOptions.md +10 -10
  55. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
  56. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
  57. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  58. package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
  59. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
  60. package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -7
  61. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
  62. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
  63. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
  64. package/dist/docs/reference/geometry/Contour.md +10 -4
  65. package/dist/docs/reference/geometry/ContourCurve.md +5 -1
  66. package/dist/docs/reference/geometry/ContourPoint.md +6 -1
  67. package/dist/docs/reference/geometry/ContourSegment.md +5 -1
  68. package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
  69. package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
  70. package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
  71. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
  72. package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
  73. package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
  74. package/dist/docs/reference/geometry/Curve2.md +5 -1
  75. package/dist/docs/reference/geometry/Curve3.md +5 -1
  76. package/dist/docs/reference/geometry/CurveSamplingOptions.md +9 -3
  77. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
  78. package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
  79. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +6 -5
  80. package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
  81. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -3
  82. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
  83. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
  84. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +7 -3
  85. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
  86. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
  87. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
  88. package/dist/docs/reference/geometry/CylindricalGearSpec.md +11 -6
  89. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  90. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  91. package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
  92. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  93. package/dist/docs/reference/geometry/ExtrudeOptions.md +10 -6
  94. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -5
  95. package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
  96. package/dist/docs/reference/geometry/Frame3.md +10 -6
  97. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  98. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  99. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  100. package/dist/docs/reference/geometry/GeometryResolution.md +5 -5
  101. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
  102. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  103. package/dist/docs/reference/geometry/GridPatternOptions.md +11 -5
  104. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
  105. package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
  106. package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
  107. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +9 -5
  108. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +10 -6
  109. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
  110. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
  111. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +10 -6
  112. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
  113. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
  114. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
  115. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
  116. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
  117. package/dist/docs/reference/geometry/LineCurve2.md +8 -4
  118. package/dist/docs/reference/geometry/LineCurve3.md +8 -4
  119. package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
  120. package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
  121. package/dist/docs/reference/geometry/LoftMeshStation.md +8 -4
  122. package/dist/docs/reference/geometry/LoftOptions.md +5 -1
  123. package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
  124. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
  125. package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
  126. package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
  127. package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
  128. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
  129. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
  130. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  131. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
  132. package/dist/docs/reference/geometry/Path2-type.md +196 -0
  133. package/dist/docs/reference/geometry/Path2Data.md +50 -0
  134. package/dist/docs/reference/geometry/Path2Input.md +20 -0
  135. package/dist/docs/reference/geometry/Path3-type.md +196 -0
  136. package/dist/docs/reference/geometry/Path3Data.md +50 -0
  137. package/dist/docs/reference/geometry/Path3Input.md +20 -0
  138. package/dist/docs/reference/geometry/PathFrame.md +9 -5
  139. package/dist/docs/reference/geometry/PathLocation.md +69 -0
  140. package/dist/docs/reference/geometry/PathNormalGuide.md +10 -5
  141. package/dist/docs/reference/geometry/PathOptions.md +38 -0
  142. package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
  143. package/dist/docs/reference/geometry/PathPlacement.md +8 -4
  144. package/dist/docs/reference/geometry/PathResamplingOptions.md +84 -0
  145. package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
  146. package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
  147. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
  148. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +26 -22
  149. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
  150. package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
  151. package/dist/docs/reference/geometry/PolygonData.md +7 -2
  152. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -4
  153. package/dist/docs/reference/geometry/PrimitiveAttachment.md +31 -0
  154. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +104 -0
  155. package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
  156. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
  157. package/dist/docs/reference/geometry/Profile.md +8 -2
  158. package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
  159. package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
  160. package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
  161. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
  162. package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
  163. package/dist/docs/reference/geometry/RackPitchSpec.md +10 -5
  164. package/dist/docs/reference/geometry/RadialPatternOptions.md +17 -22
  165. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  166. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  167. package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
  168. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
  169. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
  170. package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
  171. package/dist/docs/reference/geometry/RegionData.md +6 -2
  172. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +7 -3
  173. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  174. package/dist/docs/reference/geometry/RevolveOptions.md +13 -4
  175. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  176. package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
  177. package/dist/docs/reference/geometry/SampleContourOptions.md +7 -3
  178. package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
  179. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +7 -3
  180. package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
  181. package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
  182. package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
  183. package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
  184. package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
  185. package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
  186. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  187. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +7 -3
  188. package/dist/docs/reference/geometry/SphereOptions.md +3 -3
  189. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
  190. package/dist/docs/reference/geometry/StrokeCap.md +14 -0
  191. package/dist/docs/reference/geometry/StrokeJoin.md +14 -0
  192. package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +11 -7
  193. package/dist/docs/reference/geometry/SvgImportOptions.md +5 -1
  194. package/dist/docs/reference/geometry/SvgRegionPreflight.md +6 -2
  195. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +19 -15
  196. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +16 -11
  197. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +14 -9
  198. package/dist/docs/reference/geometry/SweepOptions.md +10 -6
  199. package/dist/docs/reference/geometry/SweepOrientation.md +11 -7
  200. package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
  201. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +9 -5
  202. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
  203. package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
  204. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
  205. package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
  206. package/dist/docs/reference/geometry/ThreadHelixOptions.md +7 -3
  207. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
  208. package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
  209. package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +7 -3
  210. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
  211. package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
  212. package/dist/docs/reference/geometry/ThreadRole.md +8 -1
  213. package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
  214. package/dist/docs/reference/geometry/ThreadedNutOptions.md +10 -6
  215. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
  216. package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
  217. package/dist/docs/reference/geometry/ThreadedRodOptions.md +10 -6
  218. package/dist/docs/reference/geometry/TorusOptions.md +8 -8
  219. package/dist/docs/reference/geometry/Transform2-type.md +6 -5
  220. package/dist/docs/reference/geometry/Transform2Data.md +15 -0
  221. package/dist/docs/reference/geometry/Transform2Input.md +4 -3
  222. package/dist/docs/reference/geometry/Transform3-type.md +6 -5
  223. package/dist/docs/reference/geometry/Transform3Data.md +18 -0
  224. package/dist/docs/reference/geometry/Transform3Input.md +4 -3
  225. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +9 -4
  226. package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
  227. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +8 -4
  228. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
  229. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
  230. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +7 -3
  231. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
  232. package/dist/docs/reference/geometry/TriangleMeshSignature.md +8 -4
  233. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +8 -3
  234. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
  235. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
  236. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
  237. package/dist/docs/reference/geometry/TubeOptions.md +8 -8
  238. package/dist/docs/reference/geometry/Vector2-type.md +6 -5
  239. package/dist/docs/reference/geometry/Vector2Data.md +15 -0
  240. package/dist/docs/reference/geometry/Vector2Input.md +4 -3
  241. package/dist/docs/reference/geometry/Vector3-type.md +6 -5
  242. package/dist/docs/reference/geometry/Vector3Data.md +15 -0
  243. package/dist/docs/reference/geometry/Vector3Input.md +4 -3
  244. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +8 -3
  245. package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
  246. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +5 -1
  247. package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
  248. package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
  249. package/dist/docs/reference/geometry/add2.md +7 -6
  250. package/dist/docs/reference/geometry/add3.md +7 -6
  251. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
  252. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +6 -2
  253. package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +10 -9
  254. package/dist/docs/reference/geometry/anchorFrame3.md +9 -5
  255. package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
  256. package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
  257. package/dist/docs/reference/geometry/{attachTransform.md → attachmentTransform3.md} +16 -15
  258. package/dist/docs/reference/geometry/bounds2.md +38 -0
  259. package/dist/docs/reference/geometry/bounds3.md +38 -0
  260. package/dist/docs/reference/geometry/boundsCenter.md +12 -11
  261. package/dist/docs/reference/geometry/boundsFromSize.md +12 -11
  262. package/dist/docs/reference/geometry/boundsSize.md +12 -11
  263. package/dist/docs/reference/geometry/boxAnchor3.md +7 -6
  264. package/dist/docs/reference/geometry/categories/bounds-layout.md +23 -6
  265. package/dist/docs/reference/geometry/categories/curves-paths.md +27 -13
  266. package/dist/docs/reference/geometry/categories/mechanical.md +27 -15
  267. package/dist/docs/reference/geometry/categories/meshes.md +18 -10
  268. package/dist/docs/reference/geometry/categories/pattern-placement.md +11 -9
  269. package/dist/docs/reference/geometry/categories/primitive-options.md +10 -4
  270. package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -13
  271. package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -3
  272. package/dist/docs/reference/geometry/categories/transforms-math.md +25 -16
  273. package/dist/docs/reference/geometry/categories/vector-import.md +15 -9
  274. package/dist/docs/reference/geometry/circleContour.md +5 -1
  275. package/dist/docs/reference/geometry/closeToAxis.md +14 -5
  276. package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
  277. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +9 -5
  278. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +9 -5
  279. package/dist/docs/reference/geometry/composeTransform3.md +7 -6
  280. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +14 -6
  281. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +17 -7
  282. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
  283. package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +8 -4
  284. package/dist/docs/reference/geometry/containsBounds.md +10 -9
  285. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
  286. package/dist/docs/reference/geometry/cross2.md +6 -5
  287. package/dist/docs/reference/geometry/cross3.md +7 -6
  288. package/dist/docs/reference/geometry/cylinderAnchor3.md +7 -6
  289. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
  290. package/dist/docs/reference/geometry/distance2.md +6 -5
  291. package/dist/docs/reference/geometry/distance3.md +6 -5
  292. package/dist/docs/reference/geometry/distributeAlongPath.md +12 -6
  293. package/dist/docs/reference/geometry/dot2.md +6 -5
  294. package/dist/docs/reference/geometry/dot3.md +6 -5
  295. package/dist/docs/reference/geometry/ellipseContour.md +5 -1
  296. package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
  297. package/dist/docs/reference/geometry/extrudeMesh.md +12 -8
  298. package/dist/docs/reference/geometry/fitBounds.md +10 -9
  299. package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
  300. package/dist/docs/reference/geometry/frameTransform3.md +5 -4
  301. package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +7 -3
  302. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
  303. package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
  304. package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
  305. package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +9 -5
  306. package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +9 -5
  307. package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
  308. package/dist/docs/reference/geometry/isGeometryError.md +5 -2
  309. package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
  310. package/dist/docs/reference/geometry/layoutRow.md +11 -7
  311. package/dist/docs/reference/geometry/length2.md +5 -4
  312. package/dist/docs/reference/geometry/length3.md +5 -4
  313. package/dist/docs/reference/geometry/lerp2.md +7 -6
  314. package/dist/docs/reference/geometry/lerp3.md +7 -6
  315. package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
  316. package/dist/docs/reference/geometry/loftMesh.md +6 -1
  317. package/dist/docs/reference/geometry/matchProfiles.md +11 -2
  318. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
  319. package/dist/docs/reference/geometry/meshBounds.md +8 -4
  320. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +7 -3
  321. package/dist/docs/reference/geometry/normalize2.md +10 -6
  322. package/dist/docs/reference/geometry/normalize3.md +10 -6
  323. package/dist/docs/reference/geometry/normalizeContour.md +8 -4
  324. package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
  325. package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
  326. package/dist/docs/reference/geometry/optimizePlanarPatches.md +15 -11
  327. package/dist/docs/reference/geometry/path2.md +54 -0
  328. package/dist/docs/reference/geometry/path3.md +49 -0
  329. package/dist/docs/reference/geometry/pathPatternTransforms.md +13 -9
  330. package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
  331. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +13 -4
  332. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +15 -4
  333. package/dist/docs/reference/geometry/preflightSvgRegion.md +15 -2
  334. package/dist/docs/reference/geometry/preflightThreadedNut.md +14 -4
  335. package/dist/docs/reference/geometry/preflightThreadedRod.md +14 -4
  336. package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
  337. package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
  338. package/dist/docs/reference/geometry/rectangleContour.md +10 -3
  339. package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
  340. package/dist/docs/reference/geometry/regionArea.md +5 -1
  341. package/dist/docs/reference/geometry/regionBounds.md +8 -4
  342. package/dist/docs/reference/geometry/regularPolygonContour.md +9 -5
  343. package/dist/docs/reference/geometry/resamplePolyline2.md +9 -5
  344. package/dist/docs/reference/geometry/resamplePolyline3.md +9 -5
  345. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +4 -4
  346. package/dist/docs/reference/geometry/resolveArcSegments.md +4 -4
  347. package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
  348. package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
  349. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
  350. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +7 -3
  351. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
  352. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  353. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
  354. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
  355. package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
  356. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -4
  357. package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
  358. package/dist/docs/reference/geometry/revolveMesh.md +14 -10
  359. package/dist/docs/reference/geometry/rotate2.md +6 -5
  360. package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
  361. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -6
  362. package/dist/docs/reference/geometry/sampleContour.md +14 -4
  363. package/dist/docs/reference/geometry/sampleCurve2.md +8 -5
  364. package/dist/docs/reference/geometry/sampleCurve3.md +6 -2
  365. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
  366. package/dist/docs/reference/geometry/sampleHelix.md +13 -5
  367. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
  368. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
  369. package/dist/docs/reference/geometry/sampleSideProfile.md +17 -7
  370. package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
  371. package/dist/docs/reference/geometry/sampleThreadHelices.md +6 -2
  372. package/dist/docs/reference/geometry/scale2.md +6 -5
  373. package/dist/docs/reference/geometry/scale3.md +6 -5
  374. package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
  375. package/dist/docs/reference/geometry/signedContourArea.md +5 -1
  376. package/dist/docs/reference/geometry/starContour.md +8 -4
  377. package/dist/docs/reference/geometry/strokeRegionData.md +67 -0
  378. package/dist/docs/reference/geometry/subtract2.md +7 -6
  379. package/dist/docs/reference/geometry/subtract3.md +7 -6
  380. package/dist/docs/reference/geometry/sweepMesh.md +13 -9
  381. package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +10 -6
  382. package/dist/docs/reference/geometry/transform2.md +14 -7
  383. package/dist/docs/reference/geometry/transform3.md +16 -7
  384. package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
  385. package/dist/docs/reference/geometry/transformRegionData.md +5 -1
  386. package/dist/docs/reference/geometry/transformTriangleMesh.md +10 -6
  387. package/dist/docs/reference/geometry/translationTransform3.md +7 -6
  388. package/dist/docs/reference/geometry/triangulateContour.md +5 -1
  389. package/dist/docs/reference/geometry/validateSolidMesh.md +10 -3
  390. package/dist/docs/reference/geometry/validateTransform3.md +6 -5
  391. package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
  392. package/dist/docs/reference/geometry/vector2.md +10 -2
  393. package/dist/docs/reference/geometry/vector3.md +10 -2
  394. package/dist/docs/reference/geometry.md +8 -6
  395. package/dist/docs/reference/model/Anchor3.md +6 -5
  396. package/dist/docs/reference/model/AttachOptions.md +11 -5
  397. package/dist/docs/reference/model/Bounds2-type.md +125 -0
  398. package/dist/docs/reference/model/Bounds2Data.md +44 -0
  399. package/dist/docs/reference/model/Bounds2Input.md +19 -0
  400. package/dist/docs/reference/model/Bounds3-type.md +125 -0
  401. package/dist/docs/reference/model/Bounds3Data.md +44 -0
  402. package/dist/docs/reference/model/Bounds3Input.md +19 -0
  403. package/dist/docs/reference/model/BoxEdge.md +1 -1
  404. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  405. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  406. package/dist/docs/reference/model/BoxOptions.md +10 -10
  407. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  408. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  409. package/dist/docs/reference/model/CircleOptions.md +3 -3
  410. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
  411. package/dist/docs/reference/model/Computed.md +6 -1
  412. package/dist/docs/reference/model/ComputedValue.md +5 -1
  413. package/dist/docs/reference/model/Contour.md +6 -4
  414. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  415. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  416. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  417. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  418. package/dist/docs/reference/model/CylinderOptions.md +3 -3
  419. package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
  420. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  421. package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
  422. package/dist/docs/reference/model/EllipseOptions.md +3 -3
  423. package/dist/docs/reference/model/EndTreatments.md +1 -1
  424. package/dist/docs/reference/model/ExtrudeOptions.md +6 -6
  425. package/dist/docs/reference/model/FinalizedModel.md +20 -10
  426. package/dist/docs/reference/model/FinalizedPart.md +1 -1
  427. package/dist/docs/reference/model/Frame3.md +6 -6
  428. package/dist/docs/reference/model/GenerateCallback.md +5 -1
  429. package/dist/docs/reference/model/GenerateContext.md +5 -1
  430. package/dist/docs/reference/model/GeneratedPart.md +5 -1
  431. package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
  432. package/dist/docs/reference/model/GenerationError.md +5 -1
  433. package/dist/docs/reference/model/GeometryResolution.md +5 -5
  434. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  435. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  436. package/dist/docs/reference/model/GridPatternOptions.md +12 -5
  437. package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
  438. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +4 -3
  439. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
  440. package/dist/docs/reference/model/HullOptions.md +5 -5
  441. package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
  442. package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
  443. package/dist/docs/reference/model/ImplicitOptions.md +6 -6
  444. package/dist/docs/reference/model/InternalThreadCutterOptions.md +5 -4
  445. package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
  446. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
  447. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +34 -0
  448. package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
  449. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
  450. package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
  451. package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
  452. package/dist/docs/reference/model/LinearPatternOptions.md +13 -5
  453. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  454. package/dist/docs/reference/model/LoftOptions.md +1 -1
  455. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  456. package/dist/docs/reference/model/LoftStation.md +3 -3
  457. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  458. package/dist/docs/reference/model/ModelProgram.md +5 -1
  459. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  460. package/dist/docs/reference/model/NumericArray.md +8 -1
  461. package/dist/docs/reference/model/PartGeometry.md +5 -1
  462. package/dist/docs/reference/model/PartOptions.md +5 -1
  463. package/dist/docs/reference/model/Path2-type.md +196 -0
  464. package/dist/docs/reference/model/Path2Data.md +50 -0
  465. package/dist/docs/reference/model/Path2Input.md +20 -0
  466. package/dist/docs/reference/model/Path3-type.md +196 -0
  467. package/dist/docs/reference/model/Path3Data.md +50 -0
  468. package/dist/docs/reference/model/Path3Input.md +20 -0
  469. package/dist/docs/reference/model/PathLocation.md +69 -0
  470. package/dist/docs/reference/model/PathNormalGuide.md +6 -5
  471. package/dist/docs/reference/model/PathOptions.md +38 -0
  472. package/dist/docs/reference/model/PathPatternOptions.md +4 -3
  473. package/dist/docs/reference/model/PathResamplingOptions.md +83 -0
  474. package/dist/docs/reference/model/PatternSource.md +2 -1
  475. package/dist/docs/reference/model/Pivot2Options.md +2 -1
  476. package/dist/docs/reference/model/Pivot3Options.md +2 -1
  477. package/dist/docs/reference/model/PlaneOptions.md +3 -3
  478. package/dist/docs/reference/model/PolygonData.md +3 -2
  479. package/dist/docs/reference/model/PolygonOptions.md +8 -8
  480. package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +8 -7
  481. package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +42 -20
  482. package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
  483. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
  484. package/dist/docs/reference/model/Profile.md +4 -2
  485. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  486. package/dist/docs/reference/model/ProfileContour2.md +4 -2
  487. package/dist/docs/reference/model/ProfileSpan2.md +3 -3
  488. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
  489. package/dist/docs/reference/model/RadialPatternOptions.md +18 -22
  490. package/dist/docs/reference/model/RadialSizing.md +1 -1
  491. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  492. package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
  493. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  494. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  495. package/dist/docs/reference/model/RectangleOptions.md +10 -10
  496. package/dist/docs/reference/model/RegionData.md +2 -2
  497. package/dist/docs/reference/model/RegularPolygonOptions.md +5 -5
  498. package/dist/docs/reference/model/RevolveOptions.md +9 -4
  499. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  500. package/dist/docs/reference/model/Section.md +20 -12
  501. package/dist/docs/reference/model/SectionHullOptions.md +5 -5
  502. package/dist/docs/reference/model/SectionInspection.md +10 -10
  503. package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
  504. package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
  505. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  506. package/dist/docs/reference/model/Solid.md +31 -7
  507. package/dist/docs/reference/model/SolidInspection.md +7 -7
  508. package/dist/docs/reference/model/{SolidRayHit.md → SolidSegmentHit.md} +6 -6
  509. package/dist/docs/reference/model/SphereOptions.md +3 -3
  510. package/dist/docs/reference/model/StarOptions.md +10 -10
  511. package/dist/docs/reference/model/{StrokePathCap.md → StrokeCap.md} +3 -3
  512. package/dist/docs/reference/model/{StrokePathJoin.md → StrokeJoin.md} +3 -3
  513. package/dist/docs/reference/model/StrokeOptions.md +6 -6
  514. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  515. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  516. package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
  517. package/dist/docs/reference/model/SweepOptions.md +6 -6
  518. package/dist/docs/reference/model/SweepOrientation.md +7 -7
  519. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  520. package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
  521. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
  522. package/dist/docs/reference/model/ThreadHandedness.md +2 -1
  523. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
  524. package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
  525. package/dist/docs/reference/model/ThreadProfile.md +4 -3
  526. package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
  527. package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
  528. package/dist/docs/reference/model/ThreadedNutOptions.md +5 -4
  529. package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
  530. package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
  531. package/dist/docs/reference/model/ThreadedRodOptions.md +5 -4
  532. package/dist/docs/reference/model/TorusOptions.md +8 -8
  533. package/dist/docs/reference/model/Transform2-type.md +6 -5
  534. package/dist/docs/reference/model/Transform2Data.md +16 -0
  535. package/dist/docs/reference/model/Transform2Input.md +4 -3
  536. package/dist/docs/reference/model/Transform3-type.md +6 -5
  537. package/dist/docs/reference/model/Transform3Data.md +19 -0
  538. package/dist/docs/reference/model/Transform3Input.md +4 -3
  539. package/dist/docs/reference/model/TriangleMesh.md +1 -1
  540. package/dist/docs/reference/model/TriangleMeshAnalysis.md +4 -4
  541. package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
  542. package/dist/docs/reference/model/TubeOptions.md +8 -8
  543. package/dist/docs/reference/model/Vector2-type.md +6 -5
  544. package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
  545. package/dist/docs/reference/model/Vector2Input.md +4 -3
  546. package/dist/docs/reference/model/Vector3-type.md +6 -5
  547. package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
  548. package/dist/docs/reference/model/Vector3Input.md +4 -3
  549. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  550. package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
  551. package/dist/docs/reference/model/anchor.md +2 -1
  552. package/dist/docs/reference/model/bounds2.md +36 -0
  553. package/dist/docs/reference/model/bounds3.md +36 -0
  554. package/dist/docs/reference/model/box.md +4 -4
  555. package/dist/docs/reference/model/castSegment.md +40 -0
  556. package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
  557. package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
  558. package/dist/docs/reference/model/categories/bounds.md +36 -0
  559. package/dist/docs/reference/model/categories/contracts.md +4 -2
  560. package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
  561. package/dist/docs/reference/model/categories/explicit-profiles.md +7 -5
  562. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
  563. package/dist/docs/reference/model/categories/generation.md +11 -2
  564. package/dist/docs/reference/model/categories/hinges.md +38 -0
  565. package/dist/docs/reference/model/categories/inspection.md +12 -6
  566. package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
  567. package/dist/docs/reference/model/categories/paths.md +41 -0
  568. package/dist/docs/reference/model/categories/primitives.md +10 -4
  569. package/dist/docs/reference/model/categories/resolution.md +4 -2
  570. package/dist/docs/reference/model/categories/sections.md +12 -8
  571. package/dist/docs/reference/model/categories/threads.md +11 -8
  572. package/dist/docs/reference/model/categories/transforms-placement.md +23 -15
  573. package/dist/docs/reference/model/circle.md +1 -1
  574. package/dist/docs/reference/model/components.md +6 -6
  575. package/dist/docs/reference/model/compose.md +1 -1
  576. package/dist/docs/reference/model/cylinder.md +1 -1
  577. package/dist/docs/reference/model/distance.md +1 -1
  578. package/dist/docs/reference/model/ellipse.md +1 -1
  579. package/dist/docs/reference/model/extrude.md +3 -3
  580. package/dist/docs/reference/model/generate.md +5 -1
  581. package/dist/docs/reference/model/gridPattern.md +5 -4
  582. package/dist/docs/reference/model/heightfield.md +5 -2
  583. package/dist/docs/reference/model/hull.md +1 -1
  584. package/dist/docs/reference/model/immutableBuffer.md +5 -1
  585. package/dist/docs/reference/model/immutableMesh.md +5 -1
  586. package/dist/docs/reference/model/implicit.md +3 -3
  587. package/dist/docs/reference/model/inspectSection.md +1 -1
  588. package/dist/docs/reference/model/inspectSolid.md +1 -1
  589. package/dist/docs/reference/model/internalThreadCutter.md +5 -4
  590. package/dist/docs/reference/model/intersect.md +1 -1
  591. package/dist/docs/reference/model/isEmpty.md +1 -1
  592. package/dist/docs/reference/model/knuckleHinge.md +47 -0
  593. package/dist/docs/reference/model/linearPattern.md +5 -4
  594. package/dist/docs/reference/model/loft.md +1 -1
  595. package/dist/docs/reference/model/matchProfiles.md +2 -2
  596. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  597. package/dist/docs/reference/model/path2.md +54 -0
  598. package/dist/docs/reference/model/path3.md +49 -0
  599. package/dist/docs/reference/model/pathPattern.md +14 -12
  600. package/dist/docs/reference/model/polygon.md +8 -5
  601. package/dist/docs/reference/model/preflightInternalThreadCutter.md +9 -3
  602. package/dist/docs/reference/model/preflightThreadedNut.md +9 -3
  603. package/dist/docs/reference/model/preflightThreadedRod.md +9 -3
  604. package/dist/docs/reference/model/radialPattern.md +6 -37
  605. package/dist/docs/reference/model/rectangle.md +7 -4
  606. package/dist/docs/reference/model/regularPolygon.md +1 -1
  607. package/dist/docs/reference/model/revolve.md +5 -4
  608. package/dist/docs/reference/model/solidFromMesh.md +1 -1
  609. package/dist/docs/reference/model/sphere.md +1 -1
  610. package/dist/docs/reference/model/split.md +1 -1
  611. package/dist/docs/reference/model/splitByPlane.md +1 -1
  612. package/dist/docs/reference/model/star.md +4 -4
  613. package/dist/docs/reference/model/stroke.md +8 -8
  614. package/dist/docs/reference/model/svgPathSection.md +1 -1
  615. package/dist/docs/reference/model/svgSection.md +1 -1
  616. package/dist/docs/reference/model/sweep.md +7 -7
  617. package/dist/docs/reference/model/textSection.md +1 -1
  618. package/dist/docs/reference/model/threadRidge.md +3 -2
  619. package/dist/docs/reference/model/threadedNut.md +5 -4
  620. package/dist/docs/reference/model/threadedRod.md +5 -4
  621. package/dist/docs/reference/model/torus.md +3 -3
  622. package/dist/docs/reference/model/transform2.md +14 -7
  623. package/dist/docs/reference/model/transform3.md +16 -7
  624. package/dist/docs/reference/model/tube.md +3 -3
  625. package/dist/docs/reference/model/union.md +1 -1
  626. package/dist/docs/reference/model/vector2.md +10 -2
  627. package/dist/docs/reference/model/vector3.md +10 -2
  628. package/dist/docs/reference/model.md +17 -9
  629. package/dist/docs/reference/text/Bounds2Data.md +34 -0
  630. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
  631. package/dist/docs/reference/text/Vector2Data.md +7 -0
  632. package/dist/docs/reference/text/VectorFont.md +2 -2
  633. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  634. package/dist/docs/reference/text/VectorTextArcBaseline.md +3 -3
  635. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  636. package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
  637. package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
  638. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  639. package/dist/docs/reference/text/categories/font-preparation.md +8 -6
  640. package/dist/docs/reference/text/prepareVectorFont.md +2 -2
  641. package/dist/docs/reference/text.md +4 -2
  642. package/dist/engine/construction-operations.js +31 -14
  643. package/dist/engine/execution.js +39 -8
  644. package/dist/engine/extrusion-finishing.js +1 -1
  645. package/dist/engine/index.js +6 -1
  646. package/dist/engine/inspection-operations.js +13 -11
  647. package/dist/engine/knuckle-hinge-operation.js +85 -0
  648. package/dist/engine/loft-operations.js +35 -14
  649. package/dist/engine/mechanical-operations.js +3 -1
  650. package/dist/engine/model-summary.js +8 -5
  651. package/dist/engine/modeling-context.js +8 -1
  652. package/dist/engine/native/material-components.js +305 -0
  653. package/dist/engine/native/regions.js +2 -1
  654. package/dist/engine/native/threads.js +3 -3
  655. package/dist/engine/native/transforms.js +5 -7
  656. package/dist/engine/operation-environment.js +2 -2
  657. package/dist/engine/pattern-operations.js +1 -1
  658. package/dist/engine/placement.js +2 -2
  659. package/dist/engine/primitive-anchors.js +17 -17
  660. package/dist/engine/primitive-operations.js +1 -1
  661. package/dist/engine/primitive-profiles.js +7 -7
  662. package/dist/engine/profile-mesh.js +7 -7
  663. package/dist/engine/recipe-realization.js +10 -2
  664. package/dist/engine/section-operations.js +33 -8
  665. package/dist/engine/session-snapshot.js +14 -4
  666. package/dist/engine/session.js +10 -5
  667. package/dist/engine/shape-anchors.js +3 -3
  668. package/dist/engine/transform-operations.js +27 -27
  669. package/dist/geometry/anchors.js +40 -33
  670. package/dist/geometry/bounds-value.js +93 -0
  671. package/dist/geometry/bounds.js +10 -8
  672. package/dist/geometry/curves/sampling.js +15 -16
  673. package/dist/geometry/edge-finishing.js +1 -1
  674. package/dist/geometry/errors.js +1 -0
  675. package/dist/geometry/extrusion.js +13 -16
  676. package/dist/geometry/heightfield.js +12 -1
  677. package/dist/geometry/index.js +12 -11
  678. package/dist/geometry/loft/loft-simple-mesh.js +6 -6
  679. package/dist/geometry/loft/loft.js +22 -13
  680. package/dist/geometry/math/immutable-value.js +1 -1
  681. package/dist/geometry/math/vector-value.js +11 -3
  682. package/dist/geometry/math/vector2.js +1 -0
  683. package/dist/geometry/math/vector3.js +1 -0
  684. package/dist/geometry/mechanical/gear-motion.js +3 -3
  685. package/dist/geometry/mechanical/gears.js +38 -38
  686. package/dist/geometry/mechanical/index.js +4 -3
  687. package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
  688. package/dist/geometry/mechanical/standards.js +1 -1
  689. package/dist/geometry/mechanical/thread-helices.js +2 -3
  690. package/dist/geometry/mechanical/thread-mesh-plan.js +11 -7
  691. package/dist/geometry/mechanical/thread-mesh.js +7 -7
  692. package/dist/geometry/mechanical/thread-profiles.js +5 -5
  693. package/dist/geometry/mechanical/thread-solids.js +31 -6
  694. package/dist/geometry/mechanical/thread-surface.js +1 -1
  695. package/dist/geometry/mechanical/threads.js +8 -8
  696. package/dist/geometry/mesh/mesh-centroid.js +1 -0
  697. package/dist/geometry/mesh/mesh-planar.js +25 -27
  698. package/dist/geometry/mesh/mesh-quality.js +5 -5
  699. package/dist/geometry/mesh/mesh-signature.js +13 -13
  700. package/dist/geometry/mesh/mesh-solid.js +8 -7
  701. package/dist/geometry/mesh/mesh.js +4 -15
  702. package/dist/geometry/paths/closest-point.js +8 -19
  703. package/dist/geometry/paths/frames.js +42 -11
  704. package/dist/geometry/paths/helix.js +17 -6
  705. package/dist/geometry/paths/path-value.js +268 -0
  706. package/dist/geometry/paths/planar.js +36 -23
  707. package/dist/geometry/paths/resampling.js +27 -5
  708. package/dist/geometry/patterns/placements.js +100 -27
  709. package/dist/geometry/patterns.js +5 -3
  710. package/dist/geometry/polygon-clipping.js +17 -0
  711. package/dist/geometry/profiles/contour.js +7 -6
  712. package/dist/geometry/profiles/matched.js +5 -4
  713. package/dist/geometry/profiles/profiles.js +4 -4
  714. package/dist/geometry/profiles/rectangle.js +14 -5
  715. package/dist/geometry/profiles/side-profile.js +9 -7
  716. package/dist/geometry/profiles/span-sampling.js +1 -1
  717. package/dist/geometry/resolution.js +34 -34
  718. package/dist/geometry/revolve/revolve-mesh.js +12 -7
  719. package/dist/geometry/stroke-path.js +12 -27
  720. package/dist/geometry/svg/fill.js +7 -21
  721. package/dist/geometry/svg-import.js +31 -25
  722. package/dist/geometry/sweeps/options.js +5 -4
  723. package/dist/geometry/sweeps/orientation.js +5 -5
  724. package/dist/geometry/sweeps/stations.js +10 -10
  725. package/dist/geometry/sweeps/sweep-closed.js +2 -2
  726. package/dist/geometry/sweeps/sweep-mesh.js +9 -3
  727. package/dist/geometry/sweeps/sweep-open.js +1 -1
  728. package/dist/geometry/sweeps/validation.js +4 -7
  729. package/dist/geometry/text-fitting.js +1 -0
  730. package/dist/geometry/transform-geometry.js +7 -14
  731. package/dist/geometry/transform-matrix.js +1 -1
  732. package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
  733. package/dist/index.js +3 -1
  734. package/dist/model/execution-binding.js +3 -3
  735. package/dist/model/geometry-recipes.js +1 -1
  736. package/dist/model/immutable-generation-data.js +62 -10
  737. package/dist/model/knuckle-hinge.js +1 -0
  738. package/dist/model/operations.js +79 -26
  739. package/dist/model/recipe-declaration.js +21 -7
  740. package/dist/model/shape-handles.js +2 -1
  741. package/dist/text/index.js +15 -9
  742. package/dist/text/vector-text-layout.js +31 -26
  743. package/package.json +1 -1
  744. package/dist/docs/reference/geometry/Bounds2.md +0 -39
  745. package/dist/docs/reference/geometry/Bounds3.md +0 -39
  746. package/dist/docs/reference/geometry/ClosestPointOnPathOptions.md +0 -34
  747. package/dist/docs/reference/geometry/ClosestPointOnPathResult.md +0 -65
  748. package/dist/docs/reference/geometry/Path2.md +0 -14
  749. package/dist/docs/reference/geometry/Path3.md +0 -14
  750. package/dist/docs/reference/geometry/PrimitivePlacement.md +0 -31
  751. package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +0 -83
  752. package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
  753. package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
  754. package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
  755. package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
  756. package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
  757. package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
  758. package/dist/docs/reference/geometry/closestPointOnPath.md +0 -110
  759. package/dist/docs/reference/geometry/cumulativePathLengths.md +0 -33
  760. package/dist/docs/reference/geometry/measureTriangleMesh.md +0 -55
  761. package/dist/docs/reference/geometry/pathLength.md +0 -33
  762. package/dist/docs/reference/geometry/strokePathRegion.md +0 -63
  763. package/dist/docs/reference/geometry/transformContour.md +0 -42
  764. package/dist/docs/reference/geometry/transformPath2.md +0 -40
  765. package/dist/docs/reference/geometry/transformPath3.md +0 -33
  766. package/dist/docs/reference/model/Bounds2.md +0 -39
  767. package/dist/docs/reference/model/Bounds3.md +0 -39
  768. package/dist/docs/reference/model/Path2.md +0 -20
  769. package/dist/docs/reference/model/Transform2Matrix.md +0 -15
  770. package/dist/docs/reference/model/Transform3Matrix.md +0 -18
  771. package/dist/docs/reference/model/rayCast.md +0 -40
  772. package/dist/docs/reference/model/toTriangleMesh.md +0 -27
  773. package/dist/docs/reference/text/Bounds2.md +0 -34
  774. package/dist/docs/reference/text/Vector2Tuple.md +0 -7
  775. package/dist/geometry/paths/path.js +0 -32
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "formatVersion": 1,
3
3
  "packageName": "@metamesh/modeling",
4
- "packageVersion": "0.14.0",
4
+ "packageVersion": "0.16.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
  {
@@ -288,7 +366,7 @@
288
366
  "engine",
289
367
  "host-lifecycle",
290
368
  "ModelEngineOptions",
291
- "locateFile",
369
+ "wasmUrl",
292
370
  "limits"
293
371
  ]
294
372
  },
@@ -498,7 +576,7 @@
498
576
  "sizing",
499
577
  "alignTo",
500
578
  "limits",
501
- "minimumSegments",
579
+ "minSegments",
502
580
  "segments",
503
581
  "resolution"
504
582
  ]
@@ -536,13 +614,29 @@
536
614
  ]
537
615
  },
538
616
  {
539
- "id": "modeling/reference/geometry/Anchor3",
617
+ "id": "modeling/reference/geometry/anchor3",
618
+ "title": "anchor3",
619
+ "summary": "Constructs a normalized immutable attachment anchor.",
620
+ "path": "reference/geometry/anchor3.md",
621
+ "importPath": "@metamesh/modeling/geometry",
622
+ "availability": "Pure TypeScript · Node and browsers",
623
+ "canonical": "https://metamesh.studio/docs/reference/geometry/anchor3",
624
+ "keywords": [
625
+ "reference",
626
+ "function",
627
+ "geometry",
628
+ "transforms-math",
629
+ "anchor3"
630
+ ]
631
+ },
632
+ {
633
+ "id": "modeling/reference/geometry/Anchor3-type",
540
634
  "title": "Anchor3",
541
635
  "summary": "An attachment pose on a solid or assembly.",
542
- "path": "reference/geometry/Anchor3.md",
636
+ "path": "reference/geometry/Anchor3-type.md",
543
637
  "importPath": "@metamesh/modeling/geometry",
544
638
  "availability": "Pure TypeScript · Node and browsers",
545
- "canonical": "https://metamesh.studio/docs/reference/geometry/Anchor3",
639
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Anchor3-type",
546
640
  "keywords": [
547
641
  "reference",
548
642
  "interface",
@@ -619,8 +713,8 @@
619
713
  "kind",
620
714
  "center",
621
715
  "radius",
622
- "startDegrees",
623
- "sweepDegrees"
716
+ "startAngle",
717
+ "sweepAngle"
624
718
  ]
625
719
  },
626
720
  {
@@ -642,43 +736,43 @@
642
736
  "radius",
643
737
  "xAxis",
644
738
  "yAxis",
645
- "startDegrees",
646
- "sweepDegrees"
739
+ "startAngle",
740
+ "sweepAngle"
647
741
  ]
648
742
  },
649
743
  {
650
- "id": "modeling/reference/geometry/attachTransform",
651
- "title": "attachTransform",
744
+ "id": "modeling/reference/geometry/attachmentTransform3",
745
+ "title": "attachmentTransform3",
652
746
  "summary": "Builds the transform that moves a source anchor onto a target anchor.",
653
- "path": "reference/geometry/attachTransform.md",
747
+ "path": "reference/geometry/attachmentTransform3.md",
654
748
  "importPath": "@metamesh/modeling/geometry",
655
749
  "availability": "Pure TypeScript · Node and browsers",
656
- "canonical": "https://metamesh.studio/docs/reference/geometry/attachTransform",
750
+ "canonical": "https://metamesh.studio/docs/reference/geometry/attachmentTransform3",
657
751
  "keywords": [
658
752
  "reference",
659
753
  "function",
660
754
  "geometry",
661
755
  "transforms-math",
662
- "attachTransform"
756
+ "attachmentTransform3"
663
757
  ]
664
758
  },
665
759
  {
666
- "id": "modeling/reference/geometry/AttachTransformOptions",
667
- "title": "AttachTransformOptions",
760
+ "id": "modeling/reference/geometry/AttachOptions",
761
+ "title": "AttachOptions",
668
762
  "summary": "Options controlling how one anchor is attached to another.",
669
- "path": "reference/geometry/AttachTransformOptions.md",
763
+ "path": "reference/geometry/AttachOptions.md",
670
764
  "importPath": "@metamesh/modeling/geometry",
671
765
  "availability": "Pure TypeScript · Node and browsers",
672
- "canonical": "https://metamesh.studio/docs/reference/geometry/AttachTransformOptions",
766
+ "canonical": "https://metamesh.studio/docs/reference/geometry/AttachOptions",
673
767
  "keywords": [
674
768
  "reference",
675
769
  "interface",
676
770
  "geometry",
677
771
  "transforms-math",
678
- "AttachTransformOptions",
772
+ "AttachOptions",
679
773
  "alignment",
680
774
  "gap",
681
- "spinRadians",
775
+ "spin",
682
776
  "tolerance"
683
777
  ]
684
778
  },
@@ -699,41 +793,149 @@
699
793
  ]
700
794
  },
701
795
  {
702
- "id": "modeling/reference/geometry/Bounds2",
796
+ "id": "modeling/reference/geometry/bounds2",
797
+ "title": "bounds2",
798
+ "summary": "Snapshots finite ordered XY bounds in millimetres as an immutable fluent value.",
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",
703
813
  "title": "Bounds2",
704
- "summary": "Axis-aligned bounds in two-dimensional model space.",
705
- "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",
706
816
  "importPath": "@metamesh/modeling/geometry",
707
817
  "availability": "Pure TypeScript · Node and browsers",
708
- "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds2",
818
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds2-type",
709
819
  "keywords": [
710
820
  "reference",
711
821
  "interface",
712
822
  "geometry",
713
823
  "bounds-layout",
714
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",
715
847
  "max",
716
848
  "min"
717
849
  ]
718
850
  },
719
851
  {
720
- "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/bounds3",
869
+ "title": "bounds3",
870
+ "summary": "Snapshots finite ordered XYZ bounds in millimetres as an immutable fluent value.",
871
+ "path": "reference/geometry/bounds3.md",
872
+ "importPath": "@metamesh/modeling/geometry",
873
+ "availability": "Pure TypeScript · Node and browsers",
874
+ "canonical": "https://metamesh.studio/docs/reference/geometry/bounds3",
875
+ "keywords": [
876
+ "reference",
877
+ "function",
878
+ "geometry",
879
+ "bounds-layout",
880
+ "bounds3"
881
+ ]
882
+ },
883
+ {
884
+ "id": "modeling/reference/geometry/Bounds3-type",
721
885
  "title": "Bounds3",
722
- "summary": "Axis-aligned bounds in three-dimensional model space.",
723
- "path": "reference/geometry/Bounds3.md",
886
+ "summary": "Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability.",
887
+ "path": "reference/geometry/Bounds3-type.md",
724
888
  "importPath": "@metamesh/modeling/geometry",
725
889
  "availability": "Pure TypeScript · Node and browsers",
726
- "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3",
890
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3-type",
727
891
  "keywords": [
728
892
  "reference",
729
893
  "interface",
730
894
  "geometry",
731
895
  "bounds-layout",
732
896
  "Bounds3",
897
+ "size",
898
+ "center",
899
+ "containsBounds",
900
+ "toData",
901
+ "max",
902
+ "min"
903
+ ]
904
+ },
905
+ {
906
+ "id": "modeling/reference/geometry/Bounds3Data",
907
+ "title": "Bounds3Data",
908
+ "summary": "Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods.",
909
+ "path": "reference/geometry/Bounds3Data.md",
910
+ "importPath": "@metamesh/modeling/geometry",
911
+ "availability": "Pure TypeScript · Node and browsers",
912
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3Data",
913
+ "keywords": [
914
+ "reference",
915
+ "interface",
916
+ "geometry",
917
+ "bounds-layout",
918
+ "Bounds3Data",
733
919
  "max",
734
920
  "min"
735
921
  ]
736
922
  },
923
+ {
924
+ "id": "modeling/reference/geometry/Bounds3Input",
925
+ "title": "Bounds3Input",
926
+ "summary": "An immutable XYZ bounds value or its plain min/max representation.",
927
+ "path": "reference/geometry/Bounds3Input.md",
928
+ "importPath": "@metamesh/modeling/geometry",
929
+ "availability": "Pure TypeScript · Node and browsers",
930
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Bounds3Input",
931
+ "keywords": [
932
+ "reference",
933
+ "type-alias",
934
+ "geometry",
935
+ "bounds-layout",
936
+ "Bounds3Input"
937
+ ]
938
+ },
737
939
  {
738
940
  "id": "modeling/reference/geometry/boundsCenter",
739
941
  "title": "boundsCenter",
@@ -972,39 +1174,7 @@
972
1174
  "center",
973
1175
  "size",
974
1176
  "treatment",
975
- "placement"
976
- ]
977
- },
978
- {
979
- "id": "modeling/reference/geometry/buildHelicalThreadRidgeMesh",
980
- "title": "buildHelicalThreadRidgeMesh",
981
- "summary": "Builds closed thread-ridge components with every profile locked to the shaft's radial/axial frame. The mesh is intended for union with its minor-envelope cylinder and never owns WASM objects.",
982
- "path": "reference/geometry/buildHelicalThreadRidgeMesh.md",
983
- "importPath": "@metamesh/modeling/geometry",
984
- "availability": "Pure TypeScript · Node and browsers",
985
- "canonical": "https://metamesh.studio/docs/reference/geometry/buildHelicalThreadRidgeMesh",
986
- "keywords": [
987
- "reference",
988
- "function",
989
- "geometry",
990
- "mechanical",
991
- "buildHelicalThreadRidgeMesh"
992
- ]
993
- },
994
- {
995
- "id": "modeling/reference/geometry/buildHelicalThreadSolidMesh",
996
- "title": "buildHelicalThreadSolidMesh",
997
- "summary": "Builds one closed threaded cylinder without a ridge/core Boolean seam.",
998
- "path": "reference/geometry/buildHelicalThreadSolidMesh.md",
999
- "importPath": "@metamesh/modeling/geometry",
1000
- "availability": "Pure TypeScript · Node and browsers",
1001
- "canonical": "https://metamesh.studio/docs/reference/geometry/buildHelicalThreadSolidMesh",
1002
- "keywords": [
1003
- "reference",
1004
- "function",
1005
- "geometry",
1006
- "mechanical",
1007
- "buildHelicalThreadSolidMesh"
1177
+ "attachment"
1008
1178
  ]
1009
1179
  },
1010
1180
  {
@@ -1046,7 +1216,7 @@
1046
1216
  },
1047
1217
  {
1048
1218
  "id": "modeling/reference/geometry/categories/bounds-layout",
1049
- "title": "Bounds & Layout",
1219
+ "title": "Bounds and layout",
1050
1220
  "summary": "Measure finite bounds, test positioned containment, and fit or arrange geometry.",
1051
1221
  "path": "reference/geometry/categories/bounds-layout.md",
1052
1222
  "importPath": "@metamesh/modeling/geometry",
@@ -1057,7 +1227,7 @@
1057
1227
  "category",
1058
1228
  "geometry",
1059
1229
  "bounds-layout",
1060
- "Bounds & Layout"
1230
+ "Bounds and layout"
1061
1231
  ]
1062
1232
  },
1063
1233
  {
@@ -1079,7 +1249,7 @@
1079
1249
  {
1080
1250
  "id": "modeling/reference/geometry/categories/mechanical",
1081
1251
  "title": "Mechanical foundations",
1082
- "summary": "Resolve gears, fastener standards, thread profiles, fit, and predictable allocations.",
1252
+ "summary": "Resolve gears, knuckle joints, fastener standards, thread profiles, fit, and predictable allocations.",
1083
1253
  "path": "reference/geometry/categories/mechanical.md",
1084
1254
  "importPath": "@metamesh/modeling/geometry",
1085
1255
  "availability": "Pure TypeScript · Node and browsers",
@@ -1110,7 +1280,7 @@
1110
1280
  },
1111
1281
  {
1112
1282
  "id": "modeling/reference/geometry/categories/pattern-placement",
1113
- "title": "Pattern Placement",
1283
+ "title": "Pattern placement",
1114
1284
  "summary": "Calculate pure linear, radial, grid, and path transforms.",
1115
1285
  "path": "reference/geometry/categories/pattern-placement.md",
1116
1286
  "importPath": "@metamesh/modeling/geometry",
@@ -1121,7 +1291,7 @@
1121
1291
  "category",
1122
1292
  "geometry",
1123
1293
  "pattern-placement",
1124
- "Pattern Placement"
1294
+ "Pattern placement"
1125
1295
  ]
1126
1296
  },
1127
1297
  {
@@ -1291,8 +1461,8 @@
1291
1461
  "circularSegments",
1292
1462
  "maxChordError",
1293
1463
  "maxSegmentLength",
1294
- "maximumSegments",
1295
- "minimumSegments"
1464
+ "maxSegments",
1465
+ "minSegments"
1296
1466
  ]
1297
1467
  },
1298
1468
  {
@@ -1330,64 +1500,10 @@
1330
1500
  "ClearanceHoleFit"
1331
1501
  ]
1332
1502
  },
1333
- {
1334
- "id": "modeling/reference/geometry/closestPointOnPath",
1335
- "title": "closestPointOnPath",
1336
- "summary": "Finds the closest position anywhere on an open XY path or closed contour.",
1337
- "path": "reference/geometry/closestPointOnPath.md",
1338
- "importPath": "@metamesh/modeling/geometry",
1339
- "availability": "Pure TypeScript · Node and browsers",
1340
- "canonical": "https://metamesh.studio/docs/reference/geometry/closestPointOnPath",
1341
- "keywords": [
1342
- "reference",
1343
- "function",
1344
- "geometry",
1345
- "curves-paths",
1346
- "closestPointOnPath"
1347
- ]
1348
- },
1349
- {
1350
- "id": "modeling/reference/geometry/ClosestPointOnPathOptions",
1351
- "title": "ClosestPointOnPathOptions",
1352
- "summary": "Topology and work ceiling for a closest-point query on a sampled path.",
1353
- "path": "reference/geometry/ClosestPointOnPathOptions.md",
1354
- "importPath": "@metamesh/modeling/geometry",
1355
- "availability": "Pure TypeScript · Node and browsers",
1356
- "canonical": "https://metamesh.studio/docs/reference/geometry/ClosestPointOnPathOptions",
1357
- "keywords": [
1358
- "reference",
1359
- "interface",
1360
- "geometry",
1361
- "curves-paths",
1362
- "ClosestPointOnPathOptions",
1363
- "closed",
1364
- "limits"
1365
- ]
1366
- },
1367
- {
1368
- "id": "modeling/reference/geometry/ClosestPointOnPathResult",
1369
- "title": "ClosestPointOnPathResult",
1370
- "summary": "Closest position on a sampled path, measured in millimetres.",
1371
- "path": "reference/geometry/ClosestPointOnPathResult.md",
1372
- "importPath": "@metamesh/modeling/geometry",
1373
- "availability": "Pure TypeScript · Node and browsers",
1374
- "canonical": "https://metamesh.studio/docs/reference/geometry/ClosestPointOnPathResult",
1375
- "keywords": [
1376
- "reference",
1377
- "interface",
1378
- "geometry",
1379
- "curves-paths",
1380
- "ClosestPointOnPathResult",
1381
- "point",
1382
- "distance",
1383
- "edgeIndex",
1384
- "fraction"
1385
- ]
1386
- },
1387
1503
  {
1388
1504
  "id": "modeling/reference/geometry/closeToAxis",
1389
1505
  "title": "closeToAxis",
1390
- "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.",
1506
+ "summary": "Closes an open, strictly upward [radius, height] side outline to the radius-zero axis.",
1391
1507
  "path": "reference/geometry/closeToAxis.md",
1392
1508
  "importPath": "@metamesh/modeling/geometry",
1393
1509
  "availability": "Pure TypeScript · Node and browsers",
@@ -1503,7 +1619,7 @@
1503
1619
  {
1504
1620
  "id": "modeling/reference/geometry/computeParallelTransportFrames",
1505
1621
  "title": "computeParallelTransportFrames",
1506
- "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.",
1622
+ "summary": "Builds rotation-minimizing frames by parallel-transporting the previous normal.",
1507
1623
  "path": "reference/geometry/computeParallelTransportFrames.md",
1508
1624
  "importPath": "@metamesh/modeling/geometry",
1509
1625
  "availability": "Pure TypeScript · Node and browsers",
@@ -1519,7 +1635,7 @@
1519
1635
  {
1520
1636
  "id": "modeling/reference/geometry/computeTriangleMeshCentroid",
1521
1637
  "title": "computeTriangleMeshCentroid",
1522
- "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.",
1638
+ "summary": "Computes the uniform-density volume centroid of an oriented closed solid, including cavity shells.",
1523
1639
  "path": "reference/geometry/computeTriangleMeshCentroid.md",
1524
1640
  "importPath": "@metamesh/modeling/geometry",
1525
1641
  "availability": "Pure TypeScript · Node and browsers",
@@ -1532,6 +1648,22 @@
1532
1648
  "computeTriangleMeshCentroid"
1533
1649
  ]
1534
1650
  },
1651
+ {
1652
+ "id": "modeling/reference/geometry/computeTriangleMeshSignature",
1653
+ "title": "computeTriangleMeshSignature",
1654
+ "summary": "Creates an order-independent regression signature for a manufacturing mesh.",
1655
+ "path": "reference/geometry/computeTriangleMeshSignature.md",
1656
+ "importPath": "@metamesh/modeling/geometry",
1657
+ "availability": "Pure TypeScript · Node and browsers",
1658
+ "canonical": "https://metamesh.studio/docs/reference/geometry/computeTriangleMeshSignature",
1659
+ "keywords": [
1660
+ "reference",
1661
+ "function",
1662
+ "geometry",
1663
+ "meshes",
1664
+ "computeTriangleMeshSignature"
1665
+ ]
1666
+ },
1535
1667
  {
1536
1668
  "id": "modeling/reference/geometry/containsBounds",
1537
1669
  "title": "containsBounds",
@@ -1551,7 +1683,7 @@
1551
1683
  {
1552
1684
  "id": "modeling/reference/geometry/Contour",
1553
1685
  "title": "Contour",
1554
- "summary": "A closed two-dimensional boundary whose first point is not repeated at the end.",
1686
+ "summary": "A sampled closed two-dimensional boundary whose first point is not repeated at the end.",
1555
1687
  "path": "reference/geometry/Contour.md",
1556
1688
  "importPath": "@metamesh/modeling/geometry",
1557
1689
  "availability": "Pure TypeScript · Node and browsers",
@@ -1703,54 +1835,6 @@
1703
1835
  "CorrespondingProfileStation"
1704
1836
  ]
1705
1837
  },
1706
- {
1707
- "id": "modeling/reference/geometry/createAnchor3",
1708
- "title": "createAnchor3",
1709
- "summary": "Constructs a normalized immutable attachment anchor.",
1710
- "path": "reference/geometry/createAnchor3.md",
1711
- "importPath": "@metamesh/modeling/geometry",
1712
- "availability": "Pure TypeScript · Node and browsers",
1713
- "canonical": "https://metamesh.studio/docs/reference/geometry/createAnchor3",
1714
- "keywords": [
1715
- "reference",
1716
- "function",
1717
- "geometry",
1718
- "transforms-math",
1719
- "createAnchor3"
1720
- ]
1721
- },
1722
- {
1723
- "id": "modeling/reference/geometry/createThreadProfile",
1724
- "title": "createThreadProfile",
1725
- "summary": "Creates a periodic thread profile for the shaft-locked helical mesher.",
1726
- "path": "reference/geometry/createThreadProfile.md",
1727
- "importPath": "@metamesh/modeling/geometry",
1728
- "availability": "Pure TypeScript · Node and browsers",
1729
- "canonical": "https://metamesh.studio/docs/reference/geometry/createThreadProfile",
1730
- "keywords": [
1731
- "reference",
1732
- "function",
1733
- "geometry",
1734
- "mechanical",
1735
- "createThreadProfile"
1736
- ]
1737
- },
1738
- {
1739
- "id": "modeling/reference/geometry/createTriangleMeshSignature",
1740
- "title": "createTriangleMeshSignature",
1741
- "summary": "Creates an order-independent regression signature for a manufacturing mesh.",
1742
- "path": "reference/geometry/createTriangleMeshSignature.md",
1743
- "importPath": "@metamesh/modeling/geometry",
1744
- "availability": "Pure TypeScript · Node and browsers",
1745
- "canonical": "https://metamesh.studio/docs/reference/geometry/createTriangleMeshSignature",
1746
- "keywords": [
1747
- "reference",
1748
- "function",
1749
- "geometry",
1750
- "meshes",
1751
- "createTriangleMeshSignature"
1752
- ]
1753
- },
1754
1838
  {
1755
1839
  "id": "modeling/reference/geometry/cross2",
1756
1840
  "title": "cross2",
@@ -1825,22 +1909,6 @@
1825
1909
  "end"
1826
1910
  ]
1827
1911
  },
1828
- {
1829
- "id": "modeling/reference/geometry/cumulativePathLengths",
1830
- "title": "cumulativePathLengths",
1831
- "summary": "Returns cumulative arc length for finite points under maxPathPoints (default 100000); rejects overflowing length.",
1832
- "path": "reference/geometry/cumulativePathLengths.md",
1833
- "importPath": "@metamesh/modeling/geometry",
1834
- "availability": "Pure TypeScript · Node and browsers",
1835
- "canonical": "https://metamesh.studio/docs/reference/geometry/cumulativePathLengths",
1836
- "keywords": [
1837
- "reference",
1838
- "variable",
1839
- "geometry",
1840
- "curves-paths",
1841
- "cumulativePathLengths"
1842
- ]
1843
- },
1844
1912
  {
1845
1913
  "id": "modeling/reference/geometry/Curve2",
1846
1914
  "title": "Curve2",
@@ -1889,7 +1957,7 @@
1889
1957
  "CurveSamplingOptions",
1890
1958
  "segments",
1891
1959
  "resolution",
1892
- "maximumVertices",
1960
+ "maxVertices",
1893
1961
  "limits"
1894
1962
  ]
1895
1963
  },
@@ -1962,7 +2030,7 @@
1962
2030
  "radius",
1963
2031
  "height",
1964
2032
  "face",
1965
- "angleDegrees",
2033
+ "angle",
1966
2034
  "center",
1967
2035
  "origin"
1968
2036
  ]
@@ -1998,7 +2066,7 @@
1998
2066
  "mechanical",
1999
2067
  "CylindricalGearDimensions",
2000
2068
  "addendum",
2001
- "angularPitch",
2069
+ "angularPitchRadians",
2002
2070
  "backlash",
2003
2071
  "baseRadius",
2004
2072
  "dedendum",
@@ -2072,7 +2140,7 @@
2072
2140
  "drivenDirection",
2073
2141
  "driven",
2074
2142
  "ratio",
2075
- "requiredDrivenHelixAngleDegrees"
2143
+ "requiredDrivenHelixAngle"
2076
2144
  ]
2077
2145
  },
2078
2146
  {
@@ -2147,9 +2215,9 @@
2147
2215
  "CylindricalGearSpec",
2148
2216
  "backlash",
2149
2217
  "clearanceFactor",
2150
- "helixAngleDegrees",
2218
+ "helixAngle",
2151
2219
  "module",
2152
- "pressureAngleDegrees",
2220
+ "pressureAngle",
2153
2221
  "toothCount"
2154
2222
  ]
2155
2223
  },
@@ -2350,7 +2418,7 @@
2350
2418
  {
2351
2419
  "id": "modeling/reference/geometry/extrudeMesh",
2352
2420
  "title": "extrudeMesh",
2353
- "summary": "Linearly extrudes one simple profile along +Z with robust ear-clipped caps.",
2421
+ "summary": "Linearly extrudes one simple profile along +Z with robust ear-clipped caps. Path2 profiles must be closed; raw point collections have an implicit closing edge.",
2354
2422
  "path": "reference/geometry/extrudeMesh.md",
2355
2423
  "importPath": "@metamesh/modeling/geometry",
2356
2424
  "availability": "Pure TypeScript · Node and browsers",
@@ -2384,7 +2452,7 @@
2384
2452
  "limits",
2385
2453
  "resolution",
2386
2454
  "scaleTop",
2387
- "twistDegrees"
2455
+ "twist"
2388
2456
  ]
2389
2457
  },
2390
2458
  {
@@ -2405,7 +2473,7 @@
2405
2473
  "limits",
2406
2474
  "resolution",
2407
2475
  "scaleTop",
2408
- "twistDegrees"
2476
+ "twist"
2409
2477
  ]
2410
2478
  },
2411
2479
  {
@@ -2445,7 +2513,7 @@
2445
2513
  {
2446
2514
  "id": "modeling/reference/geometry/fitTextLayout",
2447
2515
  "title": "fitTextLayout",
2448
- "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.",
2516
+ "summary": "Uniformly fits visible text ink inside finite XY bounds, centering it on the target.",
2449
2517
  "path": "reference/geometry/fitTextLayout.md",
2450
2518
  "importPath": "@metamesh/modeling/geometry",
2451
2519
  "availability": "Pure TypeScript · Node and browsers",
@@ -2564,8 +2632,8 @@
2564
2632
  "circularSegments",
2565
2633
  "maxChordError",
2566
2634
  "maxSegmentLength",
2567
- "maximumSegments",
2568
- "minimumSegments"
2635
+ "maxSegments",
2636
+ "minSegments"
2569
2637
  ]
2570
2638
  },
2571
2639
  {
@@ -2608,19 +2676,19 @@
2608
2676
  ]
2609
2677
  },
2610
2678
  {
2611
- "id": "modeling/reference/geometry/getMetricClearanceHole",
2612
- "title": "getMetricClearanceHole",
2679
+ "id": "modeling/reference/geometry/getMetricClearanceHoleDiameter",
2680
+ "title": "getMetricClearanceHoleDiameter",
2613
2681
  "summary": "Returns one recommended metric clearance-hole diameter in millimetres.",
2614
- "path": "reference/geometry/getMetricClearanceHole.md",
2682
+ "path": "reference/geometry/getMetricClearanceHoleDiameter.md",
2615
2683
  "importPath": "@metamesh/modeling/geometry",
2616
2684
  "availability": "Pure TypeScript · Node and browsers",
2617
- "canonical": "https://metamesh.studio/docs/reference/geometry/getMetricClearanceHole",
2685
+ "canonical": "https://metamesh.studio/docs/reference/geometry/getMetricClearanceHoleDiameter",
2618
2686
  "keywords": [
2619
2687
  "reference",
2620
2688
  "function",
2621
2689
  "geometry",
2622
2690
  "mechanical",
2623
- "getMetricClearanceHole"
2691
+ "getMetricClearanceHoleDiameter"
2624
2692
  ]
2625
2693
  },
2626
2694
  {
@@ -2642,7 +2710,7 @@
2642
2710
  {
2643
2711
  "id": "modeling/reference/geometry/GridPatternOptions",
2644
2712
  "title": "GridPatternOptions",
2645
- "summary": "XY or XYZ grid with X varying fastest. The first item starts at the local origin.",
2713
+ "summary": "XY or XYZ grid with X varying fastest. The first item starts at the local origin. Dimension 2 restricts counts and spacing to XY; any frame must preserve the XY plane.",
2646
2714
  "path": "reference/geometry/GridPatternOptions.md",
2647
2715
  "importPath": "@metamesh/modeling/geometry",
2648
2716
  "availability": "Pure TypeScript · Node and browsers",
@@ -2658,7 +2726,7 @@
2658
2726
  {
2659
2727
  "id": "modeling/reference/geometry/gridPatternTransforms",
2660
2728
  "title": "gridPatternTransforms",
2661
- "summary": "XY or XYZ grid placements in millimetres, in X-fastest order.",
2729
+ "summary": "Spatial XYZ matrices for an XY or XYZ grid, in X-fastest order.",
2662
2730
  "path": "reference/geometry/gridPatternTransforms.md",
2663
2731
  "importPath": "@metamesh/modeling/geometry",
2664
2732
  "availability": "Pure TypeScript · Node and browsers",
@@ -2674,7 +2742,7 @@
2674
2742
  {
2675
2743
  "id": "modeling/reference/geometry/heightfieldMesh",
2676
2744
  "title": "heightfieldMesh",
2677
- "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.",
2745
+ "summary": "Builds a closed indexed mesh from a rectilinear top, matched boundary walls, and flat base.",
2678
2746
  "path": "reference/geometry/heightfieldMesh.md",
2679
2747
  "importPath": "@metamesh/modeling/geometry",
2680
2748
  "availability": "Pure TypeScript · Node and browsers",
@@ -2722,7 +2790,7 @@
2722
2790
  {
2723
2791
  "id": "modeling/reference/geometry/HeightfieldPreflight",
2724
2792
  "title": "HeightfieldPreflight",
2725
- "summary": "Predictable rectilinear-grid allocation facts; this does not evaluate the height callback.",
2793
+ "summary": "Exact grid and mesh buffer allocation counts resolved without evaluating the height callback.",
2726
2794
  "path": "reference/geometry/HeightfieldPreflight.md",
2727
2795
  "importPath": "@metamesh/modeling/geometry",
2728
2796
  "availability": "Pure TypeScript · Node and browsers",
@@ -2739,6 +2807,22 @@
2739
2807
  "byteCount"
2740
2808
  ]
2741
2809
  },
2810
+ {
2811
+ "id": "modeling/reference/geometry/helicalThreadRidgeMesh",
2812
+ "title": "helicalThreadRidgeMesh",
2813
+ "summary": "Builds closed thread-ridge components with every profile locked to the shaft's radial/axial frame. The mesh is intended for union with its minor-envelope cylinder and never owns WASM objects.",
2814
+ "path": "reference/geometry/helicalThreadRidgeMesh.md",
2815
+ "importPath": "@metamesh/modeling/geometry",
2816
+ "availability": "Pure TypeScript · Node and browsers",
2817
+ "canonical": "https://metamesh.studio/docs/reference/geometry/helicalThreadRidgeMesh",
2818
+ "keywords": [
2819
+ "reference",
2820
+ "function",
2821
+ "geometry",
2822
+ "mechanical",
2823
+ "helicalThreadRidgeMesh"
2824
+ ]
2825
+ },
2742
2826
  {
2743
2827
  "id": "modeling/reference/geometry/HelicalThreadRidgeMeshOptions",
2744
2828
  "title": "HelicalThreadRidgeMeshOptions",
@@ -2758,13 +2842,29 @@
2758
2842
  "length",
2759
2843
  "limits",
2760
2844
  "majorDiameter",
2761
- "phaseDegrees",
2845
+ "phase",
2762
2846
  "profile",
2763
2847
  "resolution",
2764
2848
  "starts",
2765
2849
  "tolerance"
2766
2850
  ]
2767
2851
  },
2852
+ {
2853
+ "id": "modeling/reference/geometry/helicalThreadSolidMesh",
2854
+ "title": "helicalThreadSolidMesh",
2855
+ "summary": "Builds one closed threaded cylinder without a ridge/core Boolean seam.",
2856
+ "path": "reference/geometry/helicalThreadSolidMesh.md",
2857
+ "importPath": "@metamesh/modeling/geometry",
2858
+ "availability": "Pure TypeScript · Node and browsers",
2859
+ "canonical": "https://metamesh.studio/docs/reference/geometry/helicalThreadSolidMesh",
2860
+ "keywords": [
2861
+ "reference",
2862
+ "function",
2863
+ "geometry",
2864
+ "mechanical",
2865
+ "helicalThreadSolidMesh"
2866
+ ]
2867
+ },
2768
2868
  {
2769
2869
  "id": "modeling/reference/geometry/HelicalThreadSolidMeshOptions",
2770
2870
  "title": "HelicalThreadSolidMeshOptions",
@@ -2784,7 +2884,7 @@
2784
2884
  "length",
2785
2885
  "limits",
2786
2886
  "majorDiameter",
2787
- "phaseDegrees",
2887
+ "phase",
2788
2888
  "profile",
2789
2889
  "resolution",
2790
2890
  "starts",
@@ -2801,7 +2901,7 @@
2801
2901
  {
2802
2902
  "id": "modeling/reference/geometry/HelicalThreadSolidMeshPreflight",
2803
2903
  "title": "HelicalThreadSolidMeshPreflight",
2804
- "summary": "Conservative allocation facts resolved before constructing a direct thread solid mesh.",
2904
+ "summary": "Selected sampling counts and conservative allocation estimates, before thread mesh construction.",
2805
2905
  "path": "reference/geometry/HelicalThreadSolidMeshPreflight.md",
2806
2906
  "importPath": "@metamesh/modeling/geometry",
2807
2907
  "availability": "Pure TypeScript · Node and browsers",
@@ -2852,7 +2952,7 @@
2852
2952
  "handedness",
2853
2953
  "length",
2854
2954
  "limits",
2855
- "phaseDegrees",
2955
+ "phase",
2856
2956
  "profile",
2857
2957
  "resolution",
2858
2958
  "starts",
@@ -2883,7 +2983,7 @@
2883
2983
  {
2884
2984
  "id": "modeling/reference/geometry/isGeometryError",
2885
2985
  "title": "isGeometryError",
2886
- "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.",
2986
+ "summary": "Recognizes structured geometry errors from separately bundled Modeling copies in the same realm.",
2887
2987
  "path": "reference/geometry/isGeometryError.md",
2888
2988
  "importPath": "@metamesh/modeling/geometry",
2889
2989
  "availability": "Pure TypeScript · Node and browsers",
@@ -2913,61 +3013,164 @@
2913
3013
  ]
2914
3014
  },
2915
3015
  {
2916
- "id": "modeling/reference/geometry/layoutRow",
2917
- "title": "layoutRow",
2918
- "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 [].",
2919
- "path": "reference/geometry/layoutRow.md",
3016
+ "id": "modeling/reference/geometry/KnuckleHingeBaseSpec",
3017
+ "title": "KnuckleHingeBaseSpec",
3018
+ "summary": "Shared knuckle-joint dimensions in millimetres, independent of mounting geometry.",
3019
+ "path": "reference/geometry/KnuckleHingeBaseSpec.md",
2920
3020
  "importPath": "@metamesh/modeling/geometry",
2921
3021
  "availability": "Pure TypeScript · Node and browsers",
2922
- "canonical": "https://metamesh.studio/docs/reference/geometry/layoutRow",
3022
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeBaseSpec",
2923
3023
  "keywords": [
2924
3024
  "reference",
2925
- "function",
3025
+ "interface",
2926
3026
  "geometry",
2927
- "bounds-layout",
2928
- "layoutRow"
3027
+ "mechanical",
3028
+ "KnuckleHingeBaseSpec",
3029
+ "length",
3030
+ "knuckleCount",
3031
+ "barrelDiameter",
3032
+ "pinDiameter",
3033
+ "radialClearance",
3034
+ "axialGap"
2929
3035
  ]
2930
3036
  },
2931
3037
  {
2932
- "id": "modeling/reference/geometry/length2",
2933
- "title": "length2",
2934
- "summary": "Returns Euclidean vector length in the vector's coordinate units.",
2935
- "path": "reference/geometry/length2.md",
3038
+ "id": "modeling/reference/geometry/KnuckleHingeDimensions",
3039
+ "title": "KnuckleHingeDimensions",
3040
+ "summary": "Immutable joint layout and conservative faceted envelopes; no engine initialization.",
3041
+ "path": "reference/geometry/KnuckleHingeDimensions.md",
2936
3042
  "importPath": "@metamesh/modeling/geometry",
2937
3043
  "availability": "Pure TypeScript · Node and browsers",
2938
- "canonical": "https://metamesh.studio/docs/reference/geometry/length2",
3044
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeDimensions",
2939
3045
  "keywords": [
2940
3046
  "reference",
2941
- "variable",
3047
+ "interface",
2942
3048
  "geometry",
2943
- "transforms-math",
2944
- "length2"
3049
+ "mechanical",
3050
+ "KnuckleHingeDimensions",
3051
+ "spec",
3052
+ "barrelRadius",
3053
+ "pinRadius",
3054
+ "boreRadius",
3055
+ "boreOuterRadius",
3056
+ "minimumBarrelWall",
3057
+ "knuckleLength",
3058
+ "segments",
3059
+ "knuckles",
3060
+ "pin",
3061
+ "axis"
2945
3062
  ]
2946
3063
  },
2947
3064
  {
2948
- "id": "modeling/reference/geometry/length3",
2949
- "title": "length3",
2950
- "summary": "Returns Euclidean vector length in the vector's coordinate units.",
2951
- "path": "reference/geometry/length3.md",
3065
+ "id": "modeling/reference/geometry/KnuckleHingeInterval",
3066
+ "title": "KnuckleHingeInterval",
3067
+ "summary": "One equal-length barrel interval in the shared pin-centered frame.",
3068
+ "path": "reference/geometry/KnuckleHingeInterval.md",
2952
3069
  "importPath": "@metamesh/modeling/geometry",
2953
3070
  "availability": "Pure TypeScript · Node and browsers",
2954
- "canonical": "https://metamesh.studio/docs/reference/geometry/length3",
3071
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeInterval",
2955
3072
  "keywords": [
2956
3073
  "reference",
2957
- "variable",
3074
+ "interface",
2958
3075
  "geometry",
2959
- "transforms-math",
2960
- "length3"
3076
+ "mechanical",
3077
+ "KnuckleHingeInterval",
3078
+ "side",
3079
+ "start",
3080
+ "length"
2961
3081
  ]
2962
3082
  },
2963
3083
  {
2964
- "id": "modeling/reference/geometry/lerp2",
2965
- "title": "lerp2",
2966
- "summary": "Linearly interpolates two vectors; `t` is dimensionless and may extrapolate.",
2967
- "path": "reference/geometry/lerp2.md",
3084
+ "id": "modeling/reference/geometry/KnuckleHingeSamplingOptions",
3085
+ "title": "KnuckleHingeSamplingOptions",
3086
+ "summary": "Shared circular sampling for barrels, shafts, and bores.",
3087
+ "path": "reference/geometry/KnuckleHingeSamplingOptions.md",
2968
3088
  "importPath": "@metamesh/modeling/geometry",
2969
3089
  "availability": "Pure TypeScript · Node and browsers",
2970
- "canonical": "https://metamesh.studio/docs/reference/geometry/lerp2",
3090
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeSamplingOptions",
3091
+ "keywords": [
3092
+ "reference",
3093
+ "interface",
3094
+ "geometry",
3095
+ "mechanical",
3096
+ "KnuckleHingeSamplingOptions",
3097
+ "segments",
3098
+ "resolution",
3099
+ "limits"
3100
+ ]
3101
+ },
3102
+ {
3103
+ "id": "modeling/reference/geometry/KnuckleHingeSpec",
3104
+ "title": "KnuckleHingeSpec",
3105
+ "summary": "Knuckle-joint construction modes and interval ownership.",
3106
+ "path": "reference/geometry/KnuckleHingeSpec.md",
3107
+ "importPath": "@metamesh/modeling/geometry",
3108
+ "availability": "Pure TypeScript · Node and browsers",
3109
+ "canonical": "https://metamesh.studio/docs/reference/geometry/KnuckleHingeSpec",
3110
+ "keywords": [
3111
+ "reference",
3112
+ "type-alias",
3113
+ "geometry",
3114
+ "mechanical",
3115
+ "KnuckleHingeSpec"
3116
+ ]
3117
+ },
3118
+ {
3119
+ "id": "modeling/reference/geometry/layoutRow",
3120
+ "title": "layoutRow",
3121
+ "summary": "Returns immutable translations for a +X row of finite XYZ bounds with a nonnegative gap.",
3122
+ "path": "reference/geometry/layoutRow.md",
3123
+ "importPath": "@metamesh/modeling/geometry",
3124
+ "availability": "Pure TypeScript · Node and browsers",
3125
+ "canonical": "https://metamesh.studio/docs/reference/geometry/layoutRow",
3126
+ "keywords": [
3127
+ "reference",
3128
+ "function",
3129
+ "geometry",
3130
+ "bounds-layout",
3131
+ "layoutRow"
3132
+ ]
3133
+ },
3134
+ {
3135
+ "id": "modeling/reference/geometry/length2",
3136
+ "title": "length2",
3137
+ "summary": "Returns Euclidean vector length in the vector's coordinate units.",
3138
+ "path": "reference/geometry/length2.md",
3139
+ "importPath": "@metamesh/modeling/geometry",
3140
+ "availability": "Pure TypeScript · Node and browsers",
3141
+ "canonical": "https://metamesh.studio/docs/reference/geometry/length2",
3142
+ "keywords": [
3143
+ "reference",
3144
+ "variable",
3145
+ "geometry",
3146
+ "transforms-math",
3147
+ "length2"
3148
+ ]
3149
+ },
3150
+ {
3151
+ "id": "modeling/reference/geometry/length3",
3152
+ "title": "length3",
3153
+ "summary": "Returns Euclidean vector length in the vector's coordinate units.",
3154
+ "path": "reference/geometry/length3.md",
3155
+ "importPath": "@metamesh/modeling/geometry",
3156
+ "availability": "Pure TypeScript · Node and browsers",
3157
+ "canonical": "https://metamesh.studio/docs/reference/geometry/length3",
3158
+ "keywords": [
3159
+ "reference",
3160
+ "variable",
3161
+ "geometry",
3162
+ "transforms-math",
3163
+ "length3"
3164
+ ]
3165
+ },
3166
+ {
3167
+ "id": "modeling/reference/geometry/lerp2",
3168
+ "title": "lerp2",
3169
+ "summary": "Linearly interpolates two vectors; `t` is dimensionless and may extrapolate.",
3170
+ "path": "reference/geometry/lerp2.md",
3171
+ "importPath": "@metamesh/modeling/geometry",
3172
+ "availability": "Pure TypeScript · Node and browsers",
3173
+ "canonical": "https://metamesh.studio/docs/reference/geometry/lerp2",
2971
3174
  "keywords": [
2972
3175
  "reference",
2973
3176
  "variable",
@@ -2995,7 +3198,7 @@
2995
3198
  {
2996
3199
  "id": "modeling/reference/geometry/LinearPatternOptions",
2997
3200
  "title": "LinearPatternOptions",
2998
- "summary": "Equal linear intervals determined by exactly two of count, spacing and total length.",
3201
+ "summary": "Equal linear intervals determined by exactly two of count, spacing and total length. Dimension defaults to 3; Section patterns use 2 and accept XY vector directions.",
2999
3202
  "path": "reference/geometry/LinearPatternOptions.md",
3000
3203
  "importPath": "@metamesh/modeling/geometry",
3001
3204
  "availability": "Pure TypeScript · Node and browsers",
@@ -3011,7 +3214,7 @@
3011
3214
  {
3012
3215
  "id": "modeling/reference/geometry/linearPatternTransforms",
3013
3216
  "title": "linearPatternTransforms",
3014
- "summary": "Equal linear placements in millimetres, including the original at the origin.",
3217
+ "summary": "Spatial XYZ matrix placements in millimetres, including the original at the origin.",
3015
3218
  "path": "reference/geometry/linearPatternTransforms.md",
3016
3219
  "importPath": "@metamesh/modeling/geometry",
3017
3220
  "availability": "Pure TypeScript · Node and browsers",
@@ -3151,7 +3354,7 @@
3151
3354
  {
3152
3355
  "id": "modeling/reference/geometry/matchProfiles",
3153
3356
  "title": "matchProfiles",
3154
- "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.",
3357
+ "summary": "Explicitly matches identified component/contour/span topology across a family.",
3155
3358
  "path": "reference/geometry/matchProfiles.md",
3156
3359
  "importPath": "@metamesh/modeling/geometry",
3157
3360
  "availability": "Pure TypeScript · Node and browsers",
@@ -3198,22 +3401,6 @@
3198
3401
  "measureInternalCylindricalGearPairMotion"
3199
3402
  ]
3200
3403
  },
3201
- {
3202
- "id": "modeling/reference/geometry/measureTriangleMesh",
3203
- "title": "measureTriangleMesh",
3204
- "summary": "Measures bounds, surface area, and signed volume without changing the mesh.",
3205
- "path": "reference/geometry/measureTriangleMesh.md",
3206
- "importPath": "@metamesh/modeling/geometry",
3207
- "availability": "Pure TypeScript · Node and browsers",
3208
- "canonical": "https://metamesh.studio/docs/reference/geometry/measureTriangleMesh",
3209
- "keywords": [
3210
- "reference",
3211
- "function",
3212
- "geometry",
3213
- "meshes",
3214
- "measureTriangleMesh"
3215
- ]
3216
- },
3217
3404
  {
3218
3405
  "id": "modeling/reference/geometry/meshBounds",
3219
3406
  "title": "meshBounds",
@@ -3249,7 +3436,7 @@
3249
3436
  {
3250
3437
  "id": "modeling/reference/geometry/MetricFastenerSize",
3251
3438
  "title": "MetricFastenerSize",
3252
- "summary": "Metric fastener sizes included in the first mechanical standards table.",
3439
+ "summary": "Supported metric fastener sizes.",
3253
3440
  "path": "reference/geometry/MetricFastenerSize.md",
3254
3441
  "importPath": "@metamesh/modeling/geometry",
3255
3442
  "availability": "Pure TypeScript · Node and browsers",
@@ -3363,7 +3550,7 @@
3363
3550
  {
3364
3551
  "id": "modeling/reference/geometry/normalize2",
3365
3552
  "title": "normalize2",
3366
- "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.",
3553
+ "summary": "Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).",
3367
3554
  "path": "reference/geometry/normalize2.md",
3368
3555
  "importPath": "@metamesh/modeling/geometry",
3369
3556
  "availability": "Pure TypeScript · Node and browsers",
@@ -3379,7 +3566,7 @@
3379
3566
  {
3380
3567
  "id": "modeling/reference/geometry/normalize3",
3381
3568
  "title": "normalize3",
3382
- "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.",
3569
+ "summary": "Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).",
3383
3570
  "path": "reference/geometry/normalize3.md",
3384
3571
  "importPath": "@metamesh/modeling/geometry",
3385
3572
  "availability": "Pure TypeScript · Node and browsers",
@@ -3457,35 +3644,155 @@
3457
3644
  ]
3458
3645
  },
3459
3646
  {
3460
- "id": "modeling/reference/geometry/Path2",
3647
+ "id": "modeling/reference/geometry/path2",
3648
+ "title": "path2",
3649
+ "summary": "Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.",
3650
+ "path": "reference/geometry/path2.md",
3651
+ "importPath": "@metamesh/modeling/geometry",
3652
+ "availability": "Pure TypeScript · Node and browsers",
3653
+ "canonical": "https://metamesh.studio/docs/reference/geometry/path2",
3654
+ "keywords": [
3655
+ "reference",
3656
+ "function",
3657
+ "geometry",
3658
+ "curves-paths",
3659
+ "path2"
3660
+ ]
3661
+ },
3662
+ {
3663
+ "id": "modeling/reference/geometry/Path2-type",
3461
3664
  "title": "Path2",
3462
- "summary": "An ordered, open sequence of two-dimensional points.",
3463
- "path": "reference/geometry/Path2.md",
3665
+ "summary": "Immutable directed XY polyline. Closure is explicit and does not imply a filled Section.",
3666
+ "path": "reference/geometry/Path2-type.md",
3667
+ "importPath": "@metamesh/modeling/geometry",
3668
+ "availability": "Pure TypeScript · Node and browsers",
3669
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Path2-type",
3670
+ "keywords": [
3671
+ "reference",
3672
+ "interface",
3673
+ "geometry",
3674
+ "curves-paths",
3675
+ "Path2",
3676
+ "dimension",
3677
+ "closed",
3678
+ "toData",
3679
+ "length",
3680
+ "bounds",
3681
+ "closestPoint",
3682
+ "transform",
3683
+ "reverse",
3684
+ "resample"
3685
+ ]
3686
+ },
3687
+ {
3688
+ "id": "modeling/reference/geometry/Path2Data",
3689
+ "title": "Path2Data",
3690
+ "summary": "Complete plain XY path representation, including topology and empty-path dimensional identity.",
3691
+ "path": "reference/geometry/Path2Data.md",
3692
+ "importPath": "@metamesh/modeling/geometry",
3693
+ "availability": "Pure TypeScript · Node and browsers",
3694
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Path2Data",
3695
+ "keywords": [
3696
+ "reference",
3697
+ "interface",
3698
+ "geometry",
3699
+ "curves-paths",
3700
+ "Path2Data",
3701
+ "dimension",
3702
+ "points",
3703
+ "closed"
3704
+ ]
3705
+ },
3706
+ {
3707
+ "id": "modeling/reference/geometry/Path2Input",
3708
+ "title": "Path2Input",
3709
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
3710
+ "path": "reference/geometry/Path2Input.md",
3464
3711
  "importPath": "@metamesh/modeling/geometry",
3465
3712
  "availability": "Pure TypeScript · Node and browsers",
3466
- "canonical": "https://metamesh.studio/docs/reference/geometry/Path2",
3713
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Path2Input",
3467
3714
  "keywords": [
3468
3715
  "reference",
3469
3716
  "type-alias",
3470
3717
  "geometry",
3471
3718
  "curves-paths",
3472
- "Path2"
3719
+ "Path2Input"
3720
+ ]
3721
+ },
3722
+ {
3723
+ "id": "modeling/reference/geometry/path3",
3724
+ "title": "path3",
3725
+ "summary": "Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam, allocation and error rules as path2. Analytic curves must be sampled explicitly first.",
3726
+ "path": "reference/geometry/path3.md",
3727
+ "importPath": "@metamesh/modeling/geometry",
3728
+ "availability": "Pure TypeScript · Node and browsers",
3729
+ "canonical": "https://metamesh.studio/docs/reference/geometry/path3",
3730
+ "keywords": [
3731
+ "reference",
3732
+ "function",
3733
+ "geometry",
3734
+ "curves-paths",
3735
+ "path3"
3473
3736
  ]
3474
3737
  },
3475
3738
  {
3476
- "id": "modeling/reference/geometry/Path3",
3739
+ "id": "modeling/reference/geometry/Path3-type",
3477
3740
  "title": "Path3",
3478
- "summary": "An ordered, open sequence of three-dimensional points.",
3479
- "path": "reference/geometry/Path3.md",
3741
+ "summary": "Immutable directed XYZ polyline; it represents sampled edges, not an analytic curve.",
3742
+ "path": "reference/geometry/Path3-type.md",
3743
+ "importPath": "@metamesh/modeling/geometry",
3744
+ "availability": "Pure TypeScript · Node and browsers",
3745
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Path3-type",
3746
+ "keywords": [
3747
+ "reference",
3748
+ "interface",
3749
+ "geometry",
3750
+ "curves-paths",
3751
+ "Path3",
3752
+ "dimension",
3753
+ "closed",
3754
+ "toData",
3755
+ "length",
3756
+ "bounds",
3757
+ "closestPoint",
3758
+ "transform",
3759
+ "reverse",
3760
+ "resample"
3761
+ ]
3762
+ },
3763
+ {
3764
+ "id": "modeling/reference/geometry/Path3Data",
3765
+ "title": "Path3Data",
3766
+ "summary": "Complete plain XYZ path representation, including topology and empty-path dimensional identity.",
3767
+ "path": "reference/geometry/Path3Data.md",
3768
+ "importPath": "@metamesh/modeling/geometry",
3769
+ "availability": "Pure TypeScript · Node and browsers",
3770
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Path3Data",
3771
+ "keywords": [
3772
+ "reference",
3773
+ "interface",
3774
+ "geometry",
3775
+ "curves-paths",
3776
+ "Path3Data",
3777
+ "dimension",
3778
+ "points",
3779
+ "closed"
3780
+ ]
3781
+ },
3782
+ {
3783
+ "id": "modeling/reference/geometry/Path3Input",
3784
+ "title": "Path3Input",
3785
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
3786
+ "path": "reference/geometry/Path3Input.md",
3480
3787
  "importPath": "@metamesh/modeling/geometry",
3481
3788
  "availability": "Pure TypeScript · Node and browsers",
3482
- "canonical": "https://metamesh.studio/docs/reference/geometry/Path3",
3789
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Path3Input",
3483
3790
  "keywords": [
3484
3791
  "reference",
3485
3792
  "type-alias",
3486
3793
  "geometry",
3487
3794
  "curves-paths",
3488
- "Path3"
3795
+ "Path3Input"
3489
3796
  ]
3490
3797
  },
3491
3798
  {
@@ -3508,19 +3815,23 @@
3508
3815
  ]
3509
3816
  },
3510
3817
  {
3511
- "id": "modeling/reference/geometry/pathLength",
3512
- "title": "pathLength",
3513
- "summary": "Returns total sampled 3D path length, or zero for an empty path.",
3514
- "path": "reference/geometry/pathLength.md",
3818
+ "id": "modeling/reference/geometry/PathLocation",
3819
+ "title": "PathLocation",
3820
+ "summary": "Nearest location on a sampled boundary, rather than inside a filled shape or on an analytic curve.",
3821
+ "path": "reference/geometry/PathLocation.md",
3515
3822
  "importPath": "@metamesh/modeling/geometry",
3516
3823
  "availability": "Pure TypeScript · Node and browsers",
3517
- "canonical": "https://metamesh.studio/docs/reference/geometry/pathLength",
3824
+ "canonical": "https://metamesh.studio/docs/reference/geometry/PathLocation",
3518
3825
  "keywords": [
3519
3826
  "reference",
3520
- "variable",
3827
+ "interface",
3521
3828
  "geometry",
3522
3829
  "curves-paths",
3523
- "pathLength"
3830
+ "PathLocation",
3831
+ "point",
3832
+ "distance",
3833
+ "edgeIndex",
3834
+ "fraction"
3524
3835
  ]
3525
3836
  },
3526
3837
  {
@@ -3539,6 +3850,24 @@
3539
3850
  "PathNormalGuide"
3540
3851
  ]
3541
3852
  },
3853
+ {
3854
+ "id": "modeling/reference/geometry/PathOptions",
3855
+ "title": "PathOptions",
3856
+ "summary": "Topology and allocation ceiling for an immutable sampled path.",
3857
+ "path": "reference/geometry/PathOptions.md",
3858
+ "importPath": "@metamesh/modeling/geometry",
3859
+ "availability": "Pure TypeScript · Node and browsers",
3860
+ "canonical": "https://metamesh.studio/docs/reference/geometry/PathOptions",
3861
+ "keywords": [
3862
+ "reference",
3863
+ "interface",
3864
+ "geometry",
3865
+ "curves-paths",
3866
+ "PathOptions",
3867
+ "closed",
3868
+ "limits"
3869
+ ]
3870
+ },
3542
3871
  {
3543
3872
  "id": "modeling/reference/geometry/PathPatternOptions",
3544
3873
  "title": "PathPatternOptions",
@@ -3561,7 +3890,7 @@
3561
3890
  {
3562
3891
  "id": "modeling/reference/geometry/pathPatternTransforms",
3563
3892
  "title": "pathPatternTransforms",
3564
- "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.",
3893
+ "summary": "Equal physical arc-length placements along a sampled XYZ path.",
3565
3894
  "path": "reference/geometry/pathPatternTransforms.md",
3566
3895
  "importPath": "@metamesh/modeling/geometry",
3567
3896
  "availability": "Pure TypeScript · Node and browsers",
@@ -3592,6 +3921,26 @@
3592
3921
  "tangent"
3593
3922
  ]
3594
3923
  },
3924
+ {
3925
+ "id": "modeling/reference/geometry/PathResamplingOptions",
3926
+ "title": "PathResamplingOptions",
3927
+ "summary": "Equal arc-length sampling; the path itself owns whether its closing edge is included.",
3928
+ "path": "reference/geometry/PathResamplingOptions.md",
3929
+ "importPath": "@metamesh/modeling/geometry",
3930
+ "availability": "Pure TypeScript · Node and browsers",
3931
+ "canonical": "https://metamesh.studio/docs/reference/geometry/PathResamplingOptions",
3932
+ "keywords": [
3933
+ "reference",
3934
+ "interface",
3935
+ "geometry",
3936
+ "curves-paths",
3937
+ "PathResamplingOptions",
3938
+ "resolution",
3939
+ "maxVertices",
3940
+ "limits",
3941
+ "segments"
3942
+ ]
3943
+ },
3595
3944
  {
3596
3945
  "id": "modeling/reference/geometry/Pivot2Options",
3597
3946
  "title": "Pivot2Options",
@@ -3656,16 +4005,16 @@
3656
4005
  "geometry",
3657
4006
  "meshes",
3658
4007
  "PlanarMeshOptimizationOptions",
3659
- "maximumFlipAttempts",
3660
- "maximumEdgeRevisits",
3661
- "maximumPatchTriangleCount",
3662
- "maximumProcessedTriangleCount",
3663
- "minimumPatchTriangleCount",
3664
- "triggerMaximumAspectRatio",
3665
- "triggerMaximumFanRatio",
3666
- "triggerMaximumVertexTriangleIncidence",
3667
- "triggerMinimumAngleDegrees",
3668
- "maximumTriangleCount",
4008
+ "maxFlipAttempts",
4009
+ "maxEdgeRevisits",
4010
+ "maxPatchTriangles",
4011
+ "maxProcessedTriangles",
4012
+ "minPatchTriangles",
4013
+ "triggerMaxAspectRatio",
4014
+ "triggerMaxFanRatio",
4015
+ "triggerMaxVertexTriangleIncidence",
4016
+ "triggerMinAngleDegrees",
4017
+ "maxTriangles",
3669
4018
  "tolerance"
3670
4019
  ]
3671
4020
  },
@@ -3728,7 +4077,7 @@
3728
4077
  {
3729
4078
  "id": "modeling/reference/geometry/PolygonData",
3730
4079
  "title": "PolygonData",
3731
- "summary": "One bounded two-dimensional polygon.",
4080
+ "summary": "One filled two-dimensional polygon with an exterior and optional holes.",
3732
4081
  "path": "reference/geometry/PolygonData.md",
3733
4082
  "importPath": "@metamesh/modeling/geometry",
3734
4083
  "availability": "Pure TypeScript · Node and browsers",
@@ -3758,7 +4107,7 @@
3758
4107
  "curves-paths",
3759
4108
  "PolylineResamplingOptions",
3760
4109
  "resolution",
3761
- "maximumVertices",
4110
+ "maxVertices",
3762
4111
  "limits",
3763
4112
  "segments",
3764
4113
  "closed"
@@ -3767,7 +4116,7 @@
3767
4116
  {
3768
4117
  "id": "modeling/reference/geometry/preflightHeightfield",
3769
4118
  "title": "preflightHeightfield",
3770
- "summary": "Checks grid dimensions, coordinate precision, and allocation bounds before evaluating heights.",
4119
+ "summary": "Checks grid options, Float32 axis precision, and output limits; returns exact mesh buffer counts.",
3771
4120
  "path": "reference/geometry/preflightHeightfield.md",
3772
4121
  "importPath": "@metamesh/modeling/geometry",
3773
4122
  "availability": "Pure TypeScript · Node and browsers",
@@ -3783,7 +4132,7 @@
3783
4132
  {
3784
4133
  "id": "modeling/reference/geometry/preflightHelicalThreadSolidMesh",
3785
4134
  "title": "preflightHelicalThreadSolidMesh",
3786
- "summary": "Validates a direct thread solid and returns its conservative allocation estimate without constructing vertex or index buffers.",
4135
+ "summary": "Checks thread dimensions, profile, end treatments, sampling, and conservative estimates against output limits.",
3787
4136
  "path": "reference/geometry/preflightHelicalThreadSolidMesh.md",
3788
4137
  "importPath": "@metamesh/modeling/geometry",
3789
4138
  "availability": "Pure TypeScript · Node and browsers",
@@ -3799,7 +4148,7 @@
3799
4148
  {
3800
4149
  "id": "modeling/reference/geometry/preflightInternalThreadCutter",
3801
4150
  "title": "preflightInternalThreadCutter",
3802
- "summary": "Preflights the exact extended mesh used by the internal thread cutter constructor.",
4151
+ "summary": "Resolves compensated cutter dimensions and checks extended mesh estimates against output limits.",
3803
4152
  "path": "reference/geometry/preflightInternalThreadCutter.md",
3804
4153
  "importPath": "@metamesh/modeling/geometry",
3805
4154
  "availability": "Pure TypeScript · Node and browsers",
@@ -3815,7 +4164,7 @@
3815
4164
  {
3816
4165
  "id": "modeling/reference/geometry/preflightSvgRegion",
3817
4166
  "title": "preflightSvgRegion",
3818
- "summary": "Preflights bounded SVG geometry without browser or Manifold dependencies.",
4167
+ "summary": "Parses and validates bounded SVG input, constructing its normalized sampled region and diagnostics.",
3819
4168
  "path": "reference/geometry/preflightSvgRegion.md",
3820
4169
  "importPath": "@metamesh/modeling/geometry",
3821
4170
  "availability": "Pure TypeScript · Node and browsers",
@@ -3831,7 +4180,7 @@
3831
4180
  {
3832
4181
  "id": "modeling/reference/geometry/preflightThreadedNut",
3833
4182
  "title": "preflightThreadedNut",
3834
- "summary": "Resolves a nut's exact body/cutter chamfer and preflights its extended thread mesh without allocating Manifold WASM objects.",
4183
+ "summary": "Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.",
3835
4184
  "path": "reference/geometry/preflightThreadedNut.md",
3836
4185
  "importPath": "@metamesh/modeling/geometry",
3837
4186
  "availability": "Pure TypeScript · Node and browsers",
@@ -3847,7 +4196,7 @@
3847
4196
  {
3848
4197
  "id": "modeling/reference/geometry/preflightThreadedRod",
3849
4198
  "title": "preflightThreadedRod",
3850
- "summary": "Preflights the exact compensated direct mesh used by the threaded rod constructor.",
4199
+ "summary": "Resolves compensated rod dimensions and checks conservative mesh estimates against output limits.",
3851
4200
  "path": "reference/geometry/preflightThreadedRod.md",
3852
4201
  "importPath": "@metamesh/modeling/geometry",
3853
4202
  "availability": "Pure TypeScript · Node and browsers",
@@ -3861,42 +4210,42 @@
3861
4210
  ]
3862
4211
  },
3863
4212
  {
3864
- "id": "modeling/reference/geometry/PrimitivePlacement",
3865
- "title": "PrimitivePlacement",
3866
- "summary": "Placement shared by solid and filled-section factories.",
3867
- "path": "reference/geometry/PrimitivePlacement.md",
4213
+ "id": "modeling/reference/geometry/PrimitiveAttachment",
4214
+ "title": "PrimitiveAttachment",
4215
+ "summary": "Anchor attachment shared by solid and filled-section factories.",
4216
+ "path": "reference/geometry/PrimitiveAttachment.md",
3868
4217
  "importPath": "@metamesh/modeling/geometry",
3869
4218
  "availability": "Pure TypeScript · Node and browsers",
3870
- "canonical": "https://metamesh.studio/docs/reference/geometry/PrimitivePlacement",
4219
+ "canonical": "https://metamesh.studio/docs/reference/geometry/PrimitiveAttachment",
3871
4220
  "keywords": [
3872
4221
  "reference",
3873
4222
  "interface",
3874
4223
  "geometry",
3875
4224
  "primitive-options",
3876
- "PrimitivePlacement",
3877
- "placement"
4225
+ "PrimitiveAttachment",
4226
+ "attachment"
3878
4227
  ]
3879
4228
  },
3880
4229
  {
3881
- "id": "modeling/reference/geometry/PrimitivePlacementOptions",
3882
- "title": "PrimitivePlacementOptions",
4230
+ "id": "modeling/reference/geometry/PrimitiveAttachmentOptions",
4231
+ "title": "PrimitiveAttachmentOptions",
3883
4232
  "summary": "Maps an explicit or named shape-local attachment anchor onto a world-space anchor.",
3884
- "path": "reference/geometry/PrimitivePlacementOptions.md",
4233
+ "path": "reference/geometry/PrimitiveAttachmentOptions.md",
3885
4234
  "importPath": "@metamesh/modeling/geometry",
3886
4235
  "availability": "Pure TypeScript · Node and browsers",
3887
- "canonical": "https://metamesh.studio/docs/reference/geometry/PrimitivePlacementOptions",
4236
+ "canonical": "https://metamesh.studio/docs/reference/geometry/PrimitiveAttachmentOptions",
3888
4237
  "keywords": [
3889
4238
  "reference",
3890
4239
  "interface",
3891
4240
  "geometry",
3892
4241
  "primitive-options",
3893
- "PrimitivePlacementOptions",
3894
- "source",
3895
- "target",
4242
+ "PrimitiveAttachmentOptions",
3896
4243
  "alignment",
3897
4244
  "gap",
3898
- "spinDegrees",
3899
- "tolerance"
4245
+ "spin",
4246
+ "tolerance",
4247
+ "source",
4248
+ "target"
3900
4249
  ]
3901
4250
  },
3902
4251
  {
@@ -3953,7 +4302,7 @@
3953
4302
  {
3954
4303
  "id": "modeling/reference/geometry/Profile",
3955
4304
  "title": "Profile",
3956
- "summary": "An explicit component/contour/span topology, before shared family sampling.",
4305
+ "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.",
3957
4306
  "path": "reference/geometry/Profile.md",
3958
4307
  "importPath": "@metamesh/modeling/geometry",
3959
4308
  "availability": "Pure TypeScript · Node and browsers",
@@ -3989,7 +4338,7 @@
3989
4338
  {
3990
4339
  "id": "modeling/reference/geometry/ProfileContour2",
3991
4340
  "title": "ProfileContour2",
3992
- "summary": "Ordered, closed spans. Outer winding is CCW and hole winding is CW.",
4341
+ "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.",
3993
4342
  "path": "reference/geometry/ProfileContour2.md",
3994
4343
  "importPath": "@metamesh/modeling/geometry",
3995
4344
  "availability": "Pure TypeScript · Node and browsers",
@@ -4095,30 +4444,26 @@
4095
4444
  "RackPitchSpec",
4096
4445
  "backlash",
4097
4446
  "clearanceFactor",
4098
- "helixAngleDegrees",
4447
+ "helixAngle",
4099
4448
  "module",
4100
- "pressureAngleDegrees",
4449
+ "pressureAngle",
4101
4450
  "toothCount"
4102
4451
  ]
4103
4452
  },
4104
4453
  {
4105
4454
  "id": "modeling/reference/geometry/RadialPatternOptions",
4106
4455
  "title": "RadialPatternOptions",
4107
- "summary": "Options for repeating one solid around an axis through a center point.",
4456
+ "summary": "Degree rotations about a fixed world-space pivot; XY patterns use the implicit +Z axis.",
4108
4457
  "path": "reference/geometry/RadialPatternOptions.md",
4109
4458
  "importPath": "@metamesh/modeling/geometry",
4110
4459
  "availability": "Pure TypeScript · Node and browsers",
4111
4460
  "canonical": "https://metamesh.studio/docs/reference/geometry/RadialPatternOptions",
4112
4461
  "keywords": [
4113
4462
  "reference",
4114
- "interface",
4463
+ "type-alias",
4115
4464
  "geometry",
4116
4465
  "pattern-placement",
4117
- "RadialPatternOptions",
4118
- "count",
4119
- "axis",
4120
- "angleDegrees",
4121
- "center"
4466
+ "RadialPatternOptions"
4122
4467
  ]
4123
4468
  },
4124
4469
  {
@@ -4174,7 +4519,7 @@
4174
4519
  {
4175
4520
  "id": "modeling/reference/geometry/rectangleContour",
4176
4521
  "title": "rectangleContour",
4177
- "summary": "Creates an immutable CCW rectangle loop. Round radius zero is square; tangent saturated endpoints occur once.",
4522
+ "summary": "Creates an immutable sampled CCW rectangle boundary. Round radius zero is square; tangent saturated endpoints occur once.",
4178
4523
  "path": "reference/geometry/rectangleContour.md",
4179
4524
  "importPath": "@metamesh/modeling/geometry",
4180
4525
  "availability": "Pure TypeScript · Node and browsers",
@@ -4311,7 +4656,7 @@
4311
4656
  {
4312
4657
  "id": "modeling/reference/geometry/RegionData",
4313
4658
  "title": "RegionData",
4314
- "summary": "A two-dimensional region represented by disjoint filled polygons.",
4659
+ "summary": "A two-dimensional region represented by disjoint filled polygons. Each PolygonData owns one exterior and its holes; an empty region contains no material.",
4315
4660
  "path": "reference/geometry/RegionData.md",
4316
4661
  "importPath": "@metamesh/modeling/geometry",
4317
4662
  "availability": "Pure TypeScript · Node and browsers",
@@ -4358,7 +4703,7 @@
4358
4703
  "sizing",
4359
4704
  "radius",
4360
4705
  "sides",
4361
- "rotationDegrees"
4706
+ "rotation"
4362
4707
  ]
4363
4708
  },
4364
4709
  {
@@ -4542,6 +4887,22 @@
4542
4887
  "resolveGeometryTolerance"
4543
4888
  ]
4544
4889
  },
4890
+ {
4891
+ "id": "modeling/reference/geometry/resolveKnuckleHinge",
4892
+ "title": "resolveKnuckleHinge",
4893
+ "summary": "Resolves equal alternating knuckles along +X, centered at the origin, in millimetres.",
4894
+ "path": "reference/geometry/resolveKnuckleHinge.md",
4895
+ "importPath": "@metamesh/modeling/geometry",
4896
+ "availability": "Pure TypeScript · Node and browsers",
4897
+ "canonical": "https://metamesh.studio/docs/reference/geometry/resolveKnuckleHinge",
4898
+ "keywords": [
4899
+ "reference",
4900
+ "function",
4901
+ "geometry",
4902
+ "mechanical",
4903
+ "resolveKnuckleHinge"
4904
+ ]
4905
+ },
4545
4906
  {
4546
4907
  "id": "modeling/reference/geometry/resolvePrintableThreadFitPolicy",
4547
4908
  "title": "resolvePrintableThreadFitPolicy",
@@ -4638,7 +4999,7 @@
4638
4999
  "RevolveOptions",
4639
5000
  "segments",
4640
5001
  "resolution",
4641
- "revolveDegrees",
5002
+ "degrees",
4642
5003
  "limits"
4643
5004
  ]
4644
5005
  },
@@ -4731,7 +5092,7 @@
4731
5092
  {
4732
5093
  "id": "modeling/reference/geometry/sampleContour",
4733
5094
  "title": "sampleContour",
4734
- "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.",
5095
+ "summary": "Samples 2–32 connected line/cubic segments into a simple, nonzero-area, immutable CCW XY loop.",
4735
5096
  "path": "reference/geometry/sampleContour.md",
4736
5097
  "importPath": "@metamesh/modeling/geometry",
4737
5098
  "availability": "Pure TypeScript · Node and browsers",
@@ -4761,7 +5122,7 @@
4761
5122
  "widthScale",
4762
5123
  "heightScale",
4763
5124
  "resolution",
4764
- "maximumVertices",
5125
+ "maxVertices",
4765
5126
  "limits"
4766
5127
  ]
4767
5128
  },
@@ -4872,7 +5233,7 @@
4872
5233
  {
4873
5234
  "id": "modeling/reference/geometry/sampleHelix",
4874
5235
  "title": "sampleHelix",
4875
- "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.",
5236
+ "summary": "Creates `segments + 1` points including exact helix endpoints from finite positive dimensions.",
4876
5237
  "path": "reference/geometry/sampleHelix.md",
4877
5238
  "importPath": "@metamesh/modeling/geometry",
4878
5239
  "availability": "Pure TypeScript · Node and browsers",
@@ -4942,7 +5303,7 @@
4942
5303
  {
4943
5304
  "id": "modeling/reference/geometry/sampleSideProfile",
4944
5305
  "title": "sampleSideProfile",
4945
- "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.",
5306
+ "summary": "Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline.",
4946
5307
  "path": "reference/geometry/sampleSideProfile.md",
4947
5308
  "importPath": "@metamesh/modeling/geometry",
4948
5309
  "availability": "Pure TypeScript · Node and browsers",
@@ -4972,7 +5333,7 @@
4972
5333
  "radiusScale",
4973
5334
  "heightScale",
4974
5335
  "resolution",
4975
- "maximumVertices",
5336
+ "maxVertices",
4976
5337
  "limits"
4977
5338
  ]
4978
5339
  },
@@ -5159,7 +5520,7 @@
5159
5520
  "geometry",
5160
5521
  "meshes",
5161
5522
  "SolidMeshValidationOptions",
5162
- "maximumTests",
5523
+ "maxTests",
5163
5524
  "tolerance"
5164
5525
  ]
5165
5526
  },
@@ -5216,73 +5577,73 @@
5216
5577
  ]
5217
5578
  },
5218
5579
  {
5219
- "id": "modeling/reference/geometry/StrokePathCap",
5220
- "title": "StrokePathCap",
5580
+ "id": "modeling/reference/geometry/StrokeCap",
5581
+ "title": "StrokeCap",
5221
5582
  "summary": "End-cap treatment for an open stroked path.",
5222
- "path": "reference/geometry/StrokePathCap.md",
5583
+ "path": "reference/geometry/StrokeCap.md",
5223
5584
  "importPath": "@metamesh/modeling/geometry",
5224
5585
  "availability": "Pure TypeScript · Node and browsers",
5225
- "canonical": "https://metamesh.studio/docs/reference/geometry/StrokePathCap",
5586
+ "canonical": "https://metamesh.studio/docs/reference/geometry/StrokeCap",
5226
5587
  "keywords": [
5227
5588
  "reference",
5228
5589
  "type-alias",
5229
5590
  "geometry",
5230
5591
  "vector-import",
5231
- "StrokePathCap"
5592
+ "StrokeCap"
5232
5593
  ]
5233
5594
  },
5234
5595
  {
5235
- "id": "modeling/reference/geometry/StrokePathJoin",
5236
- "title": "StrokePathJoin",
5596
+ "id": "modeling/reference/geometry/StrokeJoin",
5597
+ "title": "StrokeJoin",
5237
5598
  "summary": "Join treatment where adjacent stroked path segments meet.",
5238
- "path": "reference/geometry/StrokePathJoin.md",
5599
+ "path": "reference/geometry/StrokeJoin.md",
5239
5600
  "importPath": "@metamesh/modeling/geometry",
5240
5601
  "availability": "Pure TypeScript · Node and browsers",
5241
- "canonical": "https://metamesh.studio/docs/reference/geometry/StrokePathJoin",
5602
+ "canonical": "https://metamesh.studio/docs/reference/geometry/StrokeJoin",
5242
5603
  "keywords": [
5243
5604
  "reference",
5244
5605
  "type-alias",
5245
5606
  "geometry",
5246
5607
  "vector-import",
5247
- "StrokePathJoin"
5608
+ "StrokeJoin"
5248
5609
  ]
5249
5610
  },
5250
5611
  {
5251
- "id": "modeling/reference/geometry/strokePathRegion",
5252
- "title": "strokePathRegion",
5253
- "summary": "Converts a sampled millimetre path into the filled region covered by a centered stroke.",
5254
- "path": "reference/geometry/strokePathRegion.md",
5612
+ "id": "modeling/reference/geometry/StrokeOptions",
5613
+ "title": "StrokeOptions",
5614
+ "summary": "Physical stroke and topology controls shared by pure regions and native Sections.",
5615
+ "path": "reference/geometry/StrokeOptions.md",
5255
5616
  "importPath": "@metamesh/modeling/geometry",
5256
5617
  "availability": "Pure TypeScript · Node and browsers",
5257
- "canonical": "https://metamesh.studio/docs/reference/geometry/strokePathRegion",
5618
+ "canonical": "https://metamesh.studio/docs/reference/geometry/StrokeOptions",
5258
5619
  "keywords": [
5259
5620
  "reference",
5260
- "function",
5621
+ "interface",
5261
5622
  "geometry",
5262
5623
  "vector-import",
5263
- "strokePathRegion"
5624
+ "StrokeOptions",
5625
+ "limits",
5626
+ "closed",
5627
+ "cap",
5628
+ "join",
5629
+ "resolution",
5630
+ "width"
5264
5631
  ]
5265
5632
  },
5266
5633
  {
5267
- "id": "modeling/reference/geometry/StrokePathRegionOptions",
5268
- "title": "StrokePathRegionOptions",
5269
- "summary": "Physical stroke and topology controls shared by pure regions and native Sections.",
5270
- "path": "reference/geometry/StrokePathRegionOptions.md",
5634
+ "id": "modeling/reference/geometry/strokeRegionData",
5635
+ "title": "strokeRegionData",
5636
+ "summary": "Converts a sampled millimetre path into the filled region covered by a centered stroke.",
5637
+ "path": "reference/geometry/strokeRegionData.md",
5271
5638
  "importPath": "@metamesh/modeling/geometry",
5272
5639
  "availability": "Pure TypeScript · Node and browsers",
5273
- "canonical": "https://metamesh.studio/docs/reference/geometry/StrokePathRegionOptions",
5640
+ "canonical": "https://metamesh.studio/docs/reference/geometry/strokeRegionData",
5274
5641
  "keywords": [
5275
5642
  "reference",
5276
- "interface",
5643
+ "function",
5277
5644
  "geometry",
5278
5645
  "vector-import",
5279
- "StrokePathRegionOptions",
5280
- "limits",
5281
- "closed",
5282
- "cap",
5283
- "join",
5284
- "resolution",
5285
- "width"
5646
+ "strokeRegionData"
5286
5647
  ]
5287
5648
  },
5288
5649
  {
@@ -5340,7 +5701,7 @@
5340
5701
  {
5341
5702
  "id": "modeling/reference/geometry/SvgRegionPreflight",
5342
5703
  "title": "SvgRegionPreflight",
5343
- "summary": "Exact normalized SVG region plus bounded source, geometry, and safe-repair diagnostics.",
5704
+ "summary": "Normalized sampled SVG region plus bounded source, geometry, and safe-repair diagnostics.",
5344
5705
  "path": "reference/geometry/SvgRegionPreflight.md",
5345
5706
  "importPath": "@metamesh/modeling/geometry",
5346
5707
  "availability": "Pure TypeScript · Node and browsers",
@@ -5372,13 +5733,13 @@
5372
5733
  "SvgRegionPreflightGeometryMetrics",
5373
5734
  "area",
5374
5735
  "bounds",
5375
- "components",
5376
- "contours",
5377
- "holes",
5736
+ "componentCount",
5737
+ "contourCount",
5738
+ "holeCount",
5378
5739
  "minEdgeLength",
5379
- "shortEdges",
5380
- "tinyIslands",
5381
- "vertices"
5740
+ "shortEdgeCount",
5741
+ "tinyIslandCount",
5742
+ "vertexCount"
5382
5743
  ]
5383
5744
  },
5384
5745
  {
@@ -5395,11 +5756,11 @@
5395
5756
  "geometry",
5396
5757
  "vector-import",
5397
5758
  "SvgRegionPreflightRepairs",
5398
- "invisibleElements",
5399
- "implicitFilledClosures",
5400
- "emptyElements",
5401
- "removedDuplicateVertices",
5402
- "removedSeamVertices"
5759
+ "invisibleElementCount",
5760
+ "implicitFilledClosureCount",
5761
+ "emptyElementCount",
5762
+ "removedDuplicateVertexCount",
5763
+ "removedSeamVertexCount"
5403
5764
  ]
5404
5765
  },
5405
5766
  {
@@ -5416,10 +5777,10 @@
5416
5777
  "geometry",
5417
5778
  "vector-import",
5418
5779
  "SvgRegionPreflightSourceMetrics",
5419
- "bytes",
5420
- "elements",
5421
- "emittedVertices",
5422
- "parsedVertices"
5780
+ "byteCount",
5781
+ "elementCount",
5782
+ "emittedVertexCount",
5783
+ "parsedVertexCount"
5423
5784
  ]
5424
5785
  },
5425
5786
  {
@@ -5456,7 +5817,7 @@
5456
5817
  "limits",
5457
5818
  "orientation",
5458
5819
  "resolution",
5459
- "twistDegrees",
5820
+ "twist",
5460
5821
  "twistBy",
5461
5822
  "scale",
5462
5823
  "seamProfileOffset"
@@ -5514,7 +5875,7 @@
5514
5875
  "limits",
5515
5876
  "fit",
5516
5877
  "nominalMajorDiameter",
5517
- "maximumRadialOutset",
5878
+ "maxRadialOutset",
5518
5879
  "profile",
5519
5880
  "resolution",
5520
5881
  "starts"
@@ -5574,7 +5935,7 @@
5574
5935
  "ends",
5575
5936
  "handedness",
5576
5937
  "limits",
5577
- "phaseDegrees",
5938
+ "phase",
5578
5939
  "profile",
5579
5940
  "resolution",
5580
5941
  "starts",
@@ -5593,7 +5954,7 @@
5593
5954
  {
5594
5955
  "id": "modeling/reference/geometry/ThreadedNutPreflight",
5595
5956
  "title": "ThreadedNutPreflight",
5596
- "summary": "Allocation-free body, cutter, and end-face facts resolved for a threaded nut.",
5957
+ "summary": "Resolved body and end-face dimensions plus conservative allocation estimates for the thread cutter.",
5597
5958
  "path": "reference/geometry/ThreadedNutPreflight.md",
5598
5959
  "importPath": "@metamesh/modeling/geometry",
5599
5960
  "availability": "Pure TypeScript · Node and browsers",
@@ -5647,7 +6008,7 @@
5647
6008
  "handedness",
5648
6009
  "length",
5649
6010
  "limits",
5650
- "phaseDegrees",
6011
+ "phase",
5651
6012
  "profile",
5652
6013
  "resolution",
5653
6014
  "starts",
@@ -5730,7 +6091,7 @@
5730
6091
  "handedness",
5731
6092
  "limits",
5732
6093
  "length",
5733
- "phaseDegrees",
6094
+ "phase",
5734
6095
  "pitch",
5735
6096
  "radius",
5736
6097
  "segmentsPerTurn",
@@ -5771,13 +6132,29 @@
5771
6132
  ]
5772
6133
  },
5773
6134
  {
5774
- "id": "modeling/reference/geometry/ThreadProfile",
6135
+ "id": "modeling/reference/geometry/threadProfile",
6136
+ "title": "threadProfile",
6137
+ "summary": "Creates a periodic thread profile for the shaft-locked helical mesher.",
6138
+ "path": "reference/geometry/threadProfile.md",
6139
+ "importPath": "@metamesh/modeling/geometry",
6140
+ "availability": "Pure TypeScript · Node and browsers",
6141
+ "canonical": "https://metamesh.studio/docs/reference/geometry/threadProfile",
6142
+ "keywords": [
6143
+ "reference",
6144
+ "function",
6145
+ "geometry",
6146
+ "mechanical",
6147
+ "threadProfile"
6148
+ ]
6149
+ },
6150
+ {
6151
+ "id": "modeling/reference/geometry/ThreadProfile-type",
5775
6152
  "title": "ThreadProfile",
5776
6153
  "summary": "A validated immutable periodic thread profile in `[axial, radial]` millimetres.",
5777
- "path": "reference/geometry/ThreadProfile.md",
6154
+ "path": "reference/geometry/ThreadProfile-type.md",
5778
6155
  "importPath": "@metamesh/modeling/geometry",
5779
6156
  "availability": "Pure TypeScript · Node and browsers",
5780
- "canonical": "https://metamesh.studio/docs/reference/geometry/ThreadProfile",
6157
+ "canonical": "https://metamesh.studio/docs/reference/geometry/ThreadProfile-type",
5781
6158
  "keywords": [
5782
6159
  "reference",
5783
6160
  "interface",
@@ -5856,7 +6233,7 @@
5856
6233
  "geometry",
5857
6234
  "primitive-options",
5858
6235
  "TorusOptions",
5859
- "placement",
6236
+ "attachment",
5860
6237
  "limits",
5861
6238
  "majorRadius",
5862
6239
  "majorSegments",
@@ -5868,7 +6245,7 @@
5868
6245
  {
5869
6246
  "id": "modeling/reference/geometry/transform2",
5870
6247
  "title": "transform2",
5871
- "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.",
6248
+ "summary": "Creates an immutable XY transform, identity by default.",
5872
6249
  "path": "reference/geometry/transform2.md",
5873
6250
  "importPath": "@metamesh/modeling/geometry",
5874
6251
  "availability": "Pure TypeScript · Node and browsers",
@@ -5903,46 +6280,46 @@
5903
6280
  "applyPoint",
5904
6281
  "applyDirection",
5905
6282
  "applyNormal",
5906
- "toMatrix",
6283
+ "toData",
5907
6284
  "to3D"
5908
6285
  ]
5909
6286
  },
5910
6287
  {
5911
- "id": "modeling/reference/geometry/Transform2Input",
5912
- "title": "Transform2Input",
5913
- "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
5914
- "path": "reference/geometry/Transform2Input.md",
6288
+ "id": "modeling/reference/geometry/Transform2Data",
6289
+ "title": "Transform2Data",
6290
+ "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]`.",
6291
+ "path": "reference/geometry/Transform2Data.md",
5915
6292
  "importPath": "@metamesh/modeling/geometry",
5916
6293
  "availability": "Pure TypeScript · Node and browsers",
5917
- "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Input",
6294
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Data",
5918
6295
  "keywords": [
5919
6296
  "reference",
5920
6297
  "type-alias",
5921
6298
  "geometry",
5922
6299
  "transforms-math",
5923
- "Transform2Input"
6300
+ "Transform2Data"
5924
6301
  ]
5925
6302
  },
5926
6303
  {
5927
- "id": "modeling/reference/geometry/Transform2Matrix",
5928
- "title": "Transform2Matrix",
5929
- "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]`.",
5930
- "path": "reference/geometry/Transform2Matrix.md",
5931
- "importPath": "@metamesh/modeling/geometry",
5932
- "availability": "Pure TypeScript · Node and browsers",
5933
- "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Matrix",
6304
+ "id": "modeling/reference/geometry/Transform2Input",
6305
+ "title": "Transform2Input",
6306
+ "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
6307
+ "path": "reference/geometry/Transform2Input.md",
6308
+ "importPath": "@metamesh/modeling/geometry",
6309
+ "availability": "Pure TypeScript · Node and browsers",
6310
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Transform2Input",
5934
6311
  "keywords": [
5935
6312
  "reference",
5936
6313
  "type-alias",
5937
6314
  "geometry",
5938
6315
  "transforms-math",
5939
- "Transform2Matrix"
6316
+ "Transform2Input"
5940
6317
  ]
5941
6318
  },
5942
6319
  {
5943
6320
  "id": "modeling/reference/geometry/transform3",
5944
6321
  "title": "transform3",
5945
- "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.",
6322
+ "summary": "Creates an immutable XYZ transform, identity by default.",
5946
6323
  "path": "reference/geometry/transform3.md",
5947
6324
  "importPath": "@metamesh/modeling/geometry",
5948
6325
  "availability": "Pure TypeScript · Node and browsers",
@@ -5978,56 +6355,40 @@
5978
6355
  "applyPoint",
5979
6356
  "applyDirection",
5980
6357
  "applyNormal",
5981
- "toMatrix",
6358
+ "toData",
5982
6359
  "to2D"
5983
6360
  ]
5984
6361
  },
5985
6362
  {
5986
- "id": "modeling/reference/geometry/Transform3Input",
5987
- "title": "Transform3Input",
5988
- "summary": "An immutable XYZ transform or its canonical row-major matrix for interchange.",
5989
- "path": "reference/geometry/Transform3Input.md",
6363
+ "id": "modeling/reference/geometry/Transform3Data",
6364
+ "title": "Transform3Data",
6365
+ "summary": "A row-major affine 4x4 matrix applied to column vectors.",
6366
+ "path": "reference/geometry/Transform3Data.md",
5990
6367
  "importPath": "@metamesh/modeling/geometry",
5991
6368
  "availability": "Pure TypeScript · Node and browsers",
5992
- "canonical": "https://metamesh.studio/docs/reference/geometry/Transform3Input",
6369
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Transform3Data",
5993
6370
  "keywords": [
5994
6371
  "reference",
5995
6372
  "type-alias",
5996
6373
  "geometry",
5997
6374
  "transforms-math",
5998
- "Transform3Input"
6375
+ "Transform3Data"
5999
6376
  ]
6000
6377
  },
6001
6378
  {
6002
- "id": "modeling/reference/geometry/Transform3Matrix",
6003
- "title": "Transform3Matrix",
6004
- "summary": "A row-major affine 4x4 matrix applied to column vectors.",
6005
- "path": "reference/geometry/Transform3Matrix.md",
6379
+ "id": "modeling/reference/geometry/Transform3Input",
6380
+ "title": "Transform3Input",
6381
+ "summary": "An immutable XYZ transform or its canonical row-major matrix for interchange.",
6382
+ "path": "reference/geometry/Transform3Input.md",
6006
6383
  "importPath": "@metamesh/modeling/geometry",
6007
6384
  "availability": "Pure TypeScript · Node and browsers",
6008
- "canonical": "https://metamesh.studio/docs/reference/geometry/Transform3Matrix",
6385
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Transform3Input",
6009
6386
  "keywords": [
6010
6387
  "reference",
6011
6388
  "type-alias",
6012
6389
  "geometry",
6013
6390
  "transforms-math",
6014
- "Transform3Matrix"
6015
- ]
6016
- },
6017
- {
6018
- "id": "modeling/reference/geometry/transformContour",
6019
- "title": "transformContour",
6020
- "summary": "Applies a canonical affine XY transform to a closed loop and preserves its original winding.",
6021
- "path": "reference/geometry/transformContour.md",
6022
- "importPath": "@metamesh/modeling/geometry",
6023
- "availability": "Pure TypeScript · Node and browsers",
6024
- "canonical": "https://metamesh.studio/docs/reference/geometry/transformContour",
6025
- "keywords": [
6026
- "reference",
6027
- "function",
6028
- "geometry",
6029
- "profiles-regions",
6030
- "transformContour"
6391
+ "Transform3Input"
6031
6392
  ]
6032
6393
  },
6033
6394
  {
@@ -6046,38 +6407,6 @@
6046
6407
  "transformDeterminant3"
6047
6408
  ]
6048
6409
  },
6049
- {
6050
- "id": "modeling/reference/geometry/transformPath2",
6051
- "title": "transformPath2",
6052
- "summary": "Applies a canonical affine XY transform to a 2D path without changing point order.",
6053
- "path": "reference/geometry/transformPath2.md",
6054
- "importPath": "@metamesh/modeling/geometry",
6055
- "availability": "Pure TypeScript · Node and browsers",
6056
- "canonical": "https://metamesh.studio/docs/reference/geometry/transformPath2",
6057
- "keywords": [
6058
- "reference",
6059
- "function",
6060
- "geometry",
6061
- "curves-paths",
6062
- "transformPath2"
6063
- ]
6064
- },
6065
- {
6066
- "id": "modeling/reference/geometry/transformPath3",
6067
- "title": "transformPath3",
6068
- "summary": "Applies an affine transform to a 3D path without mutating its points.",
6069
- "path": "reference/geometry/transformPath3.md",
6070
- "importPath": "@metamesh/modeling/geometry",
6071
- "availability": "Pure TypeScript · Node and browsers",
6072
- "canonical": "https://metamesh.studio/docs/reference/geometry/transformPath3",
6073
- "keywords": [
6074
- "reference",
6075
- "function",
6076
- "geometry",
6077
- "curves-paths",
6078
- "transformPath3"
6079
- ]
6080
- },
6081
6410
  {
6082
6411
  "id": "modeling/reference/geometry/transformRegionData",
6083
6412
  "title": "transformRegionData",
@@ -6144,7 +6473,7 @@
6144
6473
  "tolerance",
6145
6474
  "kind",
6146
6475
  "depth",
6147
- "threadAngle"
6476
+ "includedAngle"
6148
6477
  ]
6149
6478
  },
6150
6479
  {
@@ -6243,7 +6572,7 @@
6243
6572
  "geometry",
6244
6573
  "meshes",
6245
6574
  "TriangleMeshQualityOptions",
6246
- "maximumTriangleCount",
6575
+ "maxTriangles",
6247
6576
  "tolerance"
6248
6577
  ]
6249
6578
  },
@@ -6316,7 +6645,7 @@
6316
6645
  "geometry",
6317
6646
  "meshes",
6318
6647
  "TriangleMeshSignatureOptions",
6319
- "maximumTriangleCount",
6648
+ "maxTriangles",
6320
6649
  "positionTolerance",
6321
6650
  "volumeTolerance"
6322
6651
  ]
@@ -6412,7 +6741,7 @@
6412
6741
  "limits",
6413
6742
  "segments",
6414
6743
  "resolution",
6415
- "placement",
6744
+ "attachment",
6416
6745
  "center",
6417
6746
  "height",
6418
6747
  "innerRadius",
@@ -6422,7 +6751,7 @@
6422
6751
  {
6423
6752
  "id": "modeling/reference/geometry/validateSolidMesh",
6424
6753
  "title": "validateSolidMesh",
6425
- "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.",
6754
+ "summary": "Checks closed indexed topology, triangle intersections, and alternating nested shell orientation.",
6426
6755
  "path": "reference/geometry/validateSolidMesh.md",
6427
6756
  "importPath": "@metamesh/modeling/geometry",
6428
6757
  "availability": "Pure TypeScript · Node and browsers",
@@ -6470,7 +6799,7 @@
6470
6799
  {
6471
6800
  "id": "modeling/reference/geometry/vector2",
6472
6801
  "title": "vector2",
6473
- "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.",
6802
+ "summary": "Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.",
6474
6803
  "path": "reference/geometry/vector2.md",
6475
6804
  "importPath": "@metamesh/modeling/geometry",
6476
6805
  "availability": "Pure TypeScript · Node and browsers",
@@ -6508,45 +6837,45 @@
6508
6837
  "cross",
6509
6838
  "length",
6510
6839
  "distance",
6511
- "toArray"
6840
+ "toData"
6512
6841
  ]
6513
6842
  },
6514
6843
  {
6515
- "id": "modeling/reference/geometry/Vector2Input",
6516
- "title": "Vector2Input",
6517
- "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
6518
- "path": "reference/geometry/Vector2Input.md",
6844
+ "id": "modeling/reference/geometry/Vector2Data",
6845
+ "title": "Vector2Data",
6846
+ "summary": "A two-dimensional Cartesian vector or point.",
6847
+ "path": "reference/geometry/Vector2Data.md",
6519
6848
  "importPath": "@metamesh/modeling/geometry",
6520
6849
  "availability": "Pure TypeScript · Node and browsers",
6521
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Input",
6850
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Data",
6522
6851
  "keywords": [
6523
6852
  "reference",
6524
6853
  "type-alias",
6525
6854
  "geometry",
6526
6855
  "transforms-math",
6527
- "Vector2Input"
6856
+ "Vector2Data"
6528
6857
  ]
6529
6858
  },
6530
6859
  {
6531
- "id": "modeling/reference/geometry/Vector2Tuple",
6532
- "title": "Vector2Tuple",
6533
- "summary": "A two-dimensional Cartesian vector or point.",
6534
- "path": "reference/geometry/Vector2Tuple.md",
6860
+ "id": "modeling/reference/geometry/Vector2Input",
6861
+ "title": "Vector2Input",
6862
+ "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
6863
+ "path": "reference/geometry/Vector2Input.md",
6535
6864
  "importPath": "@metamesh/modeling/geometry",
6536
6865
  "availability": "Pure TypeScript · Node and browsers",
6537
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Tuple",
6866
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector2Input",
6538
6867
  "keywords": [
6539
6868
  "reference",
6540
6869
  "type-alias",
6541
6870
  "geometry",
6542
6871
  "transforms-math",
6543
- "Vector2Tuple"
6872
+ "Vector2Input"
6544
6873
  ]
6545
6874
  },
6546
6875
  {
6547
6876
  "id": "modeling/reference/geometry/vector3",
6548
6877
  "title": "vector3",
6549
- "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.",
6878
+ "summary": "Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.",
6550
6879
  "path": "reference/geometry/vector3.md",
6551
6880
  "importPath": "@metamesh/modeling/geometry",
6552
6881
  "availability": "Pure TypeScript · Node and browsers",
@@ -6585,39 +6914,39 @@
6585
6914
  "cross",
6586
6915
  "length",
6587
6916
  "distance",
6588
- "toArray"
6917
+ "toData"
6589
6918
  ]
6590
6919
  },
6591
6920
  {
6592
- "id": "modeling/reference/geometry/Vector3Input",
6593
- "title": "Vector3Input",
6594
- "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
6595
- "path": "reference/geometry/Vector3Input.md",
6921
+ "id": "modeling/reference/geometry/Vector3Data",
6922
+ "title": "Vector3Data",
6923
+ "summary": "A three-dimensional Cartesian vector or point.",
6924
+ "path": "reference/geometry/Vector3Data.md",
6596
6925
  "importPath": "@metamesh/modeling/geometry",
6597
6926
  "availability": "Pure TypeScript · Node and browsers",
6598
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Input",
6927
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Data",
6599
6928
  "keywords": [
6600
6929
  "reference",
6601
6930
  "type-alias",
6602
6931
  "geometry",
6603
6932
  "transforms-math",
6604
- "Vector3Input"
6933
+ "Vector3Data"
6605
6934
  ]
6606
6935
  },
6607
6936
  {
6608
- "id": "modeling/reference/geometry/Vector3Tuple",
6609
- "title": "Vector3Tuple",
6610
- "summary": "A three-dimensional Cartesian vector or point.",
6611
- "path": "reference/geometry/Vector3Tuple.md",
6937
+ "id": "modeling/reference/geometry/Vector3Input",
6938
+ "title": "Vector3Input",
6939
+ "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
6940
+ "path": "reference/geometry/Vector3Input.md",
6612
6941
  "importPath": "@metamesh/modeling/geometry",
6613
6942
  "availability": "Pure TypeScript · Node and browsers",
6614
- "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Tuple",
6943
+ "canonical": "https://metamesh.studio/docs/reference/geometry/Vector3Input",
6615
6944
  "keywords": [
6616
6945
  "reference",
6617
6946
  "type-alias",
6618
6947
  "geometry",
6619
6948
  "transforms-math",
6620
- "Vector3Tuple"
6949
+ "Vector3Input"
6621
6950
  ]
6622
6951
  },
6623
6952
  {
@@ -6636,7 +6965,7 @@
6636
6965
  "VectorTextArcBaseline",
6637
6966
  "kind",
6638
6967
  "radius",
6639
- "centerAngleDegrees",
6968
+ "centerAngle",
6640
6969
  "direction"
6641
6970
  ]
6642
6971
  },
@@ -6777,7 +7106,7 @@
6777
7106
  {
6778
7107
  "id": "modeling/reference/model/AttachOptions",
6779
7108
  "title": "AttachOptions",
6780
- "summary": "Degree-based anchor attachment controls for a scoped solid.",
7109
+ "summary": "Options controlling how one anchor is attached to another.",
6781
7110
  "path": "reference/model/AttachOptions.md",
6782
7111
  "importPath": "@metamesh/modeling",
6783
7112
  "availability": "Immutable recipes and math · Node and browsers",
@@ -6790,46 +7119,154 @@
6790
7119
  "AttachOptions",
6791
7120
  "alignment",
6792
7121
  "gap",
6793
- "spinDegrees",
7122
+ "spin",
6794
7123
  "tolerance"
6795
7124
  ]
6796
7125
  },
6797
7126
  {
6798
- "id": "modeling/reference/model/Bounds2",
7127
+ "id": "modeling/reference/model/bounds2",
7128
+ "title": "bounds2",
7129
+ "summary": "Snapshots finite ordered XY bounds in millimetres as an immutable fluent value.",
7130
+ "path": "reference/model/bounds2.md",
7131
+ "importPath": "@metamesh/modeling",
7132
+ "availability": "Immutable recipes and math · Node and browsers",
7133
+ "canonical": "https://metamesh.studio/docs/reference/model/bounds2",
7134
+ "keywords": [
7135
+ "reference",
7136
+ "function",
7137
+ "model",
7138
+ "bounds",
7139
+ "bounds2"
7140
+ ]
7141
+ },
7142
+ {
7143
+ "id": "modeling/reference/model/Bounds2-type",
6799
7144
  "title": "Bounds2",
6800
- "summary": "Axis-aligned bounds in two-dimensional model space.",
6801
- "path": "reference/model/Bounds2.md",
7145
+ "summary": "Immutable finite XY bounds in millimetres, with tuple coordinates for data interoperability.",
7146
+ "path": "reference/model/Bounds2-type.md",
6802
7147
  "importPath": "@metamesh/modeling",
6803
7148
  "availability": "Immutable recipes and math · Node and browsers",
6804
- "canonical": "https://metamesh.studio/docs/reference/model/Bounds2",
7149
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds2-type",
6805
7150
  "keywords": [
6806
7151
  "reference",
6807
7152
  "interface",
6808
7153
  "model",
6809
- "core-values-errors",
7154
+ "bounds",
6810
7155
  "Bounds2",
7156
+ "size",
7157
+ "center",
7158
+ "containsBounds",
7159
+ "toData",
6811
7160
  "max",
6812
7161
  "min"
6813
7162
  ]
6814
7163
  },
6815
7164
  {
6816
- "id": "modeling/reference/model/Bounds3",
6817
- "title": "Bounds3",
6818
- "summary": "Axis-aligned bounds in three-dimensional model space.",
6819
- "path": "reference/model/Bounds3.md",
7165
+ "id": "modeling/reference/model/Bounds2Data",
7166
+ "title": "Bounds2Data",
7167
+ "summary": "Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods.",
7168
+ "path": "reference/model/Bounds2Data.md",
6820
7169
  "importPath": "@metamesh/modeling",
6821
7170
  "availability": "Immutable recipes and math · Node and browsers",
6822
- "canonical": "https://metamesh.studio/docs/reference/model/Bounds3",
7171
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds2Data",
6823
7172
  "keywords": [
6824
7173
  "reference",
6825
7174
  "interface",
6826
7175
  "model",
6827
7176
  "core-values-errors",
7177
+ "Bounds2Data",
7178
+ "max",
7179
+ "min"
7180
+ ]
7181
+ },
7182
+ {
7183
+ "id": "modeling/reference/model/Bounds2Input",
7184
+ "title": "Bounds2Input",
7185
+ "summary": "An immutable XY bounds value or its plain min/max representation.",
7186
+ "path": "reference/model/Bounds2Input.md",
7187
+ "importPath": "@metamesh/modeling",
7188
+ "availability": "Immutable recipes and math · Node and browsers",
7189
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds2Input",
7190
+ "keywords": [
7191
+ "reference",
7192
+ "type-alias",
7193
+ "model",
7194
+ "bounds",
7195
+ "Bounds2Input"
7196
+ ]
7197
+ },
7198
+ {
7199
+ "id": "modeling/reference/model/bounds3",
7200
+ "title": "bounds3",
7201
+ "summary": "Snapshots finite ordered XYZ bounds in millimetres as an immutable fluent value.",
7202
+ "path": "reference/model/bounds3.md",
7203
+ "importPath": "@metamesh/modeling",
7204
+ "availability": "Immutable recipes and math · Node and browsers",
7205
+ "canonical": "https://metamesh.studio/docs/reference/model/bounds3",
7206
+ "keywords": [
7207
+ "reference",
7208
+ "function",
7209
+ "model",
7210
+ "bounds",
7211
+ "bounds3"
7212
+ ]
7213
+ },
7214
+ {
7215
+ "id": "modeling/reference/model/Bounds3-type",
7216
+ "title": "Bounds3",
7217
+ "summary": "Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability.",
7218
+ "path": "reference/model/Bounds3-type.md",
7219
+ "importPath": "@metamesh/modeling",
7220
+ "availability": "Immutable recipes and math · Node and browsers",
7221
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds3-type",
7222
+ "keywords": [
7223
+ "reference",
7224
+ "interface",
7225
+ "model",
7226
+ "bounds",
6828
7227
  "Bounds3",
7228
+ "size",
7229
+ "center",
7230
+ "containsBounds",
7231
+ "toData",
7232
+ "max",
7233
+ "min"
7234
+ ]
7235
+ },
7236
+ {
7237
+ "id": "modeling/reference/model/Bounds3Data",
7238
+ "title": "Bounds3Data",
7239
+ "summary": "Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods.",
7240
+ "path": "reference/model/Bounds3Data.md",
7241
+ "importPath": "@metamesh/modeling",
7242
+ "availability": "Immutable recipes and math · Node and browsers",
7243
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds3Data",
7244
+ "keywords": [
7245
+ "reference",
7246
+ "interface",
7247
+ "model",
7248
+ "core-values-errors",
7249
+ "Bounds3Data",
6829
7250
  "max",
6830
7251
  "min"
6831
7252
  ]
6832
7253
  },
7254
+ {
7255
+ "id": "modeling/reference/model/Bounds3Input",
7256
+ "title": "Bounds3Input",
7257
+ "summary": "An immutable XYZ bounds value or its plain min/max representation.",
7258
+ "path": "reference/model/Bounds3Input.md",
7259
+ "importPath": "@metamesh/modeling",
7260
+ "availability": "Immutable recipes and math · Node and browsers",
7261
+ "canonical": "https://metamesh.studio/docs/reference/model/Bounds3Input",
7262
+ "keywords": [
7263
+ "reference",
7264
+ "type-alias",
7265
+ "model",
7266
+ "bounds",
7267
+ "Bounds3Input"
7268
+ ]
7269
+ },
6833
7270
  {
6834
7271
  "id": "modeling/reference/model/box",
6835
7272
  "title": "box",
@@ -6912,12 +7349,28 @@
6912
7349
  "center",
6913
7350
  "size",
6914
7351
  "treatment",
6915
- "placement"
7352
+ "attachment"
7353
+ ]
7354
+ },
7355
+ {
7356
+ "id": "modeling/reference/model/castSegment",
7357
+ "title": "castSegment",
7358
+ "summary": "Copies intersections along the finite directed origin-to-endpoint segment.",
7359
+ "path": "reference/model/castSegment.md",
7360
+ "importPath": "@metamesh/modeling",
7361
+ "availability": "Immutable recipes and math · Node and browsers",
7362
+ "canonical": "https://metamesh.studio/docs/reference/model/castSegment",
7363
+ "keywords": [
7364
+ "reference",
7365
+ "function",
7366
+ "model",
7367
+ "inspection",
7368
+ "castSegment"
6916
7369
  ]
6917
7370
  },
6918
7371
  {
6919
7372
  "id": "modeling/reference/model/categories/boolean-operations",
6920
- "title": "Boolean Operations",
7373
+ "title": "Boolean operations",
6921
7374
  "summary": "Combine, intersect and subtract same-dimensional shapes; construct solid envelopes and sums.",
6922
7375
  "path": "reference/model/categories/boolean-operations.md",
6923
7376
  "importPath": "@metamesh/modeling",
@@ -6928,7 +7381,7 @@
6928
7381
  "category",
6929
7382
  "model",
6930
7383
  "boolean-operations",
6931
- "Boolean Operations"
7384
+ "Boolean operations"
6932
7385
  ]
6933
7386
  },
6934
7387
  {
@@ -6947,6 +7400,22 @@
6947
7400
  "Sampled surfaces"
6948
7401
  ]
6949
7402
  },
7403
+ {
7404
+ "id": "modeling/reference/model/categories/bounds",
7405
+ "title": "Bounds",
7406
+ "summary": "Measure immutable axis-aligned extents and test positioned containment.",
7407
+ "path": "reference/model/categories/bounds.md",
7408
+ "importPath": "@metamesh/modeling",
7409
+ "availability": "Immutable recipes and math · Node and browsers",
7410
+ "canonical": "https://metamesh.studio/docs/reference/model/categories/bounds",
7411
+ "keywords": [
7412
+ "reference",
7413
+ "category",
7414
+ "model",
7415
+ "bounds",
7416
+ "Bounds"
7417
+ ]
7418
+ },
6950
7419
  {
6951
7420
  "id": "modeling/reference/model/categories/contracts",
6952
7421
  "title": "Model contracts",
@@ -6965,8 +7434,8 @@
6965
7434
  },
6966
7435
  {
6967
7436
  "id": "modeling/reference/model/categories/core-values-errors",
6968
- "title": "Core Values & Errors",
6969
- "summary": "Use the small shared vocabulary for authored geometry, coordinates, paths, and stable failures.",
7437
+ "title": "Core values",
7438
+ "summary": "Use shared coordinate, path, polygon, and bounds data.",
6970
7439
  "path": "reference/model/categories/core-values-errors.md",
6971
7440
  "importPath": "@metamesh/modeling",
6972
7441
  "availability": "Immutable recipes and math · Node and browsers",
@@ -6976,7 +7445,7 @@
6976
7445
  "category",
6977
7446
  "model",
6978
7447
  "core-values-errors",
6979
- "Core Values & Errors"
7448
+ "Core values"
6980
7449
  ]
6981
7450
  },
6982
7451
  {
@@ -6997,7 +7466,7 @@
6997
7466
  },
6998
7467
  {
6999
7468
  "id": "modeling/reference/model/categories/extrude-revolve-sweep",
7000
- "title": "Extrude, Revolve & Sweep",
7469
+ "title": "Extrude, revolve, and sweep",
7001
7470
  "summary": "Turn sections and paths into extruded, lofted, revolved, or swept solids.",
7002
7471
  "path": "reference/model/categories/extrude-revolve-sweep.md",
7003
7472
  "importPath": "@metamesh/modeling",
@@ -7008,7 +7477,7 @@
7008
7477
  "category",
7009
7478
  "model",
7010
7479
  "extrude-revolve-sweep",
7011
- "Extrude, Revolve & Sweep"
7480
+ "Extrude, revolve, and sweep"
7012
7481
  ]
7013
7482
  },
7014
7483
  {
@@ -7027,6 +7496,22 @@
7027
7496
  "Model generation"
7028
7497
  ]
7029
7498
  },
7499
+ {
7500
+ "id": "modeling/reference/model/categories/hinges",
7501
+ "title": "Knuckle joints",
7502
+ "summary": "Compose reusable knuckle joints with independent mounting attachments.",
7503
+ "path": "reference/model/categories/hinges.md",
7504
+ "importPath": "@metamesh/modeling",
7505
+ "availability": "Immutable recipes and math · Node and browsers",
7506
+ "canonical": "https://metamesh.studio/docs/reference/model/categories/hinges",
7507
+ "keywords": [
7508
+ "reference",
7509
+ "category",
7510
+ "model",
7511
+ "hinges",
7512
+ "Knuckle joints"
7513
+ ]
7514
+ },
7030
7515
  {
7031
7516
  "id": "modeling/reference/model/categories/inspection",
7032
7517
  "title": "Solid inspection",
@@ -7045,7 +7530,7 @@
7045
7530
  },
7046
7531
  {
7047
7532
  "id": "modeling/reference/model/categories/mesh-inspection",
7048
- "title": "Mesh & Inspection",
7533
+ "title": "Mesh and inspection",
7049
7534
  "summary": "Convert validated meshes and inspect stable section or solid measurements.",
7050
7535
  "path": "reference/model/categories/mesh-inspection.md",
7051
7536
  "importPath": "@metamesh/modeling",
@@ -7056,7 +7541,23 @@
7056
7541
  "category",
7057
7542
  "model",
7058
7543
  "mesh-inspection",
7059
- "Mesh & Inspection"
7544
+ "Mesh and inspection"
7545
+ ]
7546
+ },
7547
+ {
7548
+ "id": "modeling/reference/model/categories/paths",
7549
+ "title": "Sampled paths",
7550
+ "summary": "Reusable immutable planar and spatial trajectories.",
7551
+ "path": "reference/model/categories/paths.md",
7552
+ "importPath": "@metamesh/modeling",
7553
+ "availability": "Immutable recipes and math · Node and browsers",
7554
+ "canonical": "https://metamesh.studio/docs/reference/model/categories/paths",
7555
+ "keywords": [
7556
+ "reference",
7557
+ "category",
7558
+ "model",
7559
+ "paths",
7560
+ "Sampled paths"
7060
7561
  ]
7061
7562
  },
7062
7563
  {
@@ -7093,7 +7594,7 @@
7093
7594
  },
7094
7595
  {
7095
7596
  "id": "modeling/reference/model/categories/sections",
7096
- "title": "2D Sections",
7597
+ "title": "2D sections",
7097
7598
  "summary": "Create immutable filled XY shapes, including prepared text and bounded painted SVG.",
7098
7599
  "path": "reference/model/categories/sections.md",
7099
7600
  "importPath": "@metamesh/modeling",
@@ -7104,13 +7605,13 @@
7104
7605
  "category",
7105
7606
  "model",
7106
7607
  "sections",
7107
- "2D Sections"
7608
+ "2D sections"
7108
7609
  ]
7109
7610
  },
7110
7611
  {
7111
7612
  "id": "modeling/reference/model/categories/threads",
7112
7613
  "title": "Printable threads",
7113
- "summary": "Construct compensated thread forms and inspect allocation-free preflight facts.",
7614
+ "summary": "Construct compensated thread forms and inspect bounded preflight facts.",
7114
7615
  "path": "reference/model/categories/threads.md",
7115
7616
  "importPath": "@metamesh/modeling",
7116
7617
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7125,7 +7626,7 @@
7125
7626
  },
7126
7627
  {
7127
7628
  "id": "modeling/reference/model/categories/transforms-placement",
7128
- "title": "Transforms, Vectors & Placement",
7629
+ "title": "Transforms, vectors, and placement",
7129
7630
  "summary": "Calculate with immutable vectors, reuse transforms, and arrange geometry with explicit placement contracts.",
7130
7631
  "path": "reference/model/categories/transforms-placement.md",
7131
7632
  "importPath": "@metamesh/modeling",
@@ -7136,7 +7637,7 @@
7136
7637
  "category",
7137
7638
  "model",
7138
7639
  "transforms-placement",
7139
- "Transforms, Vectors & Placement"
7640
+ "Transforms, vectors, and placement"
7140
7641
  ]
7141
7642
  },
7142
7643
  {
@@ -7227,7 +7728,7 @@
7227
7728
  {
7228
7729
  "id": "modeling/reference/model/components",
7229
7730
  "title": "components",
7230
- "summary": "Observes a solid's disconnected surface shells as session-restricted solid selections.",
7731
+ "summary": "Observes disconnected material pieces as session-restricted solid selections.",
7231
7732
  "path": "reference/model/components.md",
7232
7733
  "importPath": "@metamesh/modeling",
7233
7734
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7292,7 +7793,7 @@
7292
7793
  {
7293
7794
  "id": "modeling/reference/model/Contour",
7294
7795
  "title": "Contour",
7295
- "summary": "A closed two-dimensional boundary whose first point is not repeated at the end.",
7796
+ "summary": "A sampled closed two-dimensional boundary whose first point is not repeated at the end.",
7296
7797
  "path": "reference/model/Contour.md",
7297
7798
  "importPath": "@metamesh/modeling",
7298
7799
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7560,7 +8061,7 @@
7560
8061
  "limits",
7561
8062
  "resolution",
7562
8063
  "scaleTop",
7563
- "twistDegrees"
8064
+ "twist"
7564
8065
  ]
7565
8066
  },
7566
8067
  {
@@ -7752,8 +8253,8 @@
7752
8253
  "circularSegments",
7753
8254
  "maxChordError",
7754
8255
  "maxSegmentLength",
7755
- "maximumSegments",
7756
- "minimumSegments"
8256
+ "maxSegments",
8257
+ "minSegments"
7757
8258
  ]
7758
8259
  },
7759
8260
  {
@@ -7814,7 +8315,7 @@
7814
8315
  {
7815
8316
  "id": "modeling/reference/model/GridPatternOptions",
7816
8317
  "title": "GridPatternOptions",
7817
- "summary": "XY or XYZ grid with X varying fastest. The first item starts at the local origin.",
8318
+ "summary": "XY or XYZ grid with X varying fastest. The first item starts at the local origin. Dimension 2 restricts counts and spacing to XY; any frame must preserve the XY plane.",
7818
8319
  "path": "reference/model/GridPatternOptions.md",
7819
8320
  "importPath": "@metamesh/modeling",
7820
8321
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7830,7 +8331,7 @@
7830
8331
  {
7831
8332
  "id": "modeling/reference/model/heightfield",
7832
8333
  "title": "heightfield",
7833
- "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.",
8334
+ "summary": "Closed rectilinear top above a flat base, with uniform or explicit XY coordinates.",
7834
8335
  "path": "reference/model/heightfield.md",
7835
8336
  "importPath": "@metamesh/modeling",
7836
8337
  "availability": "Immutable recipes and math · Node and browsers",
@@ -7878,7 +8379,7 @@
7878
8379
  "length",
7879
8380
  "limits",
7880
8381
  "majorDiameter",
7881
- "phaseDegrees",
8382
+ "phase",
7882
8383
  "profile",
7883
8384
  "resolution",
7884
8385
  "starts",
@@ -7888,7 +8389,7 @@
7888
8389
  {
7889
8390
  "id": "modeling/reference/model/HelicalThreadSolidMeshPreflight",
7890
8391
  "title": "HelicalThreadSolidMeshPreflight",
7891
- "summary": "Conservative allocation facts resolved before constructing a direct thread solid mesh.",
8392
+ "summary": "Selected sampling counts and conservative allocation estimates, before thread mesh construction.",
7892
8393
  "path": "reference/model/HelicalThreadSolidMeshPreflight.md",
7893
8394
  "importPath": "@metamesh/modeling",
7894
8395
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8110,7 +8611,7 @@
8110
8611
  "handedness",
8111
8612
  "length",
8112
8613
  "limits",
8113
- "phaseDegrees",
8614
+ "phase",
8114
8615
  "profile",
8115
8616
  "resolution",
8116
8617
  "starts",
@@ -8154,6 +8655,152 @@
8154
8655
  "isEmpty"
8155
8656
  ]
8156
8657
  },
8658
+ {
8659
+ "id": "modeling/reference/model/knuckleHinge",
8660
+ "title": "knuckleHinge",
8661
+ "summary": "Declares separate knuckle-joint halves along the centered +X pin axis, in millimetres.",
8662
+ "path": "reference/model/knuckleHinge.md",
8663
+ "importPath": "@metamesh/modeling",
8664
+ "availability": "Immutable recipes and math · Node and browsers",
8665
+ "canonical": "https://metamesh.studio/docs/reference/model/knuckleHinge",
8666
+ "keywords": [
8667
+ "reference",
8668
+ "function",
8669
+ "model",
8670
+ "hinges",
8671
+ "knuckleHinge"
8672
+ ]
8673
+ },
8674
+ {
8675
+ "id": "modeling/reference/model/KnuckleHinge-type",
8676
+ "title": "KnuckleHinge",
8677
+ "summary": "Portable local geometry; consumers own plates, holes, part declarations, and final placement.",
8678
+ "path": "reference/model/KnuckleHinge-type.md",
8679
+ "importPath": "@metamesh/modeling",
8680
+ "availability": "Immutable recipes and math · Node and browsers",
8681
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHinge-type",
8682
+ "keywords": [
8683
+ "reference",
8684
+ "interface",
8685
+ "model",
8686
+ "hinges",
8687
+ "KnuckleHinge",
8688
+ "halfA",
8689
+ "halfB",
8690
+ "axis"
8691
+ ]
8692
+ },
8693
+ {
8694
+ "id": "modeling/reference/model/KnuckleHingeBaseSpec",
8695
+ "title": "KnuckleHingeBaseSpec",
8696
+ "summary": "Shared knuckle-joint dimensions in millimetres, independent of mounting geometry.",
8697
+ "path": "reference/model/KnuckleHingeBaseSpec.md",
8698
+ "importPath": "@metamesh/modeling",
8699
+ "availability": "Immutable recipes and math · Node and browsers",
8700
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeBaseSpec",
8701
+ "keywords": [
8702
+ "reference",
8703
+ "interface",
8704
+ "model",
8705
+ "hinges",
8706
+ "KnuckleHingeBaseSpec",
8707
+ "length",
8708
+ "knuckleCount",
8709
+ "barrelDiameter",
8710
+ "pinDiameter",
8711
+ "radialClearance",
8712
+ "axialGap"
8713
+ ]
8714
+ },
8715
+ {
8716
+ "id": "modeling/reference/model/KnuckleHingeHalfOptions",
8717
+ "title": "KnuckleHingeHalfOptions",
8718
+ "summary": "Optional mounting and outer-rim treatment for one knuckle owner.",
8719
+ "path": "reference/model/KnuckleHingeHalfOptions.md",
8720
+ "importPath": "@metamesh/modeling",
8721
+ "availability": "Immutable recipes and math · Node and browsers",
8722
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeHalfOptions",
8723
+ "keywords": [
8724
+ "reference",
8725
+ "interface",
8726
+ "model",
8727
+ "hinges",
8728
+ "KnuckleHingeHalfOptions",
8729
+ "web",
8730
+ "barrelChamfer"
8731
+ ]
8732
+ },
8733
+ {
8734
+ "id": "modeling/reference/model/KnuckleHingeOptions",
8735
+ "title": "KnuckleHingeOptions",
8736
+ "summary": "Joint declaration with independent attachments; unspecified sampling inherits the evaluating host.",
8737
+ "path": "reference/model/KnuckleHingeOptions.md",
8738
+ "importPath": "@metamesh/modeling",
8739
+ "availability": "Immutable recipes and math · Node and browsers",
8740
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeOptions",
8741
+ "keywords": [
8742
+ "reference",
8743
+ "type-alias",
8744
+ "model",
8745
+ "hinges",
8746
+ "KnuckleHingeOptions"
8747
+ ]
8748
+ },
8749
+ {
8750
+ "id": "modeling/reference/model/KnuckleHingeSamplingOptions",
8751
+ "title": "KnuckleHingeSamplingOptions",
8752
+ "summary": "Shared circular sampling for barrels, shafts, and bores.",
8753
+ "path": "reference/model/KnuckleHingeSamplingOptions.md",
8754
+ "importPath": "@metamesh/modeling",
8755
+ "availability": "Immutable recipes and math · Node and browsers",
8756
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeSamplingOptions",
8757
+ "keywords": [
8758
+ "reference",
8759
+ "interface",
8760
+ "model",
8761
+ "hinges",
8762
+ "KnuckleHingeSamplingOptions",
8763
+ "segments",
8764
+ "resolution",
8765
+ "limits"
8766
+ ]
8767
+ },
8768
+ {
8769
+ "id": "modeling/reference/model/KnuckleHingeSpec",
8770
+ "title": "KnuckleHingeSpec",
8771
+ "summary": "Knuckle-joint construction modes and interval ownership.",
8772
+ "path": "reference/model/KnuckleHingeSpec.md",
8773
+ "importPath": "@metamesh/modeling",
8774
+ "availability": "Immutable recipes and math · Node and browsers",
8775
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeSpec",
8776
+ "keywords": [
8777
+ "reference",
8778
+ "type-alias",
8779
+ "model",
8780
+ "hinges",
8781
+ "KnuckleHingeSpec"
8782
+ ]
8783
+ },
8784
+ {
8785
+ "id": "modeling/reference/model/KnuckleHingeWeb",
8786
+ "title": "KnuckleHingeWeb",
8787
+ "summary": "Rectangular connection from the axis into a caller-owned mounting body, in millimetres.",
8788
+ "path": "reference/model/KnuckleHingeWeb.md",
8789
+ "importPath": "@metamesh/modeling",
8790
+ "availability": "Immutable recipes and math · Node and browsers",
8791
+ "canonical": "https://metamesh.studio/docs/reference/model/KnuckleHingeWeb",
8792
+ "keywords": [
8793
+ "reference",
8794
+ "interface",
8795
+ "model",
8796
+ "hinges",
8797
+ "KnuckleHingeWeb",
8798
+ "direction",
8799
+ "reach",
8800
+ "zMin",
8801
+ "thickness"
8802
+ ]
8803
+ },
8157
8804
  {
8158
8805
  "id": "modeling/reference/model/linearPattern",
8159
8806
  "title": "linearPattern",
@@ -8173,7 +8820,7 @@
8173
8820
  {
8174
8821
  "id": "modeling/reference/model/LinearPatternOptions",
8175
8822
  "title": "LinearPatternOptions",
8176
- "summary": "Equal linear intervals determined by exactly two of count, spacing and total length.",
8823
+ "summary": "Equal linear intervals determined by exactly two of count, spacing and total length. Dimension defaults to 3; Section patterns use 2 and accept XY vector directions.",
8177
8824
  "path": "reference/model/LinearPatternOptions.md",
8178
8825
  "importPath": "@metamesh/modeling",
8179
8826
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8275,7 +8922,7 @@
8275
8922
  {
8276
8923
  "id": "modeling/reference/model/matchProfiles",
8277
8924
  "title": "matchProfiles",
8278
- "summary": "Explicit family matching on a shared physical span grid using session or operation resolution.",
8925
+ "summary": "Matches a profile family using operation settings over host resolution and limits. Requires active synchronous model execution. Use Geometry's matchProfiles for standalone preparation.",
8279
8926
  "path": "reference/model/matchProfiles.md",
8280
8927
  "importPath": "@metamesh/modeling",
8281
8928
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8417,19 +9064,175 @@
8417
9064
  ]
8418
9065
  },
8419
9066
  {
8420
- "id": "modeling/reference/model/Path2",
9067
+ "id": "modeling/reference/model/path2",
9068
+ "title": "path2",
9069
+ "summary": "Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.",
9070
+ "path": "reference/model/path2.md",
9071
+ "importPath": "@metamesh/modeling",
9072
+ "availability": "Immutable recipes and math · Node and browsers",
9073
+ "canonical": "https://metamesh.studio/docs/reference/model/path2",
9074
+ "keywords": [
9075
+ "reference",
9076
+ "function",
9077
+ "model",
9078
+ "paths",
9079
+ "path2"
9080
+ ]
9081
+ },
9082
+ {
9083
+ "id": "modeling/reference/model/Path2-type",
8421
9084
  "title": "Path2",
8422
- "summary": "An ordered, open sequence of two-dimensional points.",
8423
- "path": "reference/model/Path2.md",
9085
+ "summary": "Immutable directed XY polyline. Closure is explicit and does not imply a filled Section.",
9086
+ "path": "reference/model/Path2-type.md",
9087
+ "importPath": "@metamesh/modeling",
9088
+ "availability": "Immutable recipes and math · Node and browsers",
9089
+ "canonical": "https://metamesh.studio/docs/reference/model/Path2-type",
9090
+ "keywords": [
9091
+ "reference",
9092
+ "interface",
9093
+ "model",
9094
+ "paths",
9095
+ "Path2",
9096
+ "dimension",
9097
+ "closed",
9098
+ "toData",
9099
+ "length",
9100
+ "bounds",
9101
+ "closestPoint",
9102
+ "transform",
9103
+ "reverse",
9104
+ "resample"
9105
+ ]
9106
+ },
9107
+ {
9108
+ "id": "modeling/reference/model/Path2Data",
9109
+ "title": "Path2Data",
9110
+ "summary": "Complete plain XY path representation, including topology and empty-path dimensional identity.",
9111
+ "path": "reference/model/Path2Data.md",
9112
+ "importPath": "@metamesh/modeling",
9113
+ "availability": "Immutable recipes and math · Node and browsers",
9114
+ "canonical": "https://metamesh.studio/docs/reference/model/Path2Data",
9115
+ "keywords": [
9116
+ "reference",
9117
+ "interface",
9118
+ "model",
9119
+ "paths",
9120
+ "Path2Data",
9121
+ "dimension",
9122
+ "points",
9123
+ "closed"
9124
+ ]
9125
+ },
9126
+ {
9127
+ "id": "modeling/reference/model/Path2Input",
9128
+ "title": "Path2Input",
9129
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
9130
+ "path": "reference/model/Path2Input.md",
8424
9131
  "importPath": "@metamesh/modeling",
8425
9132
  "availability": "Immutable recipes and math · Node and browsers",
8426
- "canonical": "https://metamesh.studio/docs/reference/model/Path2",
9133
+ "canonical": "https://metamesh.studio/docs/reference/model/Path2Input",
8427
9134
  "keywords": [
8428
9135
  "reference",
8429
9136
  "type-alias",
8430
9137
  "model",
8431
- "sections",
8432
- "Path2"
9138
+ "paths",
9139
+ "Path2Input"
9140
+ ]
9141
+ },
9142
+ {
9143
+ "id": "modeling/reference/model/path3",
9144
+ "title": "path3",
9145
+ "summary": "Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam, allocation and error rules as path2. Analytic curves must be sampled explicitly first.",
9146
+ "path": "reference/model/path3.md",
9147
+ "importPath": "@metamesh/modeling",
9148
+ "availability": "Immutable recipes and math · Node and browsers",
9149
+ "canonical": "https://metamesh.studio/docs/reference/model/path3",
9150
+ "keywords": [
9151
+ "reference",
9152
+ "function",
9153
+ "model",
9154
+ "paths",
9155
+ "path3"
9156
+ ]
9157
+ },
9158
+ {
9159
+ "id": "modeling/reference/model/Path3-type",
9160
+ "title": "Path3",
9161
+ "summary": "Immutable directed XYZ polyline; it represents sampled edges, not an analytic curve.",
9162
+ "path": "reference/model/Path3-type.md",
9163
+ "importPath": "@metamesh/modeling",
9164
+ "availability": "Immutable recipes and math · Node and browsers",
9165
+ "canonical": "https://metamesh.studio/docs/reference/model/Path3-type",
9166
+ "keywords": [
9167
+ "reference",
9168
+ "interface",
9169
+ "model",
9170
+ "paths",
9171
+ "Path3",
9172
+ "dimension",
9173
+ "closed",
9174
+ "toData",
9175
+ "length",
9176
+ "bounds",
9177
+ "closestPoint",
9178
+ "transform",
9179
+ "reverse",
9180
+ "resample"
9181
+ ]
9182
+ },
9183
+ {
9184
+ "id": "modeling/reference/model/Path3Data",
9185
+ "title": "Path3Data",
9186
+ "summary": "Complete plain XYZ path representation, including topology and empty-path dimensional identity.",
9187
+ "path": "reference/model/Path3Data.md",
9188
+ "importPath": "@metamesh/modeling",
9189
+ "availability": "Immutable recipes and math · Node and browsers",
9190
+ "canonical": "https://metamesh.studio/docs/reference/model/Path3Data",
9191
+ "keywords": [
9192
+ "reference",
9193
+ "interface",
9194
+ "model",
9195
+ "paths",
9196
+ "Path3Data",
9197
+ "dimension",
9198
+ "points",
9199
+ "closed"
9200
+ ]
9201
+ },
9202
+ {
9203
+ "id": "modeling/reference/model/Path3Input",
9204
+ "title": "Path3Input",
9205
+ "summary": "A matching path value, complete plain path data, or a collection of vectors.",
9206
+ "path": "reference/model/Path3Input.md",
9207
+ "importPath": "@metamesh/modeling",
9208
+ "availability": "Immutable recipes and math · Node and browsers",
9209
+ "canonical": "https://metamesh.studio/docs/reference/model/Path3Input",
9210
+ "keywords": [
9211
+ "reference",
9212
+ "type-alias",
9213
+ "model",
9214
+ "paths",
9215
+ "Path3Input"
9216
+ ]
9217
+ },
9218
+ {
9219
+ "id": "modeling/reference/model/PathLocation",
9220
+ "title": "PathLocation",
9221
+ "summary": "Nearest location on a sampled boundary, rather than inside a filled shape or on an analytic curve.",
9222
+ "path": "reference/model/PathLocation.md",
9223
+ "importPath": "@metamesh/modeling",
9224
+ "availability": "Immutable recipes and math · Node and browsers",
9225
+ "canonical": "https://metamesh.studio/docs/reference/model/PathLocation",
9226
+ "keywords": [
9227
+ "reference",
9228
+ "interface",
9229
+ "model",
9230
+ "paths",
9231
+ "PathLocation",
9232
+ "point",
9233
+ "distance",
9234
+ "edgeIndex",
9235
+ "fraction"
8433
9236
  ]
8434
9237
  },
8435
9238
  {
@@ -8448,6 +9251,24 @@
8448
9251
  "PathNormalGuide"
8449
9252
  ]
8450
9253
  },
9254
+ {
9255
+ "id": "modeling/reference/model/PathOptions",
9256
+ "title": "PathOptions",
9257
+ "summary": "Topology and allocation ceiling for an immutable sampled path.",
9258
+ "path": "reference/model/PathOptions.md",
9259
+ "importPath": "@metamesh/modeling",
9260
+ "availability": "Immutable recipes and math · Node and browsers",
9261
+ "canonical": "https://metamesh.studio/docs/reference/model/PathOptions",
9262
+ "keywords": [
9263
+ "reference",
9264
+ "interface",
9265
+ "model",
9266
+ "paths",
9267
+ "PathOptions",
9268
+ "closed",
9269
+ "limits"
9270
+ ]
9271
+ },
8451
9272
  {
8452
9273
  "id": "modeling/reference/model/pathPattern",
8453
9274
  "title": "pathPattern",
@@ -8483,6 +9304,26 @@
8483
9304
  "orientation"
8484
9305
  ]
8485
9306
  },
9307
+ {
9308
+ "id": "modeling/reference/model/PathResamplingOptions",
9309
+ "title": "PathResamplingOptions",
9310
+ "summary": "Equal arc-length sampling; the path itself owns whether its closing edge is included.",
9311
+ "path": "reference/model/PathResamplingOptions.md",
9312
+ "importPath": "@metamesh/modeling",
9313
+ "availability": "Immutable recipes and math · Node and browsers",
9314
+ "canonical": "https://metamesh.studio/docs/reference/model/PathResamplingOptions",
9315
+ "keywords": [
9316
+ "reference",
9317
+ "interface",
9318
+ "model",
9319
+ "paths",
9320
+ "PathResamplingOptions",
9321
+ "resolution",
9322
+ "maxVertices",
9323
+ "limits",
9324
+ "segments"
9325
+ ]
9326
+ },
8486
9327
  {
8487
9328
  "id": "modeling/reference/model/PatternSource",
8488
9329
  "title": "PatternSource",
@@ -8554,7 +9395,7 @@
8554
9395
  {
8555
9396
  "id": "modeling/reference/model/polygon",
8556
9397
  "title": "polygon",
8557
- "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.",
9398
+ "summary": "Fills one closed millimetre XY outline, explicit outer/hole topology, or compound contours.",
8558
9399
  "path": "reference/model/polygon.md",
8559
9400
  "importPath": "@metamesh/modeling",
8560
9401
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8570,7 +9411,7 @@
8570
9411
  {
8571
9412
  "id": "modeling/reference/model/PolygonData",
8572
9413
  "title": "PolygonData",
8573
- "summary": "One bounded two-dimensional polygon.",
9414
+ "summary": "One filled two-dimensional polygon with an exterior and optional holes.",
8574
9415
  "path": "reference/model/PolygonData.md",
8575
9416
  "importPath": "@metamesh/modeling",
8576
9417
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8604,7 +9445,7 @@
8604
9445
  {
8605
9446
  "id": "modeling/reference/model/preflightInternalThreadCutter",
8606
9447
  "title": "preflightInternalThreadCutter",
8607
- "summary": "Allocation-free internal-thread facts.",
9448
+ "summary": "Checks compensated cutter dimensions and conservative mesh estimates against host output limits.",
8608
9449
  "path": "reference/model/preflightInternalThreadCutter.md",
8609
9450
  "importPath": "@metamesh/modeling",
8610
9451
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8620,7 +9461,7 @@
8620
9461
  {
8621
9462
  "id": "modeling/reference/model/preflightThreadedNut",
8622
9463
  "title": "preflightThreadedNut",
8623
- "summary": "Allocation-free nut/cutter facts.",
9464
+ "summary": "Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.",
8624
9465
  "path": "reference/model/preflightThreadedNut.md",
8625
9466
  "importPath": "@metamesh/modeling",
8626
9467
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8636,7 +9477,7 @@
8636
9477
  {
8637
9478
  "id": "modeling/reference/model/preflightThreadedRod",
8638
9479
  "title": "preflightThreadedRod",
8639
- "summary": "Allocation-free external-thread facts.",
9480
+ "summary": "Checks compensated rod dimensions and conservative mesh estimates against host output limits.",
8640
9481
  "path": "reference/model/preflightThreadedRod.md",
8641
9482
  "importPath": "@metamesh/modeling",
8642
9483
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8650,42 +9491,42 @@
8650
9491
  ]
8651
9492
  },
8652
9493
  {
8653
- "id": "modeling/reference/model/PrimitivePlacement",
8654
- "title": "PrimitivePlacement",
8655
- "summary": "Placement shared by solid and filled-section factories.",
8656
- "path": "reference/model/PrimitivePlacement.md",
9494
+ "id": "modeling/reference/model/PrimitiveAttachment",
9495
+ "title": "PrimitiveAttachment",
9496
+ "summary": "Anchor attachment shared by solid and filled-section factories.",
9497
+ "path": "reference/model/PrimitiveAttachment.md",
8657
9498
  "importPath": "@metamesh/modeling",
8658
9499
  "availability": "Immutable recipes and math · Node and browsers",
8659
- "canonical": "https://metamesh.studio/docs/reference/model/PrimitivePlacement",
9500
+ "canonical": "https://metamesh.studio/docs/reference/model/PrimitiveAttachment",
8660
9501
  "keywords": [
8661
9502
  "reference",
8662
9503
  "interface",
8663
9504
  "model",
8664
9505
  "transforms-placement",
8665
- "PrimitivePlacement",
8666
- "placement"
9506
+ "PrimitiveAttachment",
9507
+ "attachment"
8667
9508
  ]
8668
9509
  },
8669
9510
  {
8670
- "id": "modeling/reference/model/PrimitivePlacementOptions",
8671
- "title": "PrimitivePlacementOptions",
9511
+ "id": "modeling/reference/model/PrimitiveAttachmentOptions",
9512
+ "title": "PrimitiveAttachmentOptions",
8672
9513
  "summary": "Maps an explicit or named shape-local attachment anchor onto a world-space anchor.",
8673
- "path": "reference/model/PrimitivePlacementOptions.md",
9514
+ "path": "reference/model/PrimitiveAttachmentOptions.md",
8674
9515
  "importPath": "@metamesh/modeling",
8675
9516
  "availability": "Immutable recipes and math · Node and browsers",
8676
- "canonical": "https://metamesh.studio/docs/reference/model/PrimitivePlacementOptions",
9517
+ "canonical": "https://metamesh.studio/docs/reference/model/PrimitiveAttachmentOptions",
8677
9518
  "keywords": [
8678
9519
  "reference",
8679
9520
  "interface",
8680
9521
  "model",
8681
9522
  "transforms-placement",
8682
- "PrimitivePlacementOptions",
8683
- "source",
8684
- "target",
9523
+ "PrimitiveAttachmentOptions",
8685
9524
  "alignment",
8686
9525
  "gap",
8687
- "spinDegrees",
8688
- "tolerance"
9526
+ "spin",
9527
+ "tolerance",
9528
+ "source",
9529
+ "target"
8689
9530
  ]
8690
9531
  },
8691
9532
  {
@@ -8726,7 +9567,7 @@
8726
9567
  {
8727
9568
  "id": "modeling/reference/model/Profile",
8728
9569
  "title": "Profile",
8729
- "summary": "An explicit component/contour/span topology, before shared family sampling.",
9570
+ "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.",
8730
9571
  "path": "reference/model/Profile.md",
8731
9572
  "importPath": "@metamesh/modeling",
8732
9573
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8762,7 +9603,7 @@
8762
9603
  {
8763
9604
  "id": "modeling/reference/model/ProfileContour2",
8764
9605
  "title": "ProfileContour2",
8765
- "summary": "Ordered, closed spans. Outer winding is CCW and hole winding is CW.",
9606
+ "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.",
8766
9607
  "path": "reference/model/ProfileContour2.md",
8767
9608
  "importPath": "@metamesh/modeling",
8768
9609
  "availability": "Immutable recipes and math · Node and browsers",
@@ -8830,21 +9671,17 @@
8830
9671
  {
8831
9672
  "id": "modeling/reference/model/RadialPatternOptions",
8832
9673
  "title": "RadialPatternOptions",
8833
- "summary": "Options for repeating one solid around an axis through a center point.",
9674
+ "summary": "Degree rotations about a fixed world-space pivot; XY patterns use the implicit +Z axis.",
8834
9675
  "path": "reference/model/RadialPatternOptions.md",
8835
9676
  "importPath": "@metamesh/modeling",
8836
9677
  "availability": "Immutable recipes and math · Node and browsers",
8837
9678
  "canonical": "https://metamesh.studio/docs/reference/model/RadialPatternOptions",
8838
9679
  "keywords": [
8839
9680
  "reference",
8840
- "interface",
9681
+ "type-alias",
8841
9682
  "model",
8842
9683
  "transforms-placement",
8843
- "RadialPatternOptions",
8844
- "count",
8845
- "axis",
8846
- "angleDegrees",
8847
- "center"
9684
+ "RadialPatternOptions"
8848
9685
  ]
8849
9686
  },
8850
9687
  {
@@ -8881,22 +9718,6 @@
8881
9718
  "sizing"
8882
9719
  ]
8883
9720
  },
8884
- {
8885
- "id": "modeling/reference/model/rayCast",
8886
- "title": "rayCast",
8887
- "summary": "Copies intersections along the finite directed origin-to-endpoint segment.",
8888
- "path": "reference/model/rayCast.md",
8889
- "importPath": "@metamesh/modeling",
8890
- "availability": "Immutable recipes and math · Node and browsers",
8891
- "canonical": "https://metamesh.studio/docs/reference/model/rayCast",
8892
- "keywords": [
8893
- "reference",
8894
- "function",
8895
- "model",
8896
- "inspection",
8897
- "rayCast"
8898
- ]
8899
- },
8900
9721
  {
8901
9722
  "id": "modeling/reference/model/rectangle",
8902
9723
  "title": "rectangle",
@@ -8979,7 +9800,7 @@
8979
9800
  "model",
8980
9801
  "sections",
8981
9802
  "RectangleOptions",
8982
- "placement",
9803
+ "attachment",
8983
9804
  "size",
8984
9805
  "center",
8985
9806
  "treatment",
@@ -8989,7 +9810,7 @@
8989
9810
  {
8990
9811
  "id": "modeling/reference/model/RegionData",
8991
9812
  "title": "RegionData",
8992
- "summary": "A two-dimensional region represented by disjoint filled polygons.",
9813
+ "summary": "A two-dimensional region represented by disjoint filled polygons. Each PolygonData owns one exterior and its holes; an empty region contains no material.",
8993
9814
  "path": "reference/model/RegionData.md",
8994
9815
  "importPath": "@metamesh/modeling",
8995
9816
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9066,7 +9887,7 @@
9066
9887
  "RevolveOptions",
9067
9888
  "segments",
9068
9889
  "resolution",
9069
- "revolveDegrees",
9890
+ "degrees",
9070
9891
  "limits"
9071
9892
  ]
9072
9893
  },
@@ -9094,7 +9915,7 @@
9094
9915
  {
9095
9916
  "id": "modeling/reference/model/Section",
9096
9917
  "title": "Section",
9097
- "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.",
9918
+ "summary": "Immutable deferred filled XY section recipe.",
9098
9919
  "path": "reference/model/Section.md",
9099
9920
  "importPath": "@metamesh/modeling",
9100
9921
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9153,11 +9974,11 @@
9153
9974
  "SectionInspection",
9154
9975
  "isEmpty",
9155
9976
  "area",
9156
- "contours",
9977
+ "contourCount",
9157
9978
  "max",
9158
9979
  "min",
9159
- "parts",
9160
- "vertices"
9980
+ "componentCount",
9981
+ "vertexCount"
9161
9982
  ]
9162
9983
  },
9163
9984
  {
@@ -9220,7 +10041,7 @@
9220
10041
  {
9221
10042
  "id": "modeling/reference/model/Solid",
9222
10043
  "title": "Solid",
9223
- "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.",
10044
+ "summary": "Immutable deferred solid recipe.",
9224
10045
  "path": "reference/model/Solid.md",
9225
10046
  "importPath": "@metamesh/modeling",
9226
10047
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9237,11 +10058,12 @@
9237
10058
  "scale",
9238
10059
  "mirror",
9239
10060
  "transform",
10061
+ "toTriangleMesh",
9240
10062
  "subtract",
9241
10063
  "simplify",
9242
10064
  "withAnchors",
9243
10065
  "attach",
9244
- "setTolerance",
10066
+ "withTolerance",
9245
10067
  "projectSection",
9246
10068
  "sliceSection"
9247
10069
  ]
@@ -9279,26 +10101,26 @@
9279
10101
  "isEmpty",
9280
10102
  "max",
9281
10103
  "min",
9282
- "parts",
10104
+ "componentCount",
9283
10105
  "volume",
9284
10106
  "surfaceArea",
9285
10107
  "tolerance"
9286
10108
  ]
9287
10109
  },
9288
10110
  {
9289
- "id": "modeling/reference/model/SolidRayHit",
9290
- "title": "SolidRayHit",
10111
+ "id": "modeling/reference/model/SolidSegmentHit",
10112
+ "title": "SolidSegmentHit",
9291
10113
  "summary": "Copied surface intersection from a finite directed segment. Distance is in millimetres.",
9292
- "path": "reference/model/SolidRayHit.md",
10114
+ "path": "reference/model/SolidSegmentHit.md",
9293
10115
  "importPath": "@metamesh/modeling",
9294
10116
  "availability": "Immutable recipes and math · Node and browsers",
9295
- "canonical": "https://metamesh.studio/docs/reference/model/SolidRayHit",
10117
+ "canonical": "https://metamesh.studio/docs/reference/model/SolidSegmentHit",
9296
10118
  "keywords": [
9297
10119
  "reference",
9298
10120
  "interface",
9299
10121
  "model",
9300
10122
  "inspection",
9301
- "SolidRayHit",
10123
+ "SolidSegmentHit",
9302
10124
  "faceId",
9303
10125
  "distance",
9304
10126
  "position",
@@ -9399,12 +10221,12 @@
9399
10221
  "model",
9400
10222
  "sections",
9401
10223
  "StarOptions",
9402
- "placement",
10224
+ "attachment",
9403
10225
  "limits",
9404
10226
  "outerRadius",
9405
10227
  "innerRadius",
9406
10228
  "points",
9407
- "rotationDegrees"
10229
+ "rotation"
9408
10230
  ]
9409
10231
  },
9410
10232
  {
@@ -9424,57 +10246,57 @@
9424
10246
  ]
9425
10247
  },
9426
10248
  {
9427
- "id": "modeling/reference/model/StrokeOptions",
9428
- "title": "StrokeOptions",
9429
- "summary": "Physical stroke and topology controls shared by pure regions and native Sections.",
9430
- "path": "reference/model/StrokeOptions.md",
10249
+ "id": "modeling/reference/model/StrokeCap",
10250
+ "title": "StrokeCap",
10251
+ "summary": "End-cap treatment for an open stroked path.",
10252
+ "path": "reference/model/StrokeCap.md",
9431
10253
  "importPath": "@metamesh/modeling",
9432
10254
  "availability": "Immutable recipes and math · Node and browsers",
9433
- "canonical": "https://metamesh.studio/docs/reference/model/StrokeOptions",
10255
+ "canonical": "https://metamesh.studio/docs/reference/model/StrokeCap",
9434
10256
  "keywords": [
9435
10257
  "reference",
9436
- "interface",
10258
+ "type-alias",
9437
10259
  "model",
9438
10260
  "sections",
9439
- "StrokeOptions",
9440
- "limits",
9441
- "closed",
9442
- "cap",
9443
- "join",
9444
- "resolution",
9445
- "width"
10261
+ "StrokeCap"
9446
10262
  ]
9447
10263
  },
9448
10264
  {
9449
- "id": "modeling/reference/model/StrokePathCap",
9450
- "title": "StrokePathCap",
9451
- "summary": "End-cap treatment for an open stroked path.",
9452
- "path": "reference/model/StrokePathCap.md",
10265
+ "id": "modeling/reference/model/StrokeJoin",
10266
+ "title": "StrokeJoin",
10267
+ "summary": "Join treatment where adjacent stroked path segments meet.",
10268
+ "path": "reference/model/StrokeJoin.md",
9453
10269
  "importPath": "@metamesh/modeling",
9454
10270
  "availability": "Immutable recipes and math · Node and browsers",
9455
- "canonical": "https://metamesh.studio/docs/reference/model/StrokePathCap",
10271
+ "canonical": "https://metamesh.studio/docs/reference/model/StrokeJoin",
9456
10272
  "keywords": [
9457
10273
  "reference",
9458
10274
  "type-alias",
9459
10275
  "model",
9460
10276
  "sections",
9461
- "StrokePathCap"
10277
+ "StrokeJoin"
9462
10278
  ]
9463
10279
  },
9464
10280
  {
9465
- "id": "modeling/reference/model/StrokePathJoin",
9466
- "title": "StrokePathJoin",
9467
- "summary": "Join treatment where adjacent stroked path segments meet.",
9468
- "path": "reference/model/StrokePathJoin.md",
10281
+ "id": "modeling/reference/model/StrokeOptions",
10282
+ "title": "StrokeOptions",
10283
+ "summary": "Physical stroke and topology controls shared by pure regions and native Sections.",
10284
+ "path": "reference/model/StrokeOptions.md",
9469
10285
  "importPath": "@metamesh/modeling",
9470
10286
  "availability": "Immutable recipes and math · Node and browsers",
9471
- "canonical": "https://metamesh.studio/docs/reference/model/StrokePathJoin",
10287
+ "canonical": "https://metamesh.studio/docs/reference/model/StrokeOptions",
9472
10288
  "keywords": [
9473
10289
  "reference",
9474
- "type-alias",
10290
+ "interface",
9475
10291
  "model",
9476
10292
  "sections",
9477
- "StrokePathJoin"
10293
+ "StrokeOptions",
10294
+ "limits",
10295
+ "closed",
10296
+ "cap",
10297
+ "join",
10298
+ "resolution",
10299
+ "width"
9478
10300
  ]
9479
10301
  },
9480
10302
  {
@@ -9600,7 +10422,7 @@
9600
10422
  "limits",
9601
10423
  "orientation",
9602
10424
  "resolution",
9603
- "twistDegrees",
10425
+ "twist",
9604
10426
  "twistBy",
9605
10427
  "scale",
9606
10428
  "seamProfileOffset"
@@ -9705,7 +10527,7 @@
9705
10527
  "ends",
9706
10528
  "handedness",
9707
10529
  "limits",
9708
- "phaseDegrees",
10530
+ "phase",
9709
10531
  "profile",
9710
10532
  "resolution",
9711
10533
  "starts",
@@ -9724,7 +10546,7 @@
9724
10546
  {
9725
10547
  "id": "modeling/reference/model/ThreadedNutPreflight",
9726
10548
  "title": "ThreadedNutPreflight",
9727
- "summary": "Allocation-free body, cutter, and end-face facts resolved for a threaded nut.",
10549
+ "summary": "Resolved body and end-face dimensions plus conservative allocation estimates for the thread cutter.",
9728
10550
  "path": "reference/model/ThreadedNutPreflight.md",
9729
10551
  "importPath": "@metamesh/modeling",
9730
10552
  "availability": "Immutable recipes and math · Node and browsers",
@@ -9794,7 +10616,7 @@
9794
10616
  "handedness",
9795
10617
  "length",
9796
10618
  "limits",
9797
- "phaseDegrees",
10619
+ "phase",
9798
10620
  "profile",
9799
10621
  "resolution",
9800
10622
  "starts",
@@ -9976,7 +10798,7 @@
9976
10798
  "model",
9977
10799
  "primitives",
9978
10800
  "TorusOptions",
9979
- "placement",
10801
+ "attachment",
9980
10802
  "limits",
9981
10803
  "majorRadius",
9982
10804
  "majorSegments",
@@ -9985,26 +10807,10 @@
9985
10807
  "resolution"
9986
10808
  ]
9987
10809
  },
9988
- {
9989
- "id": "modeling/reference/model/toTriangleMesh",
9990
- "title": "toTriangleMesh",
9991
- "summary": "Copies a handle to manufacturing mesh buffers.",
9992
- "path": "reference/model/toTriangleMesh.md",
9993
- "importPath": "@metamesh/modeling",
9994
- "availability": "Immutable recipes and math · Node and browsers",
9995
- "canonical": "https://metamesh.studio/docs/reference/model/toTriangleMesh",
9996
- "keywords": [
9997
- "reference",
9998
- "function",
9999
- "model",
10000
- "inspection",
10001
- "toTriangleMesh"
10002
- ]
10003
- },
10004
10810
  {
10005
10811
  "id": "modeling/reference/model/transform2",
10006
10812
  "title": "transform2",
10007
- "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.",
10813
+ "summary": "Creates an immutable XY transform, identity by default.",
10008
10814
  "path": "reference/model/transform2.md",
10009
10815
  "importPath": "@metamesh/modeling",
10010
10816
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10039,46 +10845,46 @@
10039
10845
  "applyPoint",
10040
10846
  "applyDirection",
10041
10847
  "applyNormal",
10042
- "toMatrix",
10848
+ "toData",
10043
10849
  "to3D"
10044
10850
  ]
10045
10851
  },
10046
10852
  {
10047
- "id": "modeling/reference/model/Transform2Input",
10048
- "title": "Transform2Input",
10049
- "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
10050
- "path": "reference/model/Transform2Input.md",
10853
+ "id": "modeling/reference/model/Transform2Data",
10854
+ "title": "Transform2Data",
10855
+ "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]`.",
10856
+ "path": "reference/model/Transform2Data.md",
10051
10857
  "importPath": "@metamesh/modeling",
10052
10858
  "availability": "Immutable recipes and math · Node and browsers",
10053
- "canonical": "https://metamesh.studio/docs/reference/model/Transform2Input",
10859
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform2Data",
10054
10860
  "keywords": [
10055
10861
  "reference",
10056
10862
  "type-alias",
10057
10863
  "model",
10058
10864
  "transforms-placement",
10059
- "Transform2Input"
10865
+ "Transform2Data"
10060
10866
  ]
10061
10867
  },
10062
10868
  {
10063
- "id": "modeling/reference/model/Transform2Matrix",
10064
- "title": "Transform2Matrix",
10065
- "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]`.",
10066
- "path": "reference/model/Transform2Matrix.md",
10869
+ "id": "modeling/reference/model/Transform2Input",
10870
+ "title": "Transform2Input",
10871
+ "summary": "An immutable XY transform or its canonical row-major matrix for interchange.",
10872
+ "path": "reference/model/Transform2Input.md",
10067
10873
  "importPath": "@metamesh/modeling",
10068
10874
  "availability": "Immutable recipes and math · Node and browsers",
10069
- "canonical": "https://metamesh.studio/docs/reference/model/Transform2Matrix",
10875
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform2Input",
10070
10876
  "keywords": [
10071
10877
  "reference",
10072
10878
  "type-alias",
10073
10879
  "model",
10074
10880
  "transforms-placement",
10075
- "Transform2Matrix"
10881
+ "Transform2Input"
10076
10882
  ]
10077
10883
  },
10078
10884
  {
10079
10885
  "id": "modeling/reference/model/transform3",
10080
10886
  "title": "transform3",
10081
- "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.",
10887
+ "summary": "Creates an immutable XYZ transform, identity by default.",
10082
10888
  "path": "reference/model/transform3.md",
10083
10889
  "importPath": "@metamesh/modeling",
10084
10890
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10114,40 +10920,40 @@
10114
10920
  "applyPoint",
10115
10921
  "applyDirection",
10116
10922
  "applyNormal",
10117
- "toMatrix",
10923
+ "toData",
10118
10924
  "to2D"
10119
10925
  ]
10120
10926
  },
10121
10927
  {
10122
- "id": "modeling/reference/model/Transform3Input",
10123
- "title": "Transform3Input",
10124
- "summary": "An immutable XYZ transform or its canonical row-major matrix for interchange.",
10125
- "path": "reference/model/Transform3Input.md",
10928
+ "id": "modeling/reference/model/Transform3Data",
10929
+ "title": "Transform3Data",
10930
+ "summary": "A row-major affine 4x4 matrix applied to column vectors.",
10931
+ "path": "reference/model/Transform3Data.md",
10126
10932
  "importPath": "@metamesh/modeling",
10127
10933
  "availability": "Immutable recipes and math · Node and browsers",
10128
- "canonical": "https://metamesh.studio/docs/reference/model/Transform3Input",
10934
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform3Data",
10129
10935
  "keywords": [
10130
10936
  "reference",
10131
10937
  "type-alias",
10132
10938
  "model",
10133
10939
  "transforms-placement",
10134
- "Transform3Input"
10940
+ "Transform3Data"
10135
10941
  ]
10136
10942
  },
10137
10943
  {
10138
- "id": "modeling/reference/model/Transform3Matrix",
10139
- "title": "Transform3Matrix",
10140
- "summary": "A row-major affine 4x4 matrix applied to column vectors.",
10141
- "path": "reference/model/Transform3Matrix.md",
10944
+ "id": "modeling/reference/model/Transform3Input",
10945
+ "title": "Transform3Input",
10946
+ "summary": "An immutable XYZ transform or its canonical row-major matrix for interchange.",
10947
+ "path": "reference/model/Transform3Input.md",
10142
10948
  "importPath": "@metamesh/modeling",
10143
10949
  "availability": "Immutable recipes and math · Node and browsers",
10144
- "canonical": "https://metamesh.studio/docs/reference/model/Transform3Matrix",
10950
+ "canonical": "https://metamesh.studio/docs/reference/model/Transform3Input",
10145
10951
  "keywords": [
10146
10952
  "reference",
10147
10953
  "type-alias",
10148
10954
  "model",
10149
10955
  "transforms-placement",
10150
- "Transform3Matrix"
10956
+ "Transform3Input"
10151
10957
  ]
10152
10958
  },
10153
10959
  {
@@ -10245,7 +11051,7 @@
10245
11051
  "limits",
10246
11052
  "segments",
10247
11053
  "resolution",
10248
- "placement",
11054
+ "attachment",
10249
11055
  "center",
10250
11056
  "height",
10251
11057
  "innerRadius",
@@ -10271,7 +11077,7 @@
10271
11077
  {
10272
11078
  "id": "modeling/reference/model/vector2",
10273
11079
  "title": "vector2",
10274
- "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.",
11080
+ "summary": "Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.",
10275
11081
  "path": "reference/model/vector2.md",
10276
11082
  "importPath": "@metamesh/modeling",
10277
11083
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10309,45 +11115,45 @@
10309
11115
  "cross",
10310
11116
  "length",
10311
11117
  "distance",
10312
- "toArray"
11118
+ "toData"
10313
11119
  ]
10314
11120
  },
10315
11121
  {
10316
- "id": "modeling/reference/model/Vector2Input",
10317
- "title": "Vector2Input",
10318
- "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
10319
- "path": "reference/model/Vector2Input.md",
11122
+ "id": "modeling/reference/model/Vector2Data",
11123
+ "title": "Vector2Data",
11124
+ "summary": "A two-dimensional Cartesian vector or point.",
11125
+ "path": "reference/model/Vector2Data.md",
10320
11126
  "importPath": "@metamesh/modeling",
10321
11127
  "availability": "Immutable recipes and math · Node and browsers",
10322
- "canonical": "https://metamesh.studio/docs/reference/model/Vector2Input",
11128
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector2Data",
10323
11129
  "keywords": [
10324
11130
  "reference",
10325
11131
  "type-alias",
10326
11132
  "model",
10327
- "transforms-placement",
10328
- "Vector2Input"
11133
+ "core-values-errors",
11134
+ "Vector2Data"
10329
11135
  ]
10330
11136
  },
10331
11137
  {
10332
- "id": "modeling/reference/model/Vector2Tuple",
10333
- "title": "Vector2Tuple",
10334
- "summary": "A two-dimensional Cartesian vector or point.",
10335
- "path": "reference/model/Vector2Tuple.md",
11138
+ "id": "modeling/reference/model/Vector2Input",
11139
+ "title": "Vector2Input",
11140
+ "summary": "An XY tuple or immutable fluent vector accepted by vector operations.",
11141
+ "path": "reference/model/Vector2Input.md",
10336
11142
  "importPath": "@metamesh/modeling",
10337
11143
  "availability": "Immutable recipes and math · Node and browsers",
10338
- "canonical": "https://metamesh.studio/docs/reference/model/Vector2Tuple",
11144
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector2Input",
10339
11145
  "keywords": [
10340
11146
  "reference",
10341
11147
  "type-alias",
10342
11148
  "model",
10343
- "core-values-errors",
10344
- "Vector2Tuple"
11149
+ "transforms-placement",
11150
+ "Vector2Input"
10345
11151
  ]
10346
11152
  },
10347
11153
  {
10348
11154
  "id": "modeling/reference/model/vector3",
10349
11155
  "title": "vector3",
10350
- "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.",
11156
+ "summary": "Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.",
10351
11157
  "path": "reference/model/vector3.md",
10352
11158
  "importPath": "@metamesh/modeling",
10353
11159
  "availability": "Immutable recipes and math · Node and browsers",
@@ -10386,39 +11192,39 @@
10386
11192
  "cross",
10387
11193
  "length",
10388
11194
  "distance",
10389
- "toArray"
11195
+ "toData"
10390
11196
  ]
10391
11197
  },
10392
11198
  {
10393
- "id": "modeling/reference/model/Vector3Input",
10394
- "title": "Vector3Input",
10395
- "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
10396
- "path": "reference/model/Vector3Input.md",
11199
+ "id": "modeling/reference/model/Vector3Data",
11200
+ "title": "Vector3Data",
11201
+ "summary": "A three-dimensional Cartesian vector or point.",
11202
+ "path": "reference/model/Vector3Data.md",
10397
11203
  "importPath": "@metamesh/modeling",
10398
11204
  "availability": "Immutable recipes and math · Node and browsers",
10399
- "canonical": "https://metamesh.studio/docs/reference/model/Vector3Input",
11205
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector3Data",
10400
11206
  "keywords": [
10401
11207
  "reference",
10402
11208
  "type-alias",
10403
11209
  "model",
10404
- "transforms-placement",
10405
- "Vector3Input"
11210
+ "core-values-errors",
11211
+ "Vector3Data"
10406
11212
  ]
10407
11213
  },
10408
11214
  {
10409
- "id": "modeling/reference/model/Vector3Tuple",
10410
- "title": "Vector3Tuple",
10411
- "summary": "A three-dimensional Cartesian vector or point.",
10412
- "path": "reference/model/Vector3Tuple.md",
11215
+ "id": "modeling/reference/model/Vector3Input",
11216
+ "title": "Vector3Input",
11217
+ "summary": "An XYZ tuple or immutable fluent vector accepted by vector operations.",
11218
+ "path": "reference/model/Vector3Input.md",
10413
11219
  "importPath": "@metamesh/modeling",
10414
11220
  "availability": "Immutable recipes and math · Node and browsers",
10415
- "canonical": "https://metamesh.studio/docs/reference/model/Vector3Tuple",
11221
+ "canonical": "https://metamesh.studio/docs/reference/model/Vector3Input",
10416
11222
  "keywords": [
10417
11223
  "reference",
10418
11224
  "type-alias",
10419
11225
  "model",
10420
- "core-values-errors",
10421
- "Vector3Tuple"
11226
+ "transforms-placement",
11227
+ "Vector3Input"
10422
11228
  ]
10423
11229
  },
10424
11230
  {
@@ -10479,19 +11285,19 @@
10479
11285
  ]
10480
11286
  },
10481
11287
  {
10482
- "id": "modeling/reference/text/Bounds2",
10483
- "title": "Bounds2",
10484
- "summary": "Axis-aligned bounds in two-dimensional model space.",
10485
- "path": "reference/text/Bounds2.md",
11288
+ "id": "modeling/reference/text/Bounds2Data",
11289
+ "title": "Bounds2Data",
11290
+ "summary": "Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods.",
11291
+ "path": "reference/text/Bounds2Data.md",
10486
11292
  "importPath": "@metamesh/modeling/text",
10487
11293
  "availability": "Optional font preparation · Node and Workers",
10488
- "canonical": "https://metamesh.studio/docs/reference/text/Bounds2",
11294
+ "canonical": "https://metamesh.studio/docs/reference/text/Bounds2Data",
10489
11295
  "keywords": [
10490
11296
  "reference",
10491
11297
  "interface",
10492
11298
  "text",
10493
11299
  "font-preparation",
10494
- "Bounds2",
11300
+ "Bounds2Data",
10495
11301
  "max",
10496
11302
  "min"
10497
11303
  ]
@@ -10531,7 +11337,7 @@
10531
11337
  {
10532
11338
  "id": "modeling/reference/text/prepareVectorFont",
10533
11339
  "title": "prepareVectorFont",
10534
- "summary": "Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here.",
11340
+ "summary": "Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here. Argument and resource failures use GeometryError; parser and decoder exceptions propagate unchanged.",
10535
11341
  "path": "reference/text/prepareVectorFont.md",
10536
11342
  "importPath": "@metamesh/modeling/text",
10537
11343
  "availability": "Optional font preparation · Node and Workers",
@@ -10545,25 +11351,25 @@
10545
11351
  ]
10546
11352
  },
10547
11353
  {
10548
- "id": "modeling/reference/text/Vector2Tuple",
10549
- "title": "Vector2Tuple",
11354
+ "id": "modeling/reference/text/Vector2Data",
11355
+ "title": "Vector2Data",
10550
11356
  "summary": "A two-dimensional Cartesian vector or point.",
10551
- "path": "reference/text/Vector2Tuple.md",
11357
+ "path": "reference/text/Vector2Data.md",
10552
11358
  "importPath": "@metamesh/modeling/text",
10553
11359
  "availability": "Optional font preparation · Node and Workers",
10554
- "canonical": "https://metamesh.studio/docs/reference/text/Vector2Tuple",
11360
+ "canonical": "https://metamesh.studio/docs/reference/text/Vector2Data",
10555
11361
  "keywords": [
10556
11362
  "reference",
10557
11363
  "type-alias",
10558
11364
  "text",
10559
11365
  "font-preparation",
10560
- "Vector2Tuple"
11366
+ "Vector2Data"
10561
11367
  ]
10562
11368
  },
10563
11369
  {
10564
11370
  "id": "modeling/reference/text/VectorFont",
10565
11371
  "title": "VectorFont",
10566
- "summary": "A prepared font owns its parsed bytes; keep handles local to their Worker or invocation.",
11372
+ "summary": "A prepared font owns its parsed bytes; keep handles local to their Worker or invocation. Invalid arguments and bounded-work failures use GeometryError; unexpected dependency errors propagate.",
10567
11373
  "path": "reference/text/VectorFont.md",
10568
11374
  "importPath": "@metamesh/modeling/text",
10569
11375
  "availability": "Optional font preparation · Node and Workers",
@@ -10612,7 +11418,7 @@
10612
11418
  "VectorTextArcBaseline",
10613
11419
  "kind",
10614
11420
  "radius",
10615
- "centerAngleDegrees",
11421
+ "centerAngle",
10616
11422
  "direction"
10617
11423
  ]
10618
11424
  },