@metamesh/modeling 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +186 -0
- package/README.md +147 -157
- package/dist/api/engine.d.ts +106 -83
- package/dist/api/export-3mf.d.ts +2 -0
- package/dist/api/export-glb.d.ts +2 -0
- package/dist/api/export-stl.d.ts +2 -0
- package/dist/api/export.d.ts +160 -0
- package/dist/api/geometry.d.ts +250 -461
- package/dist/api/index.d.ts +470 -445
- package/dist/api/mesh.d.ts +489 -0
- package/dist/api/text.d.ts +1 -1
- package/dist/docs/guides/concepts.md +32 -495
- package/dist/docs/guides/fonts.md +14 -13
- package/dist/docs/guides/fundamentals.md +30 -29
- package/dist/docs/guides/generation.md +84 -64
- package/dist/docs/guides/geometry-values.md +193 -0
- package/dist/docs/guides/hosting.md +147 -48
- package/dist/docs/guides/profiles-and-extrusion.md +252 -0
- package/dist/docs/guides/recipes.md +33 -769
- package/dist/docs/guides/resolution-and-inspection.md +133 -0
- package/dist/docs/guides/solid-joins.md +126 -0
- package/dist/docs/guides/standalone-model.md +8 -7
- package/dist/docs/guides/svg-and-text.md +215 -0
- package/dist/docs/guides/sweeps-and-lofts.md +179 -0
- package/dist/docs/guides/transforms-and-placement.md +313 -0
- package/dist/docs/manifest.json +3224 -4430
- package/dist/docs/reference/engine/GenerationOptions.md +12 -5
- package/dist/docs/reference/engine/GeometryResource.md +19 -13
- package/dist/docs/reference/engine/ModelDependencies.md +9 -3
- package/dist/docs/reference/engine/ModelEngine.md +33 -24
- package/dist/docs/reference/engine/ModelEngineOptions.md +13 -2
- package/dist/docs/reference/engine/ModelPart.md +114 -0
- package/dist/docs/reference/engine/ModelResult.md +181 -0
- package/dist/docs/reference/engine/ModelRunArguments.md +34 -0
- package/dist/docs/reference/engine/ModelRunOptions.md +110 -0
- package/dist/docs/reference/engine/ModelSession.md +22 -16
- package/dist/docs/reference/engine/SessionOptions.md +21 -10
- package/dist/docs/reference/engine/categories/host-lifecycle.md +20 -15
- package/dist/docs/reference/engine/checkModel.md +49 -0
- package/dist/docs/reference/engine/createModelEngine.md +11 -13
- package/dist/docs/reference/engine/defaultModelingLimits.md +15 -2
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
- package/dist/docs/reference/engine.md +8 -15
- package/dist/docs/reference/export/Export3mfOptions.md +24 -0
- package/dist/docs/reference/export/ExportDiagnostic.md +59 -0
- package/dist/docs/reference/export/ExportFormat.md +25 -0
- package/dist/docs/reference/export/ExportGeometry.md +39 -0
- package/dist/docs/reference/export/ExportGlbOptions.md +118 -0
- package/dist/docs/reference/export/ExportLimits.md +83 -0
- package/dist/docs/reference/export/ExportMaterial.md +47 -0
- package/dist/docs/reference/export/ExportOptions.md +94 -0
- package/dist/docs/reference/export/ExportPart.md +88 -0
- package/dist/docs/reference/export/ExportReport.md +82 -0
- package/dist/docs/reference/export/ExportSink.md +39 -0
- package/dist/docs/reference/export/ExportStlOptions.md +24 -0
- package/dist/docs/reference/export/ExportedFile.md +110 -0
- package/dist/docs/reference/export/categories/mesh-serialization.md +47 -0
- package/dist/docs/reference/export/defaultExportLimits.md +20 -0
- package/dist/docs/reference/export/export3mf.md +64 -0
- package/dist/docs/reference/export/exportGlb.md +68 -0
- package/dist/docs/reference/export/exportStl.md +64 -0
- package/dist/docs/reference/export/write3mf.md +71 -0
- package/dist/docs/reference/export/writeGlb.md +75 -0
- package/dist/docs/reference/export/writeStl.md +71 -0
- package/dist/docs/reference/export.md +21 -0
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +7 -1
- package/dist/docs/reference/geometry/Anchor3-type.md +13 -3
- package/dist/docs/reference/geometry/ArcCurve2.md +8 -2
- package/dist/docs/reference/geometry/ArcCurve3.md +8 -2
- package/dist/docs/reference/geometry/AttachOptions.md +13 -3
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +9 -3
- package/dist/docs/reference/geometry/Bevel.md +32 -0
- package/dist/docs/reference/geometry/BevelSize.md +28 -0
- package/dist/docs/reference/geometry/Bounds2-type.md +18 -4
- package/dist/docs/reference/geometry/Bounds2Data.md +22 -4
- package/dist/docs/reference/geometry/Bounds2Input.md +18 -4
- package/dist/docs/reference/geometry/Bounds2Options.md +61 -11
- package/dist/docs/reference/geometry/Bounds3-type.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Data.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Input.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Options.md +61 -11
- package/dist/docs/reference/geometry/BoundsFit2.md +10 -4
- package/dist/docs/reference/geometry/BoundsFit3.md +10 -4
- package/dist/docs/reference/geometry/BoundsFitOptions.md +10 -4
- package/dist/docs/reference/geometry/BoxAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +12 -6
- package/dist/docs/reference/geometry/BoxEdge.md +11 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +11 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +11 -1
- package/dist/docs/reference/geometry/BoxOptions.md +13 -3
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +16 -2
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +12 -2
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +15 -3
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
- package/dist/docs/reference/geometry/CircularSampling.md +7 -1
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +8 -2
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -2
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +8 -2
- package/dist/docs/reference/geometry/Contour.md +12 -2
- package/dist/docs/reference/geometry/ContourCurve.md +8 -2
- package/dist/docs/reference/geometry/ContourPoint.md +8 -2
- package/dist/docs/reference/geometry/ContourSegment.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingComponent.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingContour.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingProfile.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +12 -2
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +8 -2
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +8 -2
- package/dist/docs/reference/geometry/Curve2.md +8 -2
- package/dist/docs/reference/geometry/Curve3.md +8 -2
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +16 -2
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +11 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +11 -1
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +8 -2
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +14 -4
- package/dist/docs/reference/geometry/EndTreatments.md +12 -2
- package/dist/docs/reference/{model/ExtrudeOptions.md → geometry/ExtrudeMeshOptions.md} +30 -26
- package/dist/docs/reference/geometry/ExtrudeOptions.md +29 -11
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +18 -4
- package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
- package/dist/docs/reference/geometry/Frame3.md +16 -2
- package/dist/docs/reference/geometry/GeometryError.md +11 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +11 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +11 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +15 -1
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +16 -2
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +15 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +12 -2
- package/dist/docs/reference/geometry/HeightfieldOptions.md +18 -3
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +12 -2
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +9 -3
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +110 -0
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +57 -0
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +63 -84
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +12 -2
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +8 -2
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +8 -2
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +12 -2
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +12 -2
- package/dist/docs/reference/geometry/LineCurve2.md +8 -2
- package/dist/docs/reference/geometry/LineCurve3.md +8 -2
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/LoftCorrespondence.md +16 -2
- package/dist/docs/reference/geometry/LoftMeshStation.md +12 -2
- package/dist/docs/reference/geometry/LoftOptions.md +18 -4
- package/dist/docs/reference/geometry/LoftPlacement.md +16 -2
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +8 -2
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +12 -2
- package/dist/docs/reference/geometry/MetricFastenerSize.md +8 -2
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +8 -2
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +8 -2
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +8 -2
- package/dist/docs/reference/geometry/ModelingLimits.md +19 -1
- package/dist/docs/reference/geometry/NumericArray.md +28 -0
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
- package/dist/docs/reference/geometry/Path2-type.md +16 -2
- package/dist/docs/reference/geometry/Path2Data.md +16 -2
- package/dist/docs/reference/geometry/Path2Input.md +16 -2
- package/dist/docs/reference/geometry/Path3-type.md +16 -2
- package/dist/docs/reference/geometry/Path3Data.md +16 -2
- package/dist/docs/reference/geometry/Path3Input.md +16 -2
- package/dist/docs/reference/geometry/PathFrame.md +8 -2
- package/dist/docs/reference/geometry/PathLocation.md +16 -2
- package/dist/docs/reference/geometry/PathNormalGuide.md +16 -2
- package/dist/docs/reference/geometry/PathOptions.md +12 -2
- package/dist/docs/reference/geometry/PathPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/PathPlacement.md +8 -2
- package/dist/docs/reference/geometry/PathResamplingOptions.md +16 -2
- package/dist/docs/reference/geometry/Pivot2Options.md +17 -3
- package/dist/docs/reference/geometry/Pivot3Options.md +17 -3
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +12 -2
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +12 -2
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +12 -2
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +12 -2
- package/dist/docs/reference/geometry/PolygonData.md +12 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +11 -3
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +11 -1
- package/dist/docs/reference/geometry/PrintableThreadFit.md +12 -2
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +12 -2
- package/dist/docs/reference/geometry/Profile.md +8 -2
- package/dist/docs/reference/geometry/ProfileComponent2.md +12 -2
- package/dist/docs/reference/geometry/ProfileContour2.md +12 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +12 -2
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/RackPitchDimensions.md +8 -2
- package/dist/docs/reference/geometry/RackPitchSpec.md +8 -2
- package/dist/docs/reference/geometry/RadialPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/RadialSizing.md +11 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +11 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +14 -4
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +12 -2
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +12 -2
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +10 -4
- package/dist/docs/reference/geometry/RegionData.md +12 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +17 -3
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +10 -4
- package/dist/docs/reference/geometry/SampleContourOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleHelixOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -2
- package/dist/docs/reference/geometry/SampledThreadHelices.md +8 -2
- package/dist/docs/reference/geometry/SideProfileCurve.md +8 -2
- package/dist/docs/reference/geometry/SideProfilePoint.md +8 -2
- package/dist/docs/reference/geometry/SideProfileSegment.md +8 -2
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +12 -2
- package/dist/docs/reference/geometry/SphereOptions.md +11 -1
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/StarContourOptions.md +84 -0
- package/dist/docs/reference/geometry/StrokeCap.md +12 -2
- package/dist/docs/reference/geometry/StrokeJoin.md +12 -2
- package/dist/docs/reference/geometry/StrokeOptions.md +12 -2
- package/dist/docs/reference/geometry/SvgImportOptions.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +8 -2
- package/dist/docs/reference/geometry/SweepOptions.md +16 -2
- package/dist/docs/reference/geometry/SweepOrientation.md +16 -2
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +18 -31
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadEndStyle.md +16 -2
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +16 -2
- package/dist/docs/reference/geometry/ThreadHandedness.md +16 -2
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +16 -2
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfile-type.md +17 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/{HelicalThreadRidgeMeshOptions.md → ThreadRidgeOptions.md} +19 -5
- package/dist/docs/reference/geometry/ThreadRole.md +8 -2
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshOptions.md → ThreadSolidOptions.md} +29 -66
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +17 -3
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +86 -87
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +29 -7
- package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +63 -84
- package/dist/docs/reference/geometry/TorusOptions.md +11 -1
- package/dist/docs/reference/geometry/Transform2-type.md +17 -3
- package/dist/docs/reference/geometry/Transform2Data.md +17 -3
- package/dist/docs/reference/geometry/Transform2Input.md +17 -3
- package/dist/docs/reference/geometry/Transform3-type.md +17 -3
- package/dist/docs/reference/geometry/Transform3Data.md +17 -3
- package/dist/docs/reference/geometry/Transform3Input.md +17 -3
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/TriangleMesh.md +19 -6
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +25 -5
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +13 -3
- package/dist/docs/reference/geometry/TriangleMeshInput.md +29 -0
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +16 -2
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +14 -4
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +145 -0
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/TubeOptions.md +20 -86
- package/dist/docs/reference/geometry/Vector2-type.md +17 -3
- package/dist/docs/reference/geometry/Vector2Data.md +21 -3
- package/dist/docs/reference/geometry/Vector2Input.md +17 -3
- package/dist/docs/reference/geometry/Vector3-type.md +17 -3
- package/dist/docs/reference/geometry/Vector3Data.md +17 -3
- package/dist/docs/reference/geometry/Vector3Input.md +17 -3
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +12 -2
- package/dist/docs/reference/geometry/VectorTextLayout.md +16 -2
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +14 -4
- package/dist/docs/reference/geometry/VectorTextMetrics.md +16 -2
- package/dist/docs/reference/geometry/VectorTextOptions.md +12 -2
- package/dist/docs/reference/geometry/add2.md +9 -3
- package/dist/docs/reference/geometry/add3.md +9 -3
- package/dist/docs/reference/geometry/anchor3.md +9 -3
- package/dist/docs/reference/geometry/anchorFrame3.md +8 -2
- package/dist/docs/reference/geometry/applyTransformDirection3.md +9 -3
- package/dist/docs/reference/geometry/applyTransformPoint3.md +9 -3
- package/dist/docs/reference/geometry/attachmentTransform3.md +9 -3
- package/dist/docs/reference/geometry/bounds2.md +18 -8
- package/dist/docs/reference/geometry/bounds3.md +18 -8
- package/dist/docs/reference/geometry/boundsCenter.md +10 -4
- package/dist/docs/reference/geometry/boundsSize.md +10 -4
- package/dist/docs/reference/geometry/boxAnchor3.md +11 -5
- package/dist/docs/reference/geometry/categories/bounds-layout.md +6 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +3 -3
- package/dist/docs/reference/geometry/categories/mechanical.md +9 -11
- package/dist/docs/reference/geometry/categories/meshes.md +20 -33
- package/dist/docs/reference/geometry/categories/pattern-placement.md +3 -3
- package/dist/docs/reference/geometry/categories/primitive-options.md +4 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +6 -5
- package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +5 -4
- package/dist/docs/reference/geometry/categories/vector-import.md +4 -4
- package/dist/docs/reference/geometry/circleContour.md +8 -2
- package/dist/docs/reference/geometry/closeToAxis.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +8 -2
- package/dist/docs/reference/geometry/composeTransform3.md +9 -3
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +8 -2
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -2
- package/dist/docs/reference/geometry/contourContainsPoint.md +8 -2
- package/dist/docs/reference/geometry/cross2.md +9 -3
- package/dist/docs/reference/geometry/cross3.md +9 -3
- package/dist/docs/reference/geometry/cylinderAnchor3.md +10 -4
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/distance2.md +9 -3
- package/dist/docs/reference/geometry/distance3.md +9 -3
- package/dist/docs/reference/geometry/distributeAlongPath.md +8 -2
- package/dist/docs/reference/geometry/dot2.md +9 -3
- package/dist/docs/reference/geometry/dot3.md +9 -3
- package/dist/docs/reference/geometry/ellipseContour.md +8 -2
- package/dist/docs/reference/geometry/eulerTransform3.md +9 -3
- package/dist/docs/reference/geometry/fitBounds.md +10 -4
- package/dist/docs/reference/geometry/fitTextLayout.md +8 -2
- package/dist/docs/reference/geometry/frameTransform3.md +9 -3
- package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +8 -2
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +8 -2
- package/dist/docs/reference/geometry/gridPatternTransforms.md +8 -2
- package/dist/docs/reference/{model → geometry}/immutableBuffer.md +13 -2
- package/dist/docs/reference/geometry/inverseTransform3.md +9 -3
- package/dist/docs/reference/geometry/isGeometryError.md +11 -1
- package/dist/docs/reference/geometry/layoutRow.md +10 -4
- package/dist/docs/reference/geometry/length2.md +9 -3
- package/dist/docs/reference/geometry/length3.md +9 -3
- package/dist/docs/reference/geometry/lerp2.md +9 -3
- package/dist/docs/reference/geometry/lerp3.md +9 -3
- package/dist/docs/reference/geometry/linearPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/matchProfiles.md +8 -2
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +8 -2
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +8 -2
- package/dist/docs/reference/geometry/normalize2.md +9 -3
- package/dist/docs/reference/geometry/normalize3.md +9 -3
- package/dist/docs/reference/geometry/normalizeContour.md +8 -2
- package/dist/docs/reference/geometry/normalizePolygon.md +8 -2
- package/dist/docs/reference/geometry/normalizeRegion.md +8 -2
- package/dist/docs/reference/geometry/path2.md +12 -2
- package/dist/docs/reference/geometry/path3.md +12 -2
- package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +25 -26
- package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +31 -27
- package/dist/docs/reference/geometry/preflightThreadedRod.md +25 -26
- package/dist/docs/reference/geometry/projectOntoPlane3.md +9 -3
- package/dist/docs/reference/geometry/radialPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/rectangleContour.md +17 -6
- package/dist/docs/reference/geometry/rectangleProfile.md +9 -3
- package/dist/docs/reference/geometry/regionArea.md +8 -2
- package/dist/docs/reference/geometry/regionBounds.md +8 -2
- package/dist/docs/reference/geometry/regularPolygonContour.md +9 -3
- package/dist/docs/reference/geometry/resamplePolyline2.md +8 -2
- package/dist/docs/reference/geometry/resamplePolyline3.md +8 -2
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveArcSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +8 -2
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +8 -2
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +8 -2
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +8 -2
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +8 -2
- package/dist/docs/reference/geometry/resolveRackPitch.md +8 -2
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -2
- package/dist/docs/reference/geometry/rotate2.md +9 -3
- package/dist/docs/reference/geometry/rotationTransform3.md +9 -3
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -2
- package/dist/docs/reference/geometry/sampleContour.md +8 -2
- package/dist/docs/reference/geometry/sampleCurve2.md +8 -2
- package/dist/docs/reference/geometry/sampleCurve3.md +8 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +8 -2
- package/dist/docs/reference/geometry/sampleHelix.md +8 -2
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +8 -2
- package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -2
- package/dist/docs/reference/geometry/sampleSideProfile.md +8 -2
- package/dist/docs/reference/geometry/sampleTextContours.md +8 -2
- package/dist/docs/reference/geometry/sampleThreadHelices.md +8 -2
- package/dist/docs/reference/geometry/scale2.md +9 -3
- package/dist/docs/reference/geometry/scale3.md +9 -3
- package/dist/docs/reference/geometry/scaleTransform3.md +9 -3
- package/dist/docs/reference/geometry/signedContourArea.md +8 -2
- package/dist/docs/reference/geometry/starContour.md +24 -16
- package/dist/docs/reference/geometry/strokeRegionData.md +8 -2
- package/dist/docs/reference/geometry/subtract2.md +9 -3
- package/dist/docs/reference/geometry/subtract3.md +9 -3
- package/dist/docs/reference/geometry/threadProfile.md +8 -2
- package/dist/docs/reference/geometry/transform2.md +13 -3
- package/dist/docs/reference/geometry/transform3.md +13 -3
- package/dist/docs/reference/geometry/transformDeterminant3.md +9 -3
- package/dist/docs/reference/geometry/transformRegionData.md +8 -2
- package/dist/docs/reference/geometry/translationTransform3.md +9 -3
- package/dist/docs/reference/geometry/triangulateContour.md +8 -2
- package/dist/docs/reference/geometry/validateRigidTransform3.md +41 -0
- package/dist/docs/reference/geometry/validateTransform3.md +9 -3
- package/dist/docs/reference/geometry/vector2.md +13 -3
- package/dist/docs/reference/geometry/vector3.md +13 -3
- package/dist/docs/reference/geometry.md +10 -10
- package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
- package/dist/docs/reference/mesh/RenderMesh.md +68 -0
- package/dist/docs/reference/mesh/analyze.md +102 -0
- package/dist/docs/reference/mesh/analyzeQuality.md +62 -0
- package/dist/docs/reference/mesh/bounds.md +45 -0
- package/dist/docs/reference/mesh/categories/operations.md +57 -0
- package/dist/docs/reference/mesh/centroid.md +45 -0
- package/dist/docs/reference/mesh/extrude.md +79 -0
- package/dist/docs/reference/mesh/heightfield.md +57 -0
- package/dist/docs/reference/mesh/immutable.md +51 -0
- package/dist/docs/reference/mesh/join.md +47 -0
- package/dist/docs/reference/mesh/loft.md +83 -0
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +102 -0
- package/dist/docs/reference/mesh/preflightHeightfield.md +48 -0
- package/dist/docs/reference/mesh/preflightThreadSolid.md +96 -0
- package/dist/docs/reference/mesh/render.md +57 -0
- package/dist/docs/reference/mesh/reverse.md +41 -0
- package/dist/docs/reference/{geometry/revolveMesh.md → mesh/revolve.md} +23 -17
- package/dist/docs/reference/mesh/signature.md +70 -0
- package/dist/docs/reference/mesh/sweep.md +92 -0
- package/dist/docs/reference/mesh/threadRidge.md +78 -0
- package/dist/docs/reference/mesh/threadSolid.md +96 -0
- package/dist/docs/reference/mesh/transform.md +53 -0
- package/dist/docs/reference/mesh/validate.md +75 -0
- package/dist/docs/reference/{geometry/validateSolidMesh.md → mesh/validateSolid.md} +23 -11
- package/dist/docs/reference/mesh.md +21 -0
- package/dist/docs/reference/model/CircleOptions.md +13 -7
- package/dist/docs/reference/model/DiagnosticOptions.md +21 -1
- package/dist/docs/reference/model/EllipseOptions.md +13 -7
- package/dist/docs/reference/model/GenerateCallback.md +11 -5
- package/dist/docs/reference/model/GenerateContext.md +26 -99
- package/dist/docs/reference/model/GenerationDiagnostic.md +19 -1
- package/dist/docs/reference/model/GenerationError.md +8 -2
- package/dist/docs/reference/model/HoleCutterOptions.md +17 -10
- package/dist/docs/reference/model/HoleCutterOverrun.md +10 -3
- package/dist/docs/reference/model/HoleCutterRecess.md +10 -3
- package/dist/docs/reference/model/HullOptions.md +13 -6
- package/dist/docs/reference/model/ImmutableValue.md +26 -0
- package/dist/docs/reference/model/ImplicitOptions.md +12 -6
- package/dist/docs/reference/model/JoinOptions.md +76 -0
- package/dist/docs/reference/model/JoinTransition.md +54 -0
- package/dist/docs/reference/model/KnuckleHinge-type.md +9 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
- package/dist/docs/reference/model/KnuckleHingeOptions.md +10 -4
- package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
- package/dist/docs/reference/model/LoftStation.md +16 -9
- package/dist/docs/reference/model/Memo.md +54 -0
- package/dist/docs/reference/model/ModelProgram.md +8 -2
- package/dist/docs/reference/model/PartDeclaration.md +87 -0
- package/dist/docs/reference/model/PartGeometry.md +10 -4
- package/dist/docs/reference/model/PartOptions.md +16 -22
- package/dist/docs/reference/model/PatternSource.md +10 -4
- package/dist/docs/reference/model/PlaneOptions.md +11 -4
- package/dist/docs/reference/model/PolygonOptions.md +20 -14
- package/dist/docs/reference/model/Profile.md +10 -4
- package/dist/docs/reference/model/RectangleOptions.md +28 -22
- package/dist/docs/reference/model/RegularPolygonOptions.md +13 -7
- package/dist/docs/reference/model/Section.md +196 -77
- package/dist/docs/reference/model/SectionHullOptions.md +13 -6
- package/dist/docs/reference/model/SectionInspection.md +12 -18
- package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
- package/dist/docs/reference/model/SectionOffsetOptions.md +12 -6
- package/dist/docs/reference/model/Solid.md +339 -54
- package/dist/docs/reference/model/SolidInspection.md +12 -18
- package/dist/docs/reference/model/SolidSegmentHit.md +14 -4
- package/dist/docs/reference/model/StarOptions.md +53 -25
- package/dist/docs/reference/model/SvgOrigin.md +10 -4
- package/dist/docs/reference/model/SvgPathSectionOptions.md +14 -8
- package/dist/docs/reference/model/SvgSectionOptions.md +16 -10
- package/dist/docs/reference/model/TextSectionOptions.md +14 -8
- package/dist/docs/reference/model/box.md +18 -11
- package/dist/docs/reference/model/categories/boolean-operations.md +13 -11
- package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -7
- package/dist/docs/reference/model/categories/explicit-profiles.md +1 -14
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +11 -23
- package/dist/docs/reference/model/categories/generation.md +10 -15
- package/dist/docs/reference/model/categories/hinges.md +1 -4
- package/dist/docs/reference/model/categories/mesh-inspection.md +14 -9
- package/dist/docs/reference/model/categories/primitives.md +8 -24
- package/dist/docs/reference/model/categories/sections.md +6 -16
- package/dist/docs/reference/model/categories/threads.md +3 -30
- package/dist/docs/reference/model/categories/transforms-placement.md +5 -35
- package/dist/docs/reference/model/circle.md +10 -4
- package/dist/docs/reference/model/cylinder.md +13 -6
- package/dist/docs/reference/model/ellipse.md +10 -4
- package/dist/docs/reference/model/extrude.md +28 -20
- package/dist/docs/reference/model/generate.md +10 -4
- package/dist/docs/reference/model/gridPattern.md +15 -9
- package/dist/docs/reference/model/heightfield.md +10 -4
- package/dist/docs/reference/model/holeCutter.md +21 -4
- package/dist/docs/reference/model/hull.md +9 -2
- package/dist/docs/reference/model/implicit.md +9 -3
- package/dist/docs/reference/model/internalThreadCutter.md +31 -33
- package/dist/docs/reference/model/intersect.md +11 -4
- package/dist/docs/reference/model/join.md +89 -0
- package/dist/docs/reference/model/knuckleHinge.md +8 -2
- package/dist/docs/reference/model/linearPattern.md +15 -9
- package/dist/docs/reference/model/loft.md +36 -28
- package/dist/docs/reference/model/matchProfiles.md +14 -8
- package/dist/docs/reference/model/minkowskiSum.md +9 -2
- package/dist/docs/reference/model/pathPattern.md +25 -19
- package/dist/docs/reference/model/polygon.md +13 -7
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +33 -35
- package/dist/docs/reference/model/preflightThreadedNut.md +43 -40
- package/dist/docs/reference/model/preflightThreadedRod.md +33 -35
- package/dist/docs/reference/model/radialPattern.md +15 -9
- package/dist/docs/reference/model/rectangle.md +14 -8
- package/dist/docs/reference/model/regularPolygon.md +10 -4
- package/dist/docs/reference/model/revolve.md +25 -17
- package/dist/docs/reference/model/solidFromMesh.md +16 -9
- package/dist/docs/reference/model/sphere.md +13 -6
- package/dist/docs/reference/model/star.md +17 -11
- package/dist/docs/reference/model/stroke.md +21 -15
- package/dist/docs/reference/model/svgPathSection.md +12 -6
- package/dist/docs/reference/model/svgSection.md +13 -7
- package/dist/docs/reference/model/sweep.md +29 -21
- package/dist/docs/reference/model/textSection.md +15 -9
- package/dist/docs/reference/model/threadRidge.md +21 -15
- package/dist/docs/reference/model/threadedNut.md +41 -38
- package/dist/docs/reference/model/threadedRod.md +31 -33
- package/dist/docs/reference/model/torus.md +20 -13
- package/dist/docs/reference/model/tube.md +13 -41
- package/dist/docs/reference/model/union.md +11 -4
- package/dist/docs/reference/model.md +11 -20
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +8 -2
- package/dist/docs/reference/text/VectorFont.md +39 -33
- package/dist/docs/reference/text/VectorFontOptions.md +7 -1
- package/dist/docs/reference/text/categories/font-preparation.md +3 -15
- package/dist/docs/reference/text/prepareVectorFont.md +7 -1
- package/dist/docs/reference/text.md +4 -4
- package/dist/engine/execution.js +10 -6
- package/dist/engine/finalization.js +2 -74
- package/dist/engine/index.js +24 -30
- package/dist/engine/model-parts.js +8 -0
- package/dist/engine/model-summary.js +5 -5
- package/dist/engine/native/construction-mesh.js +41 -0
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +5 -54
- package/dist/engine/native/mesh-observation.js +55 -0
- package/dist/engine/native/operations.js +0 -7
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/native/scoped-primitives.js +5 -4
- package/dist/engine/native/threads.js +14 -14
- package/dist/engine/{construction-operations.js → operations/construction.js} +25 -23
- package/dist/engine/{modeling-context.js → operations/context.js} +12 -10
- package/dist/engine/{operation-environment.js → operations/environment.js} +2 -2
- package/dist/engine/{extrusion-finishing.js → operations/extrusion-finishing.js} +23 -22
- package/dist/engine/{hole-cutter-operation.js → operations/hole-cutter.js} +3 -3
- package/dist/engine/{inspection-operations.js → operations/inspection.js} +6 -6
- package/dist/engine/operations/join-collar-profile.js +120 -0
- package/dist/engine/operations/join.js +508 -0
- package/dist/engine/{knuckle-hinge-operation.js → operations/knuckle-hinge.js} +4 -4
- package/dist/engine/{loft-operations.js → operations/loft.js} +13 -12
- package/dist/engine/{mechanical-operations.js → operations/mechanical.js} +2 -2
- package/dist/engine/{pattern-operations.js → operations/patterns.js} +4 -4
- package/dist/engine/{primitive-anchors.js → operations/primitives/anchors.js} +9 -4
- package/dist/engine/{primitive-operations.js → operations/primitives/construction.js} +18 -19
- package/dist/engine/{primitive-correspondence.js → operations/primitives/correspondence.js} +4 -4
- package/dist/engine/{profile-mesh.js → operations/primitives/profile-mesh.js} +12 -12
- package/dist/engine/{primitive-profiles.js → operations/primitives/profiles.js} +7 -7
- package/dist/engine/{section-operations.js → operations/sections.js} +8 -8
- package/dist/engine/{transform-operations.js → operations/transforms.js} +8 -8
- package/dist/engine/placement.js +3 -4
- package/dist/engine/recipe-realization.js +2 -2
- package/dist/engine/{deferred-context.js → session/deferred-context.js} +4 -4
- package/dist/engine/session/dependencies.js +93 -0
- package/dist/engine/session/graph.js +428 -0
- package/dist/engine/{session-native.js → session/native-cache.js} +2 -2
- package/dist/engine/{session.js → session/session.js} +20 -14
- package/dist/engine/{session-snapshot.js → session/snapshot-cache.js} +30 -60
- package/dist/export/3mf.js +190 -0
- package/dist/export/capture.js +178 -0
- package/dist/export/glb.js +209 -0
- package/dist/export/index.js +5 -0
- package/dist/export/limits.js +18 -0
- package/dist/export/stl.js +105 -0
- package/dist/export/types.js +1 -0
- package/dist/export/writer.js +54 -0
- package/dist/geometry/anchors.js +4 -11
- package/dist/geometry/bounds-value.js +22 -12
- package/dist/geometry/heightfield.js +10 -12
- package/dist/{model → geometry}/immutable-buffer.js +31 -12
- package/dist/geometry/index.js +16 -22
- package/dist/geometry/join-geometry.js +839 -0
- package/dist/geometry/loft/loft.js +11 -6
- package/dist/geometry/mechanical/index.js +5 -5
- package/dist/geometry/mechanical/threads/bevel.js +24 -0
- package/dist/geometry/mechanical/{threads.js → threads/fit.js} +4 -4
- package/dist/geometry/mechanical/{thread-helices.js → threads/helices.js} +3 -3
- package/dist/geometry/mechanical/{thread-mesh-plan.js → threads/mesh-plan.js} +38 -53
- package/dist/geometry/mechanical/{thread-mesh.js → threads/mesh.js} +9 -9
- package/dist/geometry/mechanical/{thread-profiles.js → threads/profiles.js} +3 -3
- package/dist/geometry/mechanical/{thread-solids.js → threads/solids.js} +58 -89
- package/dist/geometry/mechanical/{thread-surface.js → threads/surface.js} +7 -8
- package/dist/geometry/mesh/mesh-centroid.js +3 -2
- package/dist/geometry/mesh/mesh-planar.js +27 -8
- package/dist/geometry/mesh/mesh-quality.js +2 -1
- package/dist/geometry/mesh/mesh-render.js +205 -0
- package/dist/geometry/mesh/mesh-signature.js +7 -6
- package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
- package/dist/geometry/mesh/mesh-solid.js +8 -5
- package/dist/geometry/mesh/mesh-types.js +1 -0
- package/dist/geometry/mesh/mesh.js +13 -22
- package/dist/geometry/mesh-api.js +15 -0
- package/dist/geometry/primitive-resolvers.js +42 -14
- package/dist/geometry/profiles/primitives/circle.js +19 -0
- package/dist/geometry/profiles/{shapes.js → primitives/ellipse.js} +6 -10
- package/dist/geometry/profiles/{rectangle.js → primitives/rectangle.js} +14 -12
- package/dist/geometry/profiles/primitives/regular-polygon.js +33 -0
- package/dist/geometry/profiles/primitives/star.js +28 -0
- package/dist/geometry/region-offset.js +278 -0
- package/dist/geometry/regions.js +11 -1
- package/dist/geometry/revolve/revolve-mesh.js +1 -1
- package/dist/geometry/{svg-import.js → svg/import.js} +10 -10
- package/dist/geometry/sweeps/sweep-mesh.js +1 -1
- package/dist/geometry/transform3.js +29 -0
- package/dist/index.js +2 -1
- package/dist/model/diagnostic-path.js +26 -0
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +9 -3
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +45 -14
- package/dist/model/join.js +1 -0
- package/dist/model/operations.js +34 -144
- package/dist/model/recipe-declaration.js +7 -2
- package/dist/model/shape-handles.js +31 -7
- package/dist/text/index.js +1 -1
- package/package.json +38 -11
- package/dist/docs/reference/engine/Export3mfOptions.md +0 -29
- package/dist/docs/reference/engine/ExportMeshPart.md +0 -65
- package/dist/docs/reference/engine/ModelSnapshot.md +0 -184
- package/dist/docs/reference/engine/SnapshotPart.md +0 -133
- package/dist/docs/reference/engine/validateModel.md +0 -48
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +0 -14
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +0 -61
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +0 -56
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +0 -39
- package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +0 -64
- package/dist/docs/reference/geometry/extrudeMesh.md +0 -77
- package/dist/docs/reference/geometry/heightfieldMesh.md +0 -52
- package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +0 -72
- package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +0 -106
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +0 -40
- package/dist/docs/reference/geometry/loftMesh.md +0 -77
- package/dist/docs/reference/geometry/meshBounds.md +0 -39
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +0 -95
- package/dist/docs/reference/geometry/preflightHeightfield.md +0 -43
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +0 -105
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +0 -34
- package/dist/docs/reference/geometry/sweepMesh.md +0 -86
- package/dist/docs/reference/geometry/transformTriangleMesh.md +0 -46
- package/dist/docs/reference/geometry/validateTriangleMesh.md +0 -63
- package/dist/docs/reference/model/Anchor3.md +0 -55
- package/dist/docs/reference/model/AttachOptions.md +0 -69
- package/dist/docs/reference/model/Bounds2-type.md +0 -125
- package/dist/docs/reference/model/Bounds2Data.md +0 -44
- package/dist/docs/reference/model/Bounds2Input.md +0 -19
- package/dist/docs/reference/model/Bounds2Options.md +0 -70
- package/dist/docs/reference/model/Bounds3-type.md +0 -125
- package/dist/docs/reference/model/Bounds3Data.md +0 -44
- package/dist/docs/reference/model/Bounds3Input.md +0 -19
- package/dist/docs/reference/model/Bounds3Options.md +0 -70
- package/dist/docs/reference/model/BoxEdge.md +0 -15
- package/dist/docs/reference/model/BoxEdgeSelection.md +0 -19
- package/dist/docs/reference/model/BoxEdgeTreatments.md +0 -20
- package/dist/docs/reference/model/BoxOptions.md +0 -92
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +0 -35
- package/dist/docs/reference/model/CircleContourOptions.md +0 -21
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +0 -64
- package/dist/docs/reference/model/Computed.md +0 -40
- package/dist/docs/reference/model/ComputedValue.md +0 -24
- package/dist/docs/reference/model/Contour.md +0 -24
- package/dist/docs/reference/model/CorrespondingComponent.md +0 -46
- package/dist/docs/reference/model/CorrespondingContour.md +0 -46
- package/dist/docs/reference/model/CorrespondingProfile.md +0 -22
- package/dist/docs/reference/model/CorrespondingProfileStation.md +0 -27
- package/dist/docs/reference/model/CylinderOptions.md +0 -58
- package/dist/docs/reference/model/EdgeTreatment.md +0 -22
- package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
- package/dist/docs/reference/model/EndTreatments.md +0 -39
- package/dist/docs/reference/model/FinalizedModel.md +0 -131
- package/dist/docs/reference/model/FinalizedPart.md +0 -87
- package/dist/docs/reference/model/Frame3.md +0 -63
- package/dist/docs/reference/model/GeneratedPart.md +0 -97
- package/dist/docs/reference/model/GeometryResolution.md +0 -70
- package/dist/docs/reference/model/GeometrySamplingLimits.md +0 -62
- package/dist/docs/reference/model/GeometryToleranceOptions.md +0 -46
- package/dist/docs/reference/model/GridPatternOptions.md +0 -50
- package/dist/docs/reference/model/HeightfieldOptions.md +0 -67
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +0 -141
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +0 -59
- package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -84
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -38
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -246
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +0 -77
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +0 -47
- package/dist/docs/reference/model/KnuckleHingeSpec.md +0 -18
- package/dist/docs/reference/model/LinearPatternOptions.md +0 -39
- package/dist/docs/reference/model/LoftCorrespondence.md +0 -27
- package/dist/docs/reference/model/LoftOptions.md +0 -91
- package/dist/docs/reference/model/LoftPlacement.md +0 -73
- package/dist/docs/reference/model/MatchProfilesOptions.md +0 -35
- package/dist/docs/reference/model/ModelingLimits.md +0 -126
- package/dist/docs/reference/model/NumericArray.md +0 -14
- package/dist/docs/reference/model/Path2-type.md +0 -196
- package/dist/docs/reference/model/Path2Data.md +0 -50
- package/dist/docs/reference/model/Path2Input.md +0 -20
- package/dist/docs/reference/model/Path3-type.md +0 -196
- package/dist/docs/reference/model/Path3Data.md +0 -50
- package/dist/docs/reference/model/Path3Input.md +0 -20
- package/dist/docs/reference/model/PathLocation.md +0 -69
- package/dist/docs/reference/model/PathNormalGuide.md +0 -46
- package/dist/docs/reference/model/PathOptions.md +0 -38
- package/dist/docs/reference/model/PathPatternOptions.md +0 -48
- package/dist/docs/reference/model/PathResamplingOptions.md +0 -83
- package/dist/docs/reference/model/Pivot2Options.md +0 -28
- package/dist/docs/reference/model/Pivot3Options.md +0 -28
- package/dist/docs/reference/model/PolygonData.md +0 -44
- package/dist/docs/reference/model/PrimitiveAttachment.md +0 -41
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +0 -110
- package/dist/docs/reference/model/PrintableThreadFit.md +0 -15
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
- package/dist/docs/reference/model/ProfileComponent2.md +0 -46
- package/dist/docs/reference/model/ProfileContour2.md +0 -36
- package/dist/docs/reference/model/ProfileSpan2.md +0 -47
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +0 -41
- package/dist/docs/reference/model/RadialPatternOptions.md +0 -59
- package/dist/docs/reference/model/RadialSizing.md +0 -15
- package/dist/docs/reference/model/RadialSizingOptions.md +0 -40
- package/dist/docs/reference/model/RectangleContourOptions.md +0 -72
- package/dist/docs/reference/model/RectangleCornerTreatment.md +0 -40
- package/dist/docs/reference/model/RectangleCornerTreatments.md +0 -20
- package/dist/docs/reference/model/RegionData.md +0 -19
- package/dist/docs/reference/model/RevolveOptions.md +0 -94
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +0 -96
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
- package/dist/docs/reference/model/SphereOptions.md +0 -20
- package/dist/docs/reference/model/StrokeCap.md +0 -16
- package/dist/docs/reference/model/StrokeJoin.md +0 -16
- package/dist/docs/reference/model/StrokeOptions.md +0 -91
- package/dist/docs/reference/model/SweepOptions.md +0 -116
- package/dist/docs/reference/model/SweepOrientation.md +0 -116
- package/dist/docs/reference/model/ThreadEndStyle.md +0 -15
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +0 -118
- package/dist/docs/reference/model/ThreadHandedness.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInShape.md +0 -15
- package/dist/docs/reference/model/ThreadProfile.md +0 -87
- package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -19
- package/dist/docs/reference/model/ThreadedNutBevel.md +0 -15
- package/dist/docs/reference/model/ThreadedNutOptions.md +0 -274
- package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -99
- package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
- package/dist/docs/reference/model/ThreadedRodOptions.md +0 -246
- package/dist/docs/reference/model/TorusOptions.md +0 -110
- package/dist/docs/reference/model/Transform2-type.md +0 -257
- package/dist/docs/reference/model/Transform2Data.md +0 -16
- package/dist/docs/reference/model/Transform2Input.md +0 -21
- package/dist/docs/reference/model/Transform3-type.md +0 -297
- package/dist/docs/reference/model/Transform3Data.md +0 -19
- package/dist/docs/reference/model/Transform3Input.md +0 -21
- package/dist/docs/reference/model/TriangleMesh.md +0 -42
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -123
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/model/TubeOptions.md +0 -143
- package/dist/docs/reference/model/Vector2-type.md +0 -271
- package/dist/docs/reference/model/Vector2Data.md +0 -15
- package/dist/docs/reference/model/Vector2Input.md +0 -21
- package/dist/docs/reference/model/Vector3-type.md +0 -283
- package/dist/docs/reference/model/Vector3Data.md +0 -15
- package/dist/docs/reference/model/Vector3Input.md +0 -21
- package/dist/docs/reference/model/VectorTextLayout.md +0 -40
- package/dist/docs/reference/model/VectorTextMetrics.md +0 -100
- package/dist/docs/reference/model/anchor.md +0 -47
- package/dist/docs/reference/model/bounds2.md +0 -37
- package/dist/docs/reference/model/bounds3.md +0 -37
- package/dist/docs/reference/model/castSegment.md +0 -40
- package/dist/docs/reference/model/categories/bounds.md +0 -38
- package/dist/docs/reference/model/categories/contracts.md +0 -18
- package/dist/docs/reference/model/categories/core-values-errors.md +0 -30
- package/dist/docs/reference/model/categories/inspection.md +0 -29
- package/dist/docs/reference/model/categories/paths.md +0 -41
- package/dist/docs/reference/model/categories/resolution.md +0 -20
- package/dist/docs/reference/model/components.md +0 -71
- package/dist/docs/reference/model/compose.md +0 -31
- package/dist/docs/reference/model/distance.md +0 -45
- package/dist/docs/reference/model/immutableMesh.md +0 -44
- package/dist/docs/reference/model/inspectSection.md +0 -38
- package/dist/docs/reference/model/inspectSolid.md +0 -38
- package/dist/docs/reference/model/isEmpty.md +0 -39
- package/dist/docs/reference/model/path2.md +0 -54
- package/dist/docs/reference/model/path3.md +0 -49
- package/dist/docs/reference/model/split.md +0 -54
- package/dist/docs/reference/model/splitByPlane.md +0 -66
- package/dist/docs/reference/model/transform2.md +0 -46
- package/dist/docs/reference/model/transform3.md +0 -48
- package/dist/docs/reference/model/vector2.md +0 -40
- package/dist/docs/reference/model/vector3.md +0 -47
- package/dist/docs/reference/text/Bounds2Data.md +0 -34
- package/dist/docs/reference/text/Vector2Data.md +0 -7
- package/dist/docs/reference/text/VectorTextArcBaseline.md +0 -53
- package/dist/docs/reference/text/VectorTextLayout.md +0 -34
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +0 -111
- package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
- package/dist/docs/reference/text/VectorTextOptions.md +0 -50
- package/dist/engine/export-3mf.js +0 -116
- package/dist/engine/model-dependencies.js +0 -46
- package/dist/engine/session-graph.js +0 -449
- package/dist/geometry/profiles/profiles.js +0 -71
- /package/dist/engine/{primitive-profile-types.js → operations/primitives/profile-types.js} +0 -0
- /package/dist/{engine → geometry/mesh}/mesh-view-cache.js +0 -0
- /package/dist/geometry/profiles/{matched.js → match-profiles.js} +0 -0
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
# Run Modeling in your application
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Set up the engine in Node or a browser Worker, then export a captured model as STL, 3MF, or GLB.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Build a model in your own application, then export its parts as STL, 3MF, or GLB. Install Modeling in your
|
|
6
|
+
Node application or browser Worker project:
|
|
6
7
|
|
|
7
8
|
```bash
|
|
8
9
|
pnpm add @metamesh/modeling
|
|
9
10
|
```
|
|
10
11
|
|
|
12
|
+
Use Node.js 24 or newer for Node hosts. The package publishes ES modules only; TypeScript
|
|
13
|
+
consumers use TypeScript 6.0 or newer with `strict` checking and `NodeNext` or `Bundler` resolution.
|
|
14
|
+
Browser Workers need an ES2023-compatible runtime and WebAssembly.
|
|
15
|
+
|
|
11
16
|
The package is in Preview: `0.x` minor releases may change its API, while patches remain compatible
|
|
12
17
|
within a minor line. Keep your dependency and examples on the same minor version.
|
|
13
18
|
|
|
14
19
|
## Build and export a plate
|
|
15
20
|
|
|
16
|
-
Initialize an engine, define a program with `generate`, then
|
|
21
|
+
Initialize an engine, define a program with `generate`, then call `engine.run`.
|
|
17
22
|
This complete function returns the 3MF bytes for a plate with a hole:
|
|
18
23
|
|
|
19
24
|
|
|
@@ -21,63 +26,83 @@ This complete function returns the 3MF bytes for a plate with a hole:
|
|
|
21
26
|
```ts
|
|
22
27
|
import { box, cylinder, generate } from "@metamesh/modeling";
|
|
23
28
|
import { createModelEngine } from "@metamesh/modeling/engine";
|
|
29
|
+
import { export3mf } from "@metamesh/modeling/export/3mf";
|
|
24
30
|
|
|
25
|
-
export async function makePlate3mf(): Promise<
|
|
31
|
+
export async function makePlate3mf(): Promise<Uint8Array> {
|
|
26
32
|
const engine = await createModelEngine();
|
|
27
|
-
const
|
|
33
|
+
const model = engine.run(
|
|
28
34
|
generate(({ part }) => {
|
|
29
35
|
const plate = box({ size: [30, 20, 6] });
|
|
30
36
|
// Extend the cutter beyond both faces to avoid coincident Boolean surfaces.
|
|
31
37
|
const bore = cylinder({ radius: 3, height: 8, sizing: "face" });
|
|
32
|
-
return [part("plate", { geometry: plate.subtract(
|
|
38
|
+
return [part("plate", { geometry: plate.subtract(bore), color: "#67e8f9" })];
|
|
33
39
|
})
|
|
34
40
|
);
|
|
35
|
-
|
|
36
|
-
const model = session.run({});
|
|
37
|
-
// Generation already disposed native handles. These finalized meshes remain usable.
|
|
38
|
-
try {
|
|
39
|
-
return await engine.export3mf(model.parts, { name: "Plate" });
|
|
40
|
-
} finally {
|
|
41
|
-
model.dispose();
|
|
42
|
-
}
|
|
43
|
-
} finally {
|
|
44
|
-
session.dispose();
|
|
45
|
-
}
|
|
41
|
+
return (await export3mf(model.parts, { name: "Plate" })).bytes;
|
|
46
42
|
}
|
|
47
43
|
```
|
|
48
44
|
|
|
49
45
|
|
|
50
46
|
|
|
51
|
-
Call `makePlate3mf()` and save or download its returned `
|
|
52
|
-
|
|
47
|
+
Call `makePlate3mf()` and save or download its returned `Uint8Array`. If your application stays
|
|
48
|
+
open across edits, initialize the engine once and reuse it. Keep an explicit model session when
|
|
49
|
+
edits should reuse memoized geometry.
|
|
50
|
+
|
|
51
|
+
`engine.run(program, parameters, options?)` returns a durable result after releasing its temporary
|
|
52
|
+
session. Both `engine.run()` and `session.run()` return the same durable immutable `ModelResult`.
|
|
53
|
+
Parts, measurements, bounds, and statistics remain usable without cleanup, including after session disposal.
|
|
54
|
+
Parameterless programs can omit parameters; configure them with
|
|
55
|
+
`engine.run(program, undefined, options)`.
|
|
56
|
+
|
|
57
|
+
Use `model.part("plate")` when you need a specific semantic part. It returns that part directly,
|
|
58
|
+
or throws an error listing the available IDs. IDs match exactly. Keep using the ordered `model.parts`
|
|
59
|
+
array for iteration, export, and assertions about output order; use `model.parts.find(...)` when
|
|
60
|
+
absence is expected.
|
|
53
61
|
|
|
54
62
|
## Keep execution synchronous
|
|
55
63
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
cross an async boundary
|
|
64
|
+
Load fonts and other assets before generation, and supply any synchronous services when creating
|
|
65
|
+
a run or session. Memo helpers and geometry queries run inside synchronous generation: they can't
|
|
66
|
+
cross an async boundary. A session also can't run inside another session run in the same
|
|
67
|
+
JavaScript realm.
|
|
59
68
|
|
|
60
|
-
|
|
69
|
+
Keep these lifetimes in mind when reusing shapes:
|
|
61
70
|
|
|
62
71
|
- Immutable `Solid` and `Section` recipes, vectors, paths, and transforms can be created without an
|
|
63
72
|
engine and reused across sessions. Explicit resolution settings stay with a recipe; omitted
|
|
64
73
|
settings inherit the evaluating host's defaults.
|
|
65
|
-
- A session
|
|
66
|
-
|
|
67
|
-
Booleans;
|
|
68
|
-
-
|
|
69
|
-
session. Ordinary recipes remain portable.
|
|
70
|
-
|
|
71
|
-
A
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
- A session runs the model, keeps optional memo caches, and manages native resources. It
|
|
75
|
+
cleans up temporary native geometry after each run. Memoized shapes can stay cached for later
|
|
76
|
+
cuts or Booleans; keep expensive base geometry separate from finishing operations to reuse it.
|
|
77
|
+
- Selections returned by `shape.components()` depend on the evaluated shape. Keep them, and any recipes
|
|
78
|
+
that use them, in the session they came from. Ordinary recipes remain portable.
|
|
79
|
+
|
|
80
|
+
A result keeps the finished mesh data available even after you dispose its session:
|
|
81
|
+
|
|
82
|
+
- A part's `positions` and `indices` are stable immutable values. The part uses world-space
|
|
83
|
+
coordinates; its local `geometry` resource keeps reusable geometry separate from placement.
|
|
84
|
+
Read `length`, `at(index)`, or iterate without copying. Use `copy()` for an owned mutable typed array;
|
|
85
|
+
geometry utilities and export accept the immutable mesh directly.
|
|
86
|
+
- `session.dispose()` releases caches and native resources; captured results remain usable.
|
|
87
|
+
- Results have no disposal method. Release your references when you no longer need their data.
|
|
88
|
+
|
|
89
|
+
## Check declarations before running
|
|
90
|
+
|
|
91
|
+
`checkModel(program, parameters)` checks declarations and reached assertions without initializing
|
|
92
|
+
the kernel or finalizing output. Use `session.check(parameters)` when a reached assertion observes
|
|
93
|
+
geometry. Both return diagnostics; unexpected authoring and geometry errors still throw.
|
|
94
|
+
|
|
95
|
+
| Operation | Executes model code | Geometry guarantee |
|
|
96
|
+
| ---------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
97
|
+
| CLI `typecheck` | No; checks TypeScript | No geometry is evaluated |
|
|
98
|
+
| `checkModel` | Declarations and reached assertions | No kernel; geometry observations require a session |
|
|
99
|
+
| `session.check` | Declarations, assertions, and reached geometry observations | Returned parts are not all evaluated or finalized |
|
|
100
|
+
| `engine.run` / `session.run` | The model and every returned part | Finalizes output under the selected topology, mesh-validation, resolution, and resource policy |
|
|
101
|
+
|
|
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.
|
|
81
106
|
|
|
82
107
|
## Load WASM in a browser Worker
|
|
83
108
|
|
|
@@ -86,21 +111,95 @@ installed WASM asset automatically. A browser bundler must retain or emit that r
|
|
|
86
111
|
[`modelingWasmUrl`](../reference/engine/modelingWasmUrl.md) can supply the emitted URL through
|
|
87
112
|
`createModelEngine({ wasmUrl: modelingWasmUrl })`.
|
|
88
113
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
114
|
+
Create Workers and handle their messages in your application. Each Worker runs independently.
|
|
115
|
+
Transfer copies of completed buffers that you own; transferring cache backing storage would
|
|
116
|
+
detach it. Native handles stay inside their engine.
|
|
117
|
+
|
|
118
|
+
For incremental delivery, the optional `@metamesh/generator-sdk/modeling` adapter provides
|
|
119
|
+
`ModelDeliveryEncoder`. Its copies can be transferred while the engine result remains usable.
|
|
120
|
+
`PartDeliveryDecoder` from `@metamesh/generator-sdk/runtime` hydrates later resource references:
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
import { ModelDeliveryEncoder } from "@metamesh/generator-sdk/modeling";
|
|
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.
|
|
92
162
|
|
|
93
163
|
## Set resource limits
|
|
94
164
|
|
|
95
165
|
[`createModelEngine`](../reference/engine/createModelEngine.md) accepts trusted host limits.
|
|
96
|
-
Individual sessions may lower those ceilings. Requests that exceed a selected sampling or output
|
|
166
|
+
Individual runs and sessions may lower those ceilings. Requests that exceed a selected sampling or output
|
|
97
167
|
budget fail explicitly; the engine does not silently reduce modeling fidelity.
|
|
98
168
|
|
|
99
169
|
## Export the completed result
|
|
100
170
|
|
|
101
|
-
`
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
171
|
+
Import `export3mf`, `exportStl`, or `exportGlb` from `@metamesh/modeling/export`, or load one format
|
|
172
|
+
from `/export/3mf`, `/export/stl`, or `/export/glb`. Every exporter accepts completed parts with local
|
|
173
|
+
`geometry`, an optional placement transform, and optional display color and material identity.
|
|
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
|
|
106
205
|
[Modeling guides](https://metamesh.studio/docs/modeling) to choose geometry operations.
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Build solids from profiles and primitives
|
|
2
|
+
|
|
3
|
+
Choose primitives, extrude filled outlines, revolve radial profiles, and finish their rims.
|
|
4
|
+
|
|
5
|
+
Start with a primitive when it already describes the material. For a plate, gasket, cup, or knob,
|
|
6
|
+
solve the filled cross section first, then add depth or revolve it around an axis.
|
|
7
|
+
|
|
8
|
+
Run the examples in a [Studio code Project](https://metamesh.studio/docs/develop/code-projects), where Studio supplies
|
|
9
|
+
typed controls and prepared services. For a local model, follow the
|
|
10
|
+
[standalone workflow](standalone-model.md) and use its host entry point.
|
|
11
|
+
|
|
12
|
+
## Choose a primitive
|
|
13
|
+
|
|
14
|
+
Start with the factory that most closely describes the shape. The first row below contains ready
|
|
15
|
+
Solids; the second contains filled Sections extruded to `5 mm` thickness. Each result remains a
|
|
16
|
+
separate named part so you can inspect it in the interactive preview.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
import { ellipse, regularPolygon, sphere, star, torus, transform3, tube } from "@metamesh/modeling";
|
|
22
|
+
import { generate } from "@metamesh/project";
|
|
23
|
+
|
|
24
|
+
export default generate(({ part }) => {
|
|
25
|
+
// Solid primitives are ready for placement; filled Sections need depth first.
|
|
26
|
+
// Place finished parts on two rows while keeping local geometry reusable.
|
|
27
|
+
return [
|
|
28
|
+
part("sphere", {
|
|
29
|
+
geometry: sphere({ diameter: 14 }),
|
|
30
|
+
transform: transform3().translate([0, 0, 7]),
|
|
31
|
+
color: "#60a5fa",
|
|
32
|
+
}),
|
|
33
|
+
part("torus", {
|
|
34
|
+
geometry: torus({ majorRadius: 7, minorRadius: 2 }),
|
|
35
|
+
transform: transform3().translate([24, 0, 2]),
|
|
36
|
+
color: "#34d399",
|
|
37
|
+
}),
|
|
38
|
+
part("tube", {
|
|
39
|
+
geometry: tube({ outerRadius: 7, innerRadius: 4, height: 10, center: false }),
|
|
40
|
+
transform: transform3().translate([48, 0, 0]),
|
|
41
|
+
color: "#f59e0b",
|
|
42
|
+
}),
|
|
43
|
+
part("ellipse", {
|
|
44
|
+
geometry: ellipse({ size: [18, 12] }).extrude({ height: 5 }),
|
|
45
|
+
transform: transform3().translate([0, 24, 0]),
|
|
46
|
+
color: "#c084fc",
|
|
47
|
+
}),
|
|
48
|
+
part("star", {
|
|
49
|
+
geometry: star({ outerRadius: 9, innerRadius: 4.5, points: 5 }).extrude({ height: 5 }),
|
|
50
|
+
transform: transform3().translate([24, 24, 0]),
|
|
51
|
+
color: "#fb7185",
|
|
52
|
+
}),
|
|
53
|
+
part("hexagon", {
|
|
54
|
+
geometry: regularPolygon({ radius: 7, sides: 6, sizing: "face" }).extrude({ height: 5 }),
|
|
55
|
+
transform: transform3().translate([48, 24, 0]),
|
|
56
|
+
color: "#22d3ee",
|
|
57
|
+
}),
|
|
58
|
+
];
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Sphere, torus, and tube are solid factories. Ellipse, star, and regular polygon create Sections that can be extruded.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
Use a [`tube`](../reference/model/tube.md) when the bore is concentric; it avoids a separate cutter.
|
|
67
|
+
A [`torus`](../reference/model/torus.md) uses the distance to the circular profile's center as its
|
|
68
|
+
major radius. [`regularPolygon`](../reference/model/regularPolygon.md) has an exact side count;
|
|
69
|
+
`sizing: "face"` makes the specified radius reach the faces instead of the vertices. Keep physical
|
|
70
|
+
curve tolerance for ordinary round shapes and use exact segment counts for deliberate faceting.
|
|
71
|
+
|
|
72
|
+
`circle` and `cylinder` support the same vertex or face sizing convention.
|
|
73
|
+
`tube` accepts a complete pair of inner/outer radii or diameters, with independent `innerSizing`
|
|
74
|
+
and `outerSizing`. For example, `tube({ innerDiameter: 8, outerDiameter: 12, height: 10,
|
|
75
|
+
innerSizing: "face" })` preserves an 8 mm clear bore between the sampled faces. Both defaults are
|
|
76
|
+
`"vertex"`; compensation that removes the wall rejects. Sampling and sizing do not establish a
|
|
77
|
+
manufacturing fit allowance.
|
|
78
|
+
|
|
79
|
+
## Section, hole, offset, and extrusion
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
import { circle, rectangle } from "@metamesh/modeling";
|
|
85
|
+
import { generate } from "@metamesh/project";
|
|
86
|
+
|
|
87
|
+
export default generate(({ part }) => {
|
|
88
|
+
const plate = rectangle({ size: [80, 45] });
|
|
89
|
+
const hole = circle({ radius: 4 });
|
|
90
|
+
// Positive offset expands material: the outer edge grows and the hole shrinks.
|
|
91
|
+
const rimmedPlate = plate.subtract(hole).offset(1.2);
|
|
92
|
+
// Keep the plate centered about Z = 0 for later symmetric placement.
|
|
93
|
+
return [part("model", rimmedPlate.extrude({ height: 5, center: true }))];
|
|
94
|
+
});
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Subtract the opening in 2D, offset the filled material, then extrude it into one plate.
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
`rectangle` and `circle` take object options and return filled Sections. The `union`, `subtract`, and
|
|
102
|
+
`intersect` methods accept one shape or an array and also support Solids; every operand in a call
|
|
103
|
+
must have the same dimension. Use collection `union(shapes)` or `intersect(shapes)` to combine peers.
|
|
104
|
+
`section.offset(distance)` offsets the filled material. `section.extrude({ height })` preserves
|
|
105
|
+
holes and places the bottom at zero unless `center: true` is requested.
|
|
106
|
+
|
|
107
|
+
Ordinary extrusion also accepts `twist` and `scaleTop`. Keep those operations separate from
|
|
108
|
+
enabled end treatments, which require a straight extrusion.
|
|
109
|
+
|
|
110
|
+
Positive offset grows material on every boundary: this example grows the outside by `1.2 mm` and
|
|
111
|
+
reduces the hole radius from `4 mm` to `2.8 mm`. If the final bore must remain `8 mm` in diameter,
|
|
112
|
+
offset the outside first and subtract the hole afterward. See
|
|
113
|
+
[`Section.offset`](../reference/model/Section.md#offset) and [`Section.extrude`](../reference/model/Section.md#extrude).
|
|
114
|
+
|
|
115
|
+
## Revolve a radial profile
|
|
116
|
+
|
|
117
|
+
Use revolution when one side outline can describe the entire part around an axis. In the Section
|
|
118
|
+
below, X is radius and Y is final Z height; radii must stay nonnegative. The closed loop includes
|
|
119
|
+
the cup's floor, outside, rim, and inside, so you can describe the wall and opening together.
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
import { polygon } from "@metamesh/modeling";
|
|
125
|
+
import { generate } from "@metamesh/project";
|
|
126
|
+
|
|
127
|
+
export default generate(({ part }) => {
|
|
128
|
+
// Here Section X means radius and Section Y becomes the final Z height.
|
|
129
|
+
// Walk the filled wall counterclockwise, omitting a repeated closing point.
|
|
130
|
+
const wall = polygon([
|
|
131
|
+
[0, 0],
|
|
132
|
+
[16, 0],
|
|
133
|
+
[16, 4],
|
|
134
|
+
[12, 4],
|
|
135
|
+
[10, 28],
|
|
136
|
+
[7, 28],
|
|
137
|
+
[9, 4],
|
|
138
|
+
[0, 4],
|
|
139
|
+
]);
|
|
140
|
+
// A full revolution creates the floor, tapered wall, and open top together.
|
|
141
|
+
return [part("model", wall.revolve())];
|
|
142
|
+
});
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
One radial wall profile revolved around +Z creates the floor and tapered cup wall.
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
[`polygon`](../reference/model/polygon.md) fills the ordered contour.
|
|
150
|
+
[`Section.revolve`](../reference/model/Section.md#revolve) defaults to a complete `360°` turn. Set
|
|
151
|
+
`degrees: 270` for a capped partial turn that exposes the cross section. Keep the closed
|
|
152
|
+
profile free of self-intersections and never repeat its first point at the end.
|
|
153
|
+
|
|
154
|
+
For an open side outline, [`sampleSideProfile`](../reference/geometry/sampleSideProfile.md)
|
|
155
|
+
returns physical `[radius, height]` points. [`closeToAxis`](../reference/geometry/closeToAxis.md)
|
|
156
|
+
adds the horizontal bottom/top edges needed for a solid body. Fill the result with `polygon`,
|
|
157
|
+
then revolve it. Hollow walls and mounting bores need their own closed material contour.
|
|
158
|
+
|
|
159
|
+
## Treated boxes, frustums, and mirrored arrays
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
import { box, cylinder, gridPattern } from "@metamesh/modeling";
|
|
165
|
+
import { generate } from "@metamesh/project";
|
|
166
|
+
|
|
167
|
+
export default generate(({ part }) => {
|
|
168
|
+
const housing = box({
|
|
169
|
+
size: [46, 30, 12],
|
|
170
|
+
treatment: { kind: "round", radius: 3 },
|
|
171
|
+
});
|
|
172
|
+
const taperedBore = cylinder({
|
|
173
|
+
// The centered cutter extends beyond both faces of the 12 mm housing.
|
|
174
|
+
height: 16,
|
|
175
|
+
// Tuples run from the bottom diameter to the top diameter along +Z.
|
|
176
|
+
diameter: [8, 6],
|
|
177
|
+
sizing: "face",
|
|
178
|
+
ends: { top: { kind: "chamfer", distance: 0.8 } },
|
|
179
|
+
});
|
|
180
|
+
// Pattern the already-positioned tool; X varies fastest through the array.
|
|
181
|
+
const perforations = gridPattern(taperedBore.translate([-13, -6, 0]), {
|
|
182
|
+
count: [3, 2],
|
|
183
|
+
spacing: [13, 12],
|
|
184
|
+
});
|
|
185
|
+
// Mirror the completed housing across the plane with normal +X.
|
|
186
|
+
return [part("model", housing.subtract(perforations).mirror([1, 0, 0]))];
|
|
187
|
+
});
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Six non-overlapping cutters share the same taper and rim treatment; the completed housing is mirrored.
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
Paired cylinder radii or diameters are always `[bottom, top]` in +Z order. A zero endpoint makes a cone;
|
|
195
|
+
chamfers under `ends.bottom` and `ends.top` may treat either nonzero end and follow the tapered side.
|
|
196
|
+
Boxes and rectangles share `round`, `chamfer`, `smooth`, and explicit `profile` treatments. Boxes
|
|
197
|
+
can select disjoint named edges or groups; rectangles can select each corner. `gridPattern` places
|
|
198
|
+
the cutters on an XY grid, with X varying fastest.
|
|
199
|
+
Zero rounding radius or zero chamfer/smooth setbacks disable that treatment, so an adjustable
|
|
200
|
+
feature can remain in the options object when switched off.
|
|
201
|
+
|
|
202
|
+
The bores use `diameter: [8, 6]` and `13 × 12 mm` spacing to leave material between them. Check
|
|
203
|
+
the widest cutter diameter and the outer wall when changing either value. In this example the
|
|
204
|
+
tool's top chamfer lies above the housing; it shapes the cutter end, not the finished hole's rim.
|
|
205
|
+
Use an explicitly shaped cutting profile if the finished mouth needs a countersink.
|
|
206
|
+
|
|
207
|
+
## Finish a profile with a hole
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
```ts
|
|
212
|
+
import { circle, rectangle } from "@metamesh/modeling";
|
|
213
|
+
import { generate } from "@metamesh/project";
|
|
214
|
+
|
|
215
|
+
const profile = rectangle({ size: [36, 24] })
|
|
216
|
+
.subtract(rectangle({ size: [8, 8] }).translate([18, 0]))
|
|
217
|
+
.subtract(circle({ diameter: 10 }));
|
|
218
|
+
|
|
219
|
+
const plate = profile.extrude({
|
|
220
|
+
height: 6,
|
|
221
|
+
ends: {
|
|
222
|
+
top: { kind: "round", radius: 1.5 },
|
|
223
|
+
bottom: { kind: "chamfer", distance: 0.5 },
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
export default generate(({ part }) => part("finished-plate", plate));
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
One treatment finishes every material boundary at each end, including the notch and the hole.
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
Form the complete filled profile first, then apply `ends.top` and `ends.bottom` during extrusion.
|
|
235
|
+
The same treatment follows the outer outline, concave notch, and hole. Removing material at the
|
|
236
|
+
top contracts the outside and opens the hole mouth; the plan-view corners remain mitered.
|
|
237
|
+
Choose amounts that leave every boundary distinct and a positive straight wall interval.
|
|
238
|
+
|
|
239
|
+
Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
|
|
240
|
+
`profile` points:
|
|
241
|
+
|
|
242
|
+
- Boxes select disjoint named edges or groups; rectangles select individual corners.
|
|
243
|
+
- Cylinder/frustum and straight extrusion rims use independent `ends.bottom` and `ends.top`.
|
|
244
|
+
- Straight extrusions admit concave outlines, holes, and disconnected material components when
|
|
245
|
+
every source boundary survives the treatment without contact, collapse, or topology changes.
|
|
246
|
+
One treatment applies to every material boundary at that end; inward material trimming expands
|
|
247
|
+
hole mouths. Enabled treatments exclude twist, top scaling, and exact divisions.
|
|
248
|
+
- Zero radius, zero chamfer/smooth distance, or an all-zero distance pair leaves a feature untreated.
|
|
249
|
+
Other setback pairs require two positive values; negative and nonfinite amounts reject.
|
|
250
|
+
- Disabled extrusion end treatments retain ordinary support, including holes and twist.
|
|
251
|
+
|
|
252
|
+
For a local connection between completed solids, use [solid joins](solid-joins.md).
|