@metamesh/modeling 0.19.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 +49 -0
- package/README.md +34 -18
- package/dist/api/engine.d.ts +217 -121
- package/dist/api/export.d.ts +123 -79
- package/dist/api/geometry.d.ts +406 -2102
- package/dist/api/index.d.ts +472 -1798
- package/dist/api/math.d.ts +315 -0
- package/dist/api/mechanical.d.ts +1041 -0
- package/dist/api/mesh.d.ts +360 -88
- package/dist/api/text.d.ts +24 -44
- package/dist/docs/guides/concepts.md +67 -33
- package/dist/docs/guides/exporting.md +88 -0
- package/dist/docs/guides/fonts.md +5 -3
- package/dist/docs/guides/fundamentals.md +12 -24
- package/dist/docs/guides/generation.md +24 -16
- package/dist/docs/guides/geometry-values.md +192 -134
- package/dist/docs/guides/hosting.md +51 -96
- package/dist/docs/guides/profiles-and-extrusion.md +159 -11
- package/dist/docs/guides/recipes.md +121 -28
- package/dist/docs/guides/resolution-and-inspection.md +43 -23
- package/dist/docs/guides/solid-joins.md +12 -2
- package/dist/docs/guides/standalone-model.md +4 -2
- package/dist/docs/guides/svg-and-text.md +76 -39
- package/dist/docs/guides/sweeps-and-lofts.md +88 -44
- package/dist/docs/guides/transforms-and-placement.md +113 -103
- package/dist/docs/guides/workers.md +166 -0
- package/dist/docs/manifest.json +4133 -4153
- package/dist/docs/reference/engine/GenerationOptions.md +2 -3
- package/dist/docs/reference/engine/GeometryResource.md +6 -6
- package/dist/docs/reference/engine/ModelDependencies.md +2 -2
- package/dist/docs/reference/engine/ModelEngine.md +2 -3
- package/dist/docs/reference/engine/ModelEngineOptions.md +2 -7
- package/dist/docs/reference/engine/ModelPart.md +6 -6
- package/dist/docs/reference/engine/ModelResult.md +2 -2
- package/dist/docs/reference/engine/ModelRunArguments.md +2 -2
- package/dist/docs/reference/engine/ModelRunOptions.md +2 -3
- package/dist/docs/reference/engine/ModelSession.md +2 -2
- package/dist/docs/reference/engine/SessionOptions.md +2 -3
- package/dist/docs/reference/engine/categories/host-lifecycle.md +9 -3
- package/dist/docs/reference/engine/checkModel.md +6 -2
- package/dist/docs/reference/engine/createModelEngine.md +5 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +4 -11
- package/dist/docs/reference/engine/modelingWasmUrl.md +2 -2
- package/dist/docs/reference/engine.md +7 -1
- package/dist/docs/reference/export/Export3mfOptions.md +2 -6
- package/dist/docs/reference/export/ExportDiagnostic.md +2 -14
- package/dist/docs/reference/export/ExportFormat.md +2 -14
- package/dist/docs/reference/export/ExportGeometry.md +3 -15
- package/dist/docs/reference/export/ExportGlbOptions.md +14 -18
- package/dist/docs/reference/export/ExportLimits.md +2 -14
- package/dist/docs/reference/export/ExportMaterial.md +2 -14
- package/dist/docs/reference/export/ExportOptions.md +2 -14
- package/dist/docs/reference/export/ExportPart.md +2 -14
- package/dist/docs/reference/export/ExportReport.md +2 -14
- package/dist/docs/reference/export/ExportSink.md +5 -15
- package/dist/docs/reference/export/ExportStlOptions.md +2 -6
- package/dist/docs/reference/export/ExportedFile.md +14 -26
- package/dist/docs/reference/export/categories/mesh-serialization.md +9 -3
- package/dist/docs/reference/export/defaultExportLimits.md +2 -2
- package/dist/docs/reference/export/export3mf.md +4 -6
- package/dist/docs/reference/export/exportGlb.md +8 -10
- package/dist/docs/reference/export/exportStl.md +4 -6
- package/dist/docs/reference/export/write3mf.md +6 -6
- package/dist/docs/reference/export/writeGlb.md +10 -10
- package/dist/docs/reference/export/writeStl.md +6 -6
- package/dist/docs/reference/export.md +9 -3
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
- package/dist/docs/reference/geometry/Anchor3-type.md +3 -7
- package/dist/docs/reference/geometry/Anchor3Options.md +70 -0
- package/dist/docs/reference/geometry/ArcCurve2.md +3 -3
- package/dist/docs/reference/geometry/ArcCurve3.md +3 -3
- package/dist/docs/reference/geometry/AttachOptions.md +4 -9
- package/dist/docs/reference/geometry/Bounds2-type.md +9 -30
- package/dist/docs/reference/geometry/Bounds2Data.md +2 -19
- package/dist/docs/reference/geometry/Bounds2Input.md +2 -10
- package/dist/docs/reference/geometry/Bounds2Options.md +2 -6
- package/dist/docs/reference/geometry/Bounds3-type.md +9 -30
- package/dist/docs/reference/geometry/Bounds3Data.md +2 -15
- package/dist/docs/reference/geometry/Bounds3Input.md +2 -10
- package/dist/docs/reference/geometry/Bounds3Options.md +2 -6
- package/dist/docs/reference/geometry/BoundsFit2.md +2 -2
- package/dist/docs/reference/geometry/BoundsFit3.md +2 -2
- package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -2
- package/dist/docs/reference/geometry/BoxAnchorFace.md +3 -3
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +3 -3
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +3 -7
- package/dist/docs/reference/geometry/CircleContourOptions.md +3 -7
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +3 -12
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +2 -2
- package/dist/docs/reference/geometry/CircularSampling.md +2 -2
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +2 -2
- package/dist/docs/reference/geometry/Contour.md +4 -9
- package/dist/docs/reference/geometry/ContourCurve.md +3 -3
- package/dist/docs/reference/geometry/ContourPoint.md +3 -3
- package/dist/docs/reference/geometry/ContourSegment.md +3 -3
- package/dist/docs/reference/geometry/CorrespondingComponent.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingContour.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingProfile.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +4 -8
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +3 -3
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +3 -3
- package/dist/docs/reference/geometry/Curve2.md +3 -3
- package/dist/docs/reference/geometry/Curve3.md +3 -3
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +3 -11
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +3 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -4
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +2 -2
- package/dist/docs/reference/geometry/EdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -7
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -18
- package/dist/docs/reference/geometry/FittedTextLayout.md +2 -2
- package/dist/docs/reference/geometry/{Frame3.md → Frame3-type.md} +4 -11
- package/dist/docs/reference/geometry/Frame3Options.md +69 -0
- package/dist/docs/reference/geometry/GeometryError.md +2 -6
- package/dist/docs/reference/geometry/GeometryErrorCode.md +2 -6
- package/dist/docs/reference/geometry/GeometryErrorContext.md +2 -6
- package/dist/docs/reference/geometry/GeometryResolution.md +2 -10
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +3 -11
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +3 -11
- package/dist/docs/reference/geometry/GridPatternOptions.md +7 -9
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +2 -10
- package/dist/docs/reference/geometry/LineCurve2.md +3 -3
- package/dist/docs/reference/geometry/LineCurve3.md +3 -3
- package/dist/docs/reference/geometry/LinearPatternOptions.md +2 -6
- package/dist/docs/reference/geometry/LoftPlacement.md +13 -21
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +3 -7
- package/dist/docs/reference/geometry/ModelingLimits.md +2 -14
- package/dist/docs/reference/geometry/NumericArray.md +2 -10
- package/dist/docs/reference/geometry/Path2-type.md +153 -12
- package/dist/docs/reference/geometry/Path2Data.md +3 -11
- package/dist/docs/reference/geometry/Path2Input.md +3 -11
- package/dist/docs/reference/geometry/Path3-type.md +153 -12
- package/dist/docs/reference/geometry/Path3Data.md +3 -11
- package/dist/docs/reference/geometry/Path3Input.md +3 -11
- package/dist/docs/reference/geometry/PathFrame.md +3 -3
- package/dist/docs/reference/geometry/PathLocation.md +3 -11
- package/dist/docs/reference/geometry/PathNormalGuide.md +4 -12
- package/dist/docs/reference/geometry/PathOptions.md +3 -7
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -7
- package/dist/docs/reference/geometry/PathPlacement.md +5 -5
- package/dist/docs/reference/geometry/PathResamplingOptions.md +3 -11
- 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 +3 -11
- package/dist/docs/reference/geometry/Pivot3Options.md +3 -11
- package/dist/docs/reference/geometry/PolygonData.md +4 -8
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +3 -3
- package/dist/docs/reference/geometry/Profile.md +3 -4
- package/dist/docs/reference/geometry/ProfileComponent2.md +3 -7
- package/dist/docs/reference/geometry/ProfileContour2.md +3 -7
- package/dist/docs/reference/geometry/ProfileSpan2.md +3 -7
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +5 -8
- package/dist/docs/reference/geometry/RadialPatternOptions.md +2 -6
- package/dist/docs/reference/geometry/RadialSizing.md +2 -6
- package/dist/docs/reference/geometry/RadialSizingOptions.md +2 -6
- package/dist/docs/reference/geometry/RectangleContourOptions.md +4 -7
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +3 -7
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +3 -7
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/RegionData.md +3 -7
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +3 -3
- package/dist/docs/reference/geometry/ResolvedGeometryResolution.md +71 -0
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +2 -2
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -2
- package/dist/docs/reference/geometry/SampleContourOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve3.md +3 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +3 -3
- package/dist/docs/reference/geometry/SideProfilePoint.md +3 -3
- package/dist/docs/reference/geometry/SideProfileSegment.md +3 -3
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/SplineOptions.md +69 -0
- package/dist/docs/reference/geometry/StarContourOptions.md +7 -7
- package/dist/docs/reference/geometry/StrokeCap.md +2 -6
- package/dist/docs/reference/geometry/StrokeJoin.md +2 -6
- package/dist/docs/reference/geometry/StrokeOptions.md +3 -7
- package/dist/docs/reference/geometry/SvgImportOptions.md +4 -4
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +2 -2
- package/dist/docs/reference/geometry/Transform2-type.md +3 -11
- package/dist/docs/reference/geometry/Transform2Data.md +3 -11
- package/dist/docs/reference/geometry/Transform2Input.md +3 -11
- package/dist/docs/reference/geometry/Transform3-type.md +4 -12
- package/dist/docs/reference/geometry/Transform3Data.md +3 -11
- package/dist/docs/reference/geometry/Transform3Input.md +6 -13
- package/dist/docs/reference/geometry/Vector2-type.md +3 -11
- package/dist/docs/reference/geometry/Vector2Data.md +3 -15
- package/dist/docs/reference/geometry/Vector2Input.md +3 -11
- package/dist/docs/reference/geometry/Vector3-type.md +27 -11
- package/dist/docs/reference/geometry/Vector3Data.md +3 -11
- package/dist/docs/reference/geometry/Vector3Input.md +3 -11
- package/dist/docs/reference/geometry/VectorTextLayout.md +2 -10
- package/dist/docs/reference/geometry/VectorTextMetrics.md +3 -11
- package/dist/docs/reference/geometry/anchor3.md +17 -26
- package/dist/docs/reference/geometry/anchorFrame3.md +6 -6
- package/dist/docs/reference/geometry/attachmentTransform3.md +8 -8
- package/dist/docs/reference/geometry/bounds2.md +6 -8
- package/dist/docs/reference/geometry/bounds3.md +4 -6
- package/dist/docs/reference/geometry/boundsCenter.md +2 -2
- package/dist/docs/reference/geometry/boundsSize.md +2 -2
- package/dist/docs/reference/geometry/boxAnchor3.md +3 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +9 -3
- 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 +10 -4
- 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 +7 -4
- package/dist/docs/reference/geometry/circleContour.md +3 -3
- package/dist/docs/reference/geometry/closeToAxis.md +7 -3
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +9 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +13 -6
- package/dist/docs/reference/geometry/contourContainsPoint.md +7 -3
- package/dist/docs/reference/geometry/cylinderAnchor3.md +5 -5
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +3 -3
- package/dist/docs/reference/geometry/distributeAlongPath.md +16 -11
- package/dist/docs/reference/geometry/ellipseContour.md +3 -3
- package/dist/docs/reference/geometry/fitBounds.md +10 -2
- package/dist/docs/reference/geometry/fitTextLayout.md +5 -5
- package/dist/docs/reference/geometry/frame3.md +66 -0
- package/dist/docs/reference/geometry/gridPatternTransforms.md +6 -6
- package/dist/docs/reference/geometry/immutableBuffer.md +5 -7
- package/dist/docs/reference/geometry/isGeometryError.md +2 -6
- package/dist/docs/reference/geometry/layoutRow.md +4 -2
- package/dist/docs/reference/geometry/linearPatternTransforms.md +6 -6
- package/dist/docs/reference/geometry/matchProfiles.md +5 -3
- package/dist/docs/reference/geometry/normalizeContour.md +8 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -3
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -3
- package/dist/docs/reference/geometry/path2.md +7 -7
- package/dist/docs/reference/geometry/path3.md +7 -7
- package/dist/docs/reference/geometry/pathPatternTransforms.md +12 -8
- package/dist/docs/reference/geometry/preflightSvgRegion.md +5 -5
- package/dist/docs/reference/geometry/radialPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/rectangleContour.md +3 -3
- package/dist/docs/reference/geometry/rectangleProfile.md +3 -4
- package/dist/docs/reference/geometry/regionArea.md +3 -3
- package/dist/docs/reference/geometry/regionBounds.md +6 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +3 -3
- package/dist/docs/reference/geometry/resamplePolyline2.md +7 -3
- package/dist/docs/reference/geometry/resamplePolyline3.md +7 -3
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +5 -5
- package/dist/docs/reference/geometry/resolveArcSegments.md +8 -6
- package/dist/docs/reference/geometry/resolveCircularSampling.md +2 -2
- package/dist/docs/reference/geometry/resolveCircularSegments.md +5 -3
- package/dist/docs/reference/geometry/{resolveExtrusionDivisions.md → resolveExtrusionSlices.md} +16 -15
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -3
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +3 -3
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -5
- package/dist/docs/reference/geometry/sampleContour.md +5 -5
- package/dist/docs/reference/geometry/sampleCurve2.md +7 -3
- package/dist/docs/reference/geometry/sampleCurve3.md +7 -3
- package/dist/docs/reference/geometry/sampleHelix.md +3 -3
- package/dist/docs/reference/geometry/sampleSideProfile.md +5 -5
- package/dist/docs/reference/geometry/sampleTextContours.md +3 -3
- package/dist/docs/reference/geometry/signedContourArea.md +5 -3
- 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 +3 -3
- package/dist/docs/reference/geometry/strokeRegionData.md +8 -5
- package/dist/docs/reference/geometry/transform2.md +5 -7
- package/dist/docs/reference/geometry/transform3.md +23 -10
- package/dist/docs/reference/geometry/transformRegionData.md +7 -3
- package/dist/docs/reference/geometry/triangulateContour.md +6 -4
- package/dist/docs/reference/geometry/vector2.md +6 -8
- package/dist/docs/reference/geometry/vector3.md +8 -8
- package/dist/docs/reference/geometry.md +13 -18
- package/dist/docs/reference/{geometry → math}/AxisAngleRotation3.md +4 -5
- 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 +4 -13
- package/dist/docs/reference/{geometry → mechanical}/Bevel.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/BevelSize.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ButtressPressureFlankSide.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ButtressThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleFit.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CompensatedThreadDiameters.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CustomThreadProfileSpec.md +5 -15
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearMeshKind.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearOutlineOptions.md +5 -10
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionOptions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionReport.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/InternalThreadCutterOptions.md +6 -13
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeBaseSpec.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeDimensions.md +4 -5
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeInterval.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSamplingOptions.md +5 -14
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSpec.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/METRIC_FASTENER_STANDARDS.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerSize.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerStandard.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricHexNutDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricSocketCapHeadDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/PRINTABLE_THREAD_FIT_POLICIES.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFit.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFitPolicy.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/RackPitchDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/RackPitchSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/SampledThreadHelices.md +4 -8
- package/dist/docs/reference/{geometry → mechanical}/SquareThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ThreadBevelOptions.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadCircularSegmentsOptions.md +5 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadCompensationOptions.md +4 -5
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndStyle.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndTreatmentOptions.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadHandedness.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadHelixOptions.md +5 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInEnvelope.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInShape.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfile-type.md +5 -17
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileBaseSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileSpec.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadRidgeOptions.md +7 -18
- package/dist/docs/reference/{geometry → mechanical}/ThreadRole.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidOptions.md +8 -15
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidPreflight.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutOptions.md +7 -14
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutPreflight.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutShape.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadedRodOptions.md +6 -13
- package/dist/docs/reference/{geometry → mechanical}/TrapezoidalThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/TriangularThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/categories/mechanical.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadDiameters.md +4 -4
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileAxially.md +12 -6
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileForFaceting.md +13 -3
- package/dist/docs/reference/{geometry → mechanical}/getMetricClearanceHoleDiameter.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/getMetricFastenerStandard.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/measureInternalCylindricalGearPairMotion.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/minimumCylindricalGearToothCountWithoutUndercut.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/preflightInternalThreadCutter.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedNut.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedRod.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGear.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGearPair.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveKnuckleHinge.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/resolvePrintableThreadFitPolicy.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveRackPitch.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveThreadCircularSegments.md +7 -5
- package/dist/docs/reference/{geometry → mechanical}/sampleCylindricalGearOutline.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleInternalCylindricalGearSpaceOutline.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleRackToothPath.md +10 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleThreadHelices.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/threadProfile.md +7 -3
- package/dist/docs/reference/mechanical.md +19 -0
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +128 -0
- package/dist/docs/reference/{geometry → mesh}/HeightfieldMeshLimits.md +5 -13
- package/dist/docs/reference/{geometry → mesh}/HeightfieldPreflight.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/ImmutableTriangleMesh.md +5 -17
- package/dist/docs/reference/mesh/LoftMeshStation.md +32 -0
- package/dist/docs/reference/mesh/MeshRenderOptions.md +3 -3
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationFallbackReason.md +4 -8
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationResult.md +4 -8
- package/dist/docs/reference/{geometry → mesh}/PlanarPatchQuality.md +4 -12
- package/dist/docs/reference/mesh/RenderMesh.md +19 -19
- package/dist/docs/reference/{geometry → mesh}/SolidMeshValidationOptions.md +4 -12
- package/dist/docs/reference/{geometry → mesh}/TriangleMesh.md +8 -12
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysis.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysisOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshInput.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshMeasurements.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityReport.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignature.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureOptions.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureTolerances.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshTopologyAnalysis.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshValidationOptions.md +4 -9
- package/dist/docs/reference/mesh/analyze.md +26 -18
- package/dist/docs/reference/mesh/analyzeQuality.md +12 -12
- package/dist/docs/reference/mesh/bounds.md +5 -6
- package/dist/docs/reference/mesh/categories/operations.md +37 -4
- package/dist/docs/reference/mesh/centroid.md +5 -6
- package/dist/docs/reference/mesh/extrude.md +21 -20
- package/dist/docs/reference/mesh/heightfield.md +8 -8
- package/dist/docs/reference/mesh/immutable.md +7 -5
- package/dist/docs/reference/mesh/join.md +7 -7
- package/dist/docs/reference/mesh/loft.md +19 -18
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +21 -21
- package/dist/docs/reference/mesh/preflightHeightfield.md +8 -8
- package/dist/docs/reference/mesh/preflightThreadSolid.md +22 -25
- package/dist/docs/reference/mesh/render.md +7 -5
- package/dist/docs/reference/mesh/reverse.md +7 -7
- package/dist/docs/reference/mesh/revolve.md +12 -14
- package/dist/docs/reference/mesh/signature.md +12 -12
- package/dist/docs/reference/mesh/sweep.md +96 -25
- package/dist/docs/reference/mesh/threadRidge.md +19 -18
- package/dist/docs/reference/mesh/threadSolid.md +23 -22
- package/dist/docs/reference/mesh/transform.md +8 -9
- package/dist/docs/reference/mesh/validate.md +11 -11
- package/dist/docs/reference/mesh/validateSolid.md +10 -10
- package/dist/docs/reference/mesh.md +8 -2
- package/dist/docs/reference/model/BoxEdge.md +23 -0
- package/dist/docs/reference/model/BoxEdgeSelection.md +27 -0
- package/dist/docs/reference/model/BoxEdgeTreatments.md +27 -0
- package/dist/docs/reference/{geometry → model}/BoxOptions.md +12 -12
- package/dist/docs/reference/model/CircleOptions.md +4 -5
- package/dist/docs/reference/model/CornerCutterOptions.md +93 -0
- package/dist/docs/reference/model/CornerCutterTreatment.md +53 -0
- package/dist/docs/reference/model/{HoleCutterOverrun.md → CutterOverrun.md} +8 -7
- package/dist/docs/reference/model/CylinderOptions.md +64 -0
- package/dist/docs/reference/model/DiagnosticOptions.md +2 -2
- package/dist/docs/reference/model/EdgeCutterOptions.md +129 -0
- package/dist/docs/reference/model/EllipseOptions.md +4 -5
- package/dist/docs/reference/model/EndTreatments.md +43 -0
- package/dist/docs/reference/model/ExtrudeOptions.md +153 -0
- package/dist/docs/reference/model/GenerateCallback.md +2 -2
- package/dist/docs/reference/model/GenerateContext.md +27 -3
- package/dist/docs/reference/model/GenerationDiagnostic.md +2 -2
- package/dist/docs/reference/model/GenerationError.md +2 -2
- package/dist/docs/reference/{geometry → model}/HeightfieldOptions.md +5 -23
- package/dist/docs/reference/model/HoleCutterOpening.md +27 -0
- package/dist/docs/reference/model/HoleCutterOptions.md +9 -22
- package/dist/docs/reference/model/HoleCutterRecess.md +5 -4
- package/dist/docs/reference/model/HullOptions.md +2 -3
- package/dist/docs/reference/model/ImmutableValue.md +2 -2
- package/dist/docs/reference/model/ImplicitOptions.md +3 -9
- package/dist/docs/reference/model/JoinOptions.md +2 -5
- package/dist/docs/reference/model/JoinTransition.md +2 -2
- package/dist/docs/reference/model/KnuckleHinge-type.md +2 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +2 -2
- package/dist/docs/reference/model/KnuckleHingeOptions.md +3 -5
- package/dist/docs/reference/model/KnuckleHingeWeb.md +2 -2
- package/dist/docs/reference/{geometry → model}/LoftCorrespondence.md +8 -11
- package/dist/docs/reference/{geometry → model}/LoftOptions.md +11 -16
- package/dist/docs/reference/model/LoftStation.md +4 -5
- package/dist/docs/reference/model/Memo.md +2 -2
- package/dist/docs/reference/model/ModelProgram.md +2 -2
- package/dist/docs/reference/model/PartDeclaration.md +4 -5
- package/dist/docs/reference/model/PartGeometry.md +3 -5
- package/dist/docs/reference/model/PartOptions.md +4 -5
- package/dist/docs/reference/model/PatternSource.md +4 -4
- package/dist/docs/reference/model/PlaneOptions.md +3 -7
- package/dist/docs/reference/model/PolygonOptions.md +2 -7
- package/dist/docs/reference/model/PrimitiveAttachment.md +50 -0
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +111 -0
- package/dist/docs/reference/model/RectangleOptions.md +21 -26
- package/dist/docs/reference/model/RegularPolygonOptions.md +4 -37
- package/dist/docs/reference/{geometry → model}/RevolveOptions.md +15 -24
- package/dist/docs/reference/model/Section.md +115 -53
- package/dist/docs/reference/model/SectionHullOptions.md +2 -3
- package/dist/docs/reference/model/SectionInspection.md +2 -6
- package/dist/docs/reference/model/SectionOffsetJoin.md +2 -2
- package/dist/docs/reference/model/SectionOffsetOptions.md +2 -3
- package/dist/docs/reference/model/Solid.md +24 -12
- package/dist/docs/reference/model/SolidInspection.md +2 -6
- package/dist/docs/reference/model/SolidSegmentHit.md +2 -6
- package/dist/docs/reference/model/SphereOptions.md +27 -0
- package/dist/docs/reference/model/StarOptions.md +21 -23
- package/dist/docs/reference/model/SvgOrigin.md +2 -2
- package/dist/docs/reference/model/SvgPathSectionOptions.md +3 -5
- package/dist/docs/reference/model/SvgSectionOptions.md +3 -6
- package/dist/docs/reference/model/SweepOptions.md +109 -0
- package/dist/docs/reference/model/SweepOrientation.md +119 -0
- package/dist/docs/reference/model/SweepTransformOptions.md +105 -0
- package/dist/docs/reference/model/TextSectionOptions.md +2 -7
- package/dist/docs/reference/{geometry → model}/TorusOptions.md +11 -10
- package/dist/docs/reference/model/TubeOptions.md +84 -0
- package/dist/docs/reference/model/box.md +11 -10
- package/dist/docs/reference/model/categories/boolean-operations.md +9 -3
- package/dist/docs/reference/model/categories/bounded-surfaces.md +13 -1
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +26 -7
- package/dist/docs/reference/model/categories/generation.md +11 -3
- package/dist/docs/reference/model/categories/hinges.md +7 -1
- package/dist/docs/reference/model/categories/mesh-inspection.md +7 -1
- package/dist/docs/reference/model/categories/primitives.md +34 -6
- package/dist/docs/reference/model/categories/sections.md +8 -2
- package/dist/docs/reference/model/categories/threads.md +8 -5
- package/dist/docs/reference/model/categories/transforms-placement.md +15 -10
- package/dist/docs/reference/model/circle.md +7 -3
- package/dist/docs/reference/model/cornerCutter.md +88 -0
- package/dist/docs/reference/model/cylinder.md +6 -5
- package/dist/docs/reference/model/edgeCutter.md +91 -0
- package/dist/docs/reference/model/ellipse.md +7 -3
- package/dist/docs/reference/model/extrude.md +29 -23
- package/dist/docs/reference/model/generate.md +4 -2
- package/dist/docs/reference/model/gridPattern.md +11 -4
- package/dist/docs/reference/model/heightfield.md +5 -5
- package/dist/docs/reference/model/holeCutter.md +26 -12
- package/dist/docs/reference/model/hull.md +2 -2
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/internalThreadCutter.md +32 -21
- package/dist/docs/reference/model/intersect.md +7 -3
- package/dist/docs/reference/model/join.md +6 -2
- package/dist/docs/reference/model/knuckleHinge.md +2 -3
- package/dist/docs/reference/model/linearPattern.md +11 -4
- package/dist/docs/reference/model/loft.md +28 -24
- package/dist/docs/reference/model/minkowskiSum.md +3 -3
- package/dist/docs/reference/model/pathPattern.md +17 -8
- package/dist/docs/reference/model/polygon.md +8 -3
- package/dist/docs/reference/model/radialPattern.md +11 -4
- package/dist/docs/reference/model/rectangle.md +11 -7
- package/dist/docs/reference/model/regularPolygon.md +7 -3
- package/dist/docs/reference/model/revolve.md +18 -12
- package/dist/docs/reference/model/solidFromMesh.md +10 -6
- package/dist/docs/reference/model/sphere.md +7 -6
- package/dist/docs/reference/model/star.md +11 -7
- package/dist/docs/reference/model/stroke.md +12 -8
- package/dist/docs/reference/model/svgPathSection.md +10 -4
- package/dist/docs/reference/model/svgSection.md +10 -4
- package/dist/docs/reference/model/sweep.md +102 -25
- package/dist/docs/reference/model/textSection.md +7 -3
- package/dist/docs/reference/model/threadRidge.md +16 -17
- package/dist/docs/reference/model/threadedNut.md +25 -22
- package/dist/docs/reference/model/threadedRod.md +21 -18
- package/dist/docs/reference/model/torus.md +13 -12
- package/dist/docs/reference/model/tube.md +6 -5
- package/dist/docs/reference/model/union.md +7 -3
- package/dist/docs/reference/model.md +10 -5
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +2 -2
- package/dist/docs/reference/text/VectorFont.md +38 -34
- package/dist/docs/reference/text/VectorFontOptions.md +2 -2
- package/dist/docs/reference/{geometry → text}/VectorTextArcBaseline.md +2 -11
- package/dist/docs/reference/{geometry → text}/VectorTextLayoutOptions.md +3 -11
- package/dist/docs/reference/{geometry → text}/VectorTextOptions.md +2 -10
- package/dist/docs/reference/text/categories/font-preparation.md +10 -1
- package/dist/docs/reference/text/prepareVectorFont.md +4 -2
- package/dist/docs/reference/text.md +7 -1
- package/dist/engine/execution.js +5 -3
- package/dist/engine/finalization.js +5 -5
- package/dist/engine/index.js +9 -4
- package/dist/engine/native/adapter.js +1 -1
- package/dist/engine/native/construction-mesh.js +15 -5
- package/dist/engine/native/context.js +10 -7
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +2 -2
- package/dist/engine/native/mesh-observation.js +1 -1
- package/dist/engine/native/regions.js +44 -24
- 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 +13 -6
- package/dist/engine/operations/cutters.js +112 -0
- package/dist/engine/operations/environment.js +2 -2
- package/dist/engine/operations/extrusion-finishing.js +42 -16
- package/dist/engine/operations/hole-cutter.js +125 -114
- package/dist/engine/operations/join-collar-profile.js +19 -19
- package/dist/engine/operations/join.js +86 -73
- 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 +86 -30
- package/dist/engine/session/declarations.js +98 -0
- package/dist/engine/session/dependencies.js +81 -28
- package/dist/engine/session/graph.js +39 -137
- package/dist/engine/session/parameters.js +78 -0
- package/dist/engine/session/session.js +2 -2
- package/dist/engine/session/snapshot-cache.js +2 -2
- package/dist/engine/shape-anchors.js +13 -6
- package/dist/export/3mf.js +9 -2
- package/dist/export/capture.js +10 -6
- package/dist/export/glb.js +7 -2
- package/dist/export/stl.js +21 -6
- package/dist/geometry/{bounds.js → bounds/operations.js} +3 -1
- package/dist/geometry/{bounds-value.js → bounds/value.js} +20 -16
- 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 +7 -1
- 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/{join-geometry.js → mesh/join-layers.js} +53 -59
- 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/{mesh-render.js → render-buffers.js} +22 -7
- package/dist/geometry/mesh/{mesh-signature.js → signature.js} +1 -1
- package/dist/geometry/mesh/{mesh-solid-intersections.js → solid-intersections.js} +2 -0
- package/dist/geometry/mesh/{mesh-solid.js → solid.js} +4 -4
- 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 -11
- 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/{region-offset.js → regions/offset.js} +7 -5
- package/dist/geometry/{regions.js → regions/operations.js} +59 -22
- 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/{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 +2 -0
- package/dist/model/immutable-generation-data.js +2 -0
- package/dist/model/operations.js +130 -94
- package/dist/model/recipe-declaration.js +5 -7
- package/dist/text/index.js +3 -0
- package/dist/text/vector-text-layout.js +1 -0
- package/package.json +15 -17
- package/dist/api/export-3mf.d.ts +0 -2
- package/dist/api/export-glb.d.ts +0 -2
- package/dist/api/export-stl.d.ts +0 -2
- package/dist/docs/reference/geometry/BoxEdge.md +0 -17
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +0 -24
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +0 -25
- package/dist/docs/reference/geometry/CylinderOptions.md +0 -63
- package/dist/docs/reference/geometry/EndTreatments.md +0 -44
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +0 -144
- package/dist/docs/reference/geometry/ExtrudeOptions.md +0 -156
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +0 -25
- package/dist/docs/reference/geometry/LoftMeshStation.md +0 -41
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +0 -39
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +0 -114
- package/dist/docs/reference/geometry/SphereOptions.md +0 -25
- package/dist/docs/reference/geometry/SweepOptions.md +0 -127
- package/dist/docs/reference/geometry/SweepOrientation.md +0 -127
- package/dist/docs/reference/geometry/TubeOptions.md +0 -72
- package/dist/docs/reference/geometry/add2.md +0 -43
- package/dist/docs/reference/geometry/add3.md +0 -49
- package/dist/docs/reference/geometry/applyTransformDirection3.md +0 -52
- package/dist/docs/reference/geometry/applyTransformPoint3.md +0 -50
- package/dist/docs/reference/geometry/categories/meshes.md +0 -68
- package/dist/docs/reference/geometry/composeTransform3.md +0 -51
- package/dist/docs/reference/geometry/cross2.md +0 -43
- package/dist/docs/reference/geometry/cross3.md +0 -49
- package/dist/docs/reference/geometry/distance2.md +0 -43
- package/dist/docs/reference/geometry/distance3.md +0 -43
- package/dist/docs/reference/geometry/dot2.md +0 -43
- package/dist/docs/reference/geometry/dot3.md +0 -49
- package/dist/docs/reference/geometry/eulerTransform3.md +0 -49
- package/dist/docs/reference/geometry/frameTransform3.md +0 -55
- package/dist/docs/reference/geometry/inverseTransform3.md +0 -41
- package/dist/docs/reference/geometry/length2.md +0 -37
- package/dist/docs/reference/geometry/length3.md +0 -37
- package/dist/docs/reference/geometry/lerp2.md +0 -49
- package/dist/docs/reference/geometry/lerp3.md +0 -49
- package/dist/docs/reference/geometry/normalize2.md +0 -46
- package/dist/docs/reference/geometry/normalize3.md +0 -46
- package/dist/docs/reference/geometry/projectOntoPlane3.md +0 -43
- package/dist/docs/reference/geometry/rotate2.md +0 -43
- package/dist/docs/reference/geometry/rotationTransform3.md +0 -60
- package/dist/docs/reference/geometry/scale2.md +0 -43
- package/dist/docs/reference/geometry/scale3.md +0 -49
- package/dist/docs/reference/geometry/scaleTransform3.md +0 -45
- package/dist/docs/reference/geometry/subtract2.md +0 -43
- package/dist/docs/reference/geometry/subtract3.md +0 -49
- package/dist/docs/reference/geometry/transformDeterminant3.md +0 -43
- package/dist/docs/reference/geometry/translationTransform3.md +0 -42
- package/dist/docs/reference/geometry/validateRigidTransform3.md +0 -41
- package/dist/docs/reference/geometry/validateTransform3.md +0 -54
- package/dist/docs/reference/model/Profile.md +0 -30
- package/dist/docs/reference/model/categories/explicit-profiles.md +0 -21
- package/dist/docs/reference/model/matchProfiles.md +0 -48
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +0 -93
- package/dist/docs/reference/model/preflightThreadedNut.md +0 -109
- package/dist/docs/reference/model/preflightThreadedRod.md +0 -93
- package/dist/engine/operations/patterns.js +0 -47
- 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/mechanical/{standards.js → fastener-standards.js} +0 -0
- /package/dist/geometry/mesh/{mesh-edge-table.js → edge-table.js} +0 -0
- /package/dist/geometry/mesh/{mesh-types.js → types.js} +0 -0
- /package/dist/geometry/mesh/{mesh-view-cache.js → view-cache.js} +0 -0
- /package/dist/geometry/{primitive-options.js → primitives/options.js} +0 -0
- /package/dist/geometry/{text-layout.js → sweep/options.js} +0 -0
|
@@ -14,10 +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
18
|
|
|
19
19
|
```ts
|
|
20
20
|
import type { VectorFontOptions } from "@metamesh/modeling/text";
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Package: `@metamesh/modeling@0.
|
|
23
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -50,19 +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
|
-
|
|
54
|
-
## Guides
|
|
55
|
-
|
|
56
|
-
- [SVG preflight work and guarantees](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
|
|
57
|
-
|
|
58
|
-
## Supported imports
|
|
59
|
-
|
|
60
|
-
```ts
|
|
61
|
-
import type { VectorTextArcBaseline } from "@metamesh/modeling/geometry";
|
|
62
|
-
```
|
|
53
|
+
## Import
|
|
63
54
|
|
|
64
55
|
```ts
|
|
65
56
|
import type { VectorTextArcBaseline } from "@metamesh/modeling/text";
|
|
66
57
|
```
|
|
67
58
|
|
|
68
|
-
Package: `@metamesh/modeling@0.
|
|
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,18 +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
|
-
##
|
|
112
|
-
|
|
113
|
-
- [SVG preflight work and guarantees](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
|
|
114
|
-
|
|
115
|
-
## Supported imports
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
import type { VectorTextLayoutOptions } from "@metamesh/modeling/geometry";
|
|
119
|
-
```
|
|
111
|
+
## Import
|
|
120
112
|
|
|
121
113
|
```ts
|
|
122
114
|
import type { VectorTextLayoutOptions } from "@metamesh/modeling/text";
|
|
123
115
|
```
|
|
124
116
|
|
|
125
|
-
Package: `@metamesh/modeling@0.
|
|
117
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -47,18 +47,10 @@ Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
|
|
|
47
47
|
|
|
48
48
|
- [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
|
|
49
49
|
|
|
50
|
-
##
|
|
51
|
-
|
|
52
|
-
- [SVG preflight work and guarantees](../../guides/resolution-and-inspection.md#check-preflight-guarantees)
|
|
53
|
-
|
|
54
|
-
## Supported imports
|
|
55
|
-
|
|
56
|
-
```ts
|
|
57
|
-
import type { VectorTextOptions } from "@metamesh/modeling/geometry";
|
|
58
|
-
```
|
|
50
|
+
## Import
|
|
59
51
|
|
|
60
52
|
```ts
|
|
61
53
|
import type { VectorTextOptions } from "@metamesh/modeling/text";
|
|
62
54
|
```
|
|
63
55
|
|
|
64
|
-
Package: `@metamesh/modeling@0.
|
|
56
|
+
Package: `@metamesh/modeling@0.20.0`.
|
|
@@ -18,6 +18,9 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
|
|
|
18
18
|
| --- | --- |
|
|
19
19
|
| [VectorFont](../VectorFont.md) | A prepared font owns its parsed bytes; keep handles local to their Worker or invocation. Invalid arguments and bounded-work failures use GeometryError; unexpected dependency errors propagate. |
|
|
20
20
|
| [VectorFontOptions](../VectorFontOptions.md) | Identifies the actual weight of a static face, without synthesizing a different weight. |
|
|
21
|
+
| [VectorTextArcBaseline](../VectorTextArcBaseline.md) | A circular baseline centered at the XY origin, with rigid shaped glyph groups. |
|
|
22
|
+
| [VectorTextLayoutOptions](../VectorTextLayoutOptions.md) | Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping. |
|
|
23
|
+
| [VectorTextOptions](../VectorTextOptions.md) | Shaping controls for a prepared exact font face; all lengths are in millimetres. |
|
|
21
24
|
|
|
22
25
|
## Values
|
|
23
26
|
|
|
@@ -25,4 +28,10 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
|
|
|
25
28
|
| --- | --- |
|
|
26
29
|
| [MAX_VECTOR_FONT_BYTES](../MAX_VECTOR_FONT_BYTES.md) | Maximum input font size in bytes, checked before parsing or shaping untrusted font data. |
|
|
27
30
|
|
|
28
|
-
|
|
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,10 +45,10 @@ async function prepareLabel(fontBytes: Uint8Array) {
|
|
|
43
45
|
- [VectorFont](VectorFont.md)
|
|
44
46
|
- [VectorFontOptions](VectorFontOptions.md)
|
|
45
47
|
|
|
46
|
-
##
|
|
48
|
+
## Import
|
|
47
49
|
|
|
48
50
|
```ts
|
|
49
51
|
import { prepareVectorFont } from "@metamesh/modeling/text";
|
|
50
52
|
```
|
|
51
53
|
|
|
52
|
-
Package: `@metamesh/modeling@0.
|
|
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,9 +1,9 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
2
|
import { immutableMeshView } from "../geometry/immutable-buffer.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
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
8
|
function fitsGeometryLimits(mesh, limits) {
|
|
9
9
|
const buffers = new Set([mesh.positions.buffer, mesh.indices.buffer]);
|
|
@@ -14,7 +14,7 @@ function fitsGeometryLimits(mesh, limits) {
|
|
|
14
14
|
mesh.indices.length / 3 <= limits.maxTriangles &&
|
|
15
15
|
bytes <= limits.maxBytes);
|
|
16
16
|
}
|
|
17
|
-
/** Copies, validates and optionally
|
|
17
|
+
/** Copies, validates and optionally optimizes planar topology, sharing equal views within one transaction. */
|
|
18
18
|
export function createGeometryFinalizer(execution, limits, options) {
|
|
19
19
|
if (options.meshValidation !== undefined &&
|
|
20
20
|
options.meshValidation !== "topology" &&
|
package/dist/engine/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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";
|
|
@@ -12,6 +12,9 @@ export const modelingWasmUrl = new URL("./kernel/manifold.wasm", import.meta.url
|
|
|
12
12
|
* Returns reached assertion errors and warnings; unexpected execution failures throw.
|
|
13
13
|
* Returned geometry is not realized or validated.
|
|
14
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.
|
|
15
18
|
*/
|
|
16
19
|
export function checkModel(program, ...args) {
|
|
17
20
|
const [parameters, options] = args;
|
|
@@ -49,8 +52,8 @@ function engineFromModule(module, engineLimits) {
|
|
|
49
52
|
const limits = resolveModelingLimits(options.limits, engineLimits);
|
|
50
53
|
building = true;
|
|
51
54
|
try {
|
|
52
|
-
// The trusted finalizer captures
|
|
53
|
-
//
|
|
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.
|
|
54
57
|
let captured;
|
|
55
58
|
withManifoldScope(module, (scope) => {
|
|
56
59
|
let execution;
|
|
@@ -75,7 +78,9 @@ function engineFromModule(module, engineLimits) {
|
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
/**
|
|
78
|
-
* 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.
|
|
79
84
|
*
|
|
80
85
|
* @example Build a box in a host application
|
|
81
86
|
* ```ts
|
|
@@ -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.
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
-
import { assertMeshAllocationWithinLimits
|
|
2
|
+
import { assertMeshAllocationWithinLimits } from "../../geometry/limits.js";
|
|
3
3
|
import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
|
|
4
4
|
import { assertNativeSolidStatus } from "./status.js";
|
|
5
|
-
/**
|
|
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
|
+
*/
|
|
6
9
|
export function nativeConstructionMesh(scope, mesh, limits, operation) {
|
|
7
10
|
const vertices = mesh.positions.length / 3;
|
|
8
11
|
assertMeshAllocationWithinLimits(vertices, mesh.indices.length / 3, mesh.positions.byteLength +
|
|
@@ -17,12 +20,16 @@ export function nativeConstructionMesh(scope, mesh, limits, operation) {
|
|
|
17
20
|
const key = (x, y, z) => `${x},${y},${z}`;
|
|
18
21
|
const coordinates = new Map();
|
|
19
22
|
for (let index = 0; index < mesh.positions.length; index += 3) {
|
|
20
|
-
if (!
|
|
23
|
+
if (!Number.isFinite(mesh.nativePositions[index]) ||
|
|
24
|
+
!Number.isFinite(mesh.nativePositions[index + 1]) ||
|
|
25
|
+
!Number.isFinite(mesh.nativePositions[index + 2]))
|
|
21
26
|
fail("Native construction coordinates must be finite.");
|
|
22
27
|
const identity = key(mesh.positions[index], mesh.positions[index + 1], mesh.positions[index + 2]);
|
|
23
28
|
const prior = coordinates.get(identity);
|
|
24
29
|
if (prior !== undefined &&
|
|
25
|
-
|
|
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]))
|
|
26
33
|
fail("A captured construction vertex has ambiguous native coordinates.");
|
|
27
34
|
coordinates.set(identity, index);
|
|
28
35
|
}
|
|
@@ -33,7 +40,10 @@ export function nativeConstructionMesh(scope, mesh, limits, operation) {
|
|
|
33
40
|
for (let vertex = 0; vertex < count; vertex++) {
|
|
34
41
|
const offset = vertex * 3;
|
|
35
42
|
const source = coordinates.get(key(positions[offset], positions[offset + 1], positions[offset + 2])) ?? fail("Native construction lost a captured vertex identity.");
|
|
36
|
-
|
|
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];
|
|
37
47
|
}
|
|
38
48
|
}));
|
|
39
49
|
assertNativeSolidStatus(result, operation);
|
|
@@ -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";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { assertMeshAllocationWithinLimits } from "../../geometry/limits.js";
|
|
3
|
+
import { triangleSolidAngle } from "../../geometry/mesh/solid-intersections.js";
|
|
4
4
|
import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
|
|
5
5
|
import { observeNativeMesh, } from "./mesh-observation.js";
|
|
6
6
|
import { assertNativeSolidStatus } from "./status.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
-
import { assertMeshAllocationWithinLimits
|
|
2
|
+
import { assertMeshAllocationWithinLimits } from "../../geometry/limits.js";
|
|
3
3
|
import { ownScopedManifoldValue } from "./context.js";
|
|
4
4
|
import { assertNativeSolidStatus } from "./status.js";
|
|
5
5
|
/** Observes native coordinates and topology without a Float32 geometry round trip. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
-
import { contourContainsPoint, normalizeContour, normalizeRegion, signedContourArea, } from "../../geometry/regions.js";
|
|
3
|
-
import { assertSamplingCount, resolveGeometrySamplingLimits, } from "../../geometry/sampling
|
|
2
|
+
import { contourContainsPoint, normalizeContour, normalizeRegion, signedContourArea, } from "../../geometry/regions/operations.js";
|
|
3
|
+
import { assertSamplingCount, resolveGeometrySamplingLimits, } from "../../geometry/sampling/limits.js";
|
|
4
4
|
import { assertScopedManifoldValue, ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
|
|
5
5
|
/** @internal One contour ceiling shared with authored input normalization preflights. */
|
|
6
6
|
export const MAX_AGGREGATE_CONTOURS = 25_000;
|
|
@@ -9,6 +9,7 @@ const assertRegionBounds = (regions, operation, limits = {}) => {
|
|
|
9
9
|
if (!hasArrayShape) {
|
|
10
10
|
throw new GeometryError("INVALID_ARGUMENT", "Regions must be an array.", { operation });
|
|
11
11
|
}
|
|
12
|
+
const maximumPoints = resolveGeometrySamplingLimits(limits).maxProfilePoints;
|
|
12
13
|
let contours = 0;
|
|
13
14
|
let vertices = 0;
|
|
14
15
|
if (regions.length > MAX_AGGREGATE_CONTOURS) {
|
|
@@ -47,9 +48,9 @@ const assertRegionBounds = (regions, operation, limits = {}) => {
|
|
|
47
48
|
details: { contours, vertices },
|
|
48
49
|
});
|
|
49
50
|
}
|
|
50
|
-
assertSamplingCount(vertices, operation,
|
|
51
|
-
for (const
|
|
52
|
-
for (const point of
|
|
51
|
+
assertSamplingCount(vertices, operation, maximumPoints);
|
|
52
|
+
for (const contour of [polygon.outer, ...polygon.holes]) {
|
|
53
|
+
for (const point of contour) {
|
|
53
54
|
if (!Array.isArray(point) || point.length !== 2) {
|
|
54
55
|
throw new GeometryError("INVALID_ARGUMENT", "Region points must be exact XY tuples.", {
|
|
55
56
|
operation,
|
|
@@ -67,7 +68,7 @@ const assertRegionBounds = (regions, operation, limits = {}) => {
|
|
|
67
68
|
};
|
|
68
69
|
const contoursFromRegion = (region) => region
|
|
69
70
|
.flatMap((polygon) => [polygon.outer, ...polygon.holes])
|
|
70
|
-
.map((
|
|
71
|
+
.map((contour) => contour.map(([x, y]) => [x, y]));
|
|
71
72
|
/**
|
|
72
73
|
* Converts explicit normalized region topology to a scope-owned CrossSection.
|
|
73
74
|
*
|
|
@@ -82,15 +83,19 @@ export function regionToCrossSection(context, region, limits = {}) {
|
|
|
82
83
|
return ownScopedManifoldValue(context, module.CrossSection.union([]));
|
|
83
84
|
return ownScopedManifoldValue(context, new module.CrossSection(contoursFromRegion(normalized)));
|
|
84
85
|
}
|
|
85
|
-
/**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Classifies native XY contours in millimetres into CCW exteriors and CW holes.
|
|
88
|
+
* Each hole belongs to its smallest enclosing exterior; contour order carries no topology identity.
|
|
89
|
+
* Normalization validates the resulting material regions.
|
|
90
|
+
*/
|
|
91
|
+
export const regionFromContours = (contours) => {
|
|
92
|
+
const outers = contours
|
|
93
|
+
.filter((contour) => signedContourArea(contour) > 0)
|
|
89
94
|
.map((outer) => ({ outer: normalizeContour(outer, true), holes: [] }));
|
|
90
|
-
const holes =
|
|
91
|
-
.filter((
|
|
95
|
+
const holes = contours
|
|
96
|
+
.filter((contour) => signedContourArea(contour) < 0)
|
|
92
97
|
.map((hole) => normalizeContour(hole, false));
|
|
93
|
-
if (outers.length === 0 &&
|
|
98
|
+
if (outers.length === 0 && contours.length > 0) {
|
|
94
99
|
throw new GeometryError("INVALID_TOPOLOGY", "CrossSection did not contain an exterior contour.");
|
|
95
100
|
}
|
|
96
101
|
const outerBounds = new Map(outers.map((polygon) => {
|
|
@@ -104,20 +109,35 @@ export const regionFromLoops = (loops) => {
|
|
|
104
109
|
maximumX = Math.max(maximumX, x);
|
|
105
110
|
maximumY = Math.max(maximumY, y);
|
|
106
111
|
}
|
|
107
|
-
return [
|
|
112
|
+
return [
|
|
113
|
+
polygon,
|
|
114
|
+
{
|
|
115
|
+
minimumX,
|
|
116
|
+
minimumY,
|
|
117
|
+
maximumX,
|
|
118
|
+
maximumY,
|
|
119
|
+
area: Math.abs(signedContourArea(polygon.outer)),
|
|
120
|
+
},
|
|
121
|
+
];
|
|
108
122
|
}));
|
|
109
123
|
for (const hole of holes) {
|
|
110
124
|
const [x, y] = hole[0];
|
|
111
|
-
|
|
112
|
-
|
|
125
|
+
let owner;
|
|
126
|
+
let smallestArea = Infinity;
|
|
127
|
+
// Material islands can nest inside cavities. Keep the nearest enclosing exterior without
|
|
128
|
+
// sorting candidates or remeasuring their contours for every hole.
|
|
129
|
+
for (const polygon of outers) {
|
|
113
130
|
const bounds = outerBounds.get(polygon);
|
|
114
|
-
|
|
131
|
+
if ((owner === undefined || bounds.area < smallestArea) &&
|
|
132
|
+
x >= bounds.minimumX &&
|
|
115
133
|
x <= bounds.maximumX &&
|
|
116
134
|
y >= bounds.minimumY &&
|
|
117
135
|
y <= bounds.maximumY &&
|
|
118
|
-
contourContainsPoint(polygon.outer, hole[0]))
|
|
119
|
-
|
|
120
|
-
|
|
136
|
+
contourContainsPoint(polygon.outer, hole[0])) {
|
|
137
|
+
owner = polygon;
|
|
138
|
+
smallestArea = bounds.area;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
121
141
|
if (owner === undefined) {
|
|
122
142
|
throw new GeometryError("INVALID_TOPOLOGY", "CrossSection hole had no containing exterior.");
|
|
123
143
|
}
|
|
@@ -129,12 +149,12 @@ export const regionFromLoops = (loops) => {
|
|
|
129
149
|
export function crossSectionToRegion(context, section, limits = {}) {
|
|
130
150
|
assertScopedManifoldValue(context, section);
|
|
131
151
|
assertSamplingCount(section.numVert(), "crossSectionToRegion", resolveGeometrySamplingLimits(limits).maxProfilePoints);
|
|
132
|
-
// Normalization owns the one immutable coordinate copy and reuses validated child
|
|
133
|
-
const
|
|
134
|
-
if (
|
|
152
|
+
// Normalization owns the one immutable coordinate copy and reuses validated child contours.
|
|
153
|
+
const contours = section.toPolygons();
|
|
154
|
+
if (contours.length > MAX_AGGREGATE_CONTOURS) {
|
|
135
155
|
throw new GeometryError("COMPLEXITY_LIMIT", "Resolved regions exceed 25000 contours.", {
|
|
136
156
|
operation: "crossSectionToRegion",
|
|
137
157
|
});
|
|
138
158
|
}
|
|
139
|
-
return
|
|
159
|
+
return regionFromContours(contours);
|
|
140
160
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { boxFaceAxes, resolveBoxPrimitive, resolveSpherePrimitive, resolveTorusPrimitive, resolveTubePrimitive, } from "../../geometry/
|
|
1
|
+
import { assertMeshAllocationWithinLimits, resolveModelingLimits, } from "../../geometry/limits.js";
|
|
2
|
+
import { resolveCylinderPrimitive } from "../../geometry/primitives/cylinder.js";
|
|
3
|
+
import { boxFaceAxes, resolveBoxPrimitive, resolveSpherePrimitive, resolveTorusPrimitive, resolveTubePrimitive, } from "../../geometry/primitives/resolvers.js";
|
|
4
4
|
import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
|
|
5
5
|
import { transform } from "./transforms.js";
|
|
6
6
|
const meshBudget = (vertices, triangles, operation, limits) => assertMeshAllocationWithinLimits(vertices, triangles, 12 * (vertices + triangles), operation, resolveModelingLimits(limits));
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { scopedManifoldModule, scopedManifoldScope, trackScopedManifoldValue, } from "./context.js";
|
|
2
|
-
import { internalThreadCutterSolid,
|
|
2
|
+
import { internalThreadCutterSolid, threadedNutSolid, threadedRodSolid, threadRidgeSolid, } from "./threads.js";
|
|
3
3
|
/** Converts a runtime-neutral helical ridge mesh into a context-owned Manifold. */
|
|
4
4
|
export function threadRidge(context, options) {
|
|
5
5
|
const solid = threadRidgeSolid(scopedManifoldModule(context), options, scopedManifoldScope(context));
|
|
6
6
|
return trackScopedManifoldValue(context, solid);
|
|
7
7
|
}
|
|
8
|
-
/** Preflights the exact compensated direct mesh used by {@link threadedRod}. */
|
|
9
|
-
export function preflightThreadedRod(options) {
|
|
10
|
-
return preflightThreadedRodSolid(options);
|
|
11
|
-
}
|
|
12
|
-
/** Preflights the exact extended mesh used by {@link internalThreadCutter}. */
|
|
13
|
-
export function preflightInternalThreadCutter(options) {
|
|
14
|
-
return preflightInternalThreadCutterSolid(options);
|
|
15
|
-
}
|
|
16
8
|
/** Creates a compensated context-owned external threaded rod along +Z. */
|
|
17
9
|
export function threadedRod(context, options) {
|
|
18
10
|
const solid = threadedRodSolid(scopedManifoldModule(context), options, scopedManifoldScope(context));
|
|
@@ -23,10 +15,6 @@ export function internalThreadCutter(context, options) {
|
|
|
23
15
|
const solid = internalThreadCutterSolid(scopedManifoldModule(context), options, scopedManifoldScope(context));
|
|
24
16
|
return trackScopedManifoldValue(context, solid);
|
|
25
17
|
}
|
|
26
|
-
/** Preflights a nut's exact body, cutter, and chamfer geometry without WASM allocation. */
|
|
27
|
-
export function preflightThreadedNut(options) {
|
|
28
|
-
return preflightThreadedNutSolid(options);
|
|
29
|
-
}
|
|
30
18
|
/** Creates a context-owned nut body and subtracts its compensated internal thread. */
|
|
31
19
|
export function threadedNut(context, options) {
|
|
32
20
|
const solid = threadedNutSolid(scopedManifoldModule(context), options, scopedManifoldScope(context));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { threadRidgeMesh, threadSolidMesh } from "../../geometry/mechanical/
|
|
1
|
+
import { threadRidgeMesh, threadSolidMesh } from "../../geometry/mechanical/threads/mesh.js";
|
|
2
2
|
import { resolveCompensatedThreadSolidMesh, resolveThreadedNutSolid, } from "../../geometry/mechanical/threads/solids.js";
|
|
3
3
|
import { triangleMeshToManifold } from "./adapter.js";
|
|
4
|
-
export {
|
|
4
|
+
export {} from "../../geometry/mechanical/threads/solids.js";
|
|
5
5
|
/** Converts the runtime-neutral ridge mesh into a scope-owned Manifold solid. */
|
|
6
6
|
export function threadRidgeSolid(module, options, scope) {
|
|
7
7
|
return triangleMeshToManifold(module, threadRidgeMesh(options), scope);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { attachmentTransform3 } from "../../geometry/anchors.js";
|
|
2
1
|
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
+
import { attachmentTransform3 } from "../../geometry/transforms/anchors.js";
|
|
3
3
|
import { assertScopedManifoldValue, ownScopedManifoldValue, } from "./context.js";
|
|
4
4
|
const finiteVector = (value, name, operation) => {
|
|
5
5
|
if (!value.every(Number.isFinite)) {
|
|
@@ -110,5 +110,5 @@ export function attach(context, solid, source, target, options = {}) {
|
|
|
110
110
|
...(options.gap === undefined ? {} : { gap: options.gap }),
|
|
111
111
|
...(options.spin === undefined ? {} : { spin: options.spin }),
|
|
112
112
|
...(options.tolerance === undefined ? {} : { tolerance: options.tolerance }),
|
|
113
|
-
}));
|
|
113
|
+
}).toData());
|
|
114
114
|
}
|