@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
|
@@ -1,103 +1,81 @@
|
|
|
1
|
-
# Choose geometry
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Choose
|
|
6
|
-
material
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
`
|
|
28
|
-
without an engine, then reuse ordinary recipes across sessions. Explicit resolution settings
|
|
29
|
-
stay with the recipe; omitted settings use the evaluating host's defaults. The host manages
|
|
30
|
-
evaluation caches and native kernel values.
|
|
31
|
-
|
|
32
|
-
Calling `shape.components()` reads evaluated geometry. Its selected shapes, and recipes using them,
|
|
33
|
-
can only be evaluated in their original session because the selection depends on that session's
|
|
34
|
-
evaluated topology.
|
|
35
|
-
|
|
36
|
-
Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
|
|
37
|
-
contour factories such as `circleContour` and `rectangleContour` when custom calculations or
|
|
38
|
-
meshing need point data. These rectangle factories share size, center, corner treatment, and
|
|
39
|
-
sampling options:
|
|
40
|
-
|
|
41
|
-
| You need | Choose | Result |
|
|
42
|
-
| ------------------------------------------------- | --------------------------------------------------------------- | --------- |
|
|
43
|
-
| Filled material for Booleans or extrusion | [`rectangle`](../reference/model/rectangle.md) | `Section` |
|
|
44
|
-
| Sampled boundary coordinates | [`rectangleContour`](../reference/geometry/rectangleContour.md) | `Contour` |
|
|
45
|
-
| Stable edge and corner identities across stations | [`rectangleProfile`](../reference/geometry/rectangleProfile.md) | `Profile` |
|
|
46
|
-
|
|
47
|
-
[`polygon`](../reference/model/polygon.md) fills boundaries in four forms:
|
|
1
|
+
# Choose geometry representations
|
|
2
|
+
|
|
3
|
+
Move between filled shapes, paths, profiles, fluent values, and plain data without losing information.
|
|
4
|
+
|
|
5
|
+
Choose the representation that retains the information your next operation needs. A Section
|
|
6
|
+
retains filled material, a path retains traversal and closure, and an identified Profile retains
|
|
7
|
+
landmarks that can correspond across changing cross sections.
|
|
8
|
+
|
|
9
|
+
For ordinary parts, start with Sections and Solids. Use the other representations when a
|
|
10
|
+
calculation or construction needs their extra information.
|
|
11
|
+
|
|
12
|
+
## Material, boundaries, and matching profiles
|
|
13
|
+
|
|
14
|
+
| You need | Choose | Example or next step |
|
|
15
|
+
| ------------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
16
|
+
| Filled 2D material for Booleans or extrusion | `Section` | [`rectangle({ size: [30, 20] })`](../reference/model/rectangle.md) |
|
|
17
|
+
| Filled 3D material for a finished part | `Solid` | [`box({ size: [30, 20, 6] })`](../reference/model/box.md) |
|
|
18
|
+
| One closed boundary as sampled coordinates | `Contour` | [`rectangleContour({ size: [30, 20] })`](../reference/geometry/rectangleContour.md) |
|
|
19
|
+
| Ordered samples with explicit closure and queries | `Path2` or `Path3` | [Path queries and round trips](#keep-path-closure-and-traversal) |
|
|
20
|
+
| Stable corners, seams, or holes across stations | `Profile`, then `CorrespondingProfile` | [Sweeps and lofts](sweeps-and-lofts.md#matched-section-loft) |
|
|
21
|
+
| Triangle buffers for a renderer or algorithm | `TriangleMesh` | [Mesh API](../reference/mesh.md) |
|
|
22
|
+
|
|
23
|
+
A `Contour` does not repeat its first point at the end. `PolygonData` stores an exterior and its
|
|
24
|
+
holes; `RegionData` stores a collection of filled polygons. These are plain coordinate data,
|
|
25
|
+
while a Section describes filled geometry that can be combined and evaluated.
|
|
26
|
+
|
|
27
|
+
[`polygon`](../reference/model/polygon.md) captures those boundaries as a Section:
|
|
48
28
|
|
|
49
29
|
- `polygon(points)` fills one contour.
|
|
50
30
|
- `polygon({ outer, holes })` validates exterior/hole topology and normalizes winding.
|
|
51
|
-
- `polygon({ contours, fillRule })` resolves compound paths
|
|
31
|
+
- `polygon({ contours, fillRule })` resolves compound paths, using `"nonzero"` by default or
|
|
52
32
|
explicit `"evenodd"` fill.
|
|
53
33
|
- `polygon({ polygons: data })` accepts existing `RegionData`.
|
|
54
34
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
stations or a sweep need holes, seams, or landmarks beyond ordinary primitives.
|
|
35
|
+
For a straightforward plate, subtract holes from a Section and extrude it. Use
|
|
36
|
+
[`rectangleProfile`](../reference/geometry/rectangleProfile.md) and
|
|
37
|
+
[`matchProfiles`](../reference/geometry/matchProfiles.md) when related stations need explicit
|
|
38
|
+
correspondence. Profile IDs identify components, contours, and spans; matching preserves those
|
|
39
|
+
landmarks while preparing a shared sampling grid. See the
|
|
40
|
+
[loft guide](sweeps-and-lofts.md#matched-section-loft) for the topology requirements.
|
|
62
41
|
|
|
63
|
-
|
|
64
|
-
[`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
|
|
65
|
-
grid; physical sampling refines every member before choosing the family count. Collapsed spans
|
|
66
|
-
retain repeated logical slots, while the completed loft removes degenerate faces.
|
|
42
|
+
## Fluent values, plain data, and descriptors
|
|
67
43
|
|
|
68
|
-
|
|
44
|
+
Import geometric values from `@metamesh/modeling/geometry`. They provide immutable methods for
|
|
45
|
+
calculations and placement:
|
|
69
46
|
|
|
70
|
-
|
|
47
|
+
| Value | Plain representation | Useful operations |
|
|
48
|
+
| --------------------------- | --------------------------------------------------------- | --------------------------------------------------------- |
|
|
49
|
+
| `Vector2` / `Vector3` | `Vector2Data` / `Vector3Data`: coordinate tuples | Arithmetic, normalization, distance, projection |
|
|
50
|
+
| `Transform2` / `Transform3` | `Transform2Data` / `Transform3Data`: canonical matrices | Composition, inversion, point/direction/normal transforms |
|
|
51
|
+
| `Bounds2` / `Bounds3` | `Bounds2Data` / `Bounds3Data`: min/max records | Size, center, containment |
|
|
52
|
+
| `Path2` / `Path3` | `Path2Data` / `Path3Data`: points, dimension, and closure | Length, closest point, transformation, resampling |
|
|
71
53
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
| `Section` | `section.toRegionData()` | Observes evaluated geometry inside a host execution |
|
|
76
|
-
| `Profile` | `matchProfiles(...)` | Pure matching retains identified boundaries and landmarks |
|
|
77
|
-
| Closed `Path2` / `Contour` | `mesh.extrude(...)` to `TriangleMesh` | Pure mesh construction; no `ends` treatments |
|
|
78
|
-
| `TriangleMesh` | `solidFromMesh(...)` to `Solid` | Captures a recipe; native validation happens during evaluation |
|
|
79
|
-
| `Solid` / `TriangleMesh` | `part(...)`, then an engine run to `ModelPart` | Host finalizes durable immutable manufacturing buffers |
|
|
80
|
-
| `ModelPart` | Pass directly to mesh analysis or `export3mf` | No live session needed; use buffer `copy()` before mutation |
|
|
54
|
+
`toData()` returns a stable, deeply frozen plain representation. The matching factory accepts
|
|
55
|
+
that data again. An `Input` type describes the values, data, and construction shorthand accepted
|
|
56
|
+
by a particular operation; check its contract when crossing representations.
|
|
81
57
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
58
|
+
Value queries return matching fluent values: a bound's `min`, `max`, `center()`, and `size()` are
|
|
59
|
+
vectors; a path's `bounds()` is a bounds value, or `undefined` when the path is empty.
|
|
60
|
+
Inspection reports, serialized regions, mesh measurements, and engine snapshots use plain data.
|
|
61
|
+
Wrap that data with `bounds3(...)` or another matching factory when you need fluent queries.
|
|
85
62
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
[`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
|
|
63
|
+
Not every factory creates a fluent value. `Frame3` and `Anchor3` are validated, frozen plain
|
|
64
|
+
geometric descriptors. A Profile describes identified geometry; a Section or Solid describes a
|
|
65
|
+
modeling recipe. They keep names that describe their role rather than adopting `Data` merely
|
|
66
|
+
because they are records.
|
|
91
67
|
|
|
92
|
-
###
|
|
68
|
+
### Choose arithmetic for the job
|
|
93
69
|
|
|
94
|
-
|
|
70
|
+
Methods make ordinary calculations easy to follow. Tuple kernels from
|
|
71
|
+
[`@metamesh/modeling/geometry/math`](../reference/math.md) are useful when processing coordinate
|
|
72
|
+
arrays or interoperating with another numerical system:
|
|
95
73
|
|
|
96
74
|
|
|
97
75
|
|
|
98
76
|
```ts
|
|
99
|
-
import { vector3 } from "@metamesh/modeling";
|
|
100
|
-
import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry";
|
|
77
|
+
import { vector3 } from "@metamesh/modeling/geometry";
|
|
78
|
+
import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry/math";
|
|
101
79
|
|
|
102
80
|
export const fluentDirection = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
103
81
|
export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10);
|
|
@@ -106,41 +84,96 @@ export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10)
|
|
|
106
84
|
|
|
107
85
|
|
|
108
86
|
|
|
109
|
-
Fluent vectors validate finite inputs and results
|
|
110
|
-
arithmetic such as `add3`
|
|
111
|
-
nonfinite results. Individual kernels document additional checks, such as
|
|
112
|
-
in `normalize3`.
|
|
87
|
+
Both examples calculate the same direction. Fluent vectors validate finite inputs and results
|
|
88
|
+
and allocate immutable values. Basic tuple arithmetic such as `add3` assumes valid inputs;
|
|
89
|
+
overflow can produce nonfinite results. Individual kernels document additional checks, such as
|
|
90
|
+
zero-length rejection in `normalize3`.
|
|
91
|
+
|
|
92
|
+
Use a value's methods for composition and common queries, including
|
|
93
|
+
`vector3(...).projectOntoPlane(normal)`. Specialized algorithms such as
|
|
94
|
+
[`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md) and
|
|
95
|
+
[`mesh.sweep`](../reference/mesh/sweep.md) remain standalone functions.
|
|
96
|
+
|
|
97
|
+
## Frames, anchors, and transforms
|
|
98
|
+
|
|
99
|
+
Choose a frame when the origin and orthonormal axes express your datum. Choose a transform when
|
|
100
|
+
you need to compose placement or include affine deformation:
|
|
101
|
+
|
|
102
|
+
| Known information | Construction |
|
|
103
|
+
| ------------------------------- | ------------------------------------------------------- |
|
|
104
|
+
| Rotation, translation, or scale | `transform3().rotate([0, 0, 45]).translate([0, 0, 30])` |
|
|
105
|
+
| An existing canonical matrix | `transform3(matrix)` |
|
|
106
|
+
| An origin and coordinate axes | `frame3({ origin, xAxis, yAxis, zAxis })` |
|
|
107
|
+
| A mating position and direction | `anchor3({ position, direction, up })` |
|
|
108
|
+
|
|
109
|
+
[`frame3`](../reference/geometry/frame3.md) copies and deeply freezes its record and coordinate
|
|
110
|
+
tuples. Origins use millimetres; axes must form a right-handed orthonormal basis. Only accepted
|
|
111
|
+
numerical roundoff is normalized. Scaled, skewed, or left-handed bases reject.
|
|
112
|
+
|
|
113
|
+
`transform3(frame)` provides affine methods for a frame. `Transform3Input` accepts `Frame3`, a
|
|
114
|
+
fluent `Transform3`, or canonical matrix data. Pass those inputs directly to compatible shapes,
|
|
115
|
+
loft stations, sweeps, and parts. Final part placement permits translation and proper rotation;
|
|
116
|
+
geometry operations also accept affine deformation. Helpers such as `gridPatternTransforms` and
|
|
117
|
+
`attachmentTransform3` return fluent transforms that can be passed on directly.
|
|
118
|
+
|
|
119
|
+
Use `transform3(frame).toData()` when a numerical algorithm needs matrix coefficients. Obtain
|
|
120
|
+
that data once per station, rather than allocating a fluent result for each point. Freezing a
|
|
121
|
+
frame does not freeze a containing Profile or array; prepare those inputs separately before
|
|
122
|
+
using them as memo arguments.
|
|
123
|
+
|
|
124
|
+
The [placement guide](transforms-and-placement.md) covers composition order, pivots,
|
|
125
|
+
normal transforms, patterns, and attachment.
|
|
126
|
+
|
|
127
|
+
## Keep path closure and traversal
|
|
128
|
+
|
|
129
|
+
Use `path2(points, { closed: true })` or `path3(points, { closed: true })` when closure is part of
|
|
130
|
+
the geometry. `length()` includes the closing edge, without a repeated endpoint.
|
|
131
|
+
|
|
113
132
|
|
|
114
|
-
## Value and data naming
|
|
115
133
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
representation, and its factory accepts that data again. `Input` types describe accepted values,
|
|
120
|
-
data, and any supported construction shorthand.
|
|
134
|
+
```ts
|
|
135
|
+
// Both paths include the closing edge and have length 40 mm.
|
|
136
|
+
```
|
|
121
137
|
|
|
122
|
-
Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
|
|
123
|
-
and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
|
|
124
|
-
when a numerical algorithm needs only coordinates; keep the full record when closure matters too.
|
|
125
|
-
Options, reports, geometry descriptors, and recipes keep their own descriptive names. Use
|
|
126
|
-
`toMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a triangle mesh
|
|
127
|
-
or a Section as a region.
|
|
128
138
|
|
|
129
|
-
## Query paths and preserve closure
|
|
130
139
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
returns a [`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
|
|
140
|
+
[`closestPoint`](../reference/geometry/Path3-type.md#closestpoint) returns a
|
|
141
|
+
[`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
|
|
134
142
|
millimetres, `edgeIndex`, and clamped `fraction` within that edge. Equal-distance ties select the
|
|
135
|
-
first edge in traversal order.
|
|
136
|
-
curve parameter.
|
|
143
|
+
first edge in traversal order. That fraction is local to an edge; it is not a whole-path or
|
|
144
|
+
analytic-curve parameter.
|
|
145
|
+
|
|
146
|
+
Keep the complete `toData()` record when restoring a path: it contains `dimension`, `points`, and
|
|
147
|
+
`closed`. Use `path.toData().points` only when the receiving algorithm needs coordinates alone.
|
|
148
|
+
Open paths may be empty; their bounds are `undefined`, and nearest-edge queries require at least
|
|
149
|
+
two vertices. Queries measure the sampled boundary, not a filled interior or underlying curve.
|
|
150
|
+
|
|
151
|
+
Chain `transform`, `reverse`, and equal-distance `resample` to produce new paths. Reflection
|
|
152
|
+
preserves traversal order. `polygon(path)` requires a closed planar path and establishes
|
|
153
|
+
exterior/hole winding. Stroke, sweep, and path-pattern operations accept paths in their matching
|
|
154
|
+
dimension. Authored point collections accept fluent vectors or tuples; serialized data uses tuples.
|
|
155
|
+
|
|
156
|
+
Use `atDistance(distance)` to query an offset in model units, or `atFraction(fraction)` for progress
|
|
157
|
+
from zero to one measured by arc length. Both return a `PathStation` with a fluent point and unit
|
|
158
|
+
tangent, the arc-length `offset`, and the original edge index and local fraction. Zero-length edges
|
|
159
|
+
are skipped. Exact interior vertices use their outgoing edge; an open final endpoint uses its
|
|
160
|
+
incoming edge. A closed path's full length selects its outgoing seam. Path distribution and tangent
|
|
161
|
+
patterns follow the same convention. Out-of-range queries and paths with no usable edge reject.
|
|
162
|
+
|
|
163
|
+
`splitAt(distance)` cuts strictly inside one traversal and returns two open paths. `trim(start, end)`
|
|
164
|
+
extracts a strictly increasing range within that traversal as an open path. Both retain original
|
|
165
|
+
interior vertices and use the authored seam for closed paths. Trimming a complete closed traversal
|
|
166
|
+
returns an open path with its first point repeated at the end.
|
|
137
167
|
|
|
138
|
-
|
|
168
|
+
Use `subdivide({ maxSegmentLength })` to refine each edge while retaining every original vertex.
|
|
169
|
+
Equal-distance `resample` can bridge corners; subdivision preserves them. Both enforce their
|
|
170
|
+
selected sampling ceilings without reducing requested detail. A resampling count that would repeat
|
|
171
|
+
a closed seam rejects rather than returning invalid path data.
|
|
139
172
|
|
|
140
173
|
|
|
141
174
|
|
|
142
175
|
```ts
|
|
143
|
-
import { path3 } from "@metamesh/modeling";
|
|
176
|
+
import { path2, path3, spline2 } from "@metamesh/modeling/geometry";
|
|
144
177
|
|
|
145
178
|
export const boundary = path3(
|
|
146
179
|
[
|
|
@@ -154,40 +187,65 @@ export const boundary = path3(
|
|
|
154
187
|
export const nearest = boundary.closestPoint([-2, 5, 0]);
|
|
155
188
|
// point: [0, 5, 0], distance: 2, edgeIndex: 3, fraction: 0.5
|
|
156
189
|
export const restoredPath = path3(boundary.toData());
|
|
157
|
-
// Both paths include the closing edge and have length 40 mm.
|
|
158
|
-
```
|
|
159
190
|
|
|
191
|
+
export const trajectory = path2(
|
|
192
|
+
[
|
|
193
|
+
[0, 0],
|
|
194
|
+
[10, 0],
|
|
195
|
+
[10, 10],
|
|
196
|
+
[0, 10],
|
|
197
|
+
],
|
|
198
|
+
{ closed: true }
|
|
199
|
+
);
|
|
200
|
+
export const atCorner = trajectory.atDistance(10);
|
|
201
|
+
// The outgoing tangent is [0, 1]; offset is 10 mm.
|
|
202
|
+
export const middle = trajectory.atFraction(0.5);
|
|
203
|
+
export const pieces = trajectory.splitAt(15);
|
|
204
|
+
export const trimmed = trajectory.trim(5, 25);
|
|
205
|
+
export const refined = trajectory.subdivide({ maxSegmentLength: 2 });
|
|
206
|
+
// Each original edge is subdivided independently, preserving all four corners.
|
|
207
|
+
export const smoothRoute = spline2(
|
|
208
|
+
[
|
|
209
|
+
[0, 0],
|
|
210
|
+
[10, 8],
|
|
211
|
+
[25, 0],
|
|
212
|
+
],
|
|
213
|
+
{
|
|
214
|
+
resolution: { maxChordError: 0.02, maxSegmentLength: 2 },
|
|
215
|
+
}
|
|
216
|
+
);
|
|
217
|
+
```
|
|
160
218
|
|
|
161
219
|
|
|
162
|
-
`toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
|
|
163
|
-
value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
|
|
164
|
-
Don't repeat the endpoint of a closed path. Open paths may be empty; their bounds are `undefined`,
|
|
165
|
-
and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
|
|
166
|
-
not a filled interior or underlying analytic curve.
|
|
167
220
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
221
|
+
`spline2` and `spline3` interpolate waypoints with a centripetal Catmull–Rom spline and return
|
|
222
|
+
sampled path values. Open endpoints use one-sided secants; closed paths are periodic. Consecutive
|
|
223
|
+
duplicate waypoints and repeated closed endpoints reject. The default physical sampling policy
|
|
224
|
+
bounds every cubic span. Use `segmentsPerSpan` only when exact parameter intervals are required;
|
|
225
|
+
it overrides physical sampling. All waypoints remain in the sampled result, and one aggregate
|
|
226
|
+
point ceiling bounds the complete path.
|
|
172
227
|
|
|
173
|
-
##
|
|
228
|
+
## Cross the evaluation boundary deliberately
|
|
174
229
|
|
|
175
|
-
|
|
176
|
-
|
|
230
|
+
| From | Conversion | What happens |
|
|
231
|
+
| -------------------------- | ------------------------------------------- | --------------------------------------------------------------- |
|
|
232
|
+
| `Contour` / `RegionData` | `polygon(...)` to `Section` | Captures a recipe without an engine |
|
|
233
|
+
| `Profile` family | `matchProfiles(...)` | Pure matching retains identified landmarks |
|
|
234
|
+
| Closed `Path2` / `Contour` | `mesh.extrude(...)` to `TriangleMesh` | Constructs buffers without an engine |
|
|
235
|
+
| `TriangleMesh` | `solidFromMesh(...)` to `Solid` | Captures a recipe; native validation occurs during evaluation |
|
|
236
|
+
| `Section` | `section.toRegionData()` | Reads filled geometry during synchronous generation |
|
|
237
|
+
| `Solid` | `solid.toMesh()` | Copies evaluated triangle buffers during synchronous generation |
|
|
238
|
+
| `Solid` / `TriangleMesh` | `part(...)`, then a host run to `ModelPart` | Finalizes durable immutable buffers |
|
|
239
|
+
| `ModelPart` | Mesh analysis or export | Uses completed data without a live session |
|
|
177
240
|
|
|
178
|
-
|
|
179
|
-
`
|
|
180
|
-
|
|
181
|
-
`sweep` accept `Section | CorrespondingProfile`, so reusable profile functions can use either input
|
|
182
|
-
without branching. Both forms use the same operation contracts. Use `mesh.extrude(contour, options)`
|
|
183
|
-
when constructing triangle buffers directly.
|
|
241
|
+
Pure mesh extrusion supports height, centering, twist, top scale, and sampling. Native
|
|
242
|
+
`Section.extrude` also supports `ends` treatments. Passing `ends` to `mesh.extrude` rejects; it does
|
|
243
|
+
not silently return unfinished geometry.
|
|
184
244
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
Collection `union(shapes)` and `intersect(shapes)` combine peers and require at least one shape.
|
|
189
|
-
`section.offset(distance, options)` stays in the filled XY plane.
|
|
245
|
+
Ordinary recipes can be reused across sessions. `shape.components()` is different: it selects
|
|
246
|
+
evaluated topology, so the selected shapes and recipes that use them can only be evaluated in
|
|
247
|
+
their original session. The host owns evaluation caches and native resources.
|
|
190
248
|
|
|
191
|
-
For
|
|
192
|
-
[
|
|
193
|
-
[
|
|
249
|
+
For completed immutable buffers, use `copy()` when you need mutable storage. Read
|
|
250
|
+
[resolution and inspection](resolution-and-inspection.md#lifecycle-and-inspection) for
|
|
251
|
+
shape observations and [Engine hosting](hosting.md) for finalization and export.
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# Run Modeling in your application
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Initialize Modeling, run a program, and manage sessions and completed results in your application.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Start with one engine and one model run. Use this guide for host setup, synchronous execution,
|
|
6
|
+
session lifetime, and resource limits. For terminal commands, use the [CLI](https://metamesh.studio/docs/develop/cli).
|
|
7
|
+
|
|
8
|
+
Install Modeling in your Node application or browser Worker project:
|
|
7
9
|
|
|
8
10
|
```bash
|
|
9
11
|
pnpm add @metamesh/modeling
|
|
@@ -26,7 +28,7 @@ This complete function returns the 3MF bytes for a plate with a hole:
|
|
|
26
28
|
```ts
|
|
27
29
|
import { box, cylinder, generate } from "@metamesh/modeling";
|
|
28
30
|
import { createModelEngine } from "@metamesh/modeling/engine";
|
|
29
|
-
import { export3mf } from "@metamesh/modeling/export
|
|
31
|
+
import { export3mf } from "@metamesh/modeling/export";
|
|
30
32
|
|
|
31
33
|
export async function makePlate3mf(): Promise<Uint8Array> {
|
|
32
34
|
const engine = await createModelEngine();
|
|
@@ -35,7 +37,7 @@ export async function makePlate3mf(): Promise<Uint8Array> {
|
|
|
35
37
|
const plate = box({ size: [30, 20, 6] });
|
|
36
38
|
// Extend the cutter beyond both faces to avoid coincident Boolean surfaces.
|
|
37
39
|
const bore = cylinder({ radius: 3, height: 8, sizing: "face" });
|
|
38
|
-
return
|
|
40
|
+
return part("plate", plate.subtract(bore));
|
|
39
41
|
})
|
|
40
42
|
);
|
|
41
43
|
return (await export3mf(model.parts, { name: "Plate" })).bytes;
|
|
@@ -59,6 +61,40 @@ or throws an error listing the available IDs. IDs match exactly. Keep using the
|
|
|
59
61
|
array for iteration, export, and assertions about output order; use `model.parts.find(...)` when
|
|
60
62
|
absence is expected.
|
|
61
63
|
|
|
64
|
+
## Reuse a session across edits
|
|
65
|
+
|
|
66
|
+
Use `engine.run()` for independent one-off builds. Create a session when edits should reuse memoized
|
|
67
|
+
geometry. Dispose it in `finally` when the editing workflow ends:
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
import { box, generate } from "@metamesh/modeling";
|
|
73
|
+
import { createModelEngine, type ModelResult } from "@metamesh/modeling/engine";
|
|
74
|
+
|
|
75
|
+
const plate = generate<{ readonly width: number }>(({ params, part }) =>
|
|
76
|
+
part("plate", box({ size: [params.width, 20, 6] }))
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
export async function buildPlateRevisions(): Promise<readonly ModelResult[]> {
|
|
80
|
+
const engine = await createModelEngine();
|
|
81
|
+
const session = engine.createSession(plate);
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
const initial = session.run({ width: 30 });
|
|
85
|
+
const wider = session.run({ width: 40 });
|
|
86
|
+
return [initial, wider];
|
|
87
|
+
} finally {
|
|
88
|
+
session.dispose();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
Both returned results remain usable after cleanup. An application can keep its session open for
|
|
96
|
+
the editing lifetime instead; the `finally` block shows where that owner releases it.
|
|
97
|
+
|
|
62
98
|
## Keep execution synchronous
|
|
63
99
|
|
|
64
100
|
Load fonts and other assets before generation, and supply any synchronous services when creating
|
|
@@ -99,66 +135,17 @@ geometry. Both return diagnostics; unexpected authoring and geometry errors stil
|
|
|
99
135
|
| `session.check` | Declarations, assertions, and reached geometry observations | Returned parts are not all evaluated or finalized |
|
|
100
136
|
| `engine.run` / `session.run` | The model and every returned part | Finalizes output under the selected topology, mesh-validation, resolution, and resource policy |
|
|
101
137
|
|
|
102
|
-
A successful check does not evaluate every deferred recipe. For example, an invalid dimension in a
|
|
103
|
-
returned shape may fail only during `run()`. Run representative valid inputs to verify finalized
|
|
104
|
-
geometry. Programs accepting an empty parameter map allow both `session.check()` and `session.run()`.
|
|
105
|
-
For example, checking a returned `box({ size: -1 })` can succeed while running it throws.
|
|
106
|
-
|
|
107
|
-
## Load WASM in a browser Worker
|
|
108
138
|
|
|
109
|
-
The package includes its matching JS/WASM kernel. Node and unbundled browser modules resolve the
|
|
110
|
-
installed WASM asset automatically. A browser bundler must retain or emit that relative asset;
|
|
111
|
-
[`modelingWasmUrl`](../reference/engine/modelingWasmUrl.md) can supply the emitted URL through
|
|
112
|
-
`createModelEngine({ wasmUrl: modelingWasmUrl })`.
|
|
113
139
|
|
|
114
|
-
|
|
115
|
-
Transfer copies of completed buffers that you own; transferring cache backing storage would
|
|
116
|
-
detach it. Native handles stay inside their engine.
|
|
140
|
+
**Run the parts you intend to ship**
|
|
117
141
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
`PartDeliveryDecoder` from `@metamesh/generator-sdk/runtime` hydrates later resource references:
|
|
142
|
+
A successful check does not evaluate every deferred recipe. Invalid dimensions in a returned shape
|
|
143
|
+
can fail only during `run()`. Execute representative inputs to verify finalized geometry.
|
|
121
144
|
|
|
122
145
|
|
|
123
146
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// eslint-disable-next-line no-restricted-imports -- Host documentation snippet; Web only displays this code.
|
|
127
|
-
import { PartDeliveryDecoder } from "@metamesh/generator-sdk/runtime";
|
|
128
|
-
import { type ModelResult } from "@metamesh/modeling/engine";
|
|
129
|
-
import { export3mf } from "@metamesh/modeling/export/3mf";
|
|
130
|
-
|
|
131
|
-
export async function transferAndExport(model: ModelResult): Promise<Uint8Array> {
|
|
132
|
-
const encoder = new ModelDeliveryEncoder("preview");
|
|
133
|
-
const delivery = encoder.encode(model, {
|
|
134
|
-
revisionId: "preview-1",
|
|
135
|
-
requestId: 1,
|
|
136
|
-
bounds: model.bounds,
|
|
137
|
-
warnings: model.diagnostics,
|
|
138
|
-
});
|
|
139
|
-
const buffers = delivery.parts.flatMap(({ geometry }) =>
|
|
140
|
-
geometry.positions === undefined ? [] : [geometry.positions.buffer, geometry.indices!.buffer]
|
|
141
|
-
);
|
|
142
|
-
// This clone exercises the same ownership transfer as worker.postMessage(delivery, buffers).
|
|
143
|
-
const received = structuredClone(delivery, { transfer: buffers });
|
|
144
|
-
const decoder = new PartDeliveryDecoder({
|
|
145
|
-
maxParts: 64,
|
|
146
|
-
maxVertices: 1_000_000,
|
|
147
|
-
maxTriangles: 2_000_000,
|
|
148
|
-
maxBytes: 96 * 1024 * 1024,
|
|
149
|
-
});
|
|
150
|
-
const parts = decoder.decode(received.parts);
|
|
151
|
-
return (await export3mf(parts, { name: "Transferred model" })).bytes;
|
|
152
|
-
}
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
Keep one encoder and decoder per ordered connection. Clear both when the receiver is replaced.
|
|
158
|
-
Decoded parts contain **local** buffers under `geometry`, plus world placement. Keep these received
|
|
159
|
-
buffers immutable and attached. Pass decoded parts directly to the shared exporters. They read
|
|
160
|
-
local geometry and apply each part's placement once, preserving shared resources where the format
|
|
161
|
-
permits it. Engine `ModelResult.parts` use that same export contract.
|
|
147
|
+
Programs accepting an empty parameter map allow both `session.check()` and `session.run()`.
|
|
148
|
+
For example, checking a returned `box({ size: -1 })` can succeed while running it throws.
|
|
162
149
|
|
|
163
150
|
## Set resource limits
|
|
164
151
|
|
|
@@ -166,40 +153,8 @@ permits it. Engine `ModelResult.parts` use that same export contract.
|
|
|
166
153
|
Individual runs and sessions may lower those ceilings. Requests that exceed a selected sampling or output
|
|
167
154
|
budget fail explicitly; the engine does not silently reduce modeling fidelity.
|
|
168
155
|
|
|
169
|
-
##
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
No engine or renderer is required, and export never reruns the model.
|
|
175
|
-
|
|
176
|
-
The result contains `bytes: Uint8Array`, `mediaType`, `extension`, `byteLength`, and structured
|
|
177
|
-
`diagnostics`. The host chooses the filename and saves or downloads the bytes. Resolve selected
|
|
178
|
-
parts and appearance overrides before exporting so the file belongs to one captured revision.
|
|
179
|
-
|
|
180
|
-
Inputs use millimetres and Z-up coordinates. 3MF retains those units; GLB converts to metres and
|
|
181
|
-
Y-up. Binary STL writes placed triangles and reports dropped appearance, material assignments,
|
|
182
|
-
and part names. GLB preserves named parts, shared geometry, placement, and crease-aware shading.
|
|
183
|
-
Export preserves the supplied physical sampling; no writer silently simplifies geometry.
|
|
184
|
-
|
|
185
|
-
Use explicit `materialId` values with `options.materials` when material identity matters. Two
|
|
186
|
-
materials may share the same RGB value and remain distinct. Per-part display color overrides do
|
|
187
|
-
not change the selected material identity. 3MF carries portable material names and standard
|
|
188
|
-
Materials-extension color groups separately; assigned parts combine those properties with
|
|
189
|
-
`multiproperties`. Slicer support for those properties varies, and this metadata does not select a
|
|
190
|
-
filament or physical tray. Full slicer projects, printer/process presets, and device/filament mapping
|
|
191
|
-
require a separate application adapter.
|
|
192
|
-
|
|
193
|
-
Exports have their own input and output ceilings through `options.limits`; they do not inherit an
|
|
194
|
-
engine's policy. `meshValidation: "solid"` requests the bounded geometric checks in addition to
|
|
195
|
-
the format's structural requirements. Pass an `AbortSignal` to cancel bounded work.
|
|
196
|
-
|
|
197
|
-
For large output, `write3mf(parts, sink, options)`, `writeStl`, and `writeGlb` await each sink write
|
|
198
|
-
before continuing and return metadata and diagnostics without collecting the complete output.
|
|
199
|
-
Browser applications own Worker execution; an async function alone does not move CPU work off
|
|
200
|
-
the UI thread. Format entry points isolate runtime loading, while npm installs the containing
|
|
201
|
-
package's dependencies together.
|
|
202
|
-
|
|
203
|
-
Use the [Export API reference](../reference/export.md) for serialization options,
|
|
204
|
-
the [Engine API reference](../reference/engine.md) for execution, and
|
|
205
|
-
[Modeling guides](https://metamesh.studio/docs/modeling) to choose geometry operations.
|
|
156
|
+
## Continue with delivery
|
|
157
|
+
|
|
158
|
+
Run your browser host in a [Worker](workers.md) to keep generation off the UI
|
|
159
|
+
thread. [Export the completed parts](exporting.md) when your application needs 3MF, STL,
|
|
160
|
+
or GLB bytes. Those steps consume the result; they do not rerun the model.
|