@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,8 +1,8 @@
1
1
  # transform3
2
2
 
3
- 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.
3
+ Creates an immutable XYZ transform, identity by default.
4
4
 
5
- **transform3**(`matrix?`: [`Transform3Matrix`](Transform3Matrix.md)): [`Transform3`](Transform3-type.md)
5
+ **transform3**(`input?`: [`Transform3Input`](Transform3Input.md)): [`Transform3`](Transform3-type.md)
6
6
 
7
7
 
8
8
 
@@ -10,14 +10,22 @@ Creates an immutable XYZ transform, identity by default. Matrices are copied and
10
10
 
11
11
  ```ts
12
12
  const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
13
- placement.applyPoint([1, 0, 0]).toArray(); // approximately [10, 1, 0]
13
+ placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
14
14
  ```
15
15
 
16
+ Values and data are copied and validated.
17
+ Calls apply in written order; rotations use degrees and pivots use current world coordinates.
18
+ Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
19
+ Use frameTransform3(frame) as the input for existing orthonormal frame placement.
20
+
21
+ Use `toData()` for frozen matrix interchange.
22
+ [composeTransform3](../geometry/composeTransform3.md) takes matrices in after, before order.
23
+
16
24
  ## Parameters
17
25
 
18
- <a id="matrix"></a>
26
+ <a id="input"></a>
19
27
 
20
- **`matrix`** · [`Transform3Matrix`](Transform3Matrix.md) · Optional
28
+ **`input`** · [`Transform3Input`](Transform3Input.md) · Optional
21
29
 
22
30
 
23
31
 
@@ -29,11 +37,12 @@ placement.applyPoint([1, 0, 0]).toArray(); // approximately [10, 1, 0]
29
37
  ## Related APIs
30
38
 
31
39
  - [Transform3](Transform3-type.md)
32
- - [Transform3Matrix](Transform3Matrix.md)
40
+ - [Transform3Input](Transform3Input.md)
33
41
 
34
42
  ## Guides
35
43
 
36
44
  - [Named anchors and custom frames](../../guides/recipes.md#named-anchors-and-custom-frames)
37
45
  - [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
46
+ - [Fluent values and standalone algorithms](../../guides/concepts.md#choose-fluent-values-or-standalone-algorithms)
38
47
 
39
- Package: `@metamesh/modeling@0.14.0`.
48
+ Package: `@metamesh/modeling@0.16.0`.
@@ -49,9 +49,9 @@ tube({ height: 20, outerRadius: 10, innerRadius: 6 });
49
49
 
50
50
  Operation-level physical tessellation policy over the active model-wide policy.
51
51
 
52
- - [`placement`](TubeOptions.md#placement) · [`PrimitivePlacementOptions`](PrimitivePlacementOptions.md) · Optional
52
+ - [`attachment`](TubeOptions.md#attachment) · [`PrimitiveAttachmentOptions`](PrimitiveAttachmentOptions.md) · Optional
53
53
 
54
- Applied after local construction; Section placement must preserve the XY plane.
54
+ Applied after local construction; Section attachment must preserve the XY plane.
55
55
 
56
56
  - [`center`](TubeOptions.md#center) · `boolean` · Optional · Default: `true`
57
57
 
@@ -74,4 +74,4 @@ tube({ height: 20, outerRadius: 10, innerRadius: 6 });
74
74
  - [Choose a primitive](../../guides/recipes.md#choose-a-primitive)
75
75
  - [Treated boxes, frustums, and mirrored arrays](../../guides/recipes.md#treated-boxes-frustums-and-mirrored-arrays)
76
76
 
77
- Package: `@metamesh/modeling@0.14.0`.
77
+ Package: `@metamesh/modeling@0.16.0`.
@@ -69,4 +69,4 @@ Native filled section union; dimensions cannot be mixed.
69
69
  - [Choose the Boolean by the material you want](../../guides/fundamentals.md#choose-the-boolean-by-the-material-you-want)
70
70
  - [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
71
71
 
72
- Package: `@metamesh/modeling@0.14.0`.
72
+ Package: `@metamesh/modeling@0.16.0`.
@@ -1,11 +1,18 @@
1
1
  # vector2
2
2
 
3
- 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.
3
+ Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
4
4
 
5
5
  **vector2**(`input`: [`Vector2Input`](Vector2Input.md)): [`Vector2`](Vector2-type.md)
6
6
 
7
7
 
8
8
 
9
+ Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
10
+ and overflow throw `NON_FINITE_VALUE` GeometryError.
11
+ Use transform2().applyDirection(value) for rotations and nonuniform scaling.
12
+
13
+ Use `toData()` for frozen tuple interchange, or
14
+ [normalize2](../geometry/normalize2.md) for tuple-based normalization in numerical loops.
15
+
9
16
  ## Parameters
10
17
 
11
18
  <a id="input"></a>
@@ -28,5 +35,6 @@ Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the
28
35
 
29
36
  - [Named anchors and custom frames](../../guides/recipes.md#named-anchors-and-custom-frames)
30
37
  - [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
38
+ - [Fluent values and standalone algorithms](../../guides/concepts.md#choose-fluent-values-or-standalone-algorithms)
31
39
 
32
- Package: `@metamesh/modeling@0.14.0`.
40
+ Package: `@metamesh/modeling@0.16.0`.
@@ -1,6 +1,6 @@
1
1
  # vector3
2
2
 
3
- 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.
3
+ Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
4
4
 
5
5
  **vector3**(`input`: [`Vector3Input`](Vector3Input.md)): [`Vector3`](Vector3-type.md)
6
6
 
@@ -13,6 +13,13 @@ const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
13
13
  const alignment = direction.dot([0, 0, 1]);
14
14
  ```
15
15
 
16
+ Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
17
+ and overflow throw `NON_FINITE_VALUE` GeometryError.
18
+ Use transform3().applyDirection(value) for rotations and nonuniform scaling.
19
+
20
+ Use `toData()` for frozen tuple interchange, or
21
+ [normalize3](../geometry/normalize3.md) for tuple-based normalization in numerical loops.
22
+
16
23
  ## Parameters
17
24
 
18
25
  <a id="input"></a>
@@ -35,5 +42,6 @@ const alignment = direction.dot([0, 0, 1]);
35
42
 
36
43
  - [Named anchors and custom frames](../../guides/recipes.md#named-anchors-and-custom-frames)
37
44
  - [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
45
+ - [Fluent values and standalone algorithms](../../guides/concepts.md#choose-fluent-values-or-standalone-algorithms)
38
46
 
39
- Package: `@metamesh/modeling@0.14.0`.
47
+ Package: `@metamesh/modeling@0.16.0`.
@@ -15,7 +15,12 @@ snapshot.dispose();
15
15
  session.dispose();
16
16
  ```
17
17
 
18
- Computed data and recipes reuse unchanged work. Part placement and color are separate from local geometry. Section recipes preserve holes through Boolean and offset chains. Construction and composition work without an engine. Ordinary recipes may be reused across sessions regardless of where constructed. Explicit resolution settings are captured; unspecified settings inherit the evaluating host defaults. Observed component selections remain restricted to their originating session. Observations require synchronous host execution. Temporary native allocations belong to the current transaction; sessions may retain bounded evaluated geometry privately. Copied snapshots remain valid after session disposal until they are disposed.
18
+ Computed data and recipes reuse unchanged work. Part placement and color are separate from local geometry. Section recipes preserve holes through Boolean and offset chains.
19
+
20
+ - **Construction:** recipes and composition require no engine. Ordinary recipes can be reused across sessions, wherever constructed.
21
+ - **Resolution:** explicit settings are captured; unspecified settings inherit the evaluating host's defaults.
22
+ - **Observation:** synchronous host execution is required. Observed component selections stay restricted to their originating session.
23
+ - **Ownership:** the current transaction owns temporary native allocations; sessions may retain bounded evaluated geometry privately. Copied snapshots remain valid after session disposal until you dispose them.
19
24
 
20
25
  See [host lifecycle](engine.md) and [pure foundations](geometry.md).
21
26
 
@@ -23,17 +28,20 @@ See [host lifecycle](engine.md) and [pure foundations](geometry.md).
23
28
 
24
29
  - [Primitives](model/categories/primitives.md) — Create foundational solid geometry and configure its dimensions and tessellation.
25
30
  - [Local resolution](model/categories/resolution.md) — Choose physical curve sampling and explicit native tolerance.
26
- - [2D Sections](model/categories/sections.md) — Create immutable filled XY shapes, including prepared text and bounded painted SVG.
27
- - [Boolean Operations](model/categories/boolean-operations.md) — Combine, intersect and subtract same-dimensional shapes; construct solid envelopes and sums.
28
- - [Transforms, Vectors & Placement](model/categories/transforms-placement.md) — Calculate with immutable vectors, reuse transforms, and arrange geometry with explicit placement contracts.
29
- - [Extrude, Revolve & Sweep](model/categories/extrude-revolve-sweep.md) — Turn sections and paths into extruded, lofted, revolved, or swept solids.
30
- - [Printable threads](model/categories/threads.md) — Construct compensated thread forms and inspect allocation-free preflight facts.
31
- - [Mesh & Inspection](model/categories/mesh-inspection.md) — Convert validated meshes and inspect stable section or solid measurements.
32
- - [Core Values & Errors](model/categories/core-values-errors.md) — Use the small shared vocabulary for authored geometry, coordinates, paths, and stable failures.
31
+ - [2D sections](model/categories/sections.md) — Create immutable filled XY shapes, including prepared text and bounded painted SVG.
32
+ - [Sampled paths](model/categories/paths.md) — Reusable immutable planar and spatial trajectories.
33
+ - [Boolean operations](model/categories/boolean-operations.md) — Combine, intersect and subtract same-dimensional shapes; construct solid envelopes and sums.
34
+ - [Transforms, vectors, and placement](model/categories/transforms-placement.md) — Calculate with immutable vectors, reuse transforms, and arrange geometry with explicit placement contracts.
35
+ - [Extrude, revolve, and sweep](model/categories/extrude-revolve-sweep.md) — Turn sections and paths into extruded, lofted, revolved, or swept solids.
36
+ - [Knuckle joints](model/categories/hinges.md) — Compose reusable knuckle joints with independent mounting attachments.
37
+ - [Printable threads](model/categories/threads.md) — Construct compensated thread forms and inspect bounded preflight facts.
38
+ - [Mesh and inspection](model/categories/mesh-inspection.md) — Convert validated meshes and inspect stable section or solid measurements.
39
+ - [Core values](model/categories/core-values-errors.md) — Use shared coordinate, path, polygon, and bounds data.
40
+ - [Bounds](model/categories/bounds.md) — Measure immutable axis-aligned extents and test positioned containment.
33
41
  - [Explicit matching profiles](model/categories/explicit-profiles.md) — Build hollow or multicomponent lofts and sweeps using stable landmarks.
34
42
  - [Sampled surfaces](model/categories/bounded-surfaces.md) — Construct bounded heightfields and positive-inside implicit fields.
35
43
  - [Solid inspection](model/categories/inspection.md) — Evaluate recipes and copy observations while the host owns native resources.
36
44
  - [Model generation](model/categories/generation.md) — Declare typed programs, optional computations, semantic parts and structured diagnostics.
37
45
  - [Model contracts](model/categories/contracts.md) — Describe opaque handles, dimensions, manufacturing parts, and completed snapshots.
38
46
 
39
- Package: `@metamesh/modeling@0.14.0`.
47
+ Package: `@metamesh/modeling@0.16.0`.
@@ -0,0 +1,34 @@
1
+ # Bounds2Data
2
+
3
+ Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods.
4
+
5
+ ## Properties
6
+
7
+ ### max
8
+
9
+
10
+
11
+ `readonly` **max**: [`Vector2Data`](Vector2Data.md)
12
+
13
+
14
+
15
+ Inclusive maximum X/Y coordinates.
16
+
17
+ ***
18
+
19
+ ### min
20
+
21
+
22
+
23
+ `readonly` **min**: [`Vector2Data`](Vector2Data.md)
24
+
25
+
26
+
27
+ Inclusive minimum X/Y coordinates.
28
+
29
+
30
+ ## Related APIs
31
+
32
+ - [Vector2Data](Vector2Data.md)
33
+
34
+ Package: `@metamesh/modeling@0.16.0`.
@@ -4,4 +4,4 @@ Limits apply before parsing or shaping untrusted font data.
4
4
 
5
5
  `const` **MAX\_VECTOR\_FONT\_BYTES**: `number`
6
6
 
7
- Package: `@metamesh/modeling@0.14.0`.
7
+ Package: `@metamesh/modeling@0.16.0`.
@@ -0,0 +1,7 @@
1
+ # Vector2Data
2
+
3
+ A two-dimensional Cartesian vector or point.
4
+
5
+ **Vector2Data** = readonly \[`x`: `number`, `y`: `number`\]
6
+
7
+ Package: `@metamesh/modeling@0.16.0`.
@@ -1,6 +1,6 @@
1
1
  # VectorFont
2
2
 
3
- A prepared font owns its parsed bytes; keep handles local to their Worker or invocation.
3
+ 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.
4
4
 
5
5
  ## Properties
6
6
 
@@ -183,4 +183,4 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
183
183
  - [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
184
184
  - [VectorTextMetrics](VectorTextMetrics.md)
185
185
 
186
- Package: `@metamesh/modeling@0.14.0`.
186
+ Package: `@metamesh/modeling@0.16.0`.
@@ -14,4 +14,4 @@ Identifies the actual weight of a static face, without synthesizing a different
14
14
 
15
15
  Actual weight of a static face, 1–1000; defaults to 400.
16
16
 
17
- Package: `@metamesh/modeling@0.14.0`.
17
+ Package: `@metamesh/modeling@0.16.0`.
@@ -28,11 +28,11 @@ Baseline radius in millimetres, greater than zero and at most 10000.
28
28
 
29
29
  ***
30
30
 
31
- ### centerAngleDegrees?
31
+ ### centerAngle?
32
32
 
33
33
 
34
34
 
35
- `readonly` `optional` **centerAngleDegrees?**: `number`
35
+ `readonly` `optional` **centerAngle?**: `number`
36
36
 
37
37
 
38
38
 
@@ -50,4 +50,4 @@ Alignment datum in degrees counterclockwise from +X; defaults to 90.
50
50
 
51
51
  Reading direction around the circle; defaults to clockwise.
52
52
 
53
- Package: `@metamesh/modeling@0.14.0`.
53
+ Package: `@metamesh/modeling@0.16.0`.
@@ -31,4 +31,4 @@ Exact measurements of these paths and their logical text layout.
31
31
 
32
32
  - [VectorTextMetrics](VectorTextMetrics.md)
33
33
 
34
- Package: `@metamesh/modeling@0.14.0`.
34
+ Package: `@metamesh/modeling@0.16.0`.
@@ -108,4 +108,4 @@ Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
108
108
  - [VectorTextArcBaseline](VectorTextArcBaseline.md)
109
109
  - [VectorTextOptions](VectorTextOptions.md)
110
110
 
111
- Package: `@metamesh/modeling@0.14.0`.
111
+ Package: `@metamesh/modeling@0.16.0`.
@@ -8,7 +8,7 @@ Text measurements from the same immutable layout that supplies geometry and SVG
8
8
 
9
9
 
10
10
 
11
- `readonly` **bounds**: [`Bounds2`](Bounds2.md) \| `null`
11
+ `readonly` **bounds**: [`Bounds2Data`](Bounds2Data.md) \| `null`
12
12
 
13
13
 
14
14
 
@@ -89,6 +89,6 @@ Number of lines, including empty and trailing lines; empty text occupies one lin
89
89
 
90
90
  ## Related APIs
91
91
 
92
- - [Bounds2](Bounds2.md)
92
+ - [Bounds2Data](Bounds2Data.md)
93
93
 
94
- Package: `@metamesh/modeling@0.14.0`.
94
+ Package: `@metamesh/modeling@0.16.0`.
@@ -47,4 +47,4 @@ Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
47
47
 
48
48
  - [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
49
49
 
50
- Package: `@metamesh/modeling@0.14.0`.
50
+ Package: `@metamesh/modeling@0.16.0`.
@@ -2,32 +2,34 @@
2
2
 
3
3
  Prepare bounded exact font bytes and reusable vector layouts.
4
4
 
5
- Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 decoding loads lazily. No fetching occurs in this library. Font layout returns immutable paths and metrics in Y-up millimetres. Pass that prepared layout to textSection inside a build; do not shape it again.
5
+ Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 decoding loads lazily. Supply font bytes yourself; this library never fetches fonts.
6
+
7
+ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepared layout to `textSection` inside a build without shaping again.
6
8
 
7
9
  ## Functions
8
10
 
9
11
  | API | Summary |
10
12
  | --- | --- |
11
- | [prepareVectorFont](../prepareVectorFont.md) | Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here. |
13
+ | [prepareVectorFont](../prepareVectorFont.md) | 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. |
12
14
 
13
15
  ## Interfaces
14
16
 
15
17
  | API | Summary |
16
18
  | --- | --- |
17
- | [VectorFont](../VectorFont.md) | A prepared font owns its parsed bytes; keep handles local to their Worker or invocation. |
19
+ | [VectorFont](../VectorFont.md) | 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. |
18
20
  | [VectorFontOptions](../VectorFontOptions.md) | Identifies the actual weight of a static face, without synthesizing a different weight. |
19
21
  | [VectorTextArcBaseline](../VectorTextArcBaseline.md) | A circular baseline centered at the XY origin, with rigid shaped glyph groups. |
20
22
  | [VectorTextLayout](../VectorTextLayout.md) | Immutable vector layout with no browser, font parser, or kernel ownership. |
21
23
  | [VectorTextLayoutOptions](../VectorTextLayoutOptions.md) | Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping. |
22
24
  | [VectorTextMetrics](../VectorTextMetrics.md) | Text measurements from the same immutable layout that supplies geometry and SVG outlines. |
23
25
  | [VectorTextOptions](../VectorTextOptions.md) | Shaping controls for a prepared exact font face; all lengths are in millimetres. |
24
- | [Bounds2](../Bounds2.md) | Axis-aligned bounds in two-dimensional model space. |
26
+ | [Bounds2Data](../Bounds2Data.md) | Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. |
25
27
 
26
28
  ## Type aliases
27
29
 
28
30
  | API | Summary |
29
31
  | --- | --- |
30
- | [Vector2Tuple](../Vector2Tuple.md) | A two-dimensional Cartesian vector or point. |
32
+ | [Vector2Data](../Vector2Data.md) | A two-dimensional Cartesian vector or point. |
31
33
 
32
34
  ## Values
33
35
 
@@ -35,4 +37,4 @@ Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 dec
35
37
  | --- | --- |
36
38
  | [MAX_VECTOR_FONT_BYTES](../MAX_VECTOR_FONT_BYTES.md) | Limits apply before parsing or shaping untrusted font data. |
37
39
 
38
- Package: `@metamesh/modeling@0.14.0`.
40
+ Package: `@metamesh/modeling@0.16.0`.
@@ -1,6 +1,6 @@
1
1
  # prepareVectorFont
2
2
 
3
- Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here.
3
+ 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.
4
4
 
5
5
  **prepareVectorFont**(`bytes`: `Uint8Array`, `options?`: [`VectorFontOptions`](VectorFontOptions.md)): `Promise`\<[`VectorFont`](VectorFont.md)\>
6
6
 
@@ -43,4 +43,4 @@ async function prepareLabel(fontBytes: Uint8Array) {
43
43
  - [VectorFont](VectorFont.md)
44
44
  - [VectorFontOptions](VectorFontOptions.md)
45
45
 
46
- Package: `@metamesh/modeling@0.14.0`.
46
+ Package: `@metamesh/modeling@0.16.0`.
@@ -2,7 +2,9 @@
2
2
 
3
3
  Prepare exact font bytes and shape reusable vector layouts before entering synchronous modeling.
4
4
 
5
- Install `fontkit` for font preparation and `woff2-encoder` for WOFF2 decoding. Import optional exact-font preparation from `@metamesh/modeling/text`. Supply already acquired font bytes; this entrypoint never fetches a font. Shape once during preparation and pass the immutable layout to modeling.
5
+ Install `fontkit` for font preparation and `woff2-encoder` for WOFF2 decoding. Import optional exact-font preparation from `@metamesh/modeling/text`.
6
+
7
+ Supply font bytes yourself; this entry point never fetches fonts. Shape once during preparation and pass the immutable layout to modeling.
6
8
 
7
9
  ```ts
8
10
  import { prepareVectorFont } from "@metamesh/modeling/text";
@@ -18,4 +20,4 @@ Paths and metrics use Y-up millimetres and a baseline origin. Empty layouts can
18
20
 
19
21
  - [Font preparation](text/categories/font-preparation.md) — Prepare bounded exact font bytes and reusable vector layouts.
20
22
 
21
- Package: `@metamesh/modeling@0.14.0`.
23
+ Package: `@metamesh/modeling@0.16.0`.
@@ -2,7 +2,9 @@ import { edgeTreatmentSetbacks } from "../geometry/edge-finishing.js";
2
2
  import { GeometryError } from "../geometry/errors.js";
3
3
  import { resolveExtrusionContourDivisions, resolveExtrusionControls, } from "../geometry/extrusion.js";
4
4
  import { heightfieldMesh } from "../geometry/heightfield.js";
5
+ import { vector2Data, vector3Data } from "../geometry/math/vector-value.js";
5
6
  import { assertMeshAllocationWithinLimits } from "../geometry/model-limits.js";
7
+ import { path3InputData } from "../geometry/paths/path-value.js";
6
8
  import { assertPrimitiveOptions } from "../geometry/primitive-resolvers.js";
7
9
  import { matchProfiles } from "../geometry/profiles/matched.js";
8
10
  import { resolveGeometryResolution } from "../geometry/resolution.js";
@@ -20,11 +22,12 @@ export function createConstructionOperations(environment, sections) {
20
22
  const { module, scope, limits, assertActive, throwGeometryError, resolveHandle, nativeSolid, nativeSection, wrapSolid, wrapSection, ownSolid, ownSection, validateFiniteNumber, requirePositiveNumber, validateCoordinates, assertOperandCount, assertMeshAllocation, withResolutionDefaults, resolveCircularSegments, } = environment;
21
23
  const cuttingPlane = (value, operation) => {
22
24
  assertPrimitiveOptions(value, operation);
23
- validateCoordinates(value.normal, 3, operation);
24
- const magnitude = Math.max(...value.normal.map(Math.abs));
25
+ const inputNormal = vector3Data(value.normal);
26
+ validateCoordinates(inputNormal, 3, operation);
27
+ const magnitude = Math.max(...inputNormal.map(Math.abs));
25
28
  if (magnitude === 0)
26
29
  throwGeometryError("DEGENERATE_GEOMETRY", operation, "Plane normals must be nonzero.");
27
- const scaled = value.normal.map((coordinate) => coordinate / magnitude);
30
+ const scaled = inputNormal.map((coordinate) => coordinate / magnitude);
28
31
  const length = Math.hypot(...scaled);
29
32
  const normal = [scaled[0] / length, scaled[1] / length, scaled[2] / length];
30
33
  return { normal, offset: validateFiniteNumber(value.offset ?? 0, operation) };
@@ -55,7 +58,7 @@ export function createConstructionOperations(environment, sections) {
55
58
  const policy = resolveGeometryResolution(resolved.resolution, resolved.limits);
56
59
  // Untwisted uniform taper has planar sides. Its default two-cap topology
57
60
  // needs no native contour extraction or longitudinal interpolation.
58
- if (controls.twistDegrees === 0 &&
61
+ if (controls.twist === 0 &&
59
62
  controls.scales[0] === controls.scales[1] &&
60
63
  policy.maxSegmentLength === undefined)
61
64
  divisions = 0;
@@ -69,7 +72,7 @@ export function createConstructionOperations(environment, sections) {
69
72
  // a hole also bounds disconnected Sections, without extracting native point data.
70
73
  triangles = Math.max(0, vertices * 2 + 4 * native.numContour() - 8);
71
74
  assertMeshAllocationWithinLimits(vertices, triangles, vertices * 12 + triangles * 12, "extrude", resolved.limits);
72
- return ownSolid(native.extrude(value.height, divisions, controls.twistDegrees, controls.scales, controls.center));
75
+ return ownSolid(native.extrude(value.height, divisions, controls.twist, controls.scales, controls.center));
73
76
  };
74
77
  const boolean = (values, operation) => {
75
78
  assertOperandCount(values, operation);
@@ -131,13 +134,21 @@ export function createConstructionOperations(environment, sections) {
131
134
  assertOperandCount(value.sections, "hull");
132
135
  return ownSection(module.CrossSection.hull(value.sections.map(nativeSection)));
133
136
  }
134
- if (value.points !== undefined && value.points[0]?.length === 2) {
137
+ if (value.points !== undefined) {
138
+ const pointArray = Array.isArray(value.points);
139
+ if (!pointArray)
140
+ throwGeometryError("INVALID_ARGUMENT", "hull", "Hull points must be an array.");
141
+ assertSamplingCount(value.points.length, "hull", 100_000);
142
+ }
143
+ const first = value.points?.[0];
144
+ const coordinates = typeof first === "object" && first !== null && "toData" in first ? first.toData() : first;
145
+ if (value.points !== undefined && coordinates?.length === 2) {
135
146
  const points = value.points;
136
- const pointInputs = points;
137
147
  if (!Array.isArray(points) || points.length < 3)
138
148
  throwGeometryError("INVALID_ARGUMENT", "hull", "A planar hull needs at least three points.");
139
149
  assertSamplingCount(points.length, "hull", Math.min(100_000, limits.maxProfilePoints));
140
- const copied = pointInputs.map((point) => {
150
+ const copied = points.map((input) => {
151
+ const point = vector2Data(input);
141
152
  validateCoordinates(point, 2, "hull");
142
153
  return [point[0], point[1]];
143
154
  });
@@ -146,8 +157,12 @@ export function createConstructionOperations(environment, sections) {
146
157
  throwGeometryError("DEGENERATE_GEOMETRY", "hull", "Hull points must span positive area.");
147
158
  return wrapSection(native);
148
159
  }
160
+ if (value.points !== undefined && value.points.length < 4)
161
+ throwGeometryError("INVALID_ARGUMENT", "hull", "A point hull needs at least four XYZ points.");
149
162
  return wrapSolid(kernel.hull(scope, !hasSolids
150
- ? { points: value.points }
163
+ ? {
164
+ points: value.points.map((point) => vector3Data(point)),
165
+ }
151
166
  : { solids: value.solids.map(nativeSolid) }));
152
167
  }),
153
168
  minkowskiSum: (a, b) => wrapSolid(kernel.minkowskiSum(scope, nativeSolid(a), nativeSolid(b))),
@@ -156,7 +171,7 @@ export function createConstructionOperations(environment, sections) {
156
171
  revolve: (handle, value = {}) => {
157
172
  assertPrimitiveOptions(value, "revolve");
158
173
  const native = shapeSection(handle), bounds = native.bounds();
159
- const degrees = value.revolveDegrees ?? 360;
174
+ const degrees = value.degrees ?? 360;
160
175
  if (requirePositiveNumber(degrees, "revolve") > 360)
161
176
  throwGeometryError("INVALID_ARGUMENT", "revolve", "Sweep must not exceed 360 degrees.");
162
177
  const selected = withResolutionDefaults(value);
@@ -193,15 +208,17 @@ export function createConstructionOperations(environment, sections) {
193
208
  },
194
209
  sweep: (shape, path, value = {}) => {
195
210
  assertActive();
196
- const selected = withResolutionDefaults(value);
211
+ const defaults = withResolutionDefaults(value);
212
+ const data = path3InputData(path, value.closed, defaults.limits);
213
+ const selected = { ...defaults, closed: data.closed };
197
214
  if (corresponding(shape))
198
- return solidFromMesh(buildProfileSweepMesh(module, shape, path, selected, selected.limits));
215
+ return solidFromMesh(buildProfileSweepMesh(module, shape, data.points, selected, selected.limits));
199
216
  const profile = sectionProfile(shape);
200
217
  const singleComponent = profile.components.length === 1 ? profile.components[0] : undefined;
201
218
  const contours = singleComponent?.holes.length === 0 ? [singleComponent.outer.points] : [];
202
219
  if (contours.length === 1)
203
- return solidFromMesh(sweepMesh(contours[0], path, selected));
204
- return solidFromMesh(buildProfileSweepMesh(module, profile, path, selected, selected.limits));
220
+ return solidFromMesh(sweepMesh(contours[0], data.points, selected));
221
+ return solidFromMesh(buildProfileSweepMesh(module, profile, data.points, selected, selected.limits));
205
222
  },
206
223
  heightfield: (value) => {
207
224
  assertActive();
@@ -7,6 +7,7 @@ import { createModelingContext } from "./modeling-context.js";
7
7
  import { ownScopedManifoldValue, scopedManifoldScope, trackScopedManifoldValue, } from "./native/context.js";
8
8
  import { copiedFloat32Array, copiedUint32Array } from "./native/copied-views.js";
9
9
  import * as kernel from "./native/index.js";
10
+ import { solidMaterialComponents } from "./native/material-components.js";
10
11
  import { assertNativeSolidStatus } from "./native/status.js";
11
12
  import { createShapeAnchorOwner } from "./shape-anchors.js";
12
13
  /** Internal execution owner; no native value or constructor crosses the public facade. */
@@ -18,6 +19,8 @@ export function createExecutionContext(module, scope, limits, initialResolution
18
19
  const canonicalSectionProfiles = new Map();
19
20
  let solidInspections;
20
21
  let sectionInspections;
22
+ let solidComponents;
23
+ let sectionComponents;
21
24
  const primitiveSectionProfiles = new Map();
22
25
  let active = true;
23
26
  const throwGeometryError = (code, operation, message) => {
@@ -63,6 +66,30 @@ export function createExecutionContext(module, scope, limits, initialResolution
63
66
  const owned = ownScopedManifoldValue(scope, value);
64
67
  return wrapSection(owned);
65
68
  };
69
+ const solidComponentsFor = (handle) => {
70
+ const native = nativeSolid(handle);
71
+ const cached = solidComponents?.get(native);
72
+ if (cached !== undefined)
73
+ return cached;
74
+ const components = solidMaterialComponents(scope, native, limits);
75
+ const cache = (solidComponents ??= new Map());
76
+ cache.set(native, components);
77
+ for (const component of components)
78
+ cache.set(component, Object.freeze([component]));
79
+ return components;
80
+ };
81
+ const sectionComponentsFor = (handle) => {
82
+ const native = nativeSection(handle);
83
+ const cached = sectionComponents?.get(native);
84
+ if (cached !== undefined)
85
+ return cached;
86
+ const components = Object.freeze(native.isEmpty() ? [] : native.decompose().map((part) => ownScopedManifoldValue(scope, part)));
87
+ const cache = (sectionComponents ??= new Map());
88
+ cache.set(native, components);
89
+ for (const component of components)
90
+ cache.set(component, Object.freeze([component]));
91
+ return components;
92
+ };
66
93
  // Geometry is immutable for a native value. Validate build ownership before every cache hit,
67
94
  // and retain only frozen plain facts so callers cannot corrupt later inspections.
68
95
  const solidInspectionFor = (handle) => {
@@ -72,12 +99,12 @@ export function createExecutionContext(module, scope, limits, initialResolution
72
99
  return cached;
73
100
  assertNativeSolidStatus(native, "inspectSolid");
74
101
  const bounds = native.boundingBox();
75
- const parts = native.decompose().map((part) => ownScopedManifoldValue(scope, part));
102
+ const components = solidComponentsFor(handle);
76
103
  const facts = Object.freeze({
77
104
  min: Object.freeze([...bounds.min]),
78
105
  max: Object.freeze([...bounds.max]),
79
106
  isEmpty: native.isEmpty(),
80
- parts: parts.length,
107
+ componentCount: components.length,
81
108
  volume: native.volume(),
82
109
  surfaceArea: native.surfaceArea(),
83
110
  tolerance: native.tolerance(),
@@ -92,17 +119,15 @@ export function createExecutionContext(module, scope, limits, initialResolution
92
119
  return cached;
93
120
  const bounds = native.bounds();
94
121
  const empty = native.isEmpty();
95
- const parts = empty
96
- ? []
97
- : native.decompose().map((part) => ownScopedManifoldValue(scope, part));
122
+ const components = sectionComponentsFor(handle);
98
123
  const facts = Object.freeze({
99
124
  min: Object.freeze([...bounds.min]),
100
125
  max: Object.freeze([...bounds.max]),
101
126
  isEmpty: empty,
102
127
  area: native.area(),
103
- contours: native.numContour(),
104
- parts: parts.length,
105
- vertices: native.numVert(),
128
+ contourCount: native.numContour(),
129
+ componentCount: components.length,
130
+ vertexCount: native.numVert(),
106
131
  });
107
132
  (sectionInspections ??= new Map()).set(native, facts);
108
133
  return facts;
@@ -244,6 +269,8 @@ export function createExecutionContext(module, scope, limits, initialResolution
244
269
  analyzedMeshFor,
245
270
  solidInspectionFor,
246
271
  sectionInspectionFor,
272
+ solidComponentsFor,
273
+ sectionComponentsFor,
247
274
  sectionProfileFor,
248
275
  primitiveProfileFor,
249
276
  rememberPrimitiveProfile,
@@ -305,8 +332,12 @@ export function createExecutionContext(module, scope, limits, initialResolution
305
332
  canonicalSectionProfiles.clear();
306
333
  solidInspections?.clear();
307
334
  sectionInspections?.clear();
335
+ solidComponents?.clear();
336
+ sectionComponents?.clear();
308
337
  solidInspections = undefined;
309
338
  sectionInspections = undefined;
339
+ solidComponents = undefined;
340
+ sectionComponents = undefined;
310
341
  primitiveSectionProfiles.clear();
311
342
  shapeAnchors.dispose();
312
343
  },
@@ -10,7 +10,7 @@ const fail = (message) => {
10
10
  /** Finishes inward convex extrusion rims with exact parallel-edge offsets and retained correspondence. */
11
11
  export function buildFinishedExtrusion(module, profile, options) {
12
12
  const controls = resolveExtrusionControls(options.height, options, "extrude");
13
- if (controls.twistDegrees !== 0 ||
13
+ if (controls.twist !== 0 ||
14
14
  controls.scales.some((scale) => scale !== 1) ||
15
15
  options.divisions !== undefined)
16
16
  fail("End treatments require a straight extrusion without twist, top scaling or divisions.");