@metamesh/modeling 0.18.0 → 0.20.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.
- package/CHANGELOG.md +82 -0
- package/README.md +96 -64
- package/dist/api/engine.d.ts +216 -160
- package/dist/api/export.d.ts +204 -0
- package/dist/api/geometry.d.ts +410 -2106
- package/dist/api/index.d.ts +545 -1821
- package/dist/api/math.d.ts +315 -0
- package/dist/api/mechanical.d.ts +1041 -0
- package/dist/api/mesh.d.ts +395 -94
- package/dist/api/text.d.ts +24 -44
- package/dist/docs/guides/concepts.md +54 -523
- package/dist/docs/guides/exporting.md +88 -0
- package/dist/docs/guides/fonts.md +7 -5
- package/dist/docs/guides/fundamentals.md +12 -24
- package/dist/docs/guides/generation.md +76 -61
- package/dist/docs/guides/geometry-values.md +251 -0
- package/dist/docs/guides/hosting.md +58 -80
- package/dist/docs/guides/profiles-and-extrusion.md +400 -0
- package/dist/docs/guides/recipes.md +52 -706
- package/dist/docs/guides/resolution-and-inspection.md +153 -0
- package/dist/docs/guides/solid-joins.md +136 -0
- package/dist/docs/guides/standalone-model.md +5 -3
- package/dist/docs/guides/svg-and-text.md +252 -0
- package/dist/docs/guides/sweeps-and-lofts.md +223 -0
- package/dist/docs/guides/transforms-and-placement.md +323 -0
- package/dist/docs/guides/workers.md +166 -0
- package/dist/docs/manifest.json +5539 -8603
- package/dist/docs/reference/engine/GenerationOptions.md +9 -4
- package/dist/docs/reference/engine/GeometryResource.md +11 -5
- package/dist/docs/reference/engine/ModelDependencies.md +9 -3
- package/dist/docs/reference/engine/ModelEngine.md +8 -3
- package/dist/docs/reference/engine/ModelEngineOptions.md +6 -5
- package/dist/docs/reference/engine/ModelPart.md +12 -6
- package/dist/docs/reference/engine/ModelResult.md +8 -2
- package/dist/docs/reference/engine/ModelRunArguments.md +7 -1
- package/dist/docs/reference/engine/ModelRunOptions.md +9 -4
- package/dist/docs/reference/engine/ModelSession.md +7 -1
- package/dist/docs/reference/engine/SessionOptions.md +9 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +11 -10
- package/dist/docs/reference/engine/checkModel.md +11 -1
- package/dist/docs/reference/engine/createModelEngine.md +13 -4
- package/dist/docs/reference/engine/defaultModelingLimits.md +7 -8
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
- package/dist/docs/reference/engine.md +13 -7
- package/dist/docs/reference/export/Export3mfOptions.md +20 -0
- package/dist/docs/reference/export/ExportDiagnostic.md +47 -0
- package/dist/docs/reference/export/ExportFormat.md +13 -0
- package/dist/docs/reference/export/ExportGeometry.md +27 -0
- package/dist/docs/reference/export/ExportGlbOptions.md +114 -0
- package/dist/docs/reference/export/ExportLimits.md +71 -0
- package/dist/docs/reference/export/ExportMaterial.md +35 -0
- package/dist/docs/reference/export/ExportOptions.md +82 -0
- package/dist/docs/reference/export/ExportPart.md +76 -0
- package/dist/docs/reference/export/ExportReport.md +70 -0
- package/dist/docs/reference/export/ExportSink.md +29 -0
- package/dist/docs/reference/export/ExportStlOptions.md +20 -0
- package/dist/docs/reference/export/ExportedFile.md +98 -0
- package/dist/docs/reference/export/categories/mesh-serialization.md +53 -0
- package/dist/docs/reference/export/defaultExportLimits.md +20 -0
- package/dist/docs/reference/export/export3mf.md +62 -0
- package/dist/docs/reference/export/exportGlb.md +66 -0
- package/dist/docs/reference/export/exportStl.md +62 -0
- package/dist/docs/reference/export/write3mf.md +71 -0
- package/dist/docs/reference/export/writeGlb.md +75 -0
- package/dist/docs/reference/export/writeStl.md +71 -0
- package/dist/docs/reference/export.md +27 -0
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +9 -3
- package/dist/docs/reference/geometry/Anchor3-type.md +9 -3
- package/dist/docs/reference/geometry/Anchor3Options.md +70 -0
- package/dist/docs/reference/geometry/ArcCurve2.md +8 -2
- package/dist/docs/reference/geometry/ArcCurve3.md +8 -2
- package/dist/docs/reference/geometry/AttachOptions.md +10 -5
- package/dist/docs/reference/geometry/Bounds2-type.md +17 -24
- package/dist/docs/reference/geometry/Bounds2Data.md +10 -9
- package/dist/docs/reference/geometry/Bounds2Input.md +10 -4
- package/dist/docs/reference/geometry/Bounds2Options.md +10 -4
- package/dist/docs/reference/geometry/Bounds3-type.md +17 -24
- package/dist/docs/reference/geometry/Bounds3Data.md +10 -9
- package/dist/docs/reference/geometry/Bounds3Input.md +10 -4
- package/dist/docs/reference/geometry/Bounds3Options.md +10 -4
- package/dist/docs/reference/geometry/BoundsFit2.md +10 -4
- package/dist/docs/reference/geometry/BoundsFit3.md +10 -4
- package/dist/docs/reference/geometry/BoundsFitOptions.md +10 -4
- package/dist/docs/reference/geometry/BoxAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +9 -3
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +8 -2
- package/dist/docs/reference/geometry/CircleContourOptions.md +8 -2
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +8 -3
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
- package/dist/docs/reference/geometry/CircularSampling.md +7 -1
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
- package/dist/docs/reference/geometry/Contour.md +9 -4
- package/dist/docs/reference/geometry/ContourCurve.md +8 -2
- package/dist/docs/reference/geometry/ContourPoint.md +8 -2
- package/dist/docs/reference/geometry/ContourSegment.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingComponent.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingContour.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingProfile.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +9 -3
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +8 -2
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +8 -2
- package/dist/docs/reference/geometry/Curve2.md +8 -2
- package/dist/docs/reference/geometry/Curve3.md +8 -2
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +8 -2
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +10 -4
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +7 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +8 -2
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +15 -10
- package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
- package/dist/docs/reference/geometry/{Frame3.md → Frame3-type.md} +9 -2
- package/dist/docs/reference/geometry/Frame3Options.md +69 -0
- package/dist/docs/reference/geometry/GeometryError.md +7 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +7 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +7 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +7 -1
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +8 -2
- package/dist/docs/reference/geometry/GridPatternOptions.md +13 -5
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +8 -14
- package/dist/docs/reference/geometry/LineCurve2.md +8 -2
- package/dist/docs/reference/geometry/LineCurve3.md +8 -2
- package/dist/docs/reference/geometry/LinearPatternOptions.md +8 -2
- package/dist/docs/reference/geometry/LoftPlacement.md +19 -13
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +8 -2
- package/dist/docs/reference/geometry/ModelingLimits.md +7 -1
- package/dist/docs/reference/geometry/NumericArray.md +8 -2
- package/dist/docs/reference/geometry/Path2-type.md +158 -3
- package/dist/docs/reference/geometry/Path2Data.md +8 -2
- package/dist/docs/reference/geometry/Path2Input.md +8 -2
- package/dist/docs/reference/geometry/Path3-type.md +158 -3
- package/dist/docs/reference/geometry/Path3Data.md +8 -2
- package/dist/docs/reference/geometry/Path3Input.md +8 -2
- package/dist/docs/reference/geometry/PathFrame.md +8 -2
- package/dist/docs/reference/geometry/PathLocation.md +8 -2
- package/dist/docs/reference/geometry/PathNormalGuide.md +9 -3
- package/dist/docs/reference/geometry/PathOptions.md +8 -2
- package/dist/docs/reference/geometry/PathPatternOptions.md +9 -3
- package/dist/docs/reference/geometry/PathPlacement.md +10 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +8 -2
- package/dist/docs/reference/geometry/PathStation.md +87 -0
- package/dist/docs/reference/geometry/PathSubdivisionOptions.md +44 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +9 -3
- package/dist/docs/reference/geometry/Pivot3Options.md +9 -3
- package/dist/docs/reference/geometry/PolygonData.md +9 -3
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
- package/dist/docs/reference/geometry/Profile.md +8 -3
- package/dist/docs/reference/geometry/ProfileComponent2.md +8 -2
- package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +8 -2
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +10 -3
- package/dist/docs/reference/geometry/RadialPatternOptions.md +8 -2
- package/dist/docs/reference/geometry/RadialSizing.md +7 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +7 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +9 -2
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +8 -2
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +8 -2
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +8 -2
- package/dist/docs/reference/geometry/RegionData.md +8 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
- package/dist/docs/reference/geometry/ResolvedGeometryResolution.md +71 -0
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +7 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +10 -4
- package/dist/docs/reference/geometry/SampleContourOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleHelixOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -2
- package/dist/docs/reference/geometry/SideProfileCurve.md +8 -2
- package/dist/docs/reference/geometry/SideProfilePoint.md +8 -2
- package/dist/docs/reference/geometry/SideProfileSegment.md +8 -2
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +7 -1
- package/dist/docs/reference/geometry/SplineOptions.md +69 -0
- package/dist/docs/reference/geometry/StarContourOptions.md +12 -2
- package/dist/docs/reference/geometry/StrokeCap.md +8 -2
- package/dist/docs/reference/geometry/StrokeJoin.md +8 -2
- package/dist/docs/reference/geometry/StrokeOptions.md +9 -3
- package/dist/docs/reference/geometry/SvgImportOptions.md +10 -4
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +8 -2
- package/dist/docs/reference/geometry/Transform2-type.md +9 -3
- package/dist/docs/reference/geometry/Transform2Data.md +9 -3
- package/dist/docs/reference/geometry/Transform2Input.md +9 -3
- package/dist/docs/reference/geometry/Transform3-type.md +10 -4
- package/dist/docs/reference/geometry/Transform3Data.md +9 -3
- package/dist/docs/reference/geometry/Transform3Input.md +12 -5
- package/dist/docs/reference/geometry/Vector2-type.md +9 -3
- package/dist/docs/reference/geometry/Vector2Data.md +9 -3
- package/dist/docs/reference/geometry/Vector2Input.md +9 -3
- package/dist/docs/reference/geometry/Vector3-type.md +33 -3
- package/dist/docs/reference/geometry/Vector3Data.md +9 -3
- package/dist/docs/reference/geometry/Vector3Input.md +9 -3
- package/dist/docs/reference/geometry/VectorTextLayout.md +8 -2
- package/dist/docs/reference/geometry/VectorTextMetrics.md +9 -3
- package/dist/docs/reference/geometry/anchor3.md +23 -26
- package/dist/docs/reference/geometry/anchorFrame3.md +11 -5
- package/dist/docs/reference/geometry/attachmentTransform3.md +14 -8
- package/dist/docs/reference/geometry/bounds2.md +16 -8
- package/dist/docs/reference/geometry/bounds3.md +14 -6
- package/dist/docs/reference/geometry/boundsCenter.md +10 -4
- package/dist/docs/reference/geometry/boundsSize.md +10 -4
- package/dist/docs/reference/geometry/boxAnchor3.md +9 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +12 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +24 -13
- package/dist/docs/reference/geometry/categories/immutable-data.md +40 -0
- package/dist/docs/reference/geometry/categories/pattern-placement.md +11 -5
- package/dist/docs/reference/geometry/categories/primitive-options.md +8 -13
- package/dist/docs/reference/geometry/categories/profiles-regions.md +11 -5
- package/dist/docs/reference/geometry/categories/resolution-errors.md +8 -1
- package/dist/docs/reference/geometry/categories/transforms-math.md +20 -51
- package/dist/docs/reference/geometry/categories/vector-import.md +8 -5
- package/dist/docs/reference/geometry/circleContour.md +8 -2
- package/dist/docs/reference/geometry/closeToAxis.md +12 -2
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +14 -5
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +18 -5
- package/dist/docs/reference/geometry/contourContainsPoint.md +12 -2
- package/dist/docs/reference/geometry/cylinderAnchor3.md +11 -5
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/distributeAlongPath.md +21 -10
- package/dist/docs/reference/geometry/ellipseContour.md +8 -2
- package/dist/docs/reference/geometry/fitBounds.md +18 -4
- package/dist/docs/reference/geometry/fitTextLayout.md +11 -5
- package/dist/docs/reference/geometry/frame3.md +66 -0
- package/dist/docs/reference/geometry/gridPatternTransforms.md +12 -6
- package/dist/docs/reference/geometry/immutableBuffer.md +11 -3
- package/dist/docs/reference/geometry/isGeometryError.md +7 -1
- package/dist/docs/reference/geometry/layoutRow.md +12 -4
- package/dist/docs/reference/geometry/linearPatternTransforms.md +12 -6
- package/dist/docs/reference/geometry/matchProfiles.md +10 -2
- package/dist/docs/reference/geometry/normalizeContour.md +13 -3
- package/dist/docs/reference/geometry/normalizePolygon.md +10 -2
- package/dist/docs/reference/geometry/normalizeRegion.md +10 -2
- package/dist/docs/reference/geometry/path2.md +12 -2
- package/dist/docs/reference/geometry/path3.md +12 -2
- package/dist/docs/reference/geometry/pathPatternTransforms.md +18 -8
- package/dist/docs/reference/geometry/preflightSvgRegion.md +11 -5
- package/dist/docs/reference/geometry/radialPatternTransforms.md +11 -5
- package/dist/docs/reference/geometry/rectangleContour.md +8 -2
- package/dist/docs/reference/geometry/rectangleProfile.md +8 -3
- package/dist/docs/reference/geometry/regionArea.md +8 -2
- package/dist/docs/reference/geometry/regionBounds.md +11 -3
- package/dist/docs/reference/geometry/regularPolygonContour.md +8 -2
- package/dist/docs/reference/geometry/resamplePolyline2.md +12 -2
- package/dist/docs/reference/geometry/resamplePolyline3.md +12 -2
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +10 -4
- package/dist/docs/reference/geometry/resolveArcSegments.md +13 -5
- package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSegments.md +10 -2
- package/dist/docs/reference/geometry/resolveExtrusionSlices.md +85 -0
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +10 -2
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +8 -2
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +17 -4
- package/dist/docs/reference/geometry/sampleContour.md +10 -4
- package/dist/docs/reference/geometry/sampleCurve2.md +12 -2
- package/dist/docs/reference/geometry/sampleCurve3.md +12 -2
- package/dist/docs/reference/geometry/sampleHelix.md +8 -2
- package/dist/docs/reference/geometry/sampleSideProfile.md +10 -4
- package/dist/docs/reference/geometry/sampleTextContours.md +9 -3
- package/dist/docs/reference/geometry/signedContourArea.md +10 -2
- package/dist/docs/reference/geometry/spline2.md +68 -0
- package/dist/docs/reference/geometry/spline3.md +62 -0
- package/dist/docs/reference/geometry/starContour.md +8 -2
- package/dist/docs/reference/geometry/strokeRegionData.md +14 -5
- package/dist/docs/reference/geometry/transform2.md +11 -3
- package/dist/docs/reference/geometry/transform3.md +29 -6
- package/dist/docs/reference/geometry/transformRegionData.md +12 -2
- package/dist/docs/reference/geometry/triangulateContour.md +11 -3
- package/dist/docs/reference/geometry/vector2.md +12 -4
- package/dist/docs/reference/geometry/vector3.md +14 -4
- package/dist/docs/reference/geometry.md +13 -18
- package/dist/docs/reference/{geometry → math}/AxisAngleRotation3.md +8 -3
- package/dist/docs/reference/math/IDENTITY_TRANSFORM3.md +20 -0
- package/dist/docs/reference/math/add2.md +38 -0
- package/dist/docs/reference/math/add3.md +46 -0
- package/dist/docs/reference/math/applyTransformDirection3.md +46 -0
- package/dist/docs/reference/math/applyTransformPoint3.md +44 -0
- package/dist/docs/reference/math/categories/tuple-matrix.md +67 -0
- package/dist/docs/reference/math/cross2.md +38 -0
- package/dist/docs/reference/math/cross3.md +44 -0
- package/dist/docs/reference/math/distance2.md +38 -0
- package/dist/docs/reference/math/distance3.md +38 -0
- package/dist/docs/reference/math/dot2.md +38 -0
- package/dist/docs/reference/math/dot3.md +44 -0
- package/dist/docs/reference/math/eulerTransform3.md +43 -0
- package/dist/docs/reference/math/inverseTransform3.md +36 -0
- package/dist/docs/reference/math/length2.md +32 -0
- package/dist/docs/reference/math/length3.md +32 -0
- package/dist/docs/reference/math/lerp2.md +46 -0
- package/dist/docs/reference/math/lerp3.md +46 -0
- package/dist/docs/reference/math/multiplyTransform3.md +46 -0
- package/dist/docs/reference/math/normalize2.md +45 -0
- package/dist/docs/reference/math/normalize3.md +45 -0
- package/dist/docs/reference/math/projectOntoPlane3.md +40 -0
- package/dist/docs/reference/math/rotate2.md +40 -0
- package/dist/docs/reference/math/rotationTransform3.md +56 -0
- package/dist/docs/reference/math/scale2.md +38 -0
- package/dist/docs/reference/math/scale3.md +44 -0
- package/dist/docs/reference/math/scaleTransform3.md +39 -0
- package/dist/docs/reference/math/subtract2.md +38 -0
- package/dist/docs/reference/math/subtract3.md +44 -0
- package/dist/docs/reference/math/transformDeterminant3.md +38 -0
- package/dist/docs/reference/math/translationTransform3.md +36 -0
- package/dist/docs/reference/math/validateRigidTransform3.md +38 -0
- package/dist/docs/reference/math/validateTransform3.md +48 -0
- package/dist/docs/reference/math.md +22 -0
- package/dist/docs/reference/{geometry → mechanical}/AcmeThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/Bevel.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/BevelSize.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ButtressPressureFlankSide.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ButtressThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleFit.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CompensatedThreadDiameters.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CustomThreadProfileSpec.md +10 -6
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearMeshKind.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearOutlineOptions.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionOptions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionReport.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/InternalThreadCutterOptions.md +11 -8
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeBaseSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeDimensions.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeInterval.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSamplingOptions.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/METRIC_FASTENER_STANDARDS.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerSize.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerStandard.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricHexNutDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricSocketCapHeadDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFit.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFitPolicy.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/RackPitchDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/RackPitchSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/SampledThreadHelices.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/SquareThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ThreadBevelOptions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadCircularSegmentsOptions.md +10 -6
- package/dist/docs/reference/{geometry → mechanical}/ThreadCompensationOptions.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndStyle.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndTreatmentOptions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadHandedness.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadHelixOptions.md +10 -6
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInEnvelope.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInShape.md +8 -2
- package/dist/docs/reference/{mesh/ThreadProfile.md → mechanical/ThreadProfile-type.md} +8 -6
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileBaseSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadRidgeOptions.md +12 -9
- package/dist/docs/reference/{geometry → mechanical}/ThreadRole.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidOptions.md +13 -10
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidPreflight.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutOptions.md +12 -9
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutPreflight.md +8 -2
- package/dist/docs/reference/mechanical/ThreadedNutShape.md +20 -0
- package/dist/docs/reference/{geometry → mechanical}/ThreadedRodOptions.md +11 -8
- package/dist/docs/reference/{geometry → mechanical}/TrapezoidalThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/TriangularThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/categories/mechanical.md +9 -3
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadDiameters.md +9 -3
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileAxially.md +17 -5
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileForFaceting.md +18 -2
- package/dist/docs/reference/{geometry → mechanical}/getMetricClearanceHoleDiameter.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/getMetricFastenerStandard.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/measureInternalCylindricalGearPairMotion.md +14 -6
- package/dist/docs/reference/{geometry → mechanical}/minimumCylindricalGearToothCountWithoutUndercut.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/preflightInternalThreadCutter.md +13 -5
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedNut.md +14 -6
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedRod.md +13 -5
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGear.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGearPair.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveKnuckleHinge.md +14 -6
- package/dist/docs/reference/{geometry → mechanical}/resolvePrintableThreadFitPolicy.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveRackPitch.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveThreadCircularSegments.md +12 -4
- package/dist/docs/reference/{geometry → mechanical}/sampleCylindricalGearOutline.md +14 -7
- package/dist/docs/reference/{geometry → mechanical}/sampleInternalCylindricalGearSpaceOutline.md +14 -7
- package/dist/docs/reference/{geometry → mechanical}/sampleRackToothPath.md +15 -7
- package/dist/docs/reference/{geometry → mechanical}/sampleThreadHelices.md +13 -5
- package/dist/docs/reference/{geometry → mechanical}/threadProfile.md +12 -2
- package/dist/docs/reference/mechanical.md +19 -0
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +39 -40
- package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +8 -6
- package/dist/docs/reference/mesh/HeightfieldPreflight.md +8 -2
- package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +8 -6
- package/dist/docs/reference/mesh/LoftMeshStation.md +8 -7
- package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
- package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +9 -3
- package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +11 -6
- package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +13 -7
- package/dist/docs/reference/mesh/PlanarPatchQuality.md +7 -5
- package/dist/docs/reference/mesh/RenderMesh.md +68 -0
- package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +7 -5
- package/dist/docs/reference/mesh/TriangleMesh.md +16 -2
- package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +16 -11
- package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +12 -7
- package/dist/docs/reference/mesh/TriangleMeshInput.md +9 -3
- package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +10 -5
- package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +9 -4
- package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +9 -3
- package/dist/docs/reference/mesh/TriangleMeshSignature.md +9 -4
- package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +8 -2
- package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +8 -2
- package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +17 -12
- package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +9 -4
- package/dist/docs/reference/mesh/analyze.md +28 -14
- package/dist/docs/reference/mesh/analyzeQuality.md +15 -9
- package/dist/docs/reference/mesh/bounds.md +10 -5
- package/dist/docs/reference/mesh/categories/operations.md +24 -81
- package/dist/docs/reference/mesh/centroid.md +10 -5
- package/dist/docs/reference/mesh/extrude.md +25 -18
- package/dist/docs/reference/mesh/heightfield.md +13 -7
- package/dist/docs/reference/mesh/immutable.md +16 -10
- package/dist/docs/reference/mesh/join.md +11 -5
- package/dist/docs/reference/mesh/loft.md +23 -16
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +24 -18
- package/dist/docs/reference/mesh/preflightHeightfield.md +13 -7
- package/dist/docs/reference/mesh/preflightThreadSolid.md +27 -24
- package/dist/docs/reference/mesh/render.md +59 -0
- package/dist/docs/reference/mesh/reverse.md +11 -5
- package/dist/docs/reference/mesh/revolve.md +17 -13
- package/dist/docs/reference/mesh/signature.md +15 -9
- package/dist/docs/reference/mesh/sweep.md +101 -24
- package/dist/docs/reference/mesh/threadRidge.md +24 -17
- package/dist/docs/reference/mesh/threadSolid.md +28 -21
- package/dist/docs/reference/mesh/transform.md +12 -7
- package/dist/docs/reference/mesh/validate.md +15 -9
- package/dist/docs/reference/mesh/validateSolid.md +14 -8
- package/dist/docs/reference/mesh.md +8 -2
- package/dist/docs/reference/model/BoxEdge.md +11 -3
- package/dist/docs/reference/model/BoxEdgeSelection.md +11 -3
- package/dist/docs/reference/model/BoxEdgeTreatments.md +12 -5
- package/dist/docs/reference/model/BoxOptions.md +14 -9
- package/dist/docs/reference/model/CircleOptions.md +11 -6
- package/dist/docs/reference/model/CornerCutterOptions.md +93 -0
- package/dist/docs/reference/model/CornerCutterTreatment.md +53 -0
- package/dist/docs/reference/model/CutterOverrun.md +43 -0
- package/dist/docs/reference/model/CylinderOptions.md +12 -6
- package/dist/docs/reference/model/DiagnosticOptions.md +7 -1
- package/dist/docs/reference/model/EdgeCutterOptions.md +129 -0
- package/dist/docs/reference/model/EllipseOptions.md +11 -6
- package/dist/docs/reference/model/EndTreatments.md +13 -9
- package/dist/docs/reference/model/ExtrudeOptions.md +48 -44
- package/dist/docs/reference/model/GenerateCallback.md +7 -1
- package/dist/docs/reference/model/GenerateContext.md +23 -24
- package/dist/docs/reference/model/GenerationDiagnostic.md +7 -1
- package/dist/docs/reference/model/GenerationError.md +8 -2
- package/dist/docs/reference/model/HeightfieldOptions.md +8 -8
- package/dist/docs/reference/model/HoleCutterOpening.md +27 -0
- package/dist/docs/reference/model/HoleCutterOptions.md +19 -25
- package/dist/docs/reference/model/HoleCutterRecess.md +13 -5
- package/dist/docs/reference/model/HullOptions.md +12 -6
- package/dist/docs/reference/model/ImmutableValue.md +7 -1
- package/dist/docs/reference/model/ImplicitOptions.md +9 -9
- package/dist/docs/reference/model/JoinOptions.md +73 -0
- package/dist/docs/reference/model/JoinTransition.md +54 -0
- package/dist/docs/reference/model/KnuckleHinge-type.md +8 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
- package/dist/docs/reference/model/KnuckleHingeOptions.md +8 -4
- package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
- package/dist/docs/reference/model/LoftCorrespondence.md +13 -5
- package/dist/docs/reference/model/LoftOptions.md +16 -10
- package/dist/docs/reference/model/LoftStation.md +16 -10
- package/dist/docs/reference/model/Memo.md +54 -0
- package/dist/docs/reference/model/ModelProgram.md +7 -1
- package/dist/docs/reference/model/PartDeclaration.md +12 -8
- package/dist/docs/reference/model/PartGeometry.md +8 -4
- package/dist/docs/reference/model/PartOptions.md +12 -8
- package/dist/docs/reference/model/PatternSource.md +11 -5
- package/dist/docs/reference/model/PlaneOptions.md +11 -8
- package/dist/docs/reference/model/PolygonOptions.md +17 -16
- package/dist/docs/reference/model/PrimitiveAttachment.md +15 -4
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +18 -17
- package/dist/docs/reference/model/RectangleOptions.md +31 -30
- package/dist/docs/reference/model/RegularPolygonOptions.md +11 -38
- package/dist/docs/reference/model/RevolveOptions.md +19 -17
- package/dist/docs/reference/model/Section.md +128 -72
- package/dist/docs/reference/model/SectionHullOptions.md +12 -6
- package/dist/docs/reference/model/SectionInspection.md +8 -6
- package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
- package/dist/docs/reference/model/SectionOffsetOptions.md +11 -6
- package/dist/docs/reference/model/Solid.md +113 -53
- package/dist/docs/reference/model/SolidInspection.md +8 -6
- package/dist/docs/reference/model/SolidSegmentHit.md +9 -7
- package/dist/docs/reference/model/SphereOptions.md +12 -5
- package/dist/docs/reference/model/StarOptions.md +33 -29
- package/dist/docs/reference/model/SvgOrigin.md +10 -4
- package/dist/docs/reference/model/SvgPathSectionOptions.md +13 -9
- package/dist/docs/reference/model/SvgSectionOptions.md +14 -11
- package/dist/docs/reference/model/SweepOptions.md +21 -28
- package/dist/docs/reference/model/SweepOrientation.md +19 -16
- package/dist/docs/reference/model/SweepTransformOptions.md +105 -0
- package/dist/docs/reference/model/TextSectionOptions.md +11 -10
- package/dist/docs/reference/model/TorusOptions.md +13 -7
- package/dist/docs/reference/model/TubeOptions.md +25 -8
- package/dist/docs/reference/model/box.md +14 -6
- package/dist/docs/reference/model/categories/boolean-operations.md +16 -4
- package/dist/docs/reference/model/categories/bounded-surfaces.md +7 -1
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +21 -16
- package/dist/docs/reference/model/categories/generation.md +15 -12
- package/dist/docs/reference/model/categories/hinges.md +7 -4
- package/dist/docs/reference/model/categories/mesh-inspection.md +8 -6
- package/dist/docs/reference/model/categories/primitives.md +32 -20
- package/dist/docs/reference/model/categories/sections.md +11 -16
- package/dist/docs/reference/model/categories/threads.md +9 -43
- package/dist/docs/reference/model/categories/transforms-placement.md +17 -41
- package/dist/docs/reference/model/circle.md +15 -5
- package/dist/docs/reference/model/cornerCutter.md +88 -0
- package/dist/docs/reference/model/cylinder.md +11 -3
- package/dist/docs/reference/model/edgeCutter.md +91 -0
- package/dist/docs/reference/model/ellipse.md +15 -5
- package/dist/docs/reference/model/extrude.md +37 -24
- package/dist/docs/reference/model/generate.md +10 -2
- package/dist/docs/reference/model/gridPattern.md +22 -9
- package/dist/docs/reference/model/heightfield.md +7 -1
- package/dist/docs/reference/model/holeCutter.md +34 -13
- package/dist/docs/reference/model/hull.md +9 -2
- package/dist/docs/reference/model/implicit.md +10 -4
- package/dist/docs/reference/model/internalThreadCutter.md +38 -21
- package/dist/docs/reference/model/intersect.md +14 -3
- package/dist/docs/reference/model/join.md +93 -0
- package/dist/docs/reference/model/knuckleHinge.md +7 -2
- package/dist/docs/reference/model/linearPattern.md +22 -9
- package/dist/docs/reference/model/loft.md +27 -16
- package/dist/docs/reference/model/minkowskiSum.md +10 -3
- package/dist/docs/reference/model/pathPattern.md +36 -21
- package/dist/docs/reference/model/polygon.md +18 -7
- package/dist/docs/reference/model/radialPattern.md +22 -9
- package/dist/docs/reference/model/rectangle.md +22 -12
- package/dist/docs/reference/model/regularPolygon.md +15 -5
- package/dist/docs/reference/model/revolve.md +26 -13
- package/dist/docs/reference/model/solidFromMesh.md +16 -6
- package/dist/docs/reference/model/sphere.md +12 -4
- package/dist/docs/reference/model/star.md +20 -10
- package/dist/docs/reference/model/stroke.md +29 -19
- package/dist/docs/reference/model/svgPathSection.md +20 -8
- package/dist/docs/reference/model/svgSection.md +21 -9
- package/dist/docs/reference/model/sweep.md +108 -24
- package/dist/docs/reference/model/textSection.md +19 -9
- package/dist/docs/reference/model/threadRidge.md +22 -17
- package/dist/docs/reference/model/threadedNut.md +31 -22
- package/dist/docs/reference/model/threadedRod.md +27 -18
- package/dist/docs/reference/model/torus.md +13 -5
- package/dist/docs/reference/model/tube.md +11 -3
- package/dist/docs/reference/model/union.md +14 -3
- package/dist/docs/reference/model.md +11 -11
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -1
- package/dist/docs/reference/text/VectorFont.md +22 -12
- package/dist/docs/reference/text/VectorFontOptions.md +7 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +7 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +8 -2
- package/dist/docs/reference/text/VectorTextOptions.md +7 -1
- package/dist/docs/reference/text/categories/font-preparation.md +7 -10
- package/dist/docs/reference/text/prepareVectorFont.md +9 -1
- package/dist/docs/reference/text.md +7 -1
- package/dist/engine/execution.js +5 -3
- package/dist/engine/finalization.js +6 -78
- package/dist/engine/index.js +11 -6
- package/dist/engine/native/adapter.js +1 -1
- package/dist/engine/native/construction-mesh.js +51 -0
- package/dist/engine/native/context.js +10 -7
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +4 -53
- package/dist/engine/native/mesh-observation.js +55 -0
- package/dist/engine/native/regions.js +44 -23
- package/dist/engine/native/scoped-primitives.js +3 -3
- package/dist/engine/native/scoped-threads.js +1 -13
- package/dist/engine/native/threads.js +2 -2
- package/dist/engine/native/transforms.js +2 -2
- package/dist/engine/operations/construction.js +77 -27
- package/dist/engine/operations/context.js +15 -6
- package/dist/engine/operations/cutters.js +112 -0
- package/dist/engine/operations/environment.js +2 -2
- package/dist/engine/operations/extrusion-finishing.js +56 -29
- package/dist/engine/operations/hole-cutter.js +125 -114
- package/dist/engine/operations/join-collar-profile.js +120 -0
- package/dist/engine/operations/join.js +521 -0
- package/dist/engine/operations/knuckle-hinge.js +25 -20
- package/dist/engine/operations/loft.js +9 -16
- package/dist/engine/operations/mechanical.js +4 -15
- package/dist/engine/operations/primitives/anchors.js +23 -19
- package/dist/engine/operations/primitives/construction.js +38 -12
- package/dist/engine/operations/primitives/correspondence.js +2 -2
- package/dist/engine/operations/primitives/profile-mesh.js +41 -80
- package/dist/engine/operations/primitives/profiles.js +5 -5
- package/dist/engine/operations/sections.js +8 -8
- package/dist/engine/operations/transforms.js +19 -39
- package/dist/engine/placement.js +3 -3
- package/dist/engine/recipe-realization.js +87 -31
- package/dist/engine/session/declarations.js +98 -0
- package/dist/engine/session/dependencies.js +139 -39
- package/dist/engine/session/graph.js +290 -411
- package/dist/engine/session/native-cache.js +1 -1
- package/dist/engine/session/parameters.js +78 -0
- package/dist/engine/session/session.js +7 -7
- package/dist/engine/session/snapshot-cache.js +4 -4
- package/dist/engine/shape-anchors.js +13 -6
- package/dist/export/3mf.js +197 -0
- package/dist/export/capture.js +182 -0
- package/dist/export/glb.js +214 -0
- package/dist/export/index.js +5 -0
- package/dist/export/limits.js +18 -0
- package/dist/export/stl.js +120 -0
- package/dist/export/writer.js +54 -0
- package/dist/geometry/{bounds.js → bounds/operations.js} +3 -1
- package/dist/geometry/{bounds-value.js → bounds/value.js} +24 -20
- package/dist/geometry/curves/evaluation.js +5 -6
- package/dist/geometry/curves/sampling.js +30 -6
- package/dist/geometry/{extrusion.js → extrusion/controls.js} +58 -35
- package/dist/geometry/extrusion/mesh.js +92 -0
- package/dist/geometry/extrusion/stations.js +35 -0
- package/dist/geometry/extrusion/twisted-chamfer.js +265 -0
- package/dist/geometry/immutable-buffer.js +11 -7
- package/dist/geometry/index.js +24 -32
- package/dist/geometry/{model-limits.js → limits.js} +1 -1
- package/dist/geometry/loft/{loft-correspondence.js → correspondence.js} +31 -20
- package/dist/geometry/loft/{loft-geometry.js → geometry.js} +15 -17
- package/dist/geometry/loft/mesh.js +53 -0
- package/dist/geometry/loft/{loft-options.js → options.js} +13 -11
- package/dist/geometry/loft/{loft-simple-mesh.js → simple-mesh.js} +26 -17
- package/dist/geometry/math/interpolation.js +9 -0
- package/dist/geometry/math/vector-value.js +12 -3
- package/dist/geometry/math/vector2.js +18 -5
- package/dist/geometry/math/vector3.js +28 -5
- package/dist/geometry/math-api.js +4 -0
- package/dist/geometry/mechanical/gear-motion.js +7 -5
- package/dist/geometry/mechanical/gears.js +21 -4
- package/dist/geometry/mechanical/knuckle-hinge.js +7 -5
- package/dist/geometry/mechanical/threads/fit.js +8 -2
- package/dist/geometry/mechanical/threads/helices.js +4 -2
- package/dist/geometry/mechanical/threads/mesh-plan.js +4 -2
- package/dist/geometry/mechanical/threads/mesh.js +12 -9
- package/dist/geometry/mechanical/threads/profiles.js +18 -4
- package/dist/geometry/mechanical/threads/solids.js +11 -2
- package/dist/geometry/mechanical-api.js +10 -0
- package/dist/geometry/mesh/{mesh-centroid.js → centroid.js} +2 -1
- package/dist/geometry/{heightfield.js → mesh/heightfield.js} +9 -5
- package/dist/geometry/mesh/join-layers.js +833 -0
- package/dist/geometry/mesh/{mesh.js → operations.js} +11 -18
- package/dist/geometry/mesh/{mesh-planar.js → planar.js} +8 -18
- package/dist/geometry/mesh/{mesh-quality.js → quality.js} +10 -42
- package/dist/geometry/mesh/render-buffers.js +220 -0
- package/dist/geometry/mesh/{mesh-signature.js → signature.js} +1 -1
- package/dist/geometry/mesh/{mesh-solid-intersections.js → solid-intersections.js} +45 -17
- package/dist/geometry/mesh/{mesh-solid.js → solid.js} +10 -6
- package/dist/geometry/mesh/triangle-quality.js +42 -0
- package/dist/geometry/mesh/winding.js +11 -0
- package/dist/geometry/{numeric.js → mesh/write-vertex.js} +1 -1
- package/dist/geometry/mesh-api.js +12 -10
- package/dist/geometry/paths/distribution.js +43 -0
- package/dist/geometry/paths/editing.js +76 -0
- package/dist/geometry/paths/frames.js +16 -11
- package/dist/geometry/paths/helix.js +1 -1
- package/dist/geometry/paths/resampling.js +46 -61
- package/dist/geometry/paths/{planar.js → rounding.js} +8 -67
- package/dist/geometry/paths/spline.js +116 -0
- package/dist/geometry/paths/traversal.js +107 -0
- package/dist/geometry/paths/{path-value.js → value.js} +97 -18
- package/dist/geometry/patterns/placements.js +20 -29
- package/dist/geometry/{patterns.js → patterns/transforms.js} +11 -7
- package/dist/geometry/primitives/cutters.js +70 -0
- package/dist/geometry/{cylinder.js → primitives/cylinder.js} +4 -4
- package/dist/geometry/{edge-finishing.js → primitives/edges.js} +5 -5
- package/dist/geometry/{primitive-resolvers.js → primitives/resolvers.js} +9 -9
- package/dist/geometry/primitives/sampling.js +41 -0
- package/dist/geometry/profiles/contour.js +19 -7
- package/dist/geometry/profiles/{match-profiles.js → matching.js} +9 -6
- package/dist/geometry/profiles/primitives/circle.js +1 -1
- package/dist/geometry/profiles/primitives/ellipse.js +2 -2
- package/dist/geometry/profiles/primitives/rectangle.js +8 -8
- package/dist/geometry/profiles/primitives/star.js +1 -1
- package/dist/geometry/profiles/side-profile.js +8 -5
- package/dist/geometry/profiles/validation.js +1 -1
- package/dist/geometry/{polygon-clipping.js → regions/clipping.js} +1 -1
- package/dist/geometry/{convex-offset.js → regions/convex-offset.js} +1 -1
- package/dist/geometry/regions/offset.js +280 -0
- package/dist/geometry/{regions.js → regions/operations.js} +70 -23
- package/dist/geometry/{stroke-path.js → regions/stroke.js} +46 -20
- package/dist/geometry/{loft/loft-triangulation.js → regions/triangulation.js} +35 -2
- package/dist/geometry/revolve/{revolve-mesh.js → mesh.js} +9 -10
- package/dist/geometry/{circular-sampling.js → sampling/circular.js} +3 -3
- package/dist/geometry/{sampling-limits.js → sampling/limits.js} +6 -2
- package/dist/geometry/{resolution.js → sampling/resolution.js} +15 -14
- package/dist/geometry/svg/fill.js +4 -3
- package/dist/geometry/svg/import.js +47 -64
- package/dist/geometry/svg/path.js +3 -3
- package/dist/geometry/sweep/closed.js +55 -0
- package/dist/geometry/sweep/mesh.js +30 -0
- package/dist/geometry/{sweeps/sweep-open.js → sweep/open.js} +9 -24
- package/dist/geometry/sweep/options.js +1 -0
- package/dist/geometry/{sweeps → sweep}/orientation.js +14 -11
- package/dist/geometry/sweep/seam.js +30 -0
- package/dist/geometry/{sweeps → sweep}/stations.js +75 -10
- package/dist/geometry/sweep/transforms.js +30 -0
- package/dist/geometry/{sweeps → sweep}/validation.js +4 -4
- package/dist/geometry/{text-contours.js → text/contours.js} +3 -3
- package/dist/geometry/{text-fitting.js → text/fitting.js} +4 -3
- package/dist/geometry/text/layout.js +1 -0
- package/dist/geometry/{transform3.js → transforms/affine3.js} +31 -46
- package/dist/geometry/{anchors.js → transforms/anchors.js} +43 -24
- package/dist/geometry/{transform-geometry.js → transforms/apply.js} +8 -5
- package/dist/geometry/{transform2.js → transforms/dimensions.js} +23 -19
- package/dist/geometry/transforms/frame.js +64 -0
- package/dist/geometry/{transform-matrix.js → transforms/matrix-input.js} +8 -1
- package/dist/geometry/{transform-value.js → transforms/value.js} +29 -11
- package/dist/index.js +3 -9
- package/dist/model/cutters.js +1 -0
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +4 -2
- package/dist/model/immutable-generation-data.js +15 -13
- package/dist/model/join.js +1 -0
- package/dist/model/operations.js +150 -94
- package/dist/model/recipe-declaration.js +6 -7
- package/dist/model/shape-handles.js +1 -0
- package/dist/text/index.js +3 -0
- package/dist/text/vector-text-layout.js +1 -0
- package/package.json +20 -5
- package/dist/docs/reference/engine/Export3mfOptions.md +0 -46
- package/dist/docs/reference/engine/ExportMeshPart.md +0 -31
- package/dist/docs/reference/engine/ModelingLimits.md +0 -121
- package/dist/docs/reference/engine/export3mf.md +0 -55
- package/dist/docs/reference/geometry/BoxEdge.md +0 -7
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +0 -14
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +0 -15
- package/dist/docs/reference/geometry/BoxOptions.md +0 -87
- package/dist/docs/reference/geometry/CylinderOptions.md +0 -53
- package/dist/docs/reference/geometry/EndTreatments.md +0 -34
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +0 -130
- package/dist/docs/reference/geometry/ExtrudeOptions.md +0 -146
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +0 -18
- package/dist/docs/reference/geometry/HeightfieldOptions.md +0 -72
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +0 -58
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +0 -19
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +0 -43
- package/dist/docs/reference/geometry/LoftCorrespondence.md +0 -24
- package/dist/docs/reference/geometry/LoftMeshStation.md +0 -31
- package/dist/docs/reference/geometry/LoftOptions.md +0 -88
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +0 -14
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +0 -160
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +0 -124
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +0 -194
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +0 -29
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +0 -104
- package/dist/docs/reference/geometry/RevolveOptions.md +0 -91
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +0 -38
- package/dist/docs/reference/geometry/SphereOptions.md +0 -15
- package/dist/docs/reference/geometry/SweepOptions.md +0 -113
- package/dist/docs/reference/geometry/SweepOrientation.md +0 -113
- package/dist/docs/reference/geometry/ThreadProfile-type.md +0 -86
- package/dist/docs/reference/geometry/ThreadedNutShape.md +0 -14
- package/dist/docs/reference/geometry/TorusOptions.md +0 -105
- package/dist/docs/reference/geometry/TriangleMesh.md +0 -34
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +0 -129
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +0 -79
- package/dist/docs/reference/geometry/TriangleMeshInput.md +0 -19
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +0 -43
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +0 -194
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +0 -111
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +0 -46
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +0 -34
- package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +0 -131
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +0 -55
- package/dist/docs/reference/geometry/TubeOptions.md +0 -62
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +0 -58
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +0 -115
- package/dist/docs/reference/geometry/VectorTextOptions.md +0 -54
- package/dist/docs/reference/geometry/add2.md +0 -37
- package/dist/docs/reference/geometry/add3.md +0 -43
- package/dist/docs/reference/geometry/applyTransformDirection3.md +0 -46
- package/dist/docs/reference/geometry/applyTransformPoint3.md +0 -44
- package/dist/docs/reference/geometry/categories/meshes.md +0 -68
- package/dist/docs/reference/geometry/composeTransform3.md +0 -45
- package/dist/docs/reference/geometry/cross2.md +0 -37
- package/dist/docs/reference/geometry/cross3.md +0 -43
- package/dist/docs/reference/geometry/distance2.md +0 -37
- package/dist/docs/reference/geometry/distance3.md +0 -37
- package/dist/docs/reference/geometry/dot2.md +0 -37
- package/dist/docs/reference/geometry/dot3.md +0 -43
- package/dist/docs/reference/geometry/eulerTransform3.md +0 -43
- package/dist/docs/reference/geometry/frameTransform3.md +0 -49
- package/dist/docs/reference/geometry/inverseTransform3.md +0 -35
- package/dist/docs/reference/geometry/length2.md +0 -31
- package/dist/docs/reference/geometry/length3.md +0 -31
- package/dist/docs/reference/geometry/lerp2.md +0 -43
- package/dist/docs/reference/geometry/lerp3.md +0 -43
- package/dist/docs/reference/geometry/normalize2.md +0 -40
- package/dist/docs/reference/geometry/normalize3.md +0 -40
- package/dist/docs/reference/geometry/projectOntoPlane3.md +0 -37
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +0 -78
- package/dist/docs/reference/geometry/rotate2.md +0 -37
- package/dist/docs/reference/geometry/rotationTransform3.md +0 -54
- package/dist/docs/reference/geometry/scale2.md +0 -37
- package/dist/docs/reference/geometry/scale3.md +0 -43
- package/dist/docs/reference/geometry/scaleTransform3.md +0 -39
- package/dist/docs/reference/geometry/subtract2.md +0 -37
- package/dist/docs/reference/geometry/subtract3.md +0 -43
- package/dist/docs/reference/geometry/transformDeterminant3.md +0 -37
- package/dist/docs/reference/geometry/translationTransform3.md +0 -36
- package/dist/docs/reference/geometry/validateRigidTransform3.md +0 -35
- package/dist/docs/reference/geometry/validateTransform3.md +0 -48
- package/dist/docs/reference/mesh/AcmeThreadProfileSpec.md +0 -79
- package/dist/docs/reference/mesh/Bevel.md +0 -18
- package/dist/docs/reference/mesh/BevelSize.md +0 -14
- package/dist/docs/reference/mesh/Bounds2.md +0 -125
- package/dist/docs/reference/mesh/Bounds2Data.md +0 -43
- package/dist/docs/reference/mesh/Bounds2Input.md +0 -19
- package/dist/docs/reference/mesh/Bounds3.md +0 -125
- package/dist/docs/reference/mesh/Bounds3Data.md +0 -43
- package/dist/docs/reference/mesh/Bounds3Input.md +0 -19
- package/dist/docs/reference/mesh/ButtressPressureFlankSide.md +0 -14
- package/dist/docs/reference/mesh/ButtressThreadProfileSpec.md +0 -97
- package/dist/docs/reference/mesh/CircularPrimitiveOptions.md +0 -60
- package/dist/docs/reference/mesh/CurveSamplingOptions.md +0 -69
- package/dist/docs/reference/mesh/CustomThreadProfileSpec.md +0 -77
- package/dist/docs/reference/mesh/ExtrusionSamplingOptions.md +0 -81
- package/dist/docs/reference/mesh/Frame3.md +0 -62
- package/dist/docs/reference/mesh/GeometryResolution.md +0 -74
- package/dist/docs/reference/mesh/GeometrySamplingLimits.md +0 -66
- package/dist/docs/reference/mesh/GeometryToleranceOptions.md +0 -46
- package/dist/docs/reference/mesh/HeightfieldOptions.md +0 -72
- package/dist/docs/reference/mesh/ImmutableBuffer.md +0 -108
- package/dist/docs/reference/mesh/LoftCorrespondence.md +0 -24
- package/dist/docs/reference/mesh/LoftOptions.md +0 -88
- package/dist/docs/reference/mesh/LoftPlacement.md +0 -70
- package/dist/docs/reference/mesh/ModelingLimits.md +0 -130
- package/dist/docs/reference/mesh/NumericArray.md +0 -14
- package/dist/docs/reference/mesh/Path2.md +0 -197
- package/dist/docs/reference/mesh/Path2Data.md +0 -50
- package/dist/docs/reference/mesh/Path2Input.md +0 -20
- package/dist/docs/reference/mesh/Path3.md +0 -197
- package/dist/docs/reference/mesh/Path3Data.md +0 -50
- package/dist/docs/reference/mesh/Path3Input.md +0 -20
- package/dist/docs/reference/mesh/PathLocation.md +0 -69
- package/dist/docs/reference/mesh/PathNormalGuide.md +0 -43
- package/dist/docs/reference/mesh/PathResamplingOptions.md +0 -84
- package/dist/docs/reference/mesh/Pivot2Options.md +0 -26
- package/dist/docs/reference/mesh/Pivot3Options.md +0 -26
- package/dist/docs/reference/mesh/RevolveOptions.md +0 -91
- package/dist/docs/reference/mesh/SquareThreadProfileSpec.md +0 -79
- package/dist/docs/reference/mesh/SweepOptions.md +0 -113
- package/dist/docs/reference/mesh/SweepOrientation.md +0 -113
- package/dist/docs/reference/mesh/ThreadEndStyle.md +0 -14
- package/dist/docs/reference/mesh/ThreadEndTreatmentOptions.md +0 -117
- package/dist/docs/reference/mesh/ThreadHandedness.md +0 -14
- package/dist/docs/reference/mesh/ThreadLeadInEnvelope.md +0 -14
- package/dist/docs/reference/mesh/ThreadLeadInShape.md +0 -14
- package/dist/docs/reference/mesh/ThreadProfileBaseSpec.md +0 -53
- package/dist/docs/reference/mesh/ThreadProfileSpec.md +0 -23
- package/dist/docs/reference/mesh/ThreadRidgeOptions.md +0 -145
- package/dist/docs/reference/mesh/ThreadSolidOptions.md +0 -222
- package/dist/docs/reference/mesh/ThreadSolidPreflight.md +0 -58
- package/dist/docs/reference/mesh/Transform2.md +0 -256
- package/dist/docs/reference/mesh/Transform2Data.md +0 -14
- package/dist/docs/reference/mesh/Transform2Input.md +0 -19
- package/dist/docs/reference/mesh/Transform3.md +0 -296
- package/dist/docs/reference/mesh/Transform3Data.md +0 -17
- package/dist/docs/reference/mesh/Transform3Input.md +0 -19
- package/dist/docs/reference/mesh/TrapezoidalThreadProfileSpec.md +0 -96
- package/dist/docs/reference/mesh/TriangularThreadProfileSpec.md +0 -95
- package/dist/docs/reference/mesh/Vector2.md +0 -270
- package/dist/docs/reference/mesh/Vector2Data.md +0 -14
- package/dist/docs/reference/mesh/Vector2Input.md +0 -19
- package/dist/docs/reference/mesh/Vector3.md +0 -282
- package/dist/docs/reference/mesh/Vector3Data.md +0 -14
- package/dist/docs/reference/mesh/Vector3Input.md +0 -19
- package/dist/docs/reference/model/AcmeThreadProfileSpec.md +0 -80
- package/dist/docs/reference/model/Anchor3.md +0 -55
- package/dist/docs/reference/model/AttachOptions.md +0 -69
- package/dist/docs/reference/model/Bevel.md +0 -19
- package/dist/docs/reference/model/BevelSize.md +0 -15
- package/dist/docs/reference/model/Bounds2-type.md +0 -125
- package/dist/docs/reference/model/Bounds2Data.md +0 -44
- package/dist/docs/reference/model/Bounds2Input.md +0 -19
- package/dist/docs/reference/model/Bounds2Options.md +0 -110
- package/dist/docs/reference/model/Bounds3-type.md +0 -125
- package/dist/docs/reference/model/Bounds3Data.md +0 -44
- package/dist/docs/reference/model/Bounds3Input.md +0 -19
- package/dist/docs/reference/model/Bounds3Options.md +0 -110
- package/dist/docs/reference/model/ButtressPressureFlankSide.md +0 -15
- package/dist/docs/reference/model/ButtressThreadProfileSpec.md +0 -98
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +0 -35
- package/dist/docs/reference/model/CircleContourOptions.md +0 -21
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +0 -62
- package/dist/docs/reference/model/Computed.md +0 -44
- package/dist/docs/reference/model/ComputedValue.md +0 -24
- package/dist/docs/reference/model/Contour.md +0 -24
- package/dist/docs/reference/model/CorrespondingComponent.md +0 -46
- package/dist/docs/reference/model/CorrespondingContour.md +0 -46
- package/dist/docs/reference/model/CorrespondingProfile.md +0 -22
- package/dist/docs/reference/model/CorrespondingProfileStation.md +0 -27
- package/dist/docs/reference/model/CurveSamplingOptions.md +0 -68
- package/dist/docs/reference/model/CustomThreadProfileSpec.md +0 -78
- package/dist/docs/reference/model/EdgeTreatment.md +0 -22
- package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
- package/dist/docs/reference/model/ExtrudeMeshOptions.md +0 -133
- package/dist/docs/reference/model/ExtrusionSamplingOptions.md +0 -84
- package/dist/docs/reference/model/Frame3.md +0 -63
- package/dist/docs/reference/model/GeometryError.md +0 -102
- package/dist/docs/reference/model/GeometryErrorCode.md +0 -15
- package/dist/docs/reference/model/GeometryErrorContext.md +0 -35
- package/dist/docs/reference/model/GeometryResolution.md +0 -70
- package/dist/docs/reference/model/GeometrySamplingLimits.md +0 -62
- package/dist/docs/reference/model/GeometryToleranceOptions.md +0 -46
- package/dist/docs/reference/model/GridPatternOptions.md +0 -50
- package/dist/docs/reference/model/HoleCutterOverrun.md +0 -35
- package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -108
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -43
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -216
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +0 -77
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +0 -47
- package/dist/docs/reference/model/KnuckleHingeSpec.md +0 -18
- package/dist/docs/reference/model/LinearPatternOptions.md +0 -39
- package/dist/docs/reference/model/LoftPlacement.md +0 -73
- package/dist/docs/reference/model/MatchProfilesOptions.md +0 -35
- package/dist/docs/reference/model/ModelingLimits.md +0 -126
- package/dist/docs/reference/model/NumericArray.md +0 -14
- package/dist/docs/reference/model/Path2-type.md +0 -196
- package/dist/docs/reference/model/Path2Data.md +0 -50
- package/dist/docs/reference/model/Path2Input.md +0 -20
- package/dist/docs/reference/model/Path3-type.md +0 -196
- package/dist/docs/reference/model/Path3Data.md +0 -50
- package/dist/docs/reference/model/Path3Input.md +0 -20
- package/dist/docs/reference/model/PathLocation.md +0 -69
- package/dist/docs/reference/model/PathNormalGuide.md +0 -46
- package/dist/docs/reference/model/PathOptions.md +0 -38
- package/dist/docs/reference/model/PathPatternOptions.md +0 -48
- package/dist/docs/reference/model/PathResamplingOptions.md +0 -84
- package/dist/docs/reference/model/Pivot2Options.md +0 -28
- package/dist/docs/reference/model/Pivot3Options.md +0 -28
- package/dist/docs/reference/model/PolygonData.md +0 -44
- package/dist/docs/reference/model/PrintableThreadFit.md +0 -15
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
- package/dist/docs/reference/model/Profile.md +0 -24
- package/dist/docs/reference/model/ProfileComponent2.md +0 -46
- package/dist/docs/reference/model/ProfileContour2.md +0 -36
- package/dist/docs/reference/model/ProfileSpan2.md +0 -47
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +0 -41
- package/dist/docs/reference/model/RadialPatternOptions.md +0 -59
- package/dist/docs/reference/model/RadialSizing.md +0 -15
- package/dist/docs/reference/model/RadialSizingOptions.md +0 -40
- package/dist/docs/reference/model/RectangleContourOptions.md +0 -72
- package/dist/docs/reference/model/RectangleCornerTreatment.md +0 -40
- package/dist/docs/reference/model/RectangleCornerTreatments.md +0 -20
- package/dist/docs/reference/model/RegionData.md +0 -19
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +0 -96
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
- package/dist/docs/reference/model/SquareThreadProfileSpec.md +0 -80
- package/dist/docs/reference/model/StarContourOptions.md +0 -81
- package/dist/docs/reference/model/StrokeCap.md +0 -16
- package/dist/docs/reference/model/StrokeJoin.md +0 -16
- package/dist/docs/reference/model/StrokeOptions.md +0 -91
- package/dist/docs/reference/model/ThreadBevelOptions.md +0 -35
- package/dist/docs/reference/model/ThreadEndStyle.md +0 -15
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +0 -118
- package/dist/docs/reference/model/ThreadHandedness.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInShape.md +0 -15
- package/dist/docs/reference/model/ThreadProfile.md +0 -87
- package/dist/docs/reference/model/ThreadProfileBaseSpec.md +0 -54
- package/dist/docs/reference/model/ThreadProfileSpec.md +0 -24
- package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -141
- package/dist/docs/reference/model/ThreadSolidPreflight.md +0 -59
- package/dist/docs/reference/model/ThreadedNutOptions.md +0 -263
- package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -111
- package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
- package/dist/docs/reference/model/ThreadedRodOptions.md +0 -216
- package/dist/docs/reference/model/Transform2-type.md +0 -257
- package/dist/docs/reference/model/Transform2Data.md +0 -16
- package/dist/docs/reference/model/Transform2Input.md +0 -21
- package/dist/docs/reference/model/Transform3-type.md +0 -297
- package/dist/docs/reference/model/Transform3Data.md +0 -19
- package/dist/docs/reference/model/Transform3Input.md +0 -21
- package/dist/docs/reference/model/TrapezoidalThreadProfileSpec.md +0 -97
- package/dist/docs/reference/model/TriangleMesh.md +0 -34
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -129
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/model/TriangleMeshTopologyAnalysis.md +0 -131
- package/dist/docs/reference/model/TriangularThreadProfileSpec.md +0 -96
- package/dist/docs/reference/model/Vector2-type.md +0 -271
- package/dist/docs/reference/model/Vector2Data.md +0 -15
- package/dist/docs/reference/model/Vector2Input.md +0 -21
- package/dist/docs/reference/model/Vector3-type.md +0 -283
- package/dist/docs/reference/model/Vector3Data.md +0 -15
- package/dist/docs/reference/model/Vector3Input.md +0 -21
- package/dist/docs/reference/model/VectorTextLayout.md +0 -40
- package/dist/docs/reference/model/VectorTextMetrics.md +0 -100
- package/dist/docs/reference/model/bounds2.md +0 -37
- package/dist/docs/reference/model/bounds3.md +0 -37
- package/dist/docs/reference/model/categories/bounds.md +0 -38
- package/dist/docs/reference/model/categories/contracts.md +0 -16
- package/dist/docs/reference/model/categories/core-values-errors.md +0 -44
- package/dist/docs/reference/model/categories/explicit-profiles.md +0 -34
- package/dist/docs/reference/model/categories/paths.md +0 -42
- package/dist/docs/reference/model/categories/resolution.md +0 -20
- package/dist/docs/reference/model/immutableBuffer.md +0 -49
- package/dist/docs/reference/model/isGeometryError.md +0 -34
- package/dist/docs/reference/model/matchProfiles.md +0 -42
- package/dist/docs/reference/model/path2.md +0 -54
- package/dist/docs/reference/model/path3.md +0 -49
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +0 -87
- package/dist/docs/reference/model/preflightThreadedNut.md +0 -103
- package/dist/docs/reference/model/preflightThreadedRod.md +0 -87
- package/dist/docs/reference/model/transform2.md +0 -46
- package/dist/docs/reference/model/transform3.md +0 -48
- package/dist/docs/reference/model/vector2.md +0 -40
- package/dist/docs/reference/model/vector3.md +0 -47
- package/dist/docs/reference/text/Bounds2Data.md +0 -34
- package/dist/docs/reference/text/Vector2Data.md +0 -7
- package/dist/docs/reference/text/VectorTextLayout.md +0 -34
- package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
- package/dist/engine/export-3mf.js +0 -23
- package/dist/engine/operations/patterns.js +0 -47
- package/dist/engine/serialize-3mf.js +0 -116
- package/dist/geometry/loft/loft.js +0 -105
- package/dist/geometry/mechanical/index.js +0 -14
- package/dist/geometry/primitive-resolution.js +0 -20
- package/dist/geometry/svg/index.js +0 -1
- package/dist/geometry/sweeps/options.js +0 -29
- package/dist/geometry/sweeps/sweep-closed.js +0 -96
- package/dist/geometry/sweeps/sweep-mesh.js +0 -32
- /package/dist/{geometry/mesh/mesh-types.js → export/types.js} +0 -0
- /package/dist/geometry/mechanical/{standards.js → fastener-standards.js} +0 -0
- /package/dist/geometry/mesh/{mesh-edge-table.js → edge-table.js} +0 -0
- /package/dist/geometry/{primitive-options.js → mesh/types.js} +0 -0
- /package/dist/{engine/mesh-view-cache.js → geometry/mesh/view-cache.js} +0 -0
- /package/dist/geometry/{text-layout.js → primitives/options.js} +0 -0
|
@@ -30,6 +30,8 @@ Robust union of one or more shapes; empty input rejects during declaration.
|
|
|
30
30
|
|
|
31
31
|
**`solids`** · readonly [`Solid`](Solid.md)[] · Required
|
|
32
32
|
|
|
33
|
+
Operands in shared modeling coordinates.
|
|
34
|
+
|
|
33
35
|
|
|
34
36
|
|
|
35
37
|
### Returns
|
|
@@ -44,7 +46,7 @@ Robust union of one or more shapes; empty input rejects during declaration.
|
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
Filled Section union; dimensions cannot be mixed.
|
|
48
50
|
|
|
49
51
|
### Parameters
|
|
50
52
|
|
|
@@ -52,6 +54,8 @@ Native filled section union; dimensions cannot be mixed.
|
|
|
52
54
|
|
|
53
55
|
**`sections`** · readonly [`Section`](Section.md)[] · Required
|
|
54
56
|
|
|
57
|
+
Operands in shared XY coordinates.
|
|
58
|
+
|
|
55
59
|
|
|
56
60
|
|
|
57
61
|
### Returns
|
|
@@ -67,6 +71,13 @@ Native filled section union; dimensions cannot be mixed.
|
|
|
67
71
|
## Guides
|
|
68
72
|
|
|
69
73
|
- [Choose the Boolean by the material you want](../../guides/fundamentals.md#choose-the-boolean-by-the-material-you-want)
|
|
70
|
-
- [Primitive booleans and repeated placement](../../guides/
|
|
74
|
+
- [Primitive booleans and repeated placement](../../guides/transforms-and-placement.md#primitive-booleans-and-repeated-placement)
|
|
75
|
+
- [Join an independently modeled feature](../../guides/solid-joins.md#join-an-independently-modeled-feature)
|
|
76
|
+
|
|
77
|
+
## Import
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { union } from "@metamesh/modeling";
|
|
81
|
+
```
|
|
71
82
|
|
|
72
|
-
Package: `@metamesh/modeling@0.
|
|
83
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Model API
|
|
2
2
|
|
|
3
|
-
Immutable
|
|
3
|
+
Immutable solid and section recipes with fluent operations and host-owned geometry evaluation.
|
|
4
4
|
|
|
5
|
-
Build models from immutable shapes with `@metamesh/modeling`. Import `generate`, shape constructors,
|
|
5
|
+
Build models from immutable shapes with `@metamesh/modeling`. Import `generate`, shape constructors, and collection functions, then chain shape methods to transform, combine, query, and finish recipes. A host session runs the model and manages optional memo caches.
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
8
|
import { box, cylinder, generate } from "@metamesh/modeling";
|
|
@@ -12,7 +12,7 @@ const engine = await createModelEngine();
|
|
|
12
12
|
const result = engine.run(model);
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Memoized data and recipes let you reuse unchanged work. Keep part placement and color separate from local geometry. Section recipes preserve holes through Boolean and offset chains.
|
|
16
16
|
|
|
17
17
|
- **Construction:** recipes and composition require no engine. Ordinary recipes can be reused across sessions, wherever constructed.
|
|
18
18
|
- **Resolution:** explicit settings are captured; unspecified settings inherit the evaluating host's defaults.
|
|
@@ -24,20 +24,20 @@ See [host lifecycle](engine.md) and [pure foundations](geometry.md).
|
|
|
24
24
|
## Categories
|
|
25
25
|
|
|
26
26
|
- [Primitives](model/categories/primitives.md) — Create basic solids with explicit dimensions and tessellation.
|
|
27
|
-
- [Local resolution](model/categories/resolution.md) — Choose physical curve sampling and explicit native tolerance.
|
|
28
27
|
- [2D sections](model/categories/sections.md) — Create immutable filled XY shapes, including prepared text and bounded painted SVG.
|
|
29
|
-
- [Sampled paths](model/categories/paths.md) — Reuse immutable sampled paths in 2D or 3D.
|
|
30
28
|
- [Boolean operations](model/categories/boolean-operations.md) — Combine, intersect and subtract same-dimensional shapes; construct solid envelopes and sums.
|
|
31
|
-
- [
|
|
29
|
+
- [Shape patterns](model/categories/transforms-placement.md) — Repeat Solid and Section recipes along lines, grids, circles, or paths.
|
|
32
30
|
- [Extrude, revolve, and sweep](model/categories/extrude-revolve-sweep.md) — Turn sections and paths into extruded, lofted, revolved, or swept solids.
|
|
33
31
|
- [Knuckle joints](model/categories/hinges.md) — Compose reusable knuckle joints with independent mounting attachments.
|
|
34
32
|
- [Printable threads](model/categories/threads.md) — Construct compensated thread forms and inspect bounded preflight facts.
|
|
35
33
|
- [Mesh and inspection](model/categories/mesh-inspection.md) — Convert validated meshes and read stable section or solid measurements.
|
|
36
|
-
- [Core values and errors](model/categories/core-values-errors.md) — Use shared coordinate data and recognize structured geometry errors.
|
|
37
|
-
- [Bounds](model/categories/bounds.md) — Measure immutable axis-aligned bounds and check whether positioned bounds contain one another.
|
|
38
|
-
- [Explicit matching profiles](model/categories/explicit-profiles.md) — Build hollow or multicomponent lofts and sweeps using stable landmarks.
|
|
39
34
|
- [Sampled surfaces](model/categories/bounded-surfaces.md) — Construct bounded heightfields and positive-inside implicit fields.
|
|
40
35
|
- [Model generation](model/categories/generation.md) — Build typed models with optional cached computations, named parts, and structured warnings or errors.
|
|
41
|
-
- [Model contracts](model/categories/contracts.md) — Understand opaque shape handles, dimensions, manufacturing parts, and durable model results.
|
|
42
36
|
|
|
43
|
-
|
|
37
|
+
## Import
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import * as model from "@metamesh/modeling";
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -4,4 +4,10 @@ Maximum input font size in bytes, checked before parsing or shaping untrusted fo
|
|
|
4
4
|
|
|
5
5
|
`const` **MAX\_VECTOR\_FONT\_BYTES**: `number`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Import
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { MAX_VECTOR_FONT_BYTES } from "@metamesh/modeling/text";
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -8,11 +8,11 @@ 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`](VectorTextLayoutOptions.md)) => [`VectorTextLayout`](../geometry/VectorTextLayout.md)
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
Shape horizontal lines or one circular line
|
|
15
|
+
Shape horizontal lines or one circular line, including blank text.
|
|
16
16
|
|
|
17
17
|
#### Parameters
|
|
18
18
|
|
|
@@ -20,6 +20,8 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
20
20
|
|
|
21
21
|
**`text`** · `string` · Required
|
|
22
22
|
|
|
23
|
+
Up to 512 UTF-16 code units, across at most 16 lines.
|
|
24
|
+
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
<a id="options"></a>
|
|
@@ -30,7 +32,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
30
32
|
|
|
31
33
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
32
34
|
|
|
33
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
35
|
+
- [`align`](VectorTextLayoutOptions.md#align) · `"center"` \| `"left"` \| `"right"` · Optional
|
|
34
36
|
|
|
35
37
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
36
38
|
|
|
@@ -58,7 +60,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
58
60
|
|
|
59
61
|
#### Returns
|
|
60
62
|
|
|
61
|
-
[`VectorTextLayout`](VectorTextLayout.md)
|
|
63
|
+
[`VectorTextLayout`](../geometry/VectorTextLayout.md)
|
|
62
64
|
|
|
63
65
|
***
|
|
64
66
|
|
|
@@ -66,7 +68,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
66
68
|
|
|
67
69
|
|
|
68
70
|
|
|
69
|
-
`readonly` **measure**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => [`VectorTextMetrics`](VectorTextMetrics.md)
|
|
71
|
+
`readonly` **measure**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => [`VectorTextMetrics`](../geometry/VectorTextMetrics.md)
|
|
70
72
|
|
|
71
73
|
|
|
72
74
|
|
|
@@ -78,6 +80,8 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
78
80
|
|
|
79
81
|
**`text`** · `string` · Required
|
|
80
82
|
|
|
83
|
+
Same limits as [VectorFont.layout](#layout).
|
|
84
|
+
|
|
81
85
|
|
|
82
86
|
|
|
83
87
|
<a id="options-1"></a>
|
|
@@ -88,7 +92,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
88
92
|
|
|
89
93
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
90
94
|
|
|
91
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
95
|
+
- [`align`](VectorTextLayoutOptions.md#align) · `"center"` \| `"left"` \| `"right"` · Optional
|
|
92
96
|
|
|
93
97
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
94
98
|
|
|
@@ -116,7 +120,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
116
120
|
|
|
117
121
|
#### Returns
|
|
118
122
|
|
|
119
|
-
[`VectorTextMetrics`](VectorTextMetrics.md)
|
|
123
|
+
[`VectorTextMetrics`](../geometry/VectorTextMetrics.md)
|
|
120
124
|
|
|
121
125
|
***
|
|
122
126
|
|
|
@@ -128,7 +132,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
128
132
|
|
|
129
133
|
|
|
130
134
|
|
|
131
|
-
Serialize visible horizontal or circular outlines as
|
|
135
|
+
Serialize visible horizontal or circular outlines as path-only SVG in millimetres, bounded to 256 KiB.
|
|
132
136
|
|
|
133
137
|
#### Parameters
|
|
134
138
|
|
|
@@ -136,6 +140,8 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
136
140
|
|
|
137
141
|
**`text`** · `string` · Required
|
|
138
142
|
|
|
143
|
+
Same limits as [VectorFont.layout](#layout); blank outlines are rejected.
|
|
144
|
+
|
|
139
145
|
|
|
140
146
|
|
|
141
147
|
<a id="options-2"></a>
|
|
@@ -146,7 +152,7 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
146
152
|
|
|
147
153
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
148
154
|
|
|
149
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
155
|
+
- [`align`](VectorTextLayoutOptions.md#align) · `"center"` \| `"left"` \| `"right"` · Optional
|
|
150
156
|
|
|
151
157
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
152
158
|
|
|
@@ -179,8 +185,12 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
179
185
|
|
|
180
186
|
## Related APIs
|
|
181
187
|
|
|
182
|
-
- [VectorTextLayout](VectorTextLayout.md)
|
|
183
188
|
- [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
|
|
184
|
-
- [VectorTextMetrics](VectorTextMetrics.md)
|
|
185
189
|
|
|
186
|
-
|
|
190
|
+
## Import
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
import type { VectorFont } from "@metamesh/modeling/text";
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Package: `@metamesh/modeling@0.20.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
|
-
|
|
17
|
+
## Import
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
import type { VectorFontOptions } from "@metamesh/modeling/text";
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -50,4 +50,10 @@ 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
|
-
|
|
53
|
+
## Import
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import type { VectorTextArcBaseline } from "@metamesh/modeling/text";
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -12,7 +12,7 @@ Text bounded to 512 UTF-16 units: horizontal lines or one circular line without
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
`readonly` `optional` **align?**: `"
|
|
15
|
+
`readonly` `optional` **align?**: `"center"` \| `"left"` \| `"right"`
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
@@ -108,4 +108,10 @@ Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
|
|
|
108
108
|
- [VectorTextArcBaseline](VectorTextArcBaseline.md)
|
|
109
109
|
- [VectorTextOptions](VectorTextOptions.md)
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
## Import
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
import type { VectorTextLayoutOptions } from "@metamesh/modeling/text";
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -47,4 +47,10 @@ Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
|
|
|
47
47
|
|
|
48
48
|
- [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
## Import
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
import type { VectorTextOptions } from "@metamesh/modeling/text";
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -19,17 +19,8 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
|
|
|
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
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
22
|
| [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
23
|
| [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
24
|
|
|
34
25
|
## Values
|
|
35
26
|
|
|
@@ -37,4 +28,10 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
|
|
|
37
28
|
| --- | --- |
|
|
38
29
|
| [MAX_VECTOR_FONT_BYTES](../MAX_VECTOR_FONT_BYTES.md) | Maximum input font size in bytes, checked before parsing or shaping untrusted font data. |
|
|
39
30
|
|
|
40
|
-
|
|
31
|
+
## Import
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
import * as text from "@metamesh/modeling/text";
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -21,6 +21,8 @@ async function prepareLabel(fontBytes: Uint8Array) {
|
|
|
21
21
|
|
|
22
22
|
**`bytes`** · `Uint8Array` · Required
|
|
23
23
|
|
|
24
|
+
Non-empty font bytes, at most 16 MiB; copied before parsing.
|
|
25
|
+
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
<a id="options"></a>
|
|
@@ -43,4 +45,10 @@ async function prepareLabel(fontBytes: Uint8Array) {
|
|
|
43
45
|
- [VectorFont](VectorFont.md)
|
|
44
46
|
- [VectorFontOptions](VectorFontOptions.md)
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
## Import
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
import { prepareVectorFont } from "@metamesh/modeling/text";
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -20,4 +20,10 @@ 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
|
-
|
|
23
|
+
## Import
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import * as text from "@metamesh/modeling/text";
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Package: `@metamesh/modeling@0.20.0`.
|
package/dist/engine/execution.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { assertSamplingCount } from "../geometry/sampling
|
|
2
|
+
import { assertMeshAllocationWithinLimits } from "../geometry/limits.js";
|
|
3
|
+
import { analyzeTriangleMesh, } from "../geometry/mesh/operations.js";
|
|
4
|
+
import { assertSamplingCount } from "../geometry/sampling/limits.js";
|
|
5
5
|
import { createSectionHandle, createSolidHandle } from "../model/shape-handles.js";
|
|
6
6
|
import { ownScopedManifoldValue, scopedManifoldScope, trackScopedManifoldValue, } from "./native/context.js";
|
|
7
7
|
import { copiedFloat32Array, copiedUint32Array } from "./native/copied-views.js";
|
|
@@ -309,6 +309,8 @@ export function createExecutionContext(module, scope, limits, initialResolution
|
|
|
309
309
|
},
|
|
310
310
|
restoreNative(geometry) {
|
|
311
311
|
assertActive();
|
|
312
|
+
// Register the borrow for native-operation guards. The cache keeps cleanup responsibility;
|
|
313
|
+
// putting this value in the run's allocation scope would delete it while the cache retains it.
|
|
312
314
|
trackScopedManifoldValue(scope, geometry.native.value);
|
|
313
315
|
const shape = geometry.native.kind === "solid"
|
|
314
316
|
? wrapSolid(geometry.native.value)
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
-
import { immutableMeshView
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { MeshViewCache } from "
|
|
2
|
+
import { immutableMeshView } from "../geometry/immutable-buffer.js";
|
|
3
|
+
import { analyzeTriangleMesh, } from "../geometry/mesh/operations.js";
|
|
4
|
+
import { optimizePlanarPatches } from "../geometry/mesh/planar.js";
|
|
5
|
+
import { validateAnalyzedSolidMesh } from "../geometry/mesh/solid.js";
|
|
6
|
+
import { MeshViewCache } from "../geometry/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;
|
|
@@ -15,7 +14,7 @@ function fitsGeometryLimits(mesh, limits) {
|
|
|
15
14
|
mesh.indices.length / 3 <= limits.maxTriangles &&
|
|
16
15
|
bytes <= limits.maxBytes);
|
|
17
16
|
}
|
|
18
|
-
/** Copies, validates and optionally
|
|
17
|
+
/** Copies, validates and optionally optimizes planar topology, sharing equal views within one transaction. */
|
|
19
18
|
export function createGeometryFinalizer(execution, limits, options) {
|
|
20
19
|
if (options.meshValidation !== undefined &&
|
|
21
20
|
options.meshValidation !== "topology" &&
|
|
@@ -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
|
-
}
|
package/dist/engine/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
-
import { defaultModelingLimits, resolveModelingLimits } from "../geometry/
|
|
2
|
+
import { defaultModelingLimits, resolveModelingLimits } from "../geometry/limits.js";
|
|
3
3
|
import { createExecutionContext } from "./execution.js";
|
|
4
4
|
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
|
/**
|
|
@@ -13,6 +12,9 @@ export const modelingWasmUrl = new URL("./kernel/manifold.wasm", import.meta.url
|
|
|
13
12
|
* Returns reached assertion errors and warnings; unexpected execution failures throw.
|
|
14
13
|
* Returned geometry is not realized or validated.
|
|
15
14
|
* Geometry observations require an initialized session's `check` method instead.
|
|
15
|
+
*
|
|
16
|
+
* @param program - Model declaration to check without evaluating geometry.
|
|
17
|
+
* @param args - Parameters, then session options; include any required services.
|
|
16
18
|
*/
|
|
17
19
|
export function checkModel(program, ...args) {
|
|
18
20
|
const [parameters, options] = args;
|
|
@@ -50,8 +52,8 @@ function engineFromModule(module, engineLimits) {
|
|
|
50
52
|
const limits = resolveModelingLimits(options.limits, engineLimits);
|
|
51
53
|
building = true;
|
|
52
54
|
try {
|
|
53
|
-
// The trusted finalizer captures
|
|
54
|
-
//
|
|
55
|
+
// The trusted finalizer captures owned JavaScript data separately from native values.
|
|
56
|
+
// Publish its closure-bearing snapshot facade only after the native scope cleans up.
|
|
55
57
|
let captured;
|
|
56
58
|
withManifoldScope(module, (scope) => {
|
|
57
59
|
let execution;
|
|
@@ -76,12 +78,15 @@ function engineFromModule(module, engineLimits) {
|
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
/**
|
|
79
|
-
* Initializes one host kernel and
|
|
81
|
+
* Initializes one host kernel; runs and sessions own native cleanup.
|
|
82
|
+
*
|
|
83
|
+
* @param options - WASM URL and engine resource limits.
|
|
80
84
|
*
|
|
81
85
|
* @example Build a box in a host application
|
|
82
86
|
* ```ts
|
|
83
87
|
* import { box, generate } from "@metamesh/modeling";
|
|
84
|
-
* import { createModelEngine
|
|
88
|
+
* import { createModelEngine } from "@metamesh/modeling/engine";
|
|
89
|
+
* import { export3mf } from "@metamesh/modeling/export";
|
|
85
90
|
*
|
|
86
91
|
* const engine = await createModelEngine();
|
|
87
92
|
* const model = generate<Record<never, never>>(({ part }) => [part("body", box({ size: [30, 20, 8] }))]);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validateTriangleMesh } from "../../geometry/mesh/
|
|
1
|
+
import { validateTriangleMesh } from "../../geometry/mesh/operations.js";
|
|
2
2
|
import { assertNativeSolidStatus } from "./status.js";
|
|
3
3
|
/**
|
|
4
4
|
* Constructs a live Manifold solid from a copied indexed triangle mesh.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
+
import { assertMeshAllocationWithinLimits } from "../../geometry/limits.js";
|
|
3
|
+
import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
|
|
4
|
+
import { assertNativeSolidStatus } from "./status.js";
|
|
5
|
+
/**
|
|
6
|
+
* Builds a scope-owned solid from Float32 proxy topology and authoritative Float64 millimetre coordinates.
|
|
7
|
+
* Each proxy position must identify one native position, even when the kernel merges or reorders vertices.
|
|
8
|
+
*/
|
|
9
|
+
export function nativeConstructionMesh(scope, mesh, limits, operation) {
|
|
10
|
+
const vertices = mesh.positions.length / 3;
|
|
11
|
+
assertMeshAllocationWithinLimits(vertices, mesh.indices.length / 3, mesh.positions.byteLength +
|
|
12
|
+
mesh.indices.byteLength +
|
|
13
|
+
mesh.nativePositions.byteLength +
|
|
14
|
+
vertices * 144, operation, limits);
|
|
15
|
+
const fail = (message) => {
|
|
16
|
+
throw new GeometryError("DEGENERATE_GEOMETRY", message, { operation });
|
|
17
|
+
};
|
|
18
|
+
if (mesh.nativePositions.length !== mesh.positions.length)
|
|
19
|
+
fail("Native construction coordinates must cover every proxy vertex.");
|
|
20
|
+
const key = (x, y, z) => `${x},${y},${z}`;
|
|
21
|
+
const coordinates = new Map();
|
|
22
|
+
for (let index = 0; index < mesh.positions.length; index += 3) {
|
|
23
|
+
if (!Number.isFinite(mesh.nativePositions[index]) ||
|
|
24
|
+
!Number.isFinite(mesh.nativePositions[index + 1]) ||
|
|
25
|
+
!Number.isFinite(mesh.nativePositions[index + 2]))
|
|
26
|
+
fail("Native construction coordinates must be finite.");
|
|
27
|
+
const identity = key(mesh.positions[index], mesh.positions[index + 1], mesh.positions[index + 2]);
|
|
28
|
+
const prior = coordinates.get(identity);
|
|
29
|
+
if (prior !== undefined &&
|
|
30
|
+
(mesh.nativePositions[prior] !== mesh.nativePositions[index] ||
|
|
31
|
+
mesh.nativePositions[prior + 1] !== mesh.nativePositions[index + 1] ||
|
|
32
|
+
mesh.nativePositions[prior + 2] !== mesh.nativePositions[index + 2]))
|
|
33
|
+
fail("A captured construction vertex has ambiguous native coordinates.");
|
|
34
|
+
coordinates.set(identity, index);
|
|
35
|
+
}
|
|
36
|
+
const module = scopedManifoldModule(scope);
|
|
37
|
+
const proxy = ownScopedManifoldValue(scope, new module.Manifold(new module.Mesh({ numProp: 3, vertProperties: mesh.positions, triVerts: mesh.indices })));
|
|
38
|
+
assertNativeSolidStatus(proxy, operation);
|
|
39
|
+
const result = ownScopedManifoldValue(scope, proxy.warpBatch((positions, count) => {
|
|
40
|
+
for (let vertex = 0; vertex < count; vertex++) {
|
|
41
|
+
const offset = vertex * 3;
|
|
42
|
+
const source = coordinates.get(key(positions[offset], positions[offset + 1], positions[offset + 2])) ?? fail("Native construction lost a captured vertex identity.");
|
|
43
|
+
// Copy coordinates directly to avoid allocating a temporary typed-array view per vertex.
|
|
44
|
+
positions[offset] = mesh.nativePositions[source];
|
|
45
|
+
positions[offset + 1] = mesh.nativePositions[source + 1];
|
|
46
|
+
positions[offset + 2] = mesh.nativePositions[source + 2];
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
assertNativeSolidStatus(result, operation);
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
@@ -18,10 +18,10 @@ const stateFor = (context) => {
|
|
|
18
18
|
export function createScopedManifoldContext(module, scope) {
|
|
19
19
|
assertWasmObjectScopeActive(scope);
|
|
20
20
|
const context = Object.freeze({});
|
|
21
|
-
contexts.set(context, { active: true, module,
|
|
21
|
+
contexts.set(context, { active: true, module, trackedValues: new WeakSet(), scope });
|
|
22
22
|
return context;
|
|
23
23
|
}
|
|
24
|
-
/** @internal Returns the
|
|
24
|
+
/** @internal Returns the initialized upstream module used by this live context. */
|
|
25
25
|
export function scopedManifoldModule(context) {
|
|
26
26
|
return stateFor(context).module;
|
|
27
27
|
}
|
|
@@ -33,12 +33,15 @@ export function scopedManifoldScope(context) {
|
|
|
33
33
|
export function ownScopedManifoldValue(context, value) {
|
|
34
34
|
const state = stateFor(context);
|
|
35
35
|
const owned = state.scope.own(value);
|
|
36
|
-
state.
|
|
36
|
+
state.trackedValues.add(owned);
|
|
37
37
|
return owned;
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* @internal Registers a borrowed or already scope-owned value without transferring cleanup.
|
|
41
|
+
* Session-cache borrows remain cache-owned; fresh allocations must use ownScopedManifoldValue.
|
|
42
|
+
*/
|
|
40
43
|
export function trackScopedManifoldValue(context, value) {
|
|
41
|
-
stateFor(context).
|
|
44
|
+
stateFor(context).trackedValues.add(value);
|
|
42
45
|
return value;
|
|
43
46
|
}
|
|
44
47
|
/** @internal Verifies that a context remains active without exposing its internals. */
|
|
@@ -47,7 +50,7 @@ export function assertScopedManifoldContext(context) {
|
|
|
47
50
|
}
|
|
48
51
|
/** @internal Verifies that a live WASM value belongs to this exact context. */
|
|
49
52
|
export function assertScopedManifoldValue(context, value) {
|
|
50
|
-
if (!stateFor(context).
|
|
53
|
+
if (!stateFor(context).trackedValues.has(value)) {
|
|
51
54
|
throw new Error("WASM-backed values must be used with the scoped context that owns them.");
|
|
52
55
|
}
|
|
53
56
|
}
|
|
@@ -124,7 +127,7 @@ const assertNoScopedEscape = (value, context, seen = new WeakSet()) => {
|
|
|
124
127
|
return;
|
|
125
128
|
seen.add(objectValue);
|
|
126
129
|
const state = contexts.get(context);
|
|
127
|
-
if (state?.
|
|
130
|
+
if (state?.trackedValues.has(objectValue) === true) {
|
|
128
131
|
throw new Error("WASM-backed values must not escape a scoped Manifold callback.");
|
|
129
132
|
}
|
|
130
133
|
if (isProtectedCopiedView(objectValue))
|
|
@@ -7,7 +7,7 @@ export { createScopedManifoldContext, withManifoldScope, } from "./context.js";
|
|
|
7
7
|
export { box, cylinder, sphere, torus, tube, } from "./scoped-primitives.js";
|
|
8
8
|
export { hull, intersect, minkowskiSum, subtract, union } from "./operations.js";
|
|
9
9
|
export { attach, mirror, rotate, scale, transform, translate, } from "./transforms.js";
|
|
10
|
-
export { internalThreadCutter,
|
|
10
|
+
export { internalThreadCutter, threadRidge, threadedNut, threadedRod, } from "./scoped-threads.js";
|
|
11
11
|
export {} from "./threads.js";
|
|
12
12
|
export { WasmObjectScope, withWasmObjectScope } from "./ownership.js";
|
|
13
13
|
export { crossSectionToRegion, regionToCrossSection } from "./regions.js";
|