@metamesh/modeling 0.18.0 → 0.19.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 (843) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +73 -57
  3. package/dist/api/engine.d.ts +7 -47
  4. package/dist/api/export-3mf.d.ts +2 -0
  5. package/dist/api/export-glb.d.ts +2 -0
  6. package/dist/api/export-stl.d.ts +2 -0
  7. package/dist/api/export.d.ts +160 -0
  8. package/dist/api/geometry.d.ts +7 -7
  9. package/dist/api/index.d.ts +85 -35
  10. package/dist/api/mesh.d.ts +35 -6
  11. package/dist/docs/guides/concepts.md +32 -535
  12. package/dist/docs/guides/fonts.md +4 -4
  13. package/dist/docs/guides/generation.md +52 -45
  14. package/dist/docs/guides/geometry-values.md +193 -0
  15. package/dist/docs/guides/hosting.md +53 -30
  16. package/dist/docs/guides/profiles-and-extrusion.md +252 -0
  17. package/dist/docs/guides/recipes.md +33 -780
  18. package/dist/docs/guides/resolution-and-inspection.md +133 -0
  19. package/dist/docs/guides/solid-joins.md +126 -0
  20. package/dist/docs/guides/standalone-model.md +1 -1
  21. package/dist/docs/guides/svg-and-text.md +215 -0
  22. package/dist/docs/guides/sweeps-and-lofts.md +179 -0
  23. package/dist/docs/guides/transforms-and-placement.md +313 -0
  24. package/dist/docs/manifest.json +2818 -5862
  25. package/dist/docs/reference/engine/GenerationOptions.md +10 -4
  26. package/dist/docs/reference/engine/GeometryResource.md +8 -2
  27. package/dist/docs/reference/engine/ModelDependencies.md +9 -3
  28. package/dist/docs/reference/engine/ModelEngine.md +9 -3
  29. package/dist/docs/reference/engine/ModelEngineOptions.md +9 -3
  30. package/dist/docs/reference/engine/ModelPart.md +9 -3
  31. package/dist/docs/reference/engine/ModelResult.md +8 -2
  32. package/dist/docs/reference/engine/ModelRunArguments.md +7 -1
  33. package/dist/docs/reference/engine/ModelRunOptions.md +10 -4
  34. package/dist/docs/reference/engine/ModelSession.md +7 -1
  35. package/dist/docs/reference/engine/SessionOptions.md +10 -4
  36. package/dist/docs/reference/engine/categories/host-lifecycle.md +3 -8
  37. package/dist/docs/reference/engine/checkModel.md +7 -1
  38. package/dist/docs/reference/engine/createModelEngine.md +10 -3
  39. package/dist/docs/reference/engine/defaultModelingLimits.md +9 -3
  40. package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
  41. package/dist/docs/reference/engine.md +7 -7
  42. package/dist/docs/reference/export/Export3mfOptions.md +24 -0
  43. package/dist/docs/reference/export/ExportDiagnostic.md +59 -0
  44. package/dist/docs/reference/export/ExportFormat.md +25 -0
  45. package/dist/docs/reference/export/ExportGeometry.md +39 -0
  46. package/dist/docs/reference/export/ExportGlbOptions.md +118 -0
  47. package/dist/docs/reference/export/ExportLimits.md +83 -0
  48. package/dist/docs/reference/export/ExportMaterial.md +47 -0
  49. package/dist/docs/reference/export/ExportOptions.md +94 -0
  50. package/dist/docs/reference/export/ExportPart.md +88 -0
  51. package/dist/docs/reference/export/ExportReport.md +82 -0
  52. package/dist/docs/reference/export/ExportSink.md +39 -0
  53. package/dist/docs/reference/export/ExportStlOptions.md +24 -0
  54. package/dist/docs/reference/export/ExportedFile.md +110 -0
  55. package/dist/docs/reference/export/categories/mesh-serialization.md +47 -0
  56. package/dist/docs/reference/export/defaultExportLimits.md +20 -0
  57. package/dist/docs/reference/export/export3mf.md +64 -0
  58. package/dist/docs/reference/export/exportGlb.md +68 -0
  59. package/dist/docs/reference/export/exportStl.md +64 -0
  60. package/dist/docs/reference/export/write3mf.md +71 -0
  61. package/dist/docs/reference/export/writeGlb.md +75 -0
  62. package/dist/docs/reference/export/writeStl.md +71 -0
  63. package/dist/docs/reference/export.md +21 -0
  64. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +16 -2
  65. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +7 -1
  66. package/dist/docs/reference/geometry/Anchor3-type.md +13 -3
  67. package/dist/docs/reference/geometry/ArcCurve2.md +8 -2
  68. package/dist/docs/reference/geometry/ArcCurve3.md +8 -2
  69. package/dist/docs/reference/geometry/AttachOptions.md +13 -3
  70. package/dist/docs/reference/geometry/AxisAngleRotation3.md +9 -3
  71. package/dist/docs/reference/geometry/Bevel.md +16 -2
  72. package/dist/docs/reference/geometry/BevelSize.md +16 -2
  73. package/dist/docs/reference/geometry/Bounds2-type.md +18 -4
  74. package/dist/docs/reference/geometry/Bounds2Data.md +22 -4
  75. package/dist/docs/reference/geometry/Bounds2Input.md +18 -4
  76. package/dist/docs/reference/geometry/Bounds2Options.md +14 -4
  77. package/dist/docs/reference/geometry/Bounds3-type.md +18 -4
  78. package/dist/docs/reference/geometry/Bounds3Data.md +18 -4
  79. package/dist/docs/reference/geometry/Bounds3Input.md +18 -4
  80. package/dist/docs/reference/geometry/Bounds3Options.md +14 -4
  81. package/dist/docs/reference/geometry/BoundsFit2.md +10 -4
  82. package/dist/docs/reference/geometry/BoundsFit3.md +10 -4
  83. package/dist/docs/reference/geometry/BoundsFitOptions.md +10 -4
  84. package/dist/docs/reference/geometry/BoxAnchorFace.md +9 -3
  85. package/dist/docs/reference/geometry/BoxAnchorOptions.md +9 -3
  86. package/dist/docs/reference/geometry/BoxEdge.md +11 -1
  87. package/dist/docs/reference/geometry/BoxEdgeSelection.md +11 -1
  88. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +11 -1
  89. package/dist/docs/reference/geometry/BoxOptions.md +11 -1
  90. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +16 -2
  91. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +16 -2
  92. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +11 -1
  93. package/dist/docs/reference/geometry/CircleContourOptions.md +12 -2
  94. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +15 -1
  95. package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
  96. package/dist/docs/reference/geometry/CircularSampling.md +7 -1
  97. package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
  98. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +8 -2
  99. package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -2
  100. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +8 -2
  101. package/dist/docs/reference/geometry/Contour.md +12 -2
  102. package/dist/docs/reference/geometry/ContourCurve.md +8 -2
  103. package/dist/docs/reference/geometry/ContourPoint.md +8 -2
  104. package/dist/docs/reference/geometry/ContourSegment.md +8 -2
  105. package/dist/docs/reference/geometry/CorrespondingComponent.md +12 -2
  106. package/dist/docs/reference/geometry/CorrespondingContour.md +12 -2
  107. package/dist/docs/reference/geometry/CorrespondingProfile.md +12 -2
  108. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +12 -2
  109. package/dist/docs/reference/geometry/CubicBezierCurve2.md +8 -2
  110. package/dist/docs/reference/geometry/CubicBezierCurve3.md +8 -2
  111. package/dist/docs/reference/geometry/Curve2.md +8 -2
  112. package/dist/docs/reference/geometry/Curve3.md +8 -2
  113. package/dist/docs/reference/geometry/CurveSamplingOptions.md +16 -2
  114. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +16 -2
  115. package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
  116. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +9 -3
  117. package/dist/docs/reference/geometry/CylinderOptions.md +11 -1
  118. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -2
  119. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -2
  120. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +8 -2
  121. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +8 -2
  122. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +8 -2
  123. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +8 -2
  124. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +8 -2
  125. package/dist/docs/reference/geometry/CylindricalGearSpec.md +8 -2
  126. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
  127. package/dist/docs/reference/geometry/EdgeTreatment.md +11 -1
  128. package/dist/docs/reference/geometry/EllipseContourOptions.md +12 -2
  129. package/dist/docs/reference/geometry/EndTreatments.md +12 -2
  130. package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +16 -2
  131. package/dist/docs/reference/geometry/ExtrudeOptions.md +13 -3
  132. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +16 -2
  133. package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
  134. package/dist/docs/reference/geometry/Frame3.md +16 -2
  135. package/dist/docs/reference/geometry/GeometryError.md +11 -1
  136. package/dist/docs/reference/geometry/GeometryErrorCode.md +11 -1
  137. package/dist/docs/reference/geometry/GeometryErrorContext.md +11 -1
  138. package/dist/docs/reference/geometry/GeometryResolution.md +15 -1
  139. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +16 -2
  140. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +15 -1
  141. package/dist/docs/reference/geometry/GridPatternOptions.md +12 -2
  142. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +12 -2
  143. package/dist/docs/reference/geometry/HeightfieldOptions.md +16 -2
  144. package/dist/docs/reference/geometry/HeightfieldPreflight.md +12 -2
  145. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +9 -3
  146. package/dist/docs/reference/geometry/ImmutableBuffer-type.md +16 -14
  147. package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +17 -3
  148. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +12 -2
  149. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +12 -2
  150. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +8 -2
  151. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +8 -2
  152. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +12 -2
  153. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +12 -2
  154. package/dist/docs/reference/geometry/LineCurve2.md +8 -2
  155. package/dist/docs/reference/geometry/LineCurve3.md +8 -2
  156. package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -2
  157. package/dist/docs/reference/geometry/LoftCorrespondence.md +16 -2
  158. package/dist/docs/reference/geometry/LoftMeshStation.md +12 -2
  159. package/dist/docs/reference/geometry/LoftOptions.md +16 -2
  160. package/dist/docs/reference/geometry/LoftPlacement.md +16 -2
  161. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +8 -2
  162. package/dist/docs/reference/geometry/MatchProfilesOptions.md +12 -2
  163. package/dist/docs/reference/geometry/MetricFastenerSize.md +8 -2
  164. package/dist/docs/reference/geometry/MetricFastenerStandard.md +8 -2
  165. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +8 -2
  166. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +8 -2
  167. package/dist/docs/reference/geometry/ModelingLimits.md +19 -1
  168. package/dist/docs/reference/geometry/NumericArray.md +16 -2
  169. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
  170. package/dist/docs/reference/geometry/Path2-type.md +16 -2
  171. package/dist/docs/reference/geometry/Path2Data.md +16 -2
  172. package/dist/docs/reference/geometry/Path2Input.md +16 -2
  173. package/dist/docs/reference/geometry/Path3-type.md +16 -2
  174. package/dist/docs/reference/geometry/Path3Data.md +16 -2
  175. package/dist/docs/reference/geometry/Path3Input.md +16 -2
  176. package/dist/docs/reference/geometry/PathFrame.md +8 -2
  177. package/dist/docs/reference/geometry/PathLocation.md +16 -2
  178. package/dist/docs/reference/geometry/PathNormalGuide.md +16 -2
  179. package/dist/docs/reference/geometry/PathOptions.md +12 -2
  180. package/dist/docs/reference/geometry/PathPatternOptions.md +12 -2
  181. package/dist/docs/reference/geometry/PathPlacement.md +8 -2
  182. package/dist/docs/reference/geometry/PathResamplingOptions.md +16 -2
  183. package/dist/docs/reference/geometry/Pivot2Options.md +17 -3
  184. package/dist/docs/reference/geometry/Pivot3Options.md +17 -3
  185. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +12 -2
  186. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +12 -2
  187. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +12 -2
  188. package/dist/docs/reference/geometry/PlanarPatchQuality.md +12 -2
  189. package/dist/docs/reference/geometry/PolygonData.md +12 -2
  190. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
  191. package/dist/docs/reference/geometry/PrimitiveAttachment.md +11 -1
  192. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +11 -1
  193. package/dist/docs/reference/geometry/PrintableThreadFit.md +12 -2
  194. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +12 -2
  195. package/dist/docs/reference/geometry/Profile.md +8 -2
  196. package/dist/docs/reference/geometry/ProfileComponent2.md +12 -2
  197. package/dist/docs/reference/geometry/ProfileContour2.md +12 -2
  198. package/dist/docs/reference/geometry/ProfileSpan2.md +12 -2
  199. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +11 -1
  200. package/dist/docs/reference/geometry/RackPitchDimensions.md +8 -2
  201. package/dist/docs/reference/geometry/RackPitchSpec.md +8 -2
  202. package/dist/docs/reference/geometry/RadialPatternOptions.md +12 -2
  203. package/dist/docs/reference/geometry/RadialSizing.md +11 -1
  204. package/dist/docs/reference/geometry/RadialSizingOptions.md +11 -1
  205. package/dist/docs/reference/geometry/RectangleContourOptions.md +12 -2
  206. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +12 -2
  207. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +12 -2
  208. package/dist/docs/reference/geometry/RectangleProfileOptions.md +8 -2
  209. package/dist/docs/reference/geometry/RegionData.md +12 -2
  210. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
  211. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
  212. package/dist/docs/reference/geometry/RevolveOptions.md +16 -2
  213. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +11 -1
  214. package/dist/docs/reference/geometry/RowLayoutOptions.md +10 -4
  215. package/dist/docs/reference/geometry/SampleContourOptions.md +8 -2
  216. package/dist/docs/reference/geometry/SampleHelixOptions.md +8 -2
  217. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +8 -2
  218. package/dist/docs/reference/geometry/SampledCurve2.md +8 -2
  219. package/dist/docs/reference/geometry/SampledCurve3.md +8 -2
  220. package/dist/docs/reference/geometry/SampledThreadHelices.md +8 -2
  221. package/dist/docs/reference/geometry/SideProfileCurve.md +8 -2
  222. package/dist/docs/reference/geometry/SideProfilePoint.md +8 -2
  223. package/dist/docs/reference/geometry/SideProfileSegment.md +8 -2
  224. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +11 -1
  225. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +12 -2
  226. package/dist/docs/reference/geometry/SphereOptions.md +11 -1
  227. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +16 -2
  228. package/dist/docs/reference/geometry/StarContourOptions.md +12 -2
  229. package/dist/docs/reference/geometry/StrokeCap.md +12 -2
  230. package/dist/docs/reference/geometry/StrokeJoin.md +12 -2
  231. package/dist/docs/reference/geometry/StrokeOptions.md +12 -2
  232. package/dist/docs/reference/geometry/SvgImportOptions.md +8 -2
  233. package/dist/docs/reference/geometry/SvgRegionPreflight.md +8 -2
  234. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +8 -2
  235. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +8 -2
  236. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +8 -2
  237. package/dist/docs/reference/geometry/SweepOptions.md +16 -2
  238. package/dist/docs/reference/geometry/SweepOrientation.md +16 -2
  239. package/dist/docs/reference/geometry/ThreadBevelOptions.md +12 -2
  240. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +8 -2
  241. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +8 -2
  242. package/dist/docs/reference/geometry/ThreadEndStyle.md +16 -2
  243. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +16 -2
  244. package/dist/docs/reference/geometry/ThreadHandedness.md +16 -2
  245. package/dist/docs/reference/geometry/ThreadHelixOptions.md +8 -2
  246. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +16 -2
  247. package/dist/docs/reference/geometry/ThreadLeadInShape.md +16 -2
  248. package/dist/docs/reference/geometry/ThreadProfile-type.md +16 -2
  249. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
  250. package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
  251. package/dist/docs/reference/geometry/ThreadRidgeOptions.md +16 -2
  252. package/dist/docs/reference/geometry/ThreadRole.md +8 -2
  253. package/dist/docs/reference/geometry/ThreadSolidOptions.md +12 -2
  254. package/dist/docs/reference/geometry/ThreadSolidPreflight.md +16 -2
  255. package/dist/docs/reference/geometry/ThreadedNutOptions.md +12 -2
  256. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +12 -2
  257. package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
  258. package/dist/docs/reference/geometry/ThreadedRodOptions.md +12 -2
  259. package/dist/docs/reference/geometry/TorusOptions.md +11 -1
  260. package/dist/docs/reference/geometry/Transform2-type.md +17 -3
  261. package/dist/docs/reference/geometry/Transform2Data.md +17 -3
  262. package/dist/docs/reference/geometry/Transform2Input.md +17 -3
  263. package/dist/docs/reference/geometry/Transform3-type.md +17 -3
  264. package/dist/docs/reference/geometry/Transform3Data.md +17 -3
  265. package/dist/docs/reference/geometry/Transform3Input.md +17 -3
  266. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +16 -2
  267. package/dist/docs/reference/geometry/TriangleMesh.md +20 -2
  268. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +16 -2
  269. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +12 -2
  270. package/dist/docs/reference/geometry/TriangleMeshInput.md +12 -2
  271. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +16 -2
  272. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +12 -2
  273. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +12 -2
  274. package/dist/docs/reference/geometry/TriangleMeshSignature.md +12 -2
  275. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +12 -2
  276. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +12 -2
  277. package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +16 -2
  278. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +12 -2
  279. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +16 -2
  280. package/dist/docs/reference/geometry/TubeOptions.md +11 -1
  281. package/dist/docs/reference/geometry/Vector2-type.md +17 -3
  282. package/dist/docs/reference/geometry/Vector2Data.md +21 -3
  283. package/dist/docs/reference/geometry/Vector2Input.md +17 -3
  284. package/dist/docs/reference/geometry/Vector3-type.md +17 -3
  285. package/dist/docs/reference/geometry/Vector3Data.md +17 -3
  286. package/dist/docs/reference/geometry/Vector3Input.md +17 -3
  287. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +12 -2
  288. package/dist/docs/reference/geometry/VectorTextLayout.md +16 -2
  289. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +12 -2
  290. package/dist/docs/reference/geometry/VectorTextMetrics.md +16 -2
  291. package/dist/docs/reference/geometry/VectorTextOptions.md +12 -2
  292. package/dist/docs/reference/geometry/add2.md +9 -3
  293. package/dist/docs/reference/geometry/add3.md +9 -3
  294. package/dist/docs/reference/geometry/anchor3.md +9 -3
  295. package/dist/docs/reference/geometry/anchorFrame3.md +8 -2
  296. package/dist/docs/reference/geometry/applyTransformDirection3.md +9 -3
  297. package/dist/docs/reference/geometry/applyTransformPoint3.md +9 -3
  298. package/dist/docs/reference/geometry/attachmentTransform3.md +9 -3
  299. package/dist/docs/reference/geometry/bounds2.md +16 -6
  300. package/dist/docs/reference/geometry/bounds3.md +16 -6
  301. package/dist/docs/reference/geometry/boundsCenter.md +10 -4
  302. package/dist/docs/reference/geometry/boundsSize.md +10 -4
  303. package/dist/docs/reference/geometry/boxAnchor3.md +9 -3
  304. package/dist/docs/reference/geometry/categories/bounds-layout.md +4 -4
  305. package/dist/docs/reference/geometry/categories/curves-paths.md +2 -2
  306. package/dist/docs/reference/geometry/categories/mechanical.md +2 -2
  307. package/dist/docs/reference/geometry/categories/meshes.md +3 -3
  308. package/dist/docs/reference/geometry/categories/pattern-placement.md +2 -2
  309. package/dist/docs/reference/geometry/categories/primitive-options.md +2 -2
  310. package/dist/docs/reference/geometry/categories/profiles-regions.md +2 -2
  311. package/dist/docs/reference/geometry/categories/resolution-errors.md +1 -1
  312. package/dist/docs/reference/geometry/categories/transforms-math.md +3 -3
  313. package/dist/docs/reference/geometry/categories/vector-import.md +2 -2
  314. package/dist/docs/reference/geometry/circleContour.md +8 -2
  315. package/dist/docs/reference/geometry/closeToAxis.md +8 -2
  316. package/dist/docs/reference/geometry/compensateThreadDiameters.md +8 -2
  317. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +8 -2
  318. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +8 -2
  319. package/dist/docs/reference/geometry/composeTransform3.md +9 -3
  320. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +8 -2
  321. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -2
  322. package/dist/docs/reference/geometry/contourContainsPoint.md +8 -2
  323. package/dist/docs/reference/geometry/cross2.md +9 -3
  324. package/dist/docs/reference/geometry/cross3.md +9 -3
  325. package/dist/docs/reference/geometry/cylinderAnchor3.md +9 -3
  326. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
  327. package/dist/docs/reference/geometry/distance2.md +9 -3
  328. package/dist/docs/reference/geometry/distance3.md +9 -3
  329. package/dist/docs/reference/geometry/distributeAlongPath.md +8 -2
  330. package/dist/docs/reference/geometry/dot2.md +9 -3
  331. package/dist/docs/reference/geometry/dot3.md +9 -3
  332. package/dist/docs/reference/geometry/ellipseContour.md +8 -2
  333. package/dist/docs/reference/geometry/eulerTransform3.md +9 -3
  334. package/dist/docs/reference/geometry/fitBounds.md +10 -4
  335. package/dist/docs/reference/geometry/fitTextLayout.md +8 -2
  336. package/dist/docs/reference/geometry/frameTransform3.md +9 -3
  337. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +8 -2
  338. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +8 -2
  339. package/dist/docs/reference/geometry/gridPatternTransforms.md +8 -2
  340. package/dist/docs/reference/geometry/immutableBuffer.md +12 -2
  341. package/dist/docs/reference/geometry/inverseTransform3.md +9 -3
  342. package/dist/docs/reference/geometry/isGeometryError.md +11 -1
  343. package/dist/docs/reference/geometry/layoutRow.md +10 -4
  344. package/dist/docs/reference/geometry/length2.md +9 -3
  345. package/dist/docs/reference/geometry/length3.md +9 -3
  346. package/dist/docs/reference/geometry/lerp2.md +9 -3
  347. package/dist/docs/reference/geometry/lerp3.md +9 -3
  348. package/dist/docs/reference/geometry/linearPatternTransforms.md +8 -2
  349. package/dist/docs/reference/geometry/matchProfiles.md +8 -2
  350. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +8 -2
  351. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +8 -2
  352. package/dist/docs/reference/geometry/normalize2.md +9 -3
  353. package/dist/docs/reference/geometry/normalize3.md +9 -3
  354. package/dist/docs/reference/geometry/normalizeContour.md +8 -2
  355. package/dist/docs/reference/geometry/normalizePolygon.md +8 -2
  356. package/dist/docs/reference/geometry/normalizeRegion.md +8 -2
  357. package/dist/docs/reference/geometry/path2.md +12 -2
  358. package/dist/docs/reference/geometry/path3.md +12 -2
  359. package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -2
  360. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +8 -2
  361. package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
  362. package/dist/docs/reference/geometry/preflightThreadedNut.md +8 -2
  363. package/dist/docs/reference/geometry/preflightThreadedRod.md +8 -2
  364. package/dist/docs/reference/geometry/projectOntoPlane3.md +9 -3
  365. package/dist/docs/reference/geometry/radialPatternTransforms.md +8 -2
  366. package/dist/docs/reference/geometry/rectangleContour.md +8 -2
  367. package/dist/docs/reference/geometry/rectangleProfile.md +8 -2
  368. package/dist/docs/reference/geometry/regionArea.md +8 -2
  369. package/dist/docs/reference/geometry/regionBounds.md +8 -2
  370. package/dist/docs/reference/geometry/regularPolygonContour.md +8 -2
  371. package/dist/docs/reference/geometry/resamplePolyline2.md +8 -2
  372. package/dist/docs/reference/geometry/resamplePolyline3.md +8 -2
  373. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +7 -1
  374. package/dist/docs/reference/geometry/resolveArcSegments.md +7 -1
  375. package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
  376. package/dist/docs/reference/geometry/resolveCircularSegments.md +7 -1
  377. package/dist/docs/reference/geometry/resolveCylindricalGear.md +8 -2
  378. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +8 -2
  379. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +8 -2
  380. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +8 -2
  381. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +7 -1
  382. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +8 -2
  383. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +8 -2
  384. package/dist/docs/reference/geometry/resolveRackPitch.md +8 -2
  385. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -2
  386. package/dist/docs/reference/geometry/rotate2.md +9 -3
  387. package/dist/docs/reference/geometry/rotationTransform3.md +9 -3
  388. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -2
  389. package/dist/docs/reference/geometry/sampleContour.md +8 -2
  390. package/dist/docs/reference/geometry/sampleCurve2.md +8 -2
  391. package/dist/docs/reference/geometry/sampleCurve3.md +8 -2
  392. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +8 -2
  393. package/dist/docs/reference/geometry/sampleHelix.md +8 -2
  394. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +8 -2
  395. package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -2
  396. package/dist/docs/reference/geometry/sampleSideProfile.md +8 -2
  397. package/dist/docs/reference/geometry/sampleTextContours.md +8 -2
  398. package/dist/docs/reference/geometry/sampleThreadHelices.md +8 -2
  399. package/dist/docs/reference/geometry/scale2.md +9 -3
  400. package/dist/docs/reference/geometry/scale3.md +9 -3
  401. package/dist/docs/reference/geometry/scaleTransform3.md +9 -3
  402. package/dist/docs/reference/geometry/signedContourArea.md +8 -2
  403. package/dist/docs/reference/geometry/starContour.md +8 -2
  404. package/dist/docs/reference/geometry/strokeRegionData.md +8 -2
  405. package/dist/docs/reference/geometry/subtract2.md +9 -3
  406. package/dist/docs/reference/geometry/subtract3.md +9 -3
  407. package/dist/docs/reference/geometry/threadProfile.md +8 -2
  408. package/dist/docs/reference/geometry/transform2.md +13 -3
  409. package/dist/docs/reference/geometry/transform3.md +13 -3
  410. package/dist/docs/reference/geometry/transformDeterminant3.md +9 -3
  411. package/dist/docs/reference/geometry/transformRegionData.md +8 -2
  412. package/dist/docs/reference/geometry/translationTransform3.md +9 -3
  413. package/dist/docs/reference/geometry/triangulateContour.md +8 -2
  414. package/dist/docs/reference/geometry/validateRigidTransform3.md +9 -3
  415. package/dist/docs/reference/geometry/validateTransform3.md +9 -3
  416. package/dist/docs/reference/geometry/vector2.md +13 -3
  417. package/dist/docs/reference/geometry/vector3.md +13 -3
  418. package/dist/docs/reference/geometry.md +2 -2
  419. package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
  420. package/dist/docs/reference/mesh/RenderMesh.md +68 -0
  421. package/dist/docs/reference/mesh/analyze.md +12 -6
  422. package/dist/docs/reference/mesh/analyzeQuality.md +11 -5
  423. package/dist/docs/reference/mesh/bounds.md +10 -4
  424. package/dist/docs/reference/mesh/categories/operations.md +5 -95
  425. package/dist/docs/reference/mesh/centroid.md +10 -4
  426. package/dist/docs/reference/mesh/extrude.md +11 -5
  427. package/dist/docs/reference/mesh/heightfield.md +11 -5
  428. package/dist/docs/reference/mesh/immutable.md +13 -9
  429. package/dist/docs/reference/mesh/join.md +10 -4
  430. package/dist/docs/reference/mesh/loft.md +11 -5
  431. package/dist/docs/reference/mesh/optimizePlanarPatches.md +11 -5
  432. package/dist/docs/reference/mesh/preflightHeightfield.md +11 -5
  433. package/dist/docs/reference/mesh/preflightThreadSolid.md +10 -4
  434. package/dist/docs/reference/mesh/render.md +57 -0
  435. package/dist/docs/reference/mesh/reverse.md +10 -4
  436. package/dist/docs/reference/mesh/revolve.md +11 -5
  437. package/dist/docs/reference/mesh/signature.md +11 -5
  438. package/dist/docs/reference/mesh/sweep.md +12 -6
  439. package/dist/docs/reference/mesh/threadRidge.md +10 -4
  440. package/dist/docs/reference/mesh/threadSolid.md +10 -4
  441. package/dist/docs/reference/mesh/transform.md +11 -5
  442. package/dist/docs/reference/mesh/validate.md +10 -4
  443. package/dist/docs/reference/mesh/validateSolid.md +10 -4
  444. package/dist/docs/reference/mesh.md +1 -1
  445. package/dist/docs/reference/model/CircleOptions.md +13 -7
  446. package/dist/docs/reference/model/DiagnosticOptions.md +7 -1
  447. package/dist/docs/reference/model/EllipseOptions.md +13 -7
  448. package/dist/docs/reference/model/GenerateCallback.md +7 -1
  449. package/dist/docs/reference/model/GenerateContext.md +14 -39
  450. package/dist/docs/reference/model/GenerationDiagnostic.md +7 -1
  451. package/dist/docs/reference/model/GenerationError.md +8 -2
  452. package/dist/docs/reference/model/HoleCutterOptions.md +17 -10
  453. package/dist/docs/reference/model/HoleCutterOverrun.md +10 -3
  454. package/dist/docs/reference/model/HoleCutterRecess.md +10 -3
  455. package/dist/docs/reference/model/HullOptions.md +13 -6
  456. package/dist/docs/reference/model/ImmutableValue.md +7 -1
  457. package/dist/docs/reference/model/ImplicitOptions.md +12 -6
  458. package/dist/docs/reference/model/JoinOptions.md +76 -0
  459. package/dist/docs/reference/model/JoinTransition.md +54 -0
  460. package/dist/docs/reference/model/KnuckleHinge-type.md +9 -3
  461. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
  462. package/dist/docs/reference/model/KnuckleHingeOptions.md +10 -4
  463. package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
  464. package/dist/docs/reference/model/LoftStation.md +16 -9
  465. package/dist/docs/reference/model/Memo.md +54 -0
  466. package/dist/docs/reference/model/ModelProgram.md +7 -1
  467. package/dist/docs/reference/model/PartDeclaration.md +11 -6
  468. package/dist/docs/reference/model/PartGeometry.md +10 -4
  469. package/dist/docs/reference/model/PartOptions.md +11 -6
  470. package/dist/docs/reference/model/PatternSource.md +10 -4
  471. package/dist/docs/reference/model/PlaneOptions.md +11 -4
  472. package/dist/docs/reference/model/PolygonOptions.md +20 -14
  473. package/dist/docs/reference/model/Profile.md +10 -4
  474. package/dist/docs/reference/model/RectangleOptions.md +28 -22
  475. package/dist/docs/reference/model/RegularPolygonOptions.md +13 -7
  476. package/dist/docs/reference/model/Section.md +68 -74
  477. package/dist/docs/reference/model/SectionHullOptions.md +13 -6
  478. package/dist/docs/reference/model/SectionInspection.md +10 -4
  479. package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
  480. package/dist/docs/reference/model/SectionOffsetOptions.md +12 -6
  481. package/dist/docs/reference/model/Solid.md +101 -53
  482. package/dist/docs/reference/model/SolidInspection.md +10 -4
  483. package/dist/docs/reference/model/SolidSegmentHit.md +11 -5
  484. package/dist/docs/reference/model/StarOptions.md +24 -18
  485. package/dist/docs/reference/model/SvgOrigin.md +10 -4
  486. package/dist/docs/reference/model/SvgPathSectionOptions.md +14 -8
  487. package/dist/docs/reference/model/SvgSectionOptions.md +16 -10
  488. package/dist/docs/reference/model/TextSectionOptions.md +14 -8
  489. package/dist/docs/reference/model/box.md +18 -11
  490. package/dist/docs/reference/model/categories/boolean-operations.md +8 -2
  491. package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -7
  492. package/dist/docs/reference/model/categories/explicit-profiles.md +1 -14
  493. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +6 -20
  494. package/dist/docs/reference/model/categories/generation.md +5 -10
  495. package/dist/docs/reference/model/categories/hinges.md +1 -4
  496. package/dist/docs/reference/model/categories/mesh-inspection.md +2 -6
  497. package/dist/docs/reference/model/categories/primitives.md +5 -21
  498. package/dist/docs/reference/model/categories/sections.md +4 -15
  499. package/dist/docs/reference/model/categories/threads.md +2 -39
  500. package/dist/docs/reference/model/categories/transforms-placement.md +4 -33
  501. package/dist/docs/reference/model/circle.md +10 -4
  502. package/dist/docs/reference/model/cylinder.md +13 -6
  503. package/dist/docs/reference/model/ellipse.md +10 -4
  504. package/dist/docs/reference/model/extrude.md +26 -19
  505. package/dist/docs/reference/model/generate.md +8 -2
  506. package/dist/docs/reference/model/gridPattern.md +15 -9
  507. package/dist/docs/reference/model/heightfield.md +10 -4
  508. package/dist/docs/reference/model/holeCutter.md +10 -3
  509. package/dist/docs/reference/model/hull.md +9 -2
  510. package/dist/docs/reference/model/implicit.md +9 -3
  511. package/dist/docs/reference/model/internalThreadCutter.md +23 -17
  512. package/dist/docs/reference/model/intersect.md +9 -2
  513. package/dist/docs/reference/model/join.md +89 -0
  514. package/dist/docs/reference/model/knuckleHinge.md +7 -1
  515. package/dist/docs/reference/model/linearPattern.md +15 -9
  516. package/dist/docs/reference/model/loft.md +31 -24
  517. package/dist/docs/reference/model/matchProfiles.md +14 -8
  518. package/dist/docs/reference/model/minkowskiSum.md +9 -2
  519. package/dist/docs/reference/model/pathPattern.md +25 -19
  520. package/dist/docs/reference/model/polygon.md +13 -7
  521. package/dist/docs/reference/model/preflightInternalThreadCutter.md +25 -19
  522. package/dist/docs/reference/model/preflightThreadedNut.md +29 -23
  523. package/dist/docs/reference/model/preflightThreadedRod.md +25 -19
  524. package/dist/docs/reference/model/radialPattern.md +15 -9
  525. package/dist/docs/reference/model/rectangle.md +14 -8
  526. package/dist/docs/reference/model/regularPolygon.md +10 -4
  527. package/dist/docs/reference/model/revolve.md +22 -15
  528. package/dist/docs/reference/model/solidFromMesh.md +12 -6
  529. package/dist/docs/reference/model/sphere.md +13 -6
  530. package/dist/docs/reference/model/star.md +12 -6
  531. package/dist/docs/reference/model/stroke.md +21 -15
  532. package/dist/docs/reference/model/svgPathSection.md +12 -6
  533. package/dist/docs/reference/model/svgSection.md +13 -7
  534. package/dist/docs/reference/model/sweep.md +27 -20
  535. package/dist/docs/reference/model/textSection.md +15 -9
  536. package/dist/docs/reference/model/threadRidge.md +21 -15
  537. package/dist/docs/reference/model/threadedNut.md +27 -21
  538. package/dist/docs/reference/model/threadedRod.md +23 -17
  539. package/dist/docs/reference/model/torus.md +20 -13
  540. package/dist/docs/reference/model/tube.md +13 -6
  541. package/dist/docs/reference/model/union.md +9 -2
  542. package/dist/docs/reference/model.md +3 -8
  543. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -1
  544. package/dist/docs/reference/text/VectorFont.md +39 -33
  545. package/dist/docs/reference/text/VectorFontOptions.md +7 -1
  546. package/dist/docs/reference/text/categories/font-preparation.md +1 -13
  547. package/dist/docs/reference/text/prepareVectorFont.md +7 -1
  548. package/dist/docs/reference/text.md +1 -1
  549. package/dist/engine/finalization.js +2 -74
  550. package/dist/engine/index.js +2 -2
  551. package/dist/engine/native/construction-mesh.js +41 -0
  552. package/dist/engine/native/material-components.js +2 -51
  553. package/dist/engine/native/mesh-observation.js +55 -0
  554. package/dist/engine/native/regions.js +2 -1
  555. package/dist/engine/operations/context.js +2 -0
  556. package/dist/engine/operations/extrusion-finishing.js +17 -16
  557. package/dist/engine/operations/join-collar-profile.js +120 -0
  558. package/dist/engine/operations/join.js +508 -0
  559. package/dist/engine/recipe-realization.js +1 -1
  560. package/dist/engine/session/dependencies.js +89 -42
  561. package/dist/engine/session/graph.js +319 -342
  562. package/dist/engine/session/native-cache.js +1 -1
  563. package/dist/engine/session/session.js +5 -5
  564. package/dist/engine/session/snapshot-cache.js +2 -2
  565. package/dist/export/3mf.js +190 -0
  566. package/dist/export/capture.js +178 -0
  567. package/dist/export/glb.js +209 -0
  568. package/dist/export/index.js +5 -0
  569. package/dist/export/limits.js +18 -0
  570. package/dist/export/stl.js +105 -0
  571. package/dist/export/types.js +1 -0
  572. package/dist/export/writer.js +54 -0
  573. package/dist/geometry/bounds-value.js +4 -4
  574. package/dist/geometry/immutable-buffer.js +4 -6
  575. package/dist/geometry/join-geometry.js +839 -0
  576. package/dist/geometry/mesh/mesh-render.js +205 -0
  577. package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
  578. package/dist/geometry/mesh/mesh-solid.js +6 -2
  579. package/dist/geometry/mesh-api.js +1 -0
  580. package/dist/geometry/region-offset.js +278 -0
  581. package/dist/geometry/regions.js +11 -1
  582. package/dist/model/execution-binding.js +3 -3
  583. package/dist/model/generation.js +2 -2
  584. package/dist/model/immutable-generation-data.js +13 -13
  585. package/dist/model/join.js +1 -0
  586. package/dist/model/operations.js +20 -0
  587. package/dist/model/recipe-declaration.js +1 -0
  588. package/dist/model/shape-handles.js +1 -0
  589. package/package.json +18 -1
  590. package/dist/docs/reference/engine/Export3mfOptions.md +0 -46
  591. package/dist/docs/reference/engine/ExportMeshPart.md +0 -31
  592. package/dist/docs/reference/engine/ModelingLimits.md +0 -121
  593. package/dist/docs/reference/engine/export3mf.md +0 -55
  594. package/dist/docs/reference/mesh/AcmeThreadProfileSpec.md +0 -79
  595. package/dist/docs/reference/mesh/Bevel.md +0 -18
  596. package/dist/docs/reference/mesh/BevelSize.md +0 -14
  597. package/dist/docs/reference/mesh/Bounds2.md +0 -125
  598. package/dist/docs/reference/mesh/Bounds2Data.md +0 -43
  599. package/dist/docs/reference/mesh/Bounds2Input.md +0 -19
  600. package/dist/docs/reference/mesh/Bounds3.md +0 -125
  601. package/dist/docs/reference/mesh/Bounds3Data.md +0 -43
  602. package/dist/docs/reference/mesh/Bounds3Input.md +0 -19
  603. package/dist/docs/reference/mesh/ButtressPressureFlankSide.md +0 -14
  604. package/dist/docs/reference/mesh/ButtressThreadProfileSpec.md +0 -97
  605. package/dist/docs/reference/mesh/CircularPrimitiveOptions.md +0 -60
  606. package/dist/docs/reference/mesh/CurveSamplingOptions.md +0 -69
  607. package/dist/docs/reference/mesh/CustomThreadProfileSpec.md +0 -77
  608. package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +0 -129
  609. package/dist/docs/reference/mesh/ExtrusionSamplingOptions.md +0 -81
  610. package/dist/docs/reference/mesh/Frame3.md +0 -62
  611. package/dist/docs/reference/mesh/GeometryResolution.md +0 -74
  612. package/dist/docs/reference/mesh/GeometrySamplingLimits.md +0 -66
  613. package/dist/docs/reference/mesh/GeometryToleranceOptions.md +0 -46
  614. package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +0 -18
  615. package/dist/docs/reference/mesh/HeightfieldOptions.md +0 -72
  616. package/dist/docs/reference/mesh/HeightfieldPreflight.md +0 -58
  617. package/dist/docs/reference/mesh/ImmutableBuffer.md +0 -108
  618. package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +0 -43
  619. package/dist/docs/reference/mesh/LoftCorrespondence.md +0 -24
  620. package/dist/docs/reference/mesh/LoftMeshStation.md +0 -31
  621. package/dist/docs/reference/mesh/LoftOptions.md +0 -88
  622. package/dist/docs/reference/mesh/LoftPlacement.md +0 -70
  623. package/dist/docs/reference/mesh/ModelingLimits.md +0 -130
  624. package/dist/docs/reference/mesh/NumericArray.md +0 -14
  625. package/dist/docs/reference/mesh/Path2.md +0 -197
  626. package/dist/docs/reference/mesh/Path2Data.md +0 -50
  627. package/dist/docs/reference/mesh/Path2Input.md +0 -20
  628. package/dist/docs/reference/mesh/Path3.md +0 -197
  629. package/dist/docs/reference/mesh/Path3Data.md +0 -50
  630. package/dist/docs/reference/mesh/Path3Input.md +0 -20
  631. package/dist/docs/reference/mesh/PathLocation.md +0 -69
  632. package/dist/docs/reference/mesh/PathNormalGuide.md +0 -43
  633. package/dist/docs/reference/mesh/PathResamplingOptions.md +0 -84
  634. package/dist/docs/reference/mesh/Pivot2Options.md +0 -26
  635. package/dist/docs/reference/mesh/Pivot3Options.md +0 -26
  636. package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +0 -14
  637. package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +0 -160
  638. package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +0 -124
  639. package/dist/docs/reference/mesh/PlanarPatchQuality.md +0 -194
  640. package/dist/docs/reference/mesh/RevolveOptions.md +0 -91
  641. package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +0 -38
  642. package/dist/docs/reference/mesh/SquareThreadProfileSpec.md +0 -79
  643. package/dist/docs/reference/mesh/SweepOptions.md +0 -113
  644. package/dist/docs/reference/mesh/SweepOrientation.md +0 -113
  645. package/dist/docs/reference/mesh/ThreadEndStyle.md +0 -14
  646. package/dist/docs/reference/mesh/ThreadEndTreatmentOptions.md +0 -117
  647. package/dist/docs/reference/mesh/ThreadHandedness.md +0 -14
  648. package/dist/docs/reference/mesh/ThreadLeadInEnvelope.md +0 -14
  649. package/dist/docs/reference/mesh/ThreadLeadInShape.md +0 -14
  650. package/dist/docs/reference/mesh/ThreadProfile.md +0 -86
  651. package/dist/docs/reference/mesh/ThreadProfileBaseSpec.md +0 -53
  652. package/dist/docs/reference/mesh/ThreadProfileSpec.md +0 -23
  653. package/dist/docs/reference/mesh/ThreadRidgeOptions.md +0 -145
  654. package/dist/docs/reference/mesh/ThreadSolidOptions.md +0 -222
  655. package/dist/docs/reference/mesh/ThreadSolidPreflight.md +0 -58
  656. package/dist/docs/reference/mesh/Transform2.md +0 -256
  657. package/dist/docs/reference/mesh/Transform2Data.md +0 -14
  658. package/dist/docs/reference/mesh/Transform2Input.md +0 -19
  659. package/dist/docs/reference/mesh/Transform3.md +0 -296
  660. package/dist/docs/reference/mesh/Transform3Data.md +0 -17
  661. package/dist/docs/reference/mesh/Transform3Input.md +0 -19
  662. package/dist/docs/reference/mesh/TrapezoidalThreadProfileSpec.md +0 -96
  663. package/dist/docs/reference/mesh/TriangleMesh.md +0 -34
  664. package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +0 -129
  665. package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +0 -79
  666. package/dist/docs/reference/mesh/TriangleMeshInput.md +0 -19
  667. package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +0 -79
  668. package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +0 -43
  669. package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +0 -194
  670. package/dist/docs/reference/mesh/TriangleMeshSignature.md +0 -111
  671. package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +0 -46
  672. package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +0 -34
  673. package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +0 -131
  674. package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +0 -55
  675. package/dist/docs/reference/mesh/TriangularThreadProfileSpec.md +0 -95
  676. package/dist/docs/reference/mesh/Vector2.md +0 -270
  677. package/dist/docs/reference/mesh/Vector2Data.md +0 -14
  678. package/dist/docs/reference/mesh/Vector2Input.md +0 -19
  679. package/dist/docs/reference/mesh/Vector3.md +0 -282
  680. package/dist/docs/reference/mesh/Vector3Data.md +0 -14
  681. package/dist/docs/reference/mesh/Vector3Input.md +0 -19
  682. package/dist/docs/reference/model/AcmeThreadProfileSpec.md +0 -80
  683. package/dist/docs/reference/model/Anchor3.md +0 -55
  684. package/dist/docs/reference/model/AttachOptions.md +0 -69
  685. package/dist/docs/reference/model/Bevel.md +0 -19
  686. package/dist/docs/reference/model/BevelSize.md +0 -15
  687. package/dist/docs/reference/model/Bounds2-type.md +0 -125
  688. package/dist/docs/reference/model/Bounds2Data.md +0 -44
  689. package/dist/docs/reference/model/Bounds2Input.md +0 -19
  690. package/dist/docs/reference/model/Bounds2Options.md +0 -110
  691. package/dist/docs/reference/model/Bounds3-type.md +0 -125
  692. package/dist/docs/reference/model/Bounds3Data.md +0 -44
  693. package/dist/docs/reference/model/Bounds3Input.md +0 -19
  694. package/dist/docs/reference/model/Bounds3Options.md +0 -110
  695. package/dist/docs/reference/model/BoxEdge.md +0 -15
  696. package/dist/docs/reference/model/BoxEdgeSelection.md +0 -19
  697. package/dist/docs/reference/model/BoxEdgeTreatments.md +0 -20
  698. package/dist/docs/reference/model/BoxOptions.md +0 -92
  699. package/dist/docs/reference/model/ButtressPressureFlankSide.md +0 -15
  700. package/dist/docs/reference/model/ButtressThreadProfileSpec.md +0 -98
  701. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +0 -35
  702. package/dist/docs/reference/model/CircleContourOptions.md +0 -21
  703. package/dist/docs/reference/model/CircularPrimitiveOptions.md +0 -62
  704. package/dist/docs/reference/model/Computed.md +0 -44
  705. package/dist/docs/reference/model/ComputedValue.md +0 -24
  706. package/dist/docs/reference/model/Contour.md +0 -24
  707. package/dist/docs/reference/model/CorrespondingComponent.md +0 -46
  708. package/dist/docs/reference/model/CorrespondingContour.md +0 -46
  709. package/dist/docs/reference/model/CorrespondingProfile.md +0 -22
  710. package/dist/docs/reference/model/CorrespondingProfileStation.md +0 -27
  711. package/dist/docs/reference/model/CurveSamplingOptions.md +0 -68
  712. package/dist/docs/reference/model/CustomThreadProfileSpec.md +0 -78
  713. package/dist/docs/reference/model/CylinderOptions.md +0 -58
  714. package/dist/docs/reference/model/EdgeTreatment.md +0 -22
  715. package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
  716. package/dist/docs/reference/model/EndTreatments.md +0 -39
  717. package/dist/docs/reference/model/ExtrudeMeshOptions.md +0 -133
  718. package/dist/docs/reference/model/ExtrudeOptions.md +0 -149
  719. package/dist/docs/reference/model/ExtrusionSamplingOptions.md +0 -84
  720. package/dist/docs/reference/model/Frame3.md +0 -63
  721. package/dist/docs/reference/model/GeometryError.md +0 -102
  722. package/dist/docs/reference/model/GeometryErrorCode.md +0 -15
  723. package/dist/docs/reference/model/GeometryErrorContext.md +0 -35
  724. package/dist/docs/reference/model/GeometryResolution.md +0 -70
  725. package/dist/docs/reference/model/GeometrySamplingLimits.md +0 -62
  726. package/dist/docs/reference/model/GeometryToleranceOptions.md +0 -46
  727. package/dist/docs/reference/model/GridPatternOptions.md +0 -50
  728. package/dist/docs/reference/model/HeightfieldOptions.md +0 -68
  729. package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -108
  730. package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -43
  731. package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -216
  732. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +0 -77
  733. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +0 -47
  734. package/dist/docs/reference/model/KnuckleHingeSpec.md +0 -18
  735. package/dist/docs/reference/model/LinearPatternOptions.md +0 -39
  736. package/dist/docs/reference/model/LoftCorrespondence.md +0 -27
  737. package/dist/docs/reference/model/LoftOptions.md +0 -91
  738. package/dist/docs/reference/model/LoftPlacement.md +0 -73
  739. package/dist/docs/reference/model/MatchProfilesOptions.md +0 -35
  740. package/dist/docs/reference/model/ModelingLimits.md +0 -126
  741. package/dist/docs/reference/model/NumericArray.md +0 -14
  742. package/dist/docs/reference/model/Path2-type.md +0 -196
  743. package/dist/docs/reference/model/Path2Data.md +0 -50
  744. package/dist/docs/reference/model/Path2Input.md +0 -20
  745. package/dist/docs/reference/model/Path3-type.md +0 -196
  746. package/dist/docs/reference/model/Path3Data.md +0 -50
  747. package/dist/docs/reference/model/Path3Input.md +0 -20
  748. package/dist/docs/reference/model/PathLocation.md +0 -69
  749. package/dist/docs/reference/model/PathNormalGuide.md +0 -46
  750. package/dist/docs/reference/model/PathOptions.md +0 -38
  751. package/dist/docs/reference/model/PathPatternOptions.md +0 -48
  752. package/dist/docs/reference/model/PathResamplingOptions.md +0 -84
  753. package/dist/docs/reference/model/Pivot2Options.md +0 -28
  754. package/dist/docs/reference/model/Pivot3Options.md +0 -28
  755. package/dist/docs/reference/model/PolygonData.md +0 -44
  756. package/dist/docs/reference/model/PrimitiveAttachment.md +0 -39
  757. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +0 -110
  758. package/dist/docs/reference/model/PrintableThreadFit.md +0 -15
  759. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
  760. package/dist/docs/reference/model/ProfileComponent2.md +0 -46
  761. package/dist/docs/reference/model/ProfileContour2.md +0 -36
  762. package/dist/docs/reference/model/ProfileSpan2.md +0 -47
  763. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +0 -41
  764. package/dist/docs/reference/model/RadialPatternOptions.md +0 -59
  765. package/dist/docs/reference/model/RadialSizing.md +0 -15
  766. package/dist/docs/reference/model/RadialSizingOptions.md +0 -40
  767. package/dist/docs/reference/model/RectangleContourOptions.md +0 -72
  768. package/dist/docs/reference/model/RectangleCornerTreatment.md +0 -40
  769. package/dist/docs/reference/model/RectangleCornerTreatments.md +0 -20
  770. package/dist/docs/reference/model/RegionData.md +0 -19
  771. package/dist/docs/reference/model/RevolveOptions.md +0 -94
  772. package/dist/docs/reference/model/RoundedEdgeTreatment.md +0 -96
  773. package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
  774. package/dist/docs/reference/model/SphereOptions.md +0 -20
  775. package/dist/docs/reference/model/SquareThreadProfileSpec.md +0 -80
  776. package/dist/docs/reference/model/StarContourOptions.md +0 -81
  777. package/dist/docs/reference/model/StrokeCap.md +0 -16
  778. package/dist/docs/reference/model/StrokeJoin.md +0 -16
  779. package/dist/docs/reference/model/StrokeOptions.md +0 -91
  780. package/dist/docs/reference/model/SweepOptions.md +0 -116
  781. package/dist/docs/reference/model/SweepOrientation.md +0 -116
  782. package/dist/docs/reference/model/ThreadBevelOptions.md +0 -35
  783. package/dist/docs/reference/model/ThreadEndStyle.md +0 -15
  784. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +0 -118
  785. package/dist/docs/reference/model/ThreadHandedness.md +0 -15
  786. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +0 -15
  787. package/dist/docs/reference/model/ThreadLeadInShape.md +0 -15
  788. package/dist/docs/reference/model/ThreadProfile.md +0 -87
  789. package/dist/docs/reference/model/ThreadProfileBaseSpec.md +0 -54
  790. package/dist/docs/reference/model/ThreadProfileSpec.md +0 -24
  791. package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -141
  792. package/dist/docs/reference/model/ThreadSolidPreflight.md +0 -59
  793. package/dist/docs/reference/model/ThreadedNutOptions.md +0 -263
  794. package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -111
  795. package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
  796. package/dist/docs/reference/model/ThreadedRodOptions.md +0 -216
  797. package/dist/docs/reference/model/TorusOptions.md +0 -110
  798. package/dist/docs/reference/model/Transform2-type.md +0 -257
  799. package/dist/docs/reference/model/Transform2Data.md +0 -16
  800. package/dist/docs/reference/model/Transform2Input.md +0 -21
  801. package/dist/docs/reference/model/Transform3-type.md +0 -297
  802. package/dist/docs/reference/model/Transform3Data.md +0 -19
  803. package/dist/docs/reference/model/Transform3Input.md +0 -21
  804. package/dist/docs/reference/model/TrapezoidalThreadProfileSpec.md +0 -97
  805. package/dist/docs/reference/model/TriangleMesh.md +0 -34
  806. package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -129
  807. package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
  808. package/dist/docs/reference/model/TriangleMeshTopologyAnalysis.md +0 -131
  809. package/dist/docs/reference/model/TriangularThreadProfileSpec.md +0 -96
  810. package/dist/docs/reference/model/TubeOptions.md +0 -67
  811. package/dist/docs/reference/model/Vector2-type.md +0 -271
  812. package/dist/docs/reference/model/Vector2Data.md +0 -15
  813. package/dist/docs/reference/model/Vector2Input.md +0 -21
  814. package/dist/docs/reference/model/Vector3-type.md +0 -283
  815. package/dist/docs/reference/model/Vector3Data.md +0 -15
  816. package/dist/docs/reference/model/Vector3Input.md +0 -21
  817. package/dist/docs/reference/model/VectorTextLayout.md +0 -40
  818. package/dist/docs/reference/model/VectorTextMetrics.md +0 -100
  819. package/dist/docs/reference/model/bounds2.md +0 -37
  820. package/dist/docs/reference/model/bounds3.md +0 -37
  821. package/dist/docs/reference/model/categories/bounds.md +0 -38
  822. package/dist/docs/reference/model/categories/contracts.md +0 -16
  823. package/dist/docs/reference/model/categories/core-values-errors.md +0 -44
  824. package/dist/docs/reference/model/categories/paths.md +0 -42
  825. package/dist/docs/reference/model/categories/resolution.md +0 -20
  826. package/dist/docs/reference/model/immutableBuffer.md +0 -49
  827. package/dist/docs/reference/model/isGeometryError.md +0 -34
  828. package/dist/docs/reference/model/path2.md +0 -54
  829. package/dist/docs/reference/model/path3.md +0 -49
  830. package/dist/docs/reference/model/transform2.md +0 -46
  831. package/dist/docs/reference/model/transform3.md +0 -48
  832. package/dist/docs/reference/model/vector2.md +0 -40
  833. package/dist/docs/reference/model/vector3.md +0 -47
  834. package/dist/docs/reference/text/Bounds2Data.md +0 -34
  835. package/dist/docs/reference/text/Vector2Data.md +0 -7
  836. package/dist/docs/reference/text/VectorTextArcBaseline.md +0 -53
  837. package/dist/docs/reference/text/VectorTextLayout.md +0 -34
  838. package/dist/docs/reference/text/VectorTextLayoutOptions.md +0 -111
  839. package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
  840. package/dist/docs/reference/text/VectorTextOptions.md +0 -50
  841. package/dist/engine/export-3mf.js +0 -23
  842. package/dist/engine/serialize-3mf.js +0 -116
  843. /package/dist/{engine → geometry/mesh}/mesh-view-cache.js +0 -0
@@ -8,7 +8,7 @@ A prepared font owns its parsed bytes; keep handles local to their Worker or inv
8
8
 
9
9
 
10
10
 
11
- `readonly` **layout**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => [`VectorTextLayout`](VectorTextLayout.md)
11
+ `readonly` **layout**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md)) => [`VectorTextLayout`](../geometry/VectorTextLayout.md)
12
12
 
13
13
 
14
14
 
@@ -24,33 +24,33 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
24
24
 
25
25
  <a id="options"></a>
26
26
 
27
- **`options`** · [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md) · Required
27
+ **`options`** · [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md) · Required
28
28
 
29
- - [`fontSize`](VectorTextLayoutOptions.md#fontsize) · `number` · Required
29
+ - [`fontSize`](../geometry/VectorTextLayoutOptions.md#fontsize) · `number` · Required
30
30
 
31
31
  Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
32
32
 
33
- - [`align`](VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
33
+ - [`align`](../geometry/VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
34
34
 
35
35
  Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
36
36
 
37
- - [`baseline`](VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](VectorTextArcBaseline.md) · Optional
37
+ - [`baseline`](../geometry/VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](../geometry/VectorTextArcBaseline.md) · Optional
38
38
 
39
39
  Omitted uses horizontal lines. Arcs require one line and baseline vertical alignment.
40
40
 
41
- - [`lineHeight`](VectorTextLayoutOptions.md#lineheight) · `number` · Optional
41
+ - [`lineHeight`](../geometry/VectorTextLayoutOptions.md#lineheight) · `number` · Optional
42
42
 
43
43
  Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
44
44
 
45
- - [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
45
+ - [`verticalAlign`](../geometry/VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
46
46
 
47
47
  Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
48
48
 
49
- - [`fontWeight`](VectorTextLayoutOptions.md#fontweight) · `number` · Optional
49
+ - [`fontWeight`](../geometry/VectorTextLayoutOptions.md#fontweight) · `number` · Optional
50
50
 
51
51
  Actual static or variable weight, 1–1000; defaults to the prepared face's static weight.
52
52
 
53
- - [`letterSpacing`](VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
53
+ - [`letterSpacing`](../geometry/VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
54
54
 
55
55
  Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
56
56
 
@@ -58,7 +58,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
58
58
 
59
59
  #### Returns
60
60
 
61
- [`VectorTextLayout`](VectorTextLayout.md)
61
+ [`VectorTextLayout`](../geometry/VectorTextLayout.md)
62
62
 
63
63
  ***
64
64
 
@@ -66,7 +66,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
66
66
 
67
67
 
68
68
 
69
- `readonly` **measure**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => [`VectorTextMetrics`](VectorTextMetrics.md)
69
+ `readonly` **measure**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md)) => [`VectorTextMetrics`](../geometry/VectorTextMetrics.md)
70
70
 
71
71
 
72
72
 
@@ -82,33 +82,33 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
82
82
 
83
83
  <a id="options-1"></a>
84
84
 
85
- **`options`** · [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md) · Required
85
+ **`options`** · [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md) · Required
86
86
 
87
- - [`fontSize`](VectorTextLayoutOptions.md#fontsize) · `number` · Required
87
+ - [`fontSize`](../geometry/VectorTextLayoutOptions.md#fontsize) · `number` · Required
88
88
 
89
89
  Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
90
90
 
91
- - [`align`](VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
91
+ - [`align`](../geometry/VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
92
92
 
93
93
  Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
94
94
 
95
- - [`baseline`](VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](VectorTextArcBaseline.md) · Optional
95
+ - [`baseline`](../geometry/VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](../geometry/VectorTextArcBaseline.md) · Optional
96
96
 
97
97
  Omitted uses horizontal lines. Arcs require one line and baseline vertical alignment.
98
98
 
99
- - [`lineHeight`](VectorTextLayoutOptions.md#lineheight) · `number` · Optional
99
+ - [`lineHeight`](../geometry/VectorTextLayoutOptions.md#lineheight) · `number` · Optional
100
100
 
101
101
  Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
102
102
 
103
- - [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
103
+ - [`verticalAlign`](../geometry/VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
104
104
 
105
105
  Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
106
106
 
107
- - [`fontWeight`](VectorTextLayoutOptions.md#fontweight) · `number` · Optional
107
+ - [`fontWeight`](../geometry/VectorTextLayoutOptions.md#fontweight) · `number` · Optional
108
108
 
109
109
  Actual static or variable weight, 1–1000; defaults to the prepared face's static weight.
110
110
 
111
- - [`letterSpacing`](VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
111
+ - [`letterSpacing`](../geometry/VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
112
112
 
113
113
  Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
114
114
 
@@ -116,7 +116,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
116
116
 
117
117
  #### Returns
118
118
 
119
- [`VectorTextMetrics`](VectorTextMetrics.md)
119
+ [`VectorTextMetrics`](../geometry/VectorTextMetrics.md)
120
120
 
121
121
  ***
122
122
 
@@ -124,7 +124,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
124
124
 
125
125
 
126
126
 
127
- `readonly` **toSvg**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => `string`
127
+ `readonly` **toSvg**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md)) => `string`
128
128
 
129
129
 
130
130
 
@@ -140,33 +140,33 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
140
140
 
141
141
  <a id="options-2"></a>
142
142
 
143
- **`options`** · [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md) · Required
143
+ **`options`** · [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md) · Required
144
144
 
145
- - [`fontSize`](VectorTextLayoutOptions.md#fontsize) · `number` · Required
145
+ - [`fontSize`](../geometry/VectorTextLayoutOptions.md#fontsize) · `number` · Required
146
146
 
147
147
  Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
148
148
 
149
- - [`align`](VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
149
+ - [`align`](../geometry/VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
150
150
 
151
151
  Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
152
152
 
153
- - [`baseline`](VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](VectorTextArcBaseline.md) · Optional
153
+ - [`baseline`](../geometry/VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](../geometry/VectorTextArcBaseline.md) · Optional
154
154
 
155
155
  Omitted uses horizontal lines. Arcs require one line and baseline vertical alignment.
156
156
 
157
- - [`lineHeight`](VectorTextLayoutOptions.md#lineheight) · `number` · Optional
157
+ - [`lineHeight`](../geometry/VectorTextLayoutOptions.md#lineheight) · `number` · Optional
158
158
 
159
159
  Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
160
160
 
161
- - [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
161
+ - [`verticalAlign`](../geometry/VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
162
162
 
163
163
  Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
164
164
 
165
- - [`fontWeight`](VectorTextLayoutOptions.md#fontweight) · `number` · Optional
165
+ - [`fontWeight`](../geometry/VectorTextLayoutOptions.md#fontweight) · `number` · Optional
166
166
 
167
167
  Actual static or variable weight, 1–1000; defaults to the prepared face's static weight.
168
168
 
169
- - [`letterSpacing`](VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
169
+ - [`letterSpacing`](../geometry/VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
170
170
 
171
171
  Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
172
172
 
@@ -179,8 +179,14 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
179
179
 
180
180
  ## Related APIs
181
181
 
182
- - [VectorTextLayout](VectorTextLayout.md)
183
- - [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
184
- - [VectorTextMetrics](VectorTextMetrics.md)
182
+ - [VectorTextLayout](../geometry/VectorTextLayout.md)
183
+ - [VectorTextLayoutOptions](../geometry/VectorTextLayoutOptions.md)
184
+ - [VectorTextMetrics](../geometry/VectorTextMetrics.md)
185
185
 
186
- Package: `@metamesh/modeling@0.18.0`.
186
+ ## Supported imports
187
+
188
+ ```ts
189
+ import type { VectorFont } from "@metamesh/modeling/text";
190
+ ```
191
+
192
+ Package: `@metamesh/modeling@0.19.0`.
@@ -14,4 +14,10 @@ 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.18.0`.
17
+ ## Supported imports
18
+
19
+ ```ts
20
+ import type { VectorFontOptions } from "@metamesh/modeling/text";
21
+ ```
22
+
23
+ Package: `@metamesh/modeling@0.19.0`.
@@ -18,18 +18,6 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
18
18
  | --- | --- |
19
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. |
20
20
  | [VectorFontOptions](../VectorFontOptions.md) | Identifies the actual weight of a static face, without synthesizing a different weight. |
21
- | [VectorTextArcBaseline](../VectorTextArcBaseline.md) | A circular baseline centered at the XY origin, with rigid shaped glyph groups. |
22
- | [VectorTextLayout](../VectorTextLayout.md) | Immutable vector layout with no browser, font parser, or kernel ownership. |
23
- | [VectorTextLayoutOptions](../VectorTextLayoutOptions.md) | Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping. |
24
- | [VectorTextMetrics](../VectorTextMetrics.md) | Text measurements from the same immutable layout that supplies geometry and SVG outlines. |
25
- | [VectorTextOptions](../VectorTextOptions.md) | Shaping controls for a prepared exact font face; all lengths are in millimetres. |
26
- | [Bounds2Data](../Bounds2Data.md) | Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. |
27
-
28
- ## Type aliases
29
-
30
- | API | Summary |
31
- | --- | --- |
32
- | [Vector2Data](../Vector2Data.md) | A two-dimensional Cartesian vector or point. |
33
21
 
34
22
  ## Values
35
23
 
@@ -37,4 +25,4 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
37
25
  | --- | --- |
38
26
  | [MAX_VECTOR_FONT_BYTES](../MAX_VECTOR_FONT_BYTES.md) | Maximum input font size in bytes, checked before parsing or shaping untrusted font data. |
39
27
 
40
- Package: `@metamesh/modeling@0.18.0`.
28
+ Package: `@metamesh/modeling@0.19.0`.
@@ -43,4 +43,10 @@ async function prepareLabel(fontBytes: Uint8Array) {
43
43
  - [VectorFont](VectorFont.md)
44
44
  - [VectorFontOptions](VectorFontOptions.md)
45
45
 
46
- Package: `@metamesh/modeling@0.18.0`.
46
+ ## Supported imports
47
+
48
+ ```ts
49
+ import { prepareVectorFont } from "@metamesh/modeling/text";
50
+ ```
51
+
52
+ Package: `@metamesh/modeling@0.19.0`.
@@ -20,4 +20,4 @@ Paths and metrics use Y-up millimetres and a baseline origin. Empty layouts can
20
20
 
21
21
  - [Font preparation](text/categories/font-preparation.md) — Prepare exact font bytes within limits and reuse vector layouts.
22
22
 
23
- Package: `@metamesh/modeling@0.18.0`.
23
+ Package: `@metamesh/modeling@0.19.0`.
@@ -1,11 +1,10 @@
1
1
  import { GeometryError } from "../geometry/errors.js";
2
- import { immutableMeshView, isImmutableBuffer, } from "../geometry/immutable-buffer.js";
2
+ import { immutableMeshView } from "../geometry/immutable-buffer.js";
3
3
  import { optimizePlanarPatches } from "../geometry/mesh/mesh-planar.js";
4
4
  import { validateAnalyzedSolidMesh } from "../geometry/mesh/mesh-solid.js";
5
+ import { MeshViewCache } from "../geometry/mesh/mesh-view-cache.js";
5
6
  import { analyzeTriangleMesh, } from "../geometry/mesh/mesh.js";
6
- import { MeshViewCache } from "./mesh-view-cache.js";
7
7
  import { copiedMeshViews, copiedUint32Array } from "./native/copied-views.js";
8
- const isArray = (value) => Array.isArray(value);
9
8
  function fitsGeometryLimits(mesh, limits) {
10
9
  const buffers = new Set([mesh.positions.buffer, mesh.indices.buffer]);
11
10
  let bytes = 0;
@@ -82,74 +81,3 @@ export function createGeometryFinalizer(execution, limits, options) {
82
81
  return result;
83
82
  };
84
83
  }
85
- /** Captures mutable external buffers once before an asynchronous snapshot export begins. */
86
- export function captureExportParts(parts, limits) {
87
- if (!isArray(parts) || parts.length === 0 || parts.length > limits.maxParts)
88
- throw new GeometryError("COMPLEXITY_LIMIT", `Export requires one through ${limits.maxParts} parts.`, {
89
- operation: "export3mf",
90
- });
91
- const captured = parts.map((part) => {
92
- if (typeof part !== "object" || part === null)
93
- throw new GeometryError("INVALID_ARGUMENT", "Export part IDs must be unique canonical identifiers.", { operation: "export3mf" });
94
- // Trusted immutable storage can outlive the asynchronous export directly. Mutable external
95
- // input is captured once below, preserving shared backing buffers before the first await.
96
- const { positions, indices } = part;
97
- const immutable = isImmutableBuffer(positions) && isImmutableBuffer(indices);
98
- const mesh = immutableMeshView({ positions, indices });
99
- const id = part.id, color = part.color;
100
- return {
101
- id,
102
- immutable,
103
- positions: mesh.positions,
104
- indices: mesh.indices,
105
- ...(color === undefined ? {} : { color }),
106
- };
107
- });
108
- const identifiers = new Set();
109
- const buffers = new Set();
110
- let vertexCount = 0, triangleCount = 0, byteCount = 0;
111
- for (const part of captured) {
112
- if (typeof part !== "object" ||
113
- part === null ||
114
- typeof part.id !== "string" ||
115
- !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(part.id) ||
116
- part.id.length > 64 ||
117
- identifiers.has(part.id))
118
- throw new GeometryError("INVALID_ARGUMENT", "Export part IDs must be unique canonical identifiers.", { operation: "export3mf" });
119
- identifiers.add(part.id);
120
- if (part.color !== undefined &&
121
- (typeof part.color !== "string" || !/^#[\da-f]{6}$/i.test(part.color)))
122
- throw new GeometryError("INVALID_ARGUMENT", "Export colors must be six-digit hex strings.", {
123
- operation: "export3mf",
124
- });
125
- if (!(part.positions instanceof Float32Array) ||
126
- !(part.indices instanceof Uint32Array) ||
127
- !(part.positions.buffer instanceof ArrayBuffer) ||
128
- !(part.indices.buffer instanceof ArrayBuffer))
129
- throw new GeometryError("INVALID_MESH", "Export requires transferable copied mesh arrays.", {
130
- operation: "export3mf",
131
- });
132
- vertexCount += part.positions.length / 3;
133
- triangleCount += part.indices.length / 3;
134
- for (const buffer of [part.positions.buffer, part.indices.buffer]) {
135
- if (!buffers.has(buffer)) {
136
- buffers.add(buffer);
137
- byteCount += buffer.byteLength;
138
- }
139
- }
140
- if (vertexCount > limits.maxVertices ||
141
- triangleCount > limits.maxTriangles ||
142
- byteCount > limits.maxBytes)
143
- throw new GeometryError("COMPLEXITY_LIMIT", "Export snapshot exceeds the execution limits.", {
144
- operation: "export3mf",
145
- });
146
- }
147
- const copiedBuffers = new Map();
148
- return captured.map((part) => ({
149
- id: part.id,
150
- ...(part.immutable
151
- ? { positions: part.positions, indices: part.indices }
152
- : copiedMeshViews(part, copiedBuffers)),
153
- ...(part.color === undefined ? {} : { color: part.color }),
154
- }));
155
- }
@@ -5,7 +5,6 @@ import createManifoldModule from "./kernel/manifold.js";
5
5
  import { withManifoldScope } from "./native/context.js";
6
6
  import { createSession } from "./session/session.js";
7
7
  export { defaultModelingLimits };
8
- export { export3mf } from "./export-3mf.js";
9
8
  /** URL of the package's pinned WASM asset; browser bundlers may replace it with their emitted URL. */
10
9
  export const modelingWasmUrl = new URL("./kernel/manifold.wasm", import.meta.url).href;
11
10
  /**
@@ -81,7 +80,8 @@ function engineFromModule(module, engineLimits) {
81
80
  * @example Build a box in a host application
82
81
  * ```ts
83
82
  * import { box, generate } from "@metamesh/modeling";
84
- * import { createModelEngine, export3mf } from "@metamesh/modeling/engine";
83
+ * import { createModelEngine } from "@metamesh/modeling/engine";
84
+ * import { export3mf } from "@metamesh/modeling/export";
85
85
  *
86
86
  * const engine = await createModelEngine();
87
87
  * const model = generate<Record<never, never>>(({ part }) => [part("body", box({ size: [30, 20, 8] }))]);
@@ -0,0 +1,41 @@
1
+ import { GeometryError } from "../../geometry/errors.js";
2
+ import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
3
+ import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
4
+ import { assertNativeSolidStatus } from "./status.js";
5
+ /** Builds new native geometry with retained Double construction coordinates and proxy topology. */
6
+ export function nativeConstructionMesh(scope, mesh, limits, operation) {
7
+ const vertices = mesh.positions.length / 3;
8
+ assertMeshAllocationWithinLimits(vertices, mesh.indices.length / 3, mesh.positions.byteLength +
9
+ mesh.indices.byteLength +
10
+ mesh.nativePositions.byteLength +
11
+ vertices * 144, operation, limits);
12
+ const fail = (message) => {
13
+ throw new GeometryError("DEGENERATE_GEOMETRY", message, { operation });
14
+ };
15
+ if (mesh.nativePositions.length !== mesh.positions.length)
16
+ fail("Native construction coordinates must cover every proxy vertex.");
17
+ const key = (x, y, z) => `${x},${y},${z}`;
18
+ const coordinates = new Map();
19
+ for (let index = 0; index < mesh.positions.length; index += 3) {
20
+ if (![0, 1, 2].every((axis) => Number.isFinite(mesh.nativePositions[index + axis])))
21
+ fail("Native construction coordinates must be finite.");
22
+ const identity = key(mesh.positions[index], mesh.positions[index + 1], mesh.positions[index + 2]);
23
+ const prior = coordinates.get(identity);
24
+ if (prior !== undefined &&
25
+ [0, 1, 2].some((axis) => mesh.nativePositions[prior + axis] !== mesh.nativePositions[index + axis]))
26
+ fail("A captured construction vertex has ambiguous native coordinates.");
27
+ coordinates.set(identity, index);
28
+ }
29
+ const module = scopedManifoldModule(scope);
30
+ const proxy = ownScopedManifoldValue(scope, new module.Manifold(new module.Mesh({ numProp: 3, vertProperties: mesh.positions, triVerts: mesh.indices })));
31
+ assertNativeSolidStatus(proxy, operation);
32
+ const result = ownScopedManifoldValue(scope, proxy.warpBatch((positions, count) => {
33
+ for (let vertex = 0; vertex < count; vertex++) {
34
+ const offset = vertex * 3;
35
+ const source = coordinates.get(key(positions[offset], positions[offset + 1], positions[offset + 2])) ?? fail("Native construction lost a captured vertex identity.");
36
+ positions.set(mesh.nativePositions.subarray(source, source + 3), offset);
37
+ }
38
+ }));
39
+ assertNativeSolidStatus(result, operation);
40
+ return result;
41
+ }
@@ -2,6 +2,7 @@ import { GeometryError } from "../../geometry/errors.js";
2
2
  import { triangleSolidAngle } from "../../geometry/mesh/mesh-solid-intersections.js";
3
3
  import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
4
4
  import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
5
+ import { observeNativeMesh, } from "./mesh-observation.js";
5
6
  import { assertNativeSolidStatus } from "./status.js";
6
7
  const MAXIMUM_CONTAINMENT_TESTS = 2_000_000;
7
8
  /** Certifies the native sign only when its floating-point error cannot reach zero. */
@@ -34,56 +35,6 @@ function certifiedNativeOrientation(volume, bounds, triangles) {
34
35
  return undefined;
35
36
  return Math.abs(volume) > error ? (volume < 0 ? -1 : 1) : undefined;
36
37
  }
37
- /** Observes native coordinates and topology without converting geometry to Float32. */
38
- function nativeShellMesh(scope, shell, limits) {
39
- const vertices = shell.numVert();
40
- const properties = shell.numPropVert();
41
- const triangles = shell.numTri();
42
- // Both native observation work and copied topology stay within the host's mesh limits.
43
- // Charge the Float64 coordinates, Float32 property mesh, index map and triangle indices.
44
- assertMeshAllocationWithinLimits(Math.max(vertices, properties), triangles, vertices * 24 + properties * (shell.numProp() + 4) * 4 + triangles * 12, "components", limits);
45
- const coordinates = new Float64Array(vertices * 3);
46
- const encoded = ownScopedManifoldValue(scope, shell.warpBatch((positions, count) => {
47
- coordinates.set(positions);
48
- for (let vertex = 0; vertex < count; vertex++) {
49
- // Exact Float32-safe IDs recover native indices even when property vertices
50
- // are duplicated or reordered by getMesh(). The original coordinates stay Float64.
51
- positions[vertex * 3] = vertex % 65536;
52
- positions[vertex * 3 + 1] = Math.floor(vertex / 65536);
53
- positions[vertex * 3 + 2] = 0;
54
- }
55
- }));
56
- assertNativeSolidStatus(encoded, "components");
57
- if (encoded.numVert() !== vertices || encoded.numTri() !== triangles)
58
- throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed shell topology.", {
59
- operation: "components",
60
- });
61
- const mesh = encoded.getMesh();
62
- if (mesh.numVert !== properties || mesh.numTri !== triangles)
63
- throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed property topology.", {
64
- operation: "components",
65
- });
66
- const indices = new Uint32Array(properties);
67
- for (let vertex = 0; vertex < properties; vertex++) {
68
- const offset = vertex * mesh.numProp;
69
- const low = mesh.vertProperties[offset];
70
- const high = mesh.vertProperties[offset + 1];
71
- const index = low + high * 65536;
72
- if (!Number.isInteger(low) ||
73
- low < 0 ||
74
- low >= 65536 ||
75
- !Number.isInteger(high) ||
76
- high < 0 ||
77
- !Number.isSafeInteger(index) ||
78
- index >= vertices ||
79
- mesh.vertProperties[offset + 2] !== 0)
80
- throw new GeometryError("INVALID_TOPOLOGY", "Native observation lost a vertex identity.", {
81
- operation: "components",
82
- });
83
- indices[vertex] = index;
84
- }
85
- return { coordinates, vertexIndices: indices, triangles: mesh.triVerts };
86
- }
87
38
  /** Computes signed enclosed volume without rounding, including folded contact boundaries. */
88
39
  function nativeShellOrientation(mesh) {
89
40
  const { coordinates, vertexIndices, triangles } = mesh;
@@ -186,7 +137,7 @@ export function solidMaterialComponents(scope, solid, limits) {
186
137
  shell.numPropVert() * (shell.numProp() + 4) * 4 +
187
138
  shell.numTri() * 12;
188
139
  assertMeshAllocationWithinLimits(Math.max(vertices, properties), triangles, bytes, "components", limits);
189
- const mesh = nativeShellMesh(scope, shell, limits);
140
+ const mesh = observeNativeMesh(scope, shell, limits, "components");
190
141
  meshes.set(shell, mesh);
191
142
  observedVertices = vertices;
192
143
  observedProperties = properties;
@@ -0,0 +1,55 @@
1
+ import { GeometryError } from "../../geometry/errors.js";
2
+ import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
3
+ import { ownScopedManifoldValue } from "./context.js";
4
+ import { assertNativeSolidStatus } from "./status.js";
5
+ /** Observes native coordinates and topology without a Float32 geometry round trip. */
6
+ export function observeNativeMesh(scope, solid, limits, operation) {
7
+ const vertices = solid.numVert();
8
+ const properties = solid.numPropVert();
9
+ const triangles = solid.numTri();
10
+ assertMeshAllocationWithinLimits(Math.max(vertices, properties), triangles, vertices * 24 + properties * (solid.numProp() + 4) * 4 + triangles * 20 + 4, operation, limits);
11
+ const coordinates = new Float64Array(vertices * 3);
12
+ const encoded = ownScopedManifoldValue(scope, solid.warpBatch((positions, count) => {
13
+ coordinates.set(positions);
14
+ for (let vertex = 0; vertex < count; vertex++) {
15
+ // Float32-safe IDs preserve native identity through property-vertex duplication/reordering.
16
+ positions[vertex * 3] = vertex % 65536;
17
+ positions[vertex * 3 + 1] = Math.floor(vertex / 65536);
18
+ positions[vertex * 3 + 2] = 0;
19
+ }
20
+ }));
21
+ assertNativeSolidStatus(encoded, operation);
22
+ if (encoded.numVert() !== vertices || encoded.numTri() !== triangles)
23
+ throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed shell topology.", {
24
+ operation,
25
+ });
26
+ const mesh = encoded.getMesh();
27
+ if (mesh.numVert !== properties || mesh.numTri !== triangles)
28
+ throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed property topology.", {
29
+ operation,
30
+ });
31
+ const indices = new Uint32Array(properties);
32
+ for (let vertex = 0; vertex < properties; vertex++) {
33
+ const offset = vertex * mesh.numProp;
34
+ const low = mesh.vertProperties[offset];
35
+ const high = mesh.vertProperties[offset + 1];
36
+ const index = low + high * 65536;
37
+ if (!Number.isInteger(low) ||
38
+ low < 0 ||
39
+ low >= 65536 ||
40
+ !Number.isInteger(high) ||
41
+ high < 0 ||
42
+ !Number.isSafeInteger(index) ||
43
+ index >= vertices ||
44
+ mesh.vertProperties[offset + 2] !== 0)
45
+ throw new GeometryError("INVALID_TOPOLOGY", "Native observation lost a vertex identity.", {
46
+ operation,
47
+ });
48
+ indices[vertex] = index;
49
+ }
50
+ return {
51
+ coordinates,
52
+ vertexIndices: indices,
53
+ triangles: mesh.triVerts,
54
+ };
55
+ }
@@ -82,7 +82,8 @@ export function regionToCrossSection(context, region, limits = {}) {
82
82
  return ownScopedManifoldValue(context, module.CrossSection.union([]));
83
83
  return ownScopedManifoldValue(context, new module.CrossSection(contoursFromRegion(normalized)));
84
84
  }
85
- const regionFromLoops = (loops) => {
85
+ /** Internal filled-loop classification shared by native Section and exact collar observations. */
86
+ export const regionFromLoops = (loops) => {
86
87
  const outers = loops
87
88
  .filter((loop) => signedContourArea(loop) > 0)
88
89
  .map((outer) => ({ outer: normalizeContour(outer, true), holes: [] }));
@@ -3,6 +3,7 @@ import { createConstructionOperations } from "./construction.js";
3
3
  import { createOperationEnvironment } from "./environment.js";
4
4
  import { createHoleCutterOperation } from "./hole-cutter.js";
5
5
  import { createInspectionOperations } from "./inspection.js";
6
+ import { createJoinOperation } from "./join.js";
6
7
  import { createMechanicalOperations } from "./mechanical.js";
7
8
  import { createPatternOperations } from "./patterns.js";
8
9
  import { createPrimitiveOperations } from "./primitives/construction.js";
@@ -39,6 +40,7 @@ export function createModelingContext(owner, initialResolution) {
39
40
  ...sections,
40
41
  ...primitives,
41
42
  ...construction,
43
+ join: createJoinOperation(environment),
42
44
  holeCutter: createHoleCutterOperation(environment, {
43
45
  cylinder: primitives.cylinder,
44
46
  extrude: construction.extrude,
@@ -1,14 +1,14 @@
1
- import { convexContourOffsets } from "../../geometry/convex-offset.js";
2
1
  import { edgeTreatmentPointCount, edgeTreatmentSetbacks, sampleEdgeTreatment, } from "../../geometry/edge-finishing.js";
3
2
  import { GeometryError } from "../../geometry/errors.js";
4
3
  import { resolveExtrusionControls } from "../../geometry/extrusion.js";
5
4
  import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
5
+ import { planRegionOffsets } from "../../geometry/region-offset.js";
6
6
  import { assertSamplingCount } from "../../geometry/sampling-limits.js";
7
7
  import { buildProfileLoftMesh } from "./primitives/profile-mesh.js";
8
8
  const fail = (message) => {
9
9
  throw new GeometryError("INVALID_ARGUMENT", message, { operation: "extrude" });
10
10
  };
11
- /** Finishes inward convex extrusion rims with exact parallel-edge offsets and retained correspondence. */
11
+ /** Finishes every material rim through one source-corresponding regular offset family. */
12
12
  export function buildFinishedExtrusion(module, profile, options) {
13
13
  const controls = resolveExtrusionControls(options.height, options, "extrude");
14
14
  if (controls.twist !== 0 ||
@@ -17,15 +17,6 @@ export function buildFinishedExtrusion(module, profile, options) {
17
17
  fail("End treatments require a straight extrusion without twist, top scaling or divisions.");
18
18
  if (typeof options.ends !== "object" || options.ends === null || Array.isArray(options.ends))
19
19
  fail("ends must be an object.");
20
- if (profile.components.length !== 1 || profile.components[0].holes.length !== 0)
21
- fail("End treatments require one convex contour without holes; use explicit loft profiles for other topology.");
22
- const contour = profile.components[0].outer, points = contour.points;
23
- const { magnification, offset } = convexContourOffsets(points, "extrude");
24
- const sampling = {
25
- resolution: options.resolution,
26
- limits: options.limits,
27
- magnification,
28
- };
29
20
  const bottom = options.ends.bottom, top = options.ends.top;
30
21
  const bottomSize = bottom === undefined
31
22
  ? [0, 0]
@@ -33,10 +24,23 @@ export function buildFinishedExtrusion(module, profile, options) {
33
24
  const topSize = top === undefined ? [0, 0] : edgeTreatmentSetbacks(top, "extrude", Math.PI / 2, options.limits);
34
25
  if (bottomSize[1] + topSize[1] >= options.height)
35
26
  fail("End treatments must leave positive length between their side setbacks.");
27
+ const plan = planRegionOffsets(profile, [0, Math.max(bottomSize[0], topSize[0])], "extrude", options.limits);
28
+ const sampling = {
29
+ resolution: options.resolution,
30
+ limits: options.limits,
31
+ magnification: plan.magnification,
32
+ };
36
33
  const rowCount = (bottom === undefined ? 1 : edgeTreatmentPointCount(bottom, "extrude", sampling)) +
37
34
  (top === undefined ? 1 : edgeTreatmentPointCount(top, "extrude", sampling));
38
35
  assertSamplingCount(rowCount, "extrude", options.limits.maxPathPoints);
39
- const vertexCount = rowCount * points.length, triangleCount = 2 * vertexCount - 4;
36
+ let pointCount = 0, contourCount = 0;
37
+ for (const component of profile.components) {
38
+ for (const contour of [component.outer, ...component.holes]) {
39
+ pointCount += contour.points.length;
40
+ contourCount++;
41
+ }
42
+ }
43
+ const vertexCount = rowCount * pointCount, triangleCount = 2 * vertexCount + 4 * contourCount;
40
44
  assertMeshAllocationWithinLimits(vertexCount, triangleCount, 12 * (vertexCount + triangleCount), "extrude", options.limits);
41
45
  const bottomPoints = bottom === undefined ? [[0, 0]] : sampleEdgeTreatment(bottom, "extrude", sampling);
42
46
  const topPoints = top === undefined ? [[0, 0]] : sampleEdgeTreatment(top, "extrude", sampling);
@@ -44,12 +48,9 @@ export function buildFinishedExtrusion(module, profile, options) {
44
48
  ...bottomPoints.map(([inset, depth]) => ({ inset, z: depth })),
45
49
  ...[...topPoints].reverse().map(([inset, depth]) => ({ inset, z: options.height - depth })),
46
50
  ];
47
- offset(Math.max(bottomSize[0], topSize[0])); // fit fails before allocating the full station family
48
51
  const stations = rows.map(({ inset, z }) => ({
49
52
  z: controls.center ? z - options.height / 2 : z,
50
- profile: {
51
- components: [{ ...profile.components[0], outer: { ...contour, points: offset(inset) } }],
52
- },
53
+ profile: plan.profileAt(inset),
53
54
  }));
54
55
  return buildProfileLoftMesh(module, stations, options.limits);
55
56
  }