@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
|
@@ -221,6 +221,8 @@ function mathValueData(value) {
|
|
|
221
221
|
throw new TypeError("Immutable math values must expose canonical data through toData().");
|
|
222
222
|
return Reflect.apply(method, value, []);
|
|
223
223
|
}
|
|
224
|
+
// Data and recipe modes copy containers; dependency mode validates them in place for memo identity.
|
|
225
|
+
// Recipe mode also captures accessor values and numeric buffers while retaining deferred callbacks.
|
|
224
226
|
function captureValue(value, mode, validated) {
|
|
225
227
|
const recipeInputs = mode === "recipe";
|
|
226
228
|
const seen = new Map();
|
package/dist/model/operations.js
CHANGED
|
@@ -20,6 +20,9 @@ export function box(options) {
|
|
|
20
20
|
* Neither operand moves, loses material, or changes sampling. The result has no inherited anchors.
|
|
21
21
|
* This operation promises neither a circular radius, a constant bevel angle, nor global curvature continuity.
|
|
22
22
|
*
|
|
23
|
+
* @param base - Support solid in shared modeling coordinates.
|
|
24
|
+
* @param feature - Positioned feature that owns the source datum.
|
|
25
|
+
*
|
|
23
26
|
* @example Join a mounting boss
|
|
24
27
|
* ```ts
|
|
25
28
|
* const base = box({ size: [50, 40, 6] });
|
|
@@ -47,28 +50,92 @@ export function cylinder(options) {
|
|
|
47
50
|
return invoke("cylinder", [options]);
|
|
48
51
|
}
|
|
49
52
|
/**
|
|
50
|
-
* Declares a +Z hole or blind-pocket cutter with
|
|
53
|
+
* Declares a +Z hole or blind-pocket cutter with independent opening treatments.
|
|
51
54
|
*
|
|
52
55
|
* @remarks
|
|
53
|
-
* Choose exactly one circular diameter or existing Section.
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
56
|
+
* Choose exactly one circular diameter or existing Section. Finished profiles require one
|
|
57
|
+
* strictly convex contour without holes; plain profiles may have any topology. Opening treatments
|
|
58
|
+
* widen the mouth while retaining a positive nominal throat. Circular openings also admit
|
|
59
|
+
* counterbores and countersinks. An omitted opening leaves that end unchanged.
|
|
60
|
+
* Overrun extends each terminal cross section outside Z=0..height; both ends default to zero,
|
|
61
|
+
* preserving blind-pocket floors. It is independent of manufacturing clearance.
|
|
58
62
|
* Existing Section samples are authoritative; limits and unspecified circular sampling belong
|
|
59
63
|
* to the evaluating host.
|
|
60
64
|
*
|
|
61
|
-
* @example
|
|
65
|
+
* @example Amber cutter · Blue blind hex pocket
|
|
62
66
|
* ```ts
|
|
63
|
-
* holeCutter
|
|
64
|
-
*
|
|
65
|
-
*
|
|
67
|
+
* import { box, generate, holeCutter, regularPolygon } from "@metamesh/modeling";
|
|
68
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
69
|
+
*
|
|
70
|
+
* const cutter = holeCutter({
|
|
71
|
+
* profile: regularPolygon({ sides: 6, radius: 5, sizing: "face", rotation: 30 }),
|
|
72
|
+
* height: 5,
|
|
73
|
+
* openings: { top: { kind: "chamfer", distance: 1.5 } },
|
|
74
|
+
* overrun: { top: 0.05 },
|
|
66
75
|
* });
|
|
76
|
+
* // A 3 mm floor remains beneath the pocket. Display the cutter separately on the left.
|
|
77
|
+
* const stock = box({ size: [22, 20, 8] }).translate([0, 0, 4]);
|
|
78
|
+
* const result = stock.subtract(cutter.translate([0, 0, 3]));
|
|
79
|
+
* export default generate(({ part }) => [
|
|
80
|
+
* part("cutter", { geometry: cutter, color: "#f6ad55", transform: transform3().translate([-12, -12, 0]) }),
|
|
81
|
+
* part("result", { geometry: result, color: "#4f83a6", transform: transform3().translate([12, 12, 0]) }),
|
|
82
|
+
* ]);
|
|
67
83
|
* ```
|
|
68
84
|
*/
|
|
69
85
|
export function holeCutter(options) {
|
|
70
86
|
return invoke("holeCutter", [options]);
|
|
71
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Creates a cutter for one straight convex edge along +Z, with its sharp reference at XY=0.
|
|
90
|
+
* Position it explicitly before subtraction; the included material angle defaults to 90 degrees.
|
|
91
|
+
*
|
|
92
|
+
* @example Amber cutter · Blue rounded edge
|
|
93
|
+
* ```ts
|
|
94
|
+
* import { box, edgeCutter, generate } from "@metamesh/modeling";
|
|
95
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
96
|
+
*
|
|
97
|
+
* const cutter = edgeCutter({ length: 18, treatment: { kind: "round", radius: 6 }, excess: 0 });
|
|
98
|
+
* const result = box({ size: 18, center: false }).subtract(cutter);
|
|
99
|
+
* // Turn the concave mask and convex result toward the viewer independently.
|
|
100
|
+
* export default generate(({ part }) => [
|
|
101
|
+
* part("cutter", { geometry: cutter.translate([-3, -3, 0]).rotate([0, 0, -90]), color: "#f6ad55", transform: transform3().translate([-11, -11, 0]) }),
|
|
102
|
+
* part("result", { geometry: result.translate([-9, -9, 0]).rotate([0, 0, 90]), color: "#4f83a6", transform: transform3().translate([11, 11, 0]) }),
|
|
103
|
+
* ]);
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export function edgeCutter(options) {
|
|
107
|
+
return invoke("edgeCutter", [options]);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Creates a round or chamfer cutter at the origin for three perpendicular positive-axis faces.
|
|
111
|
+
* Complements matching edge cutters; construction, placement, and subtraction remain explicit.
|
|
112
|
+
*
|
|
113
|
+
* @example Amber corner cutter · Blue three-edge junction
|
|
114
|
+
* ```ts
|
|
115
|
+
* import { box, cornerCutter, edgeCutter, generate } from "@metamesh/modeling";
|
|
116
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
117
|
+
*
|
|
118
|
+
* const treatment = { kind: "round", radius: 5 } as const;
|
|
119
|
+
* const cutter = cornerCutter({ treatment, excess: 0 });
|
|
120
|
+
* const edge = edgeCutter({ length: 12, treatment, excess: 0 });
|
|
121
|
+
* const result = box({ size: 12, center: false }).subtract([
|
|
122
|
+
* edge,
|
|
123
|
+
* edge.rotate([0, -90, 0]).translate([12, 0, 0]),
|
|
124
|
+
* edge.rotate([90, 0, 0]).translate([0, 12, 0]),
|
|
125
|
+
* cutter,
|
|
126
|
+
* ]);
|
|
127
|
+
* // Display the concave mask and completed upper junction from opposite sides.
|
|
128
|
+
* const view = (shape: typeof result, center: number, height: number) =>
|
|
129
|
+
* shape.translate([-center, -center, 0]).mirror([0, 0, 1]).translate([0, 0, height]).rotate([0, 0, 90]);
|
|
130
|
+
* export default generate(({ part }) => [
|
|
131
|
+
* part("cutter", { geometry: cutter.translate([-2.5, -2.5, 0]).rotate([0, 0, -90]), color: "#f6ad55", transform: transform3().translate([-8, -8, 0]) }),
|
|
132
|
+
* part("result", { geometry: view(result, 6, 12), color: "#4f83a6", transform: transform3().translate([8, 8, 0]) }),
|
|
133
|
+
* ]);
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export function cornerCutter(options) {
|
|
137
|
+
return invoke("cornerCutter", [options]);
|
|
138
|
+
}
|
|
72
139
|
/**
|
|
73
140
|
* Hollow +Z tube.
|
|
74
141
|
*
|
|
@@ -81,7 +148,8 @@ export function tube(options) {
|
|
|
81
148
|
return invoke("tube", [options]);
|
|
82
149
|
}
|
|
83
150
|
/**
|
|
84
|
-
* Origin-centered sphere.
|
|
151
|
+
* Origin-centered sphere with adaptive sampling that bounds spherical triangle error.
|
|
152
|
+
* Explicit segment requests select octahedral refinement and round up to a multiple of four.
|
|
85
153
|
*
|
|
86
154
|
* @example Sphere
|
|
87
155
|
* ```ts
|
|
@@ -111,13 +179,15 @@ export function intersect(shapes) {
|
|
|
111
179
|
export function hull(options) {
|
|
112
180
|
return invoke("hull", [options]);
|
|
113
181
|
}
|
|
114
|
-
/**
|
|
182
|
+
/** Declares the three-dimensional Minkowski sum of two Solid recipes. */
|
|
115
183
|
export function minkowskiSum(a, b) {
|
|
116
184
|
return invoke("minkowskiSum", [a, b]);
|
|
117
185
|
}
|
|
118
186
|
/**
|
|
119
187
|
* Imports a bounded closed indexed mesh.
|
|
120
188
|
*
|
|
189
|
+
* @param mesh - Closed, oriented mesh in millimetres; ownership stays with the caller.
|
|
190
|
+
*
|
|
121
191
|
* @example Mesh import
|
|
122
192
|
* ```ts
|
|
123
193
|
* import { solidFromMesh } from "@metamesh/modeling";
|
|
@@ -137,6 +207,8 @@ export function solidFromMesh(mesh) {
|
|
|
137
207
|
* Closing edges are implicit. Compound contours use nonzero fill unless selected otherwise.
|
|
138
208
|
* Explicit topology must be simple and disjoint; compound winding may resolve overlaps.
|
|
139
209
|
*
|
|
210
|
+
* @param input - XY outline in millimetres, or explicit or compound topology.
|
|
211
|
+
*
|
|
140
212
|
* @example Extrude a triangular plate
|
|
141
213
|
* ```ts
|
|
142
214
|
* polygon([[0, 0], [20, 0], [10, 12]]).extrude({ height: 3 });
|
|
@@ -146,12 +218,14 @@ export function polygon(input) {
|
|
|
146
218
|
return invoke("polygon", [input]);
|
|
147
219
|
}
|
|
148
220
|
/**
|
|
149
|
-
*
|
|
221
|
+
* Declares a centered-width Section recipe along a sampled XY path.
|
|
150
222
|
*
|
|
151
|
-
* Shares caps, joins and physical sampling with Geometry's strokeRegionData.
|
|
152
|
-
* resolves overlapping stroke primitives. Session resolution and resource ceilings apply;
|
|
223
|
+
* Shares caps, joins and physical sampling with Geometry's strokeRegionData. During evaluation,
|
|
224
|
+
* union resolves overlapping stroke primitives. Session resolution and resource ceilings apply;
|
|
153
225
|
* closed paths omit the duplicated seam. Returns an immutable deferred recipe.
|
|
154
226
|
*
|
|
227
|
+
* @param path - XY path in millimetres.
|
|
228
|
+
*
|
|
155
229
|
* @example Extrude a rounded track
|
|
156
230
|
* ```ts
|
|
157
231
|
* stroke([[0, 0], [20, 0], [20, 10]], { width: 3, join: "round", cap: "round" }).extrude({ height: 2 });
|
|
@@ -168,7 +242,7 @@ export function stroke(path, options) {
|
|
|
168
242
|
*
|
|
169
243
|
* @example Round the corners
|
|
170
244
|
* ```ts
|
|
171
|
-
* rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
|
|
245
|
+
* rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } }).extrude({ height: 3 });
|
|
172
246
|
* ```
|
|
173
247
|
*/
|
|
174
248
|
export function rectangle(options) {
|
|
@@ -179,7 +253,7 @@ export function rectangle(options) {
|
|
|
179
253
|
*
|
|
180
254
|
* @example Size to polygon faces
|
|
181
255
|
* ```ts
|
|
182
|
-
* circle({ diameter: 12, sizing: "face" });
|
|
256
|
+
* circle({ diameter: 12, sizing: "face" }).extrude({ height: 3 });
|
|
183
257
|
* ```
|
|
184
258
|
*/
|
|
185
259
|
export function circle(options) {
|
|
@@ -190,7 +264,7 @@ export function circle(options) {
|
|
|
190
264
|
*
|
|
191
265
|
* @example Ellipse by full dimensions
|
|
192
266
|
* ```ts
|
|
193
|
-
* ellipse({ size: [30, 20] });
|
|
267
|
+
* ellipse({ size: [30, 20] }).extrude({ height: 3 });
|
|
194
268
|
* ```
|
|
195
269
|
*/
|
|
196
270
|
export function ellipse(options) {
|
|
@@ -201,7 +275,7 @@ export function ellipse(options) {
|
|
|
201
275
|
*
|
|
202
276
|
* @example Hexagonal section
|
|
203
277
|
* ```ts
|
|
204
|
-
* regularPolygon({ radius: 10, sides: 6, sizing: "face" });
|
|
278
|
+
* regularPolygon({ radius: 10, sides: 6, sizing: "face" }).extrude({ height: 3 });
|
|
205
279
|
* ```
|
|
206
280
|
*/
|
|
207
281
|
export function regularPolygon(options) {
|
|
@@ -212,7 +286,7 @@ export function regularPolygon(options) {
|
|
|
212
286
|
*
|
|
213
287
|
* @example Five-point section
|
|
214
288
|
* ```ts
|
|
215
|
-
* star({ outerRadius: 12, innerRadius: 6, points: 5 });
|
|
289
|
+
* star({ outerRadius: 12, innerRadius: 6, points: 5 }).extrude({ height: 3 });
|
|
216
290
|
* ```
|
|
217
291
|
*/
|
|
218
292
|
export function star(options) {
|
|
@@ -222,10 +296,12 @@ export function star(options) {
|
|
|
222
296
|
* Extrudes a filled Section or explicit corresponding contours along +Z with degree twist and top scaling.
|
|
223
297
|
* Use `section.extrude(options)` in fluent sequences, or this function for generic profile inputs.
|
|
224
298
|
*
|
|
299
|
+
* @param shape - Filled XY profile in millimetres.
|
|
300
|
+
*
|
|
225
301
|
* @example Extrude
|
|
226
302
|
* ```ts
|
|
227
|
-
* import { extrude
|
|
228
|
-
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
303
|
+
* import { extrude } from "@metamesh/modeling";
|
|
304
|
+
* import { matchProfiles, rectangleProfile } from "@metamesh/modeling/geometry";
|
|
229
305
|
*
|
|
230
306
|
* const [profile] = matchProfiles([rectangleProfile({ size: [30, 20] })]);
|
|
231
307
|
* extrude(profile!, { height: 8 });
|
|
@@ -238,10 +314,12 @@ export function extrude(shape, options) {
|
|
|
238
314
|
* Revolves a filled Section or explicit corresponding radial/Z contours around +Z, with caps for partial sweeps.
|
|
239
315
|
* Use `section.revolve(options)` in fluent sequences, or this function for generic profile inputs.
|
|
240
316
|
*
|
|
317
|
+
* @param shape - Profile coordinates are [radius, Z] in millimetres.
|
|
318
|
+
*
|
|
241
319
|
* @example Revolve
|
|
242
320
|
* ```ts
|
|
243
|
-
* import {
|
|
244
|
-
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
321
|
+
* import { revolve } from "@metamesh/modeling";
|
|
322
|
+
* import { matchProfiles, rectangleProfile } from "@metamesh/modeling/geometry";
|
|
245
323
|
*
|
|
246
324
|
* // Contour coordinates are [radius, Z].
|
|
247
325
|
* const [profile] = matchProfiles([rectangleProfile({ size: [4, 16], center: false })]);
|
|
@@ -254,30 +332,8 @@ export function revolve(shape, options) {
|
|
|
254
332
|
export function loft(stations, options) {
|
|
255
333
|
return invoke("loft", [stations, options]);
|
|
256
334
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
* Requires active synchronous model execution. Use Geometry's matchProfiles for standalone preparation.
|
|
260
|
-
*/
|
|
261
|
-
export function matchProfiles(profiles, options) {
|
|
262
|
-
return invoke("matchProfiles", [profiles, options]);
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Sweeps a filled Section or explicit corresponding contours using the selected frame policy.
|
|
266
|
-
* Use `section.sweep(path, options)` in fluent sequences, or this function for generic profile inputs.
|
|
267
|
-
*
|
|
268
|
-
* @example Sweep
|
|
269
|
-
* ```ts
|
|
270
|
-
* import { matchProfiles, sweep } from "@metamesh/modeling";
|
|
271
|
-
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
272
|
-
*
|
|
273
|
-
* const [profile] = matchProfiles([rectangleProfile({ size: [6, 3] })]);
|
|
274
|
-
* sweep(profile!, [[0, 0, 0], [0, 0, 15], [10, 0, 25]], {
|
|
275
|
-
* orientation: { kind: "transport", initialNormal: [0, 1, 0] },
|
|
276
|
-
* });
|
|
277
|
-
* ```
|
|
278
|
-
*/
|
|
279
|
-
export function sweep(shape, path, options) {
|
|
280
|
-
return invoke("sweep", [shape, path, options]);
|
|
335
|
+
export function sweep(shape, route, options = {}) {
|
|
336
|
+
return invoke("sweep", [shape, route, options]);
|
|
281
337
|
}
|
|
282
338
|
/**
|
|
283
339
|
* Bounded positive-inside implicit field constructor.
|
|
@@ -315,7 +371,7 @@ export function gridPattern(...args) {
|
|
|
315
371
|
export function pathPattern(...args) {
|
|
316
372
|
return invoke("pathPattern", args);
|
|
317
373
|
}
|
|
318
|
-
/**
|
|
374
|
+
/** Declares a helical ridge Solid recipe along +Z, with lengths in millimetres. */
|
|
319
375
|
export function threadRidge(options) {
|
|
320
376
|
return invoke("threadRidge", [options]);
|
|
321
377
|
}
|
|
@@ -329,7 +385,6 @@ export function threadRidge(options) {
|
|
|
329
385
|
* Each half's `chamfer` bevels its barrel outer rims and all web edges. Consumers own plates, screw holes,
|
|
330
386
|
* pin retention, fit policy, and part placement. Added mounting material must preserve the bores.
|
|
331
387
|
* No opening range or collision freedom is implied for arbitrary caller attachments.
|
|
332
|
-
* Compiled Generator packages using this operation require runtime 10.0.0 or newer in major 10.
|
|
333
388
|
*
|
|
334
389
|
* @example Integral-pin hinge with two mounting webs
|
|
335
390
|
* ```ts
|
|
@@ -350,7 +405,7 @@ export function knuckleHinge(options) {
|
|
|
350
405
|
* @example Threaded rod
|
|
351
406
|
* ```ts
|
|
352
407
|
* import { threadedRod } from "@metamesh/modeling";
|
|
353
|
-
* import { threadProfile } from "@metamesh/modeling/geometry";
|
|
408
|
+
* import { threadProfile } from "@metamesh/modeling/geometry/mechanical";
|
|
354
409
|
*
|
|
355
410
|
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
356
411
|
* threadedRod({ nominalMajorDiameter: 12, length: 24, profile, fit: "normal" });
|
|
@@ -362,14 +417,22 @@ export function threadedRod(options) {
|
|
|
362
417
|
/**
|
|
363
418
|
* Compensated internal threaded cutter.
|
|
364
419
|
*
|
|
365
|
-
* @example
|
|
420
|
+
* @example Amber thread cutter · Blue cutaway result
|
|
366
421
|
* ```ts
|
|
367
|
-
* import { cylinder, internalThreadCutter } from "@metamesh/modeling";
|
|
368
|
-
* import {
|
|
422
|
+
* import { box, cylinder, generate, internalThreadCutter } from "@metamesh/modeling";
|
|
423
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
424
|
+
* import { threadProfile } from "@metamesh/modeling/geometry/mechanical";
|
|
425
|
+
*
|
|
369
426
|
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
370
427
|
* const body = cylinder({ diameter: 20, height: 12, center: false });
|
|
371
428
|
* const cutter = internalThreadCutter({ nominalMajorDiameter: 12, length: 12, profile });
|
|
372
|
-
*
|
|
429
|
+
* // Remove the front quarter of the stock to expose the actual internal thread.
|
|
430
|
+
* const cutaway = box({ size: [11, 11, 14], center: false }).translate([0, -11, -1]);
|
|
431
|
+
* const result = body.subtract([cutter, cutaway]);
|
|
432
|
+
* export default generate(({ part }) => [
|
|
433
|
+
* part("cutter", { geometry: cutter, color: "#f6ad55", transform: transform3().translate([-12, -12, 0]) }),
|
|
434
|
+
* part("result", { geometry: result, color: "#4f83a6", transform: transform3().translate([12, 12, 0]) }),
|
|
435
|
+
* ]);
|
|
373
436
|
* ```
|
|
374
437
|
*/
|
|
375
438
|
export function internalThreadCutter(options) {
|
|
@@ -381,7 +444,7 @@ export function internalThreadCutter(options) {
|
|
|
381
444
|
* @example Threaded nut
|
|
382
445
|
* ```ts
|
|
383
446
|
* import { threadedNut } from "@metamesh/modeling";
|
|
384
|
-
* import { threadProfile } from "@metamesh/modeling/geometry";
|
|
447
|
+
* import { threadProfile } from "@metamesh/modeling/geometry/mechanical";
|
|
385
448
|
*
|
|
386
449
|
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
387
450
|
* threadedNut({ nominalMajorDiameter: 12, thickness: 8, width: 20, shape: "hex", profile, fit: "normal" });
|
|
@@ -390,47 +453,16 @@ export function internalThreadCutter(options) {
|
|
|
390
453
|
export function threadedNut(options) {
|
|
391
454
|
return invoke("threadedNut", [options]);
|
|
392
455
|
}
|
|
393
|
-
/**
|
|
394
|
-
* Checks compensated rod dimensions and conservative mesh estimates against host output limits.
|
|
395
|
-
*
|
|
396
|
-
* Requires active synchronous model execution and uses its resolution and limits. Returns selected
|
|
397
|
-
* sampling and conservative row/triangle estimates without mesh buffers or native objects.
|
|
398
|
-
* Mesh validity, native construction, and aggregate output limits are checked later.
|
|
399
|
-
*
|
|
400
|
-
* @see {@link threadedRod}
|
|
401
|
-
*/
|
|
402
|
-
export function preflightThreadedRod(options) {
|
|
403
|
-
return invoke("preflightThreadedRod", [options]);
|
|
404
|
-
}
|
|
405
|
-
/**
|
|
406
|
-
* Checks compensated cutter dimensions and conservative mesh estimates against host output limits.
|
|
407
|
-
*
|
|
408
|
-
* Requires active synchronous model execution and uses its resolution and limits. Estimates include
|
|
409
|
-
* the one-pitch extension beyond each requested face, without mesh buffers or native objects.
|
|
410
|
-
* Mesh validity, native construction, and aggregate output limits are checked later.
|
|
411
|
-
*
|
|
412
|
-
* @see {@link internalThreadCutter}
|
|
413
|
-
*/
|
|
414
|
-
export function preflightInternalThreadCutter(options) {
|
|
415
|
-
return invoke("preflightInternalThreadCutter", [options]);
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
|
|
419
|
-
*
|
|
420
|
-
* Requires active synchronous model execution and uses its resolution and limits, without mesh
|
|
421
|
-
* buffers or native objects. Returned thread estimates cover the cutter, excluding the body and
|
|
422
|
-
* Boolean result. Mesh validity, native construction, and aggregate output limits are checked later.
|
|
423
|
-
*
|
|
424
|
-
* @see {@link threadedNut}
|
|
425
|
-
*/
|
|
426
|
-
export function preflightThreadedNut(options) {
|
|
427
|
-
return invoke("preflightThreadedNut", [options]);
|
|
428
|
-
}
|
|
429
456
|
/**
|
|
430
457
|
* Consumes a previously prepared layout; never shapes or fetches a font.
|
|
431
458
|
*
|
|
459
|
+
* @param layout - Prepared millimetre outlines; create the layout before generation.
|
|
460
|
+
*
|
|
432
461
|
* @example Use a prepared text layout
|
|
433
462
|
* ```ts
|
|
463
|
+
* import { textSection } from "@metamesh/modeling";
|
|
464
|
+
* import type { VectorTextLayout } from "@metamesh/modeling/geometry";
|
|
465
|
+
*
|
|
434
466
|
* // Prepare the exact font and layout before entering build.
|
|
435
467
|
* function labelSection(layout: VectorTextLayout) {
|
|
436
468
|
* return textSection(layout);
|
|
@@ -443,12 +475,14 @@ export function textSection(layout, options) {
|
|
|
443
475
|
/**
|
|
444
476
|
* Imports bounded painted SVG document geometry.
|
|
445
477
|
*
|
|
478
|
+
* @param svg - Complete SVG XML, at most 256 KiB of UTF-8.
|
|
479
|
+
*
|
|
446
480
|
* @example Import a physical SVG rectangle
|
|
447
481
|
* ```ts
|
|
448
482
|
* svgSection(
|
|
449
483
|
* '<svg xmlns="http://www.w3.org/2000/svg" width="30mm" height="20mm" viewBox="0 0 30 20"><rect width="30" height="20"/></svg>',
|
|
450
484
|
* { origin: "center" },
|
|
451
|
-
* );
|
|
485
|
+
* ).extrude({ height: 3 });
|
|
452
486
|
* ```
|
|
453
487
|
*/
|
|
454
488
|
export function svgSection(svg, options) {
|
|
@@ -457,9 +491,11 @@ export function svgSection(svg, options) {
|
|
|
457
491
|
/**
|
|
458
492
|
* Imports bounded filled SVG path data.
|
|
459
493
|
*
|
|
494
|
+
* @param path - SVG path data, at most 1 MiB of UTF-8; omit the XML wrapper.
|
|
495
|
+
*
|
|
460
496
|
* @example Fill an SVG path in millimetres
|
|
461
497
|
* ```ts
|
|
462
|
-
* svgPathSection("M0 0H20V12H0Z", { origin: "center", scale: 1 });
|
|
498
|
+
* svgPathSection("M0 0H20V12H0Z", { origin: "center", scale: 1 }).extrude({ height: 3 });
|
|
463
499
|
* ```
|
|
464
500
|
*/
|
|
465
501
|
export function svgPathSection(path, options) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
+
import { defaultModelingLimits } from "../geometry/limits.js";
|
|
2
3
|
import { knuckleHingeAxis } from "../geometry/mechanical/knuckle-hinge.js";
|
|
3
|
-
import { defaultModelingLimits } from "../geometry/model-limits.js";
|
|
4
4
|
import { gridPatternPlan, linearPatternPlan, pathPatternPlan, radialPatternPlan, } from "../geometry/patterns/placements.js";
|
|
5
|
-
import { restrictTransform3 } from "../geometry/
|
|
5
|
+
import { restrictTransform3 } from "../geometry/transforms/dimensions.js";
|
|
6
6
|
import { geometryRecipe, recordGeometryRecipe, } from "./geometry-recipes.js";
|
|
7
7
|
import { captureRecipeInputs } from "./immutable-generation-data.js";
|
|
8
8
|
// Every public operation must explicitly choose its realization and result behavior.
|
|
@@ -11,6 +11,8 @@ const operationBehaviors = {
|
|
|
11
11
|
box: "solid",
|
|
12
12
|
cylinder: "solid",
|
|
13
13
|
holeCutter: "solid",
|
|
14
|
+
edgeCutter: "solid",
|
|
15
|
+
cornerCutter: "solid",
|
|
14
16
|
tube: "solid",
|
|
15
17
|
sphere: "solid",
|
|
16
18
|
torus: "solid",
|
|
@@ -62,10 +64,6 @@ const operationBehaviors = {
|
|
|
62
64
|
distance: "observation",
|
|
63
65
|
castSegment: "observation",
|
|
64
66
|
anchor: "observation",
|
|
65
|
-
matchProfiles: "observation",
|
|
66
|
-
preflightThreadedRod: "observation",
|
|
67
|
-
preflightInternalThreadCutter: "observation",
|
|
68
|
-
preflightThreadedNut: "observation",
|
|
69
67
|
split: "split",
|
|
70
68
|
splitByPlane: "split",
|
|
71
69
|
components: "components",
|
|
@@ -85,7 +83,7 @@ export function createRecipeContext(resolution, declaration) {
|
|
|
85
83
|
])));
|
|
86
84
|
}
|
|
87
85
|
/** Captures and validates inputs before deciding whether an operation needs native geometry now. */
|
|
88
|
-
|
|
86
|
+
function declareRecipeOperation(operation, resolution, supplied, declaration) {
|
|
89
87
|
declaration.assertActive?.();
|
|
90
88
|
const behavior = operationBehaviors[operation];
|
|
91
89
|
if (behavior === "observation" || behavior === "components")
|
package/dist/text/index.js
CHANGED
|
@@ -10,6 +10,7 @@ function serializeVectorText({ paths, metrics }) {
|
|
|
10
10
|
const bounds = metrics.bounds;
|
|
11
11
|
if (bounds === null || paths.length === 0)
|
|
12
12
|
throw new GeometryError("DEGENERATE_GEOMETRY", "The selected font produced no visible glyph outlines.", { operation: "VectorFont.toSvg" });
|
|
13
|
+
// Text uses Y-up coordinates; SVG's viewport uses Y-down coordinates.
|
|
13
14
|
const d = paths
|
|
14
15
|
.map((path) => new SVGPathData(path).transform(SVGPathDataTransformer.MATRIX(1, 0, 0, -1, 0, 0)).encode())
|
|
15
16
|
.join(" ");
|
|
@@ -24,6 +25,8 @@ function serializeVectorText({ paths, metrics }) {
|
|
|
24
25
|
* Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here.
|
|
25
26
|
* Argument and resource failures use GeometryError; parser and decoder exceptions propagate unchanged.
|
|
26
27
|
*
|
|
28
|
+
* @param bytes - Non-empty font bytes, at most 16 MiB; copied before parsing.
|
|
29
|
+
*
|
|
27
30
|
* @example Prepare a label before building geometry
|
|
28
31
|
* ```ts
|
|
29
32
|
* async function prepareLabel(fontBytes: Uint8Array) {
|
|
@@ -251,6 +251,7 @@ function buildLayout(font, fontMetrics, lines, controls) {
|
|
|
251
251
|
const clockwise = direction === "clockwise";
|
|
252
252
|
if (clockwise ? radius + bounds.minY <= 0 : radius - bounds.maxY <= 0)
|
|
253
253
|
fail("Arc glyph outlines cross the circle's center axis. Increase the radius or reduce text size.");
|
|
254
|
+
// Convert baseline arc length to an angle, then rotate the intact glyph group onto its tangent.
|
|
254
255
|
const angleRadians = (centerAngle * Math.PI) / 180 + ((clockwise ? -1 : 1) * groupCenter) / radius;
|
|
255
256
|
const rotationRadians = angleRadians + (clockwise ? -Math.PI / 2 : Math.PI / 2);
|
|
256
257
|
const cosine = Math.cos(rotationRadians);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamesh/modeling",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Scoped solid modeling and pure geometry foundations for Node and browsers.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -27,7 +27,9 @@
|
|
|
27
27
|
"dist/engine/kernel/LICENSE",
|
|
28
28
|
"!dist/geometry-module.js",
|
|
29
29
|
"!dist/modeling-module.js",
|
|
30
|
-
"!dist/mesh-module.js"
|
|
30
|
+
"!dist/mesh-module.js",
|
|
31
|
+
"!dist/math-module.js",
|
|
32
|
+
"!dist/mechanical-module.js"
|
|
31
33
|
],
|
|
32
34
|
"exports": {
|
|
33
35
|
".": {
|
|
@@ -50,23 +52,19 @@
|
|
|
50
52
|
"types": "./dist/api/export.d.ts",
|
|
51
53
|
"import": "./dist/export/index.js"
|
|
52
54
|
},
|
|
53
|
-
"./export/stl": {
|
|
54
|
-
"types": "./dist/api/export-stl.d.ts",
|
|
55
|
-
"import": "./dist/export/stl.js"
|
|
56
|
-
},
|
|
57
|
-
"./export/3mf": {
|
|
58
|
-
"types": "./dist/api/export-3mf.d.ts",
|
|
59
|
-
"import": "./dist/export/3mf.js"
|
|
60
|
-
},
|
|
61
|
-
"./export/glb": {
|
|
62
|
-
"types": "./dist/api/export-glb.d.ts",
|
|
63
|
-
"import": "./dist/export/glb.js"
|
|
64
|
-
},
|
|
65
55
|
"./text": {
|
|
66
56
|
"types": "./dist/api/text.d.ts",
|
|
67
57
|
"import": "./dist/text/index.js"
|
|
68
58
|
},
|
|
69
|
-
"./docs/manifest.json": "./dist/docs/manifest.json"
|
|
59
|
+
"./docs/manifest.json": "./dist/docs/manifest.json",
|
|
60
|
+
"./geometry/math": {
|
|
61
|
+
"types": "./dist/api/math.d.ts",
|
|
62
|
+
"import": "./dist/geometry/math-api.js"
|
|
63
|
+
},
|
|
64
|
+
"./geometry/mechanical": {
|
|
65
|
+
"types": "./dist/api/mechanical.d.ts",
|
|
66
|
+
"import": "./dist/geometry/mechanical-api.js"
|
|
67
|
+
}
|
|
70
68
|
},
|
|
71
69
|
"publishConfig": {
|
|
72
70
|
"access": "public",
|
|
@@ -88,9 +86,9 @@
|
|
|
88
86
|
"fontkit": "^2.0.4",
|
|
89
87
|
"gltf-validator": "2.0.0-dev.3.10",
|
|
90
88
|
"manifold-3d": "3.5.4",
|
|
91
|
-
"rolldown": "1.2.
|
|
89
|
+
"rolldown": "1.2.15",
|
|
92
90
|
"typedoc": "0.28.20",
|
|
93
|
-
"typedoc-plugin-markdown": "4.14.
|
|
91
|
+
"typedoc-plugin-markdown": "4.14.1",
|
|
94
92
|
"typescript": "6.0.3",
|
|
95
93
|
"vitest": "^5.0.5",
|
|
96
94
|
"woff2-encoder": "2.0.0"
|
package/dist/api/export-3mf.d.ts
DELETED
package/dist/api/export-glb.d.ts
DELETED
package/dist/api/export-stl.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# BoxEdge
|
|
2
|
-
|
|
3
|
-
Box edges use +Z top, +Y front and +X right; vertical names list front/back first.
|
|
4
|
-
|
|
5
|
-
**BoxEdge** = `"top-front"` \| `"top-back"` \| `"top-left"` \| `"top-right"` \| `"bottom-front"` \| `"bottom-back"` \| `"bottom-left"` \| `"bottom-right"` \| `"front-left"` \| `"front-right"` \| `"back-left"` \| `"back-right"`
|
|
6
|
-
|
|
7
|
-
## Supported imports
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import type { BoxEdge } from "@metamesh/modeling";
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
```ts
|
|
14
|
-
import type { BoxEdge } from "@metamesh/modeling/geometry";
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Package: `@metamesh/modeling@0.19.0`.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# BoxEdgeSelection
|
|
2
|
-
|
|
3
|
-
Named individual edges or top/bottom rims and all four vertical edges.
|
|
4
|
-
|
|
5
|
-
**BoxEdgeSelection** = [`BoxEdge`](BoxEdge.md) \| `"top"` \| `"bottom"` \| `"vertical"`
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Related APIs
|
|
11
|
-
|
|
12
|
-
- [BoxEdge](BoxEdge.md)
|
|
13
|
-
|
|
14
|
-
## Supported imports
|
|
15
|
-
|
|
16
|
-
```ts
|
|
17
|
-
import type { BoxEdgeSelection } from "@metamesh/modeling";
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
import type { BoxEdgeSelection } from "@metamesh/modeling/geometry";
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Package: `@metamesh/modeling@0.19.0`.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# BoxEdgeTreatments
|
|
2
|
-
|
|
3
|
-
Independent treatments for disjoint named edge selections; overlapping selections fail.
|
|
4
|
-
|
|
5
|
-
**BoxEdgeTreatments** = `Readonly`\<`Partial`\<`Record`\<[`BoxEdgeSelection`](BoxEdgeSelection.md), [`EdgeTreatment`](EdgeTreatment.md)\>\>\>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Related APIs
|
|
11
|
-
|
|
12
|
-
- [BoxEdgeSelection](BoxEdgeSelection.md)
|
|
13
|
-
- [EdgeTreatment](EdgeTreatment.md)
|
|
14
|
-
|
|
15
|
-
## Supported imports
|
|
16
|
-
|
|
17
|
-
```ts
|
|
18
|
-
import type { BoxEdgeTreatments } from "@metamesh/modeling";
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
```ts
|
|
22
|
-
import type { BoxEdgeTreatments } from "@metamesh/modeling/geometry";
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Package: `@metamesh/modeling@0.19.0`.
|