@metamesh/modeling 0.17.0 → 0.18.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 +153 -0
- package/README.md +137 -163
- package/dist/api/engine.d.ts +128 -65
- package/dist/api/geometry.d.ts +246 -457
- package/dist/api/index.d.ts +394 -419
- package/dist/api/mesh.d.ts +460 -0
- package/dist/api/text.d.ts +1 -1
- package/dist/docs/guides/concepts.md +126 -86
- package/dist/docs/guides/fonts.md +11 -10
- package/dist/docs/guides/fundamentals.md +30 -29
- package/dist/docs/guides/generation.md +44 -31
- package/dist/docs/guides/hosting.md +122 -46
- package/dist/docs/guides/recipes.md +65 -54
- package/dist/docs/guides/standalone-model.md +8 -7
- package/dist/docs/manifest.json +2740 -902
- package/dist/docs/reference/engine/Export3mfOptions.md +19 -2
- package/dist/docs/reference/engine/ExportMeshPart.md +5 -39
- package/dist/docs/reference/engine/GenerationOptions.md +4 -3
- package/dist/docs/reference/engine/GeometryResource.md +13 -13
- package/dist/docs/reference/engine/ModelDependencies.md +1 -1
- package/dist/docs/reference/engine/ModelEngine.md +26 -23
- package/dist/docs/reference/engine/ModelEngineOptions.md +6 -1
- package/dist/docs/reference/engine/ModelPart.md +108 -0
- package/dist/docs/reference/engine/ModelResult.md +175 -0
- package/dist/docs/reference/engine/ModelRunArguments.md +28 -0
- package/dist/docs/reference/engine/ModelRunOptions.md +104 -0
- package/dist/docs/reference/engine/ModelSession.md +16 -16
- package/dist/docs/reference/engine/ModelingLimits.md +121 -0
- package/dist/docs/reference/engine/SessionOptions.md +13 -8
- package/dist/docs/reference/engine/categories/host-lifecycle.md +25 -15
- package/dist/docs/reference/engine/checkModel.md +43 -0
- package/dist/docs/reference/engine/createModelEngine.md +4 -13
- package/dist/docs/reference/engine/defaultModelingLimits.md +8 -1
- package/dist/docs/reference/engine/export3mf.md +55 -0
- package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
- package/dist/docs/reference/engine.md +8 -15
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +1 -1
- package/dist/docs/reference/geometry/Anchor3-type.md +1 -1
- package/dist/docs/reference/geometry/ArcCurve2.md +1 -1
- package/dist/docs/reference/geometry/ArcCurve3.md +1 -1
- package/dist/docs/reference/geometry/AttachOptions.md +1 -1
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +1 -1
- package/dist/docs/reference/geometry/Bevel.md +18 -0
- package/dist/docs/reference/geometry/BevelSize.md +14 -0
- package/dist/docs/reference/geometry/Bounds2-type.md +1 -1
- package/dist/docs/reference/geometry/Bounds2Data.md +1 -1
- package/dist/docs/reference/geometry/Bounds2Input.md +1 -1
- package/dist/docs/reference/geometry/Bounds2Options.md +48 -8
- package/dist/docs/reference/geometry/Bounds3-type.md +1 -1
- package/dist/docs/reference/geometry/Bounds3Data.md +1 -1
- package/dist/docs/reference/geometry/Bounds3Input.md +1 -1
- package/dist/docs/reference/geometry/Bounds3Options.md +48 -8
- package/dist/docs/reference/geometry/BoundsFit2.md +1 -1
- package/dist/docs/reference/geometry/BoundsFit3.md +1 -1
- package/dist/docs/reference/geometry/BoundsFitOptions.md +1 -1
- package/dist/docs/reference/geometry/BoxAnchorFace.md +1 -1
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +4 -4
- package/dist/docs/reference/geometry/BoxEdge.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/geometry/BoxOptions.md +3 -3
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +1 -1
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -3
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularSampling.md +1 -1
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +1 -1
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +1 -1
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +1 -1
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +1 -1
- package/dist/docs/reference/geometry/Contour.md +1 -1
- package/dist/docs/reference/geometry/ContourCurve.md +1 -1
- package/dist/docs/reference/geometry/ContourPoint.md +1 -1
- package/dist/docs/reference/geometry/ContourSegment.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingContour.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +1 -1
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +1 -1
- package/dist/docs/reference/geometry/Curve2.md +1 -1
- package/dist/docs/reference/geometry/Curve3.md +1 -1
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +1 -1
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +1 -1
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +3 -3
- package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +1 -1
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -3
- package/dist/docs/reference/geometry/EndTreatments.md +1 -1
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +130 -0
- package/dist/docs/reference/geometry/ExtrudeOptions.md +17 -9
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +3 -3
- package/dist/docs/reference/geometry/FittedTextLayout.md +1 -1
- package/dist/docs/reference/geometry/Frame3.md +1 -1
- package/dist/docs/reference/geometry/GeometryError.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +1 -1
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +1 -1
- package/dist/docs/reference/geometry/HeightfieldOptions.md +3 -2
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +1 -1
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +1 -1
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +108 -0
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +43 -0
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +52 -83
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +1 -1
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +1 -1
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +1 -1
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +1 -1
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +1 -1
- package/dist/docs/reference/geometry/LineCurve2.md +1 -1
- package/dist/docs/reference/geometry/LineCurve3.md +1 -1
- package/dist/docs/reference/geometry/LinearPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +1 -1
- package/dist/docs/reference/geometry/LoftOptions.md +3 -3
- package/dist/docs/reference/geometry/LoftPlacement.md +1 -1
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +1 -1
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/geometry/MetricFastenerSize.md +1 -1
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +1 -1
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +1 -1
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +1 -1
- package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
- package/dist/docs/reference/geometry/NumericArray.md +14 -0
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +1 -1
- package/dist/docs/reference/geometry/Path2-type.md +1 -1
- package/dist/docs/reference/geometry/Path2Data.md +1 -1
- package/dist/docs/reference/geometry/Path2Input.md +1 -1
- package/dist/docs/reference/geometry/Path3-type.md +1 -1
- package/dist/docs/reference/geometry/Path3Data.md +1 -1
- package/dist/docs/reference/geometry/Path3Input.md +1 -1
- package/dist/docs/reference/geometry/PathFrame.md +1 -1
- package/dist/docs/reference/geometry/PathLocation.md +1 -1
- package/dist/docs/reference/geometry/PathNormalGuide.md +1 -1
- package/dist/docs/reference/geometry/PathOptions.md +1 -1
- package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/PathPlacement.md +1 -1
- package/dist/docs/reference/geometry/PathResamplingOptions.md +1 -1
- package/dist/docs/reference/geometry/Pivot2Options.md +1 -1
- package/dist/docs/reference/geometry/Pivot3Options.md +1 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +1 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +1 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +1 -1
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +1 -1
- package/dist/docs/reference/geometry/PolygonData.md +1 -1
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +1 -1
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -3
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
- package/dist/docs/reference/geometry/PrintableThreadFit.md +1 -1
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/geometry/Profile.md +1 -1
- package/dist/docs/reference/geometry/ProfileComponent2.md +1 -1
- package/dist/docs/reference/geometry/ProfileContour2.md +1 -1
- package/dist/docs/reference/geometry/ProfileSpan2.md +1 -1
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RackPitchDimensions.md +1 -1
- package/dist/docs/reference/geometry/RackPitchSpec.md +1 -1
- package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/RadialSizing.md +1 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +3 -3
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/RegionData.md +1 -1
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +1 -1
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +2 -2
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +1 -1
- package/dist/docs/reference/geometry/SampleContourOptions.md +1 -1
- package/dist/docs/reference/geometry/SampleHelixOptions.md +1 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +1 -1
- package/dist/docs/reference/geometry/SampledCurve2.md +1 -1
- package/dist/docs/reference/geometry/SampledCurve3.md +1 -1
- package/dist/docs/reference/geometry/SampledThreadHelices.md +1 -1
- package/dist/docs/reference/geometry/SideProfileCurve.md +1 -1
- package/dist/docs/reference/geometry/SideProfilePoint.md +1 -1
- package/dist/docs/reference/geometry/SideProfileSegment.md +1 -1
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +1 -1
- package/dist/docs/reference/geometry/SphereOptions.md +1 -1
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/StarContourOptions.md +74 -0
- package/dist/docs/reference/geometry/StrokeCap.md +1 -1
- package/dist/docs/reference/geometry/StrokeJoin.md +1 -1
- package/dist/docs/reference/geometry/StrokeOptions.md +1 -1
- package/dist/docs/reference/geometry/SvgImportOptions.md +1 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +1 -1
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +1 -1
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +1 -1
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +1 -1
- package/dist/docs/reference/geometry/SweepOptions.md +1 -1
- package/dist/docs/reference/geometry/SweepOrientation.md +1 -1
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +7 -30
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadEndStyle.md +1 -1
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadHandedness.md +1 -1
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +1 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +1 -1
- package/dist/docs/reference/geometry/ThreadProfile-type.md +2 -2
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +1 -1
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/{HelicalThreadRidgeMeshOptions.md → ThreadRidgeOptions.md} +4 -4
- package/dist/docs/reference/geometry/ThreadRole.md +1 -1
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshOptions.md → ThreadSolidOptions.md} +18 -65
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +2 -2
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +75 -86
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +18 -6
- package/dist/docs/reference/geometry/ThreadedNutShape.md +1 -1
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +52 -83
- package/dist/docs/reference/geometry/TorusOptions.md +1 -1
- package/dist/docs/reference/geometry/Transform2-type.md +1 -1
- package/dist/docs/reference/geometry/Transform2Data.md +1 -1
- package/dist/docs/reference/geometry/Transform2Input.md +1 -1
- package/dist/docs/reference/geometry/Transform3-type.md +1 -1
- package/dist/docs/reference/geometry/Transform3Data.md +1 -1
- package/dist/docs/reference/geometry/Transform3Input.md +1 -1
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/TriangleMesh.md +3 -8
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +10 -4
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +2 -2
- package/dist/docs/reference/geometry/TriangleMeshInput.md +19 -0
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +3 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +131 -0
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +1 -1
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/TubeOptions.md +10 -86
- package/dist/docs/reference/geometry/Vector2-type.md +1 -1
- package/dist/docs/reference/geometry/Vector2Data.md +1 -1
- package/dist/docs/reference/geometry/Vector2Input.md +1 -1
- package/dist/docs/reference/geometry/Vector3-type.md +1 -1
- package/dist/docs/reference/geometry/Vector3Data.md +1 -1
- package/dist/docs/reference/geometry/Vector3Input.md +1 -1
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +1 -1
- package/dist/docs/reference/geometry/VectorTextLayout.md +1 -1
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +3 -3
- package/dist/docs/reference/geometry/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/geometry/VectorTextOptions.md +1 -1
- package/dist/docs/reference/geometry/add2.md +1 -1
- package/dist/docs/reference/geometry/add3.md +1 -1
- package/dist/docs/reference/geometry/anchor3.md +1 -1
- package/dist/docs/reference/geometry/anchorFrame3.md +1 -1
- package/dist/docs/reference/geometry/applyTransformDirection3.md +1 -1
- package/dist/docs/reference/geometry/applyTransformPoint3.md +1 -1
- package/dist/docs/reference/geometry/attachmentTransform3.md +1 -1
- package/dist/docs/reference/geometry/bounds2.md +4 -4
- package/dist/docs/reference/geometry/bounds3.md +4 -4
- package/dist/docs/reference/geometry/boundsCenter.md +1 -1
- package/dist/docs/reference/geometry/boundsSize.md +1 -1
- package/dist/docs/reference/geometry/boxAnchor3.md +3 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +3 -3
- package/dist/docs/reference/geometry/categories/curves-paths.md +2 -2
- package/dist/docs/reference/geometry/categories/mechanical.md +8 -10
- package/dist/docs/reference/geometry/categories/meshes.md +19 -32
- package/dist/docs/reference/geometry/categories/pattern-placement.md +2 -2
- package/dist/docs/reference/geometry/categories/primitive-options.md +3 -3
- package/dist/docs/reference/geometry/categories/profiles-regions.md +5 -4
- package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +3 -2
- package/dist/docs/reference/geometry/categories/vector-import.md +3 -3
- package/dist/docs/reference/geometry/circleContour.md +1 -1
- package/dist/docs/reference/geometry/closeToAxis.md +1 -1
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +1 -1
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +1 -1
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +1 -1
- package/dist/docs/reference/geometry/composeTransform3.md +1 -1
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +1 -1
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +1 -1
- package/dist/docs/reference/geometry/contourContainsPoint.md +1 -1
- package/dist/docs/reference/geometry/cross2.md +1 -1
- package/dist/docs/reference/geometry/cross3.md +1 -1
- package/dist/docs/reference/geometry/cylinderAnchor3.md +2 -2
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/distance2.md +1 -1
- package/dist/docs/reference/geometry/distance3.md +1 -1
- package/dist/docs/reference/geometry/distributeAlongPath.md +1 -1
- package/dist/docs/reference/geometry/dot2.md +1 -1
- package/dist/docs/reference/geometry/dot3.md +1 -1
- package/dist/docs/reference/geometry/ellipseContour.md +1 -1
- package/dist/docs/reference/geometry/eulerTransform3.md +1 -1
- package/dist/docs/reference/geometry/fitBounds.md +1 -1
- package/dist/docs/reference/geometry/fitTextLayout.md +1 -1
- package/dist/docs/reference/geometry/frameTransform3.md +1 -1
- package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +1 -1
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +1 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +1 -1
- package/dist/docs/reference/geometry/immutableBuffer.md +49 -0
- package/dist/docs/reference/geometry/inverseTransform3.md +1 -1
- package/dist/docs/reference/geometry/isGeometryError.md +1 -1
- package/dist/docs/reference/geometry/layoutRow.md +1 -1
- package/dist/docs/reference/geometry/length2.md +1 -1
- package/dist/docs/reference/geometry/length3.md +1 -1
- package/dist/docs/reference/geometry/lerp2.md +1 -1
- package/dist/docs/reference/geometry/lerp3.md +1 -1
- package/dist/docs/reference/geometry/linearPatternTransforms.md +1 -1
- package/dist/docs/reference/geometry/matchProfiles.md +1 -1
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +1 -1
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +1 -1
- package/dist/docs/reference/geometry/normalize2.md +1 -1
- package/dist/docs/reference/geometry/normalize3.md +1 -1
- package/dist/docs/reference/geometry/normalizeContour.md +1 -1
- package/dist/docs/reference/geometry/normalizePolygon.md +1 -1
- package/dist/docs/reference/geometry/normalizeRegion.md +1 -1
- package/dist/docs/reference/geometry/path2.md +1 -1
- package/dist/docs/reference/geometry/path3.md +1 -1
- package/dist/docs/reference/geometry/pathPatternTransforms.md +1 -1
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +18 -25
- package/dist/docs/reference/geometry/preflightSvgRegion.md +1 -1
- package/dist/docs/reference/geometry/preflightThreadedNut.md +24 -26
- package/dist/docs/reference/geometry/preflightThreadedRod.md +18 -25
- package/dist/docs/reference/geometry/projectOntoPlane3.md +1 -1
- package/dist/docs/reference/geometry/radialPatternTransforms.md +1 -1
- package/dist/docs/reference/geometry/rectangleContour.md +10 -5
- package/dist/docs/reference/geometry/rectangleProfile.md +2 -2
- package/dist/docs/reference/geometry/regionArea.md +1 -1
- package/dist/docs/reference/geometry/regionBounds.md +1 -1
- package/dist/docs/reference/geometry/regularPolygonContour.md +2 -2
- package/dist/docs/reference/geometry/resamplePolyline2.md +1 -1
- package/dist/docs/reference/geometry/resamplePolyline3.md +1 -1
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveArcSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveCircularSampling.md +1 -1
- package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +1 -1
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +1 -1
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +1 -1
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/geometry/resolveRackPitch.md +1 -1
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/rotate2.md +1 -1
- package/dist/docs/reference/geometry/rotationTransform3.md +1 -1
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +1 -1
- package/dist/docs/reference/geometry/sampleContour.md +1 -1
- package/dist/docs/reference/geometry/sampleCurve2.md +1 -1
- package/dist/docs/reference/geometry/sampleCurve3.md +1 -1
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +1 -1
- package/dist/docs/reference/geometry/sampleHelix.md +1 -1
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +1 -1
- package/dist/docs/reference/geometry/sampleRackToothPath.md +1 -1
- package/dist/docs/reference/geometry/sampleSideProfile.md +1 -1
- package/dist/docs/reference/geometry/sampleTextContours.md +1 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +1 -1
- package/dist/docs/reference/geometry/scale2.md +1 -1
- package/dist/docs/reference/geometry/scale3.md +1 -1
- package/dist/docs/reference/geometry/scaleTransform3.md +1 -1
- package/dist/docs/reference/geometry/signedContourArea.md +1 -1
- package/dist/docs/reference/geometry/starContour.md +17 -15
- package/dist/docs/reference/geometry/strokeRegionData.md +1 -1
- package/dist/docs/reference/geometry/subtract2.md +1 -1
- package/dist/docs/reference/geometry/subtract3.md +1 -1
- package/dist/docs/reference/geometry/threadProfile.md +1 -1
- package/dist/docs/reference/geometry/transform2.md +1 -1
- package/dist/docs/reference/geometry/transform3.md +1 -1
- package/dist/docs/reference/geometry/transformDeterminant3.md +1 -1
- package/dist/docs/reference/geometry/transformRegionData.md +1 -1
- package/dist/docs/reference/geometry/translationTransform3.md +1 -1
- package/dist/docs/reference/geometry/triangulateContour.md +1 -1
- package/dist/docs/reference/geometry/validateRigidTransform3.md +35 -0
- package/dist/docs/reference/geometry/validateTransform3.md +1 -1
- package/dist/docs/reference/geometry/vector2.md +1 -1
- package/dist/docs/reference/geometry/vector3.md +1 -1
- package/dist/docs/reference/geometry.md +9 -9
- package/dist/docs/reference/mesh/AcmeThreadProfileSpec.md +79 -0
- package/dist/docs/reference/mesh/Bevel.md +18 -0
- package/dist/docs/reference/mesh/BevelSize.md +14 -0
- package/dist/docs/reference/mesh/Bounds2.md +125 -0
- package/dist/docs/reference/mesh/Bounds2Data.md +43 -0
- package/dist/docs/reference/mesh/Bounds2Input.md +19 -0
- package/dist/docs/reference/mesh/Bounds3.md +125 -0
- package/dist/docs/reference/mesh/Bounds3Data.md +43 -0
- package/dist/docs/reference/mesh/Bounds3Input.md +19 -0
- package/dist/docs/reference/mesh/ButtressPressureFlankSide.md +14 -0
- package/dist/docs/reference/mesh/ButtressThreadProfileSpec.md +97 -0
- package/dist/docs/reference/mesh/CircularPrimitiveOptions.md +60 -0
- package/dist/docs/reference/mesh/CurveSamplingOptions.md +69 -0
- package/dist/docs/reference/mesh/CustomThreadProfileSpec.md +77 -0
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +129 -0
- package/dist/docs/reference/mesh/ExtrusionSamplingOptions.md +81 -0
- package/dist/docs/reference/mesh/Frame3.md +62 -0
- package/dist/docs/reference/mesh/GeometryResolution.md +74 -0
- package/dist/docs/reference/mesh/GeometrySamplingLimits.md +66 -0
- package/dist/docs/reference/mesh/GeometryToleranceOptions.md +46 -0
- package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +18 -0
- package/dist/docs/reference/mesh/HeightfieldOptions.md +72 -0
- package/dist/docs/reference/mesh/HeightfieldPreflight.md +58 -0
- package/dist/docs/reference/mesh/ImmutableBuffer.md +108 -0
- package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +43 -0
- package/dist/docs/reference/mesh/LoftCorrespondence.md +24 -0
- package/dist/docs/reference/mesh/LoftMeshStation.md +31 -0
- package/dist/docs/reference/mesh/LoftOptions.md +88 -0
- package/dist/docs/reference/mesh/LoftPlacement.md +70 -0
- package/dist/docs/reference/mesh/ModelingLimits.md +130 -0
- package/dist/docs/reference/mesh/NumericArray.md +14 -0
- package/dist/docs/reference/mesh/Path2.md +197 -0
- package/dist/docs/reference/mesh/Path2Data.md +50 -0
- package/dist/docs/reference/mesh/Path2Input.md +20 -0
- package/dist/docs/reference/mesh/Path3.md +197 -0
- package/dist/docs/reference/mesh/Path3Data.md +50 -0
- package/dist/docs/reference/mesh/Path3Input.md +20 -0
- package/dist/docs/reference/mesh/PathLocation.md +69 -0
- package/dist/docs/reference/mesh/PathNormalGuide.md +43 -0
- package/dist/docs/reference/mesh/PathResamplingOptions.md +84 -0
- package/dist/docs/reference/mesh/Pivot2Options.md +26 -0
- package/dist/docs/reference/mesh/Pivot3Options.md +26 -0
- package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +14 -0
- package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +160 -0
- package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +124 -0
- package/dist/docs/reference/mesh/PlanarPatchQuality.md +194 -0
- package/dist/docs/reference/mesh/RevolveOptions.md +91 -0
- package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +38 -0
- package/dist/docs/reference/mesh/SquareThreadProfileSpec.md +79 -0
- package/dist/docs/reference/mesh/SweepOptions.md +113 -0
- package/dist/docs/reference/mesh/SweepOrientation.md +113 -0
- package/dist/docs/reference/mesh/ThreadEndStyle.md +14 -0
- package/dist/docs/reference/mesh/ThreadEndTreatmentOptions.md +117 -0
- package/dist/docs/reference/mesh/ThreadHandedness.md +14 -0
- package/dist/docs/reference/mesh/ThreadLeadInEnvelope.md +14 -0
- package/dist/docs/reference/mesh/ThreadLeadInShape.md +14 -0
- package/dist/docs/reference/mesh/ThreadProfile.md +86 -0
- package/dist/docs/reference/mesh/ThreadProfileBaseSpec.md +53 -0
- package/dist/docs/reference/mesh/ThreadProfileSpec.md +23 -0
- package/dist/docs/reference/{model/HelicalThreadRidgeMeshOptions.md → mesh/ThreadRidgeOptions.md} +14 -10
- package/dist/docs/reference/mesh/ThreadSolidOptions.md +222 -0
- package/dist/docs/reference/mesh/ThreadSolidPreflight.md +58 -0
- package/dist/docs/reference/mesh/Transform2.md +256 -0
- package/dist/docs/reference/mesh/Transform2Data.md +14 -0
- package/dist/docs/reference/mesh/Transform2Input.md +19 -0
- package/dist/docs/reference/mesh/Transform3.md +296 -0
- package/dist/docs/reference/mesh/Transform3Data.md +17 -0
- package/dist/docs/reference/mesh/Transform3Input.md +19 -0
- package/dist/docs/reference/mesh/TrapezoidalThreadProfileSpec.md +96 -0
- package/dist/docs/reference/mesh/TriangleMesh.md +34 -0
- package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +129 -0
- package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +79 -0
- package/dist/docs/reference/mesh/TriangleMeshInput.md +19 -0
- package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +79 -0
- package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +43 -0
- package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +194 -0
- package/dist/docs/reference/mesh/TriangleMeshSignature.md +111 -0
- package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +46 -0
- package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +34 -0
- package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +131 -0
- package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +55 -0
- package/dist/docs/reference/mesh/TriangularThreadProfileSpec.md +95 -0
- package/dist/docs/reference/mesh/Vector2.md +270 -0
- package/dist/docs/reference/mesh/Vector2Data.md +14 -0
- package/dist/docs/reference/mesh/Vector2Input.md +19 -0
- package/dist/docs/reference/mesh/Vector3.md +282 -0
- package/dist/docs/reference/mesh/Vector3Data.md +14 -0
- package/dist/docs/reference/mesh/Vector3Input.md +19 -0
- package/dist/docs/reference/mesh/analyze.md +96 -0
- package/dist/docs/reference/{geometry/analyzeTriangleMeshQuality.md → mesh/analyzeQuality.md} +9 -9
- package/dist/docs/reference/mesh/bounds.md +39 -0
- package/dist/docs/reference/mesh/categories/operations.md +147 -0
- package/dist/docs/reference/{geometry/computeTriangleMeshCentroid.md → mesh/centroid.md} +7 -7
- package/dist/docs/reference/mesh/extrude.md +73 -0
- package/dist/docs/reference/{geometry/heightfieldMesh.md → mesh/heightfield.md} +7 -8
- package/dist/docs/reference/mesh/immutable.md +47 -0
- package/dist/docs/reference/{geometry/joinTriangleMeshes.md → mesh/join.md} +7 -6
- package/dist/docs/reference/{geometry/loftMesh.md → mesh/loft.md} +15 -15
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +96 -0
- package/dist/docs/reference/{geometry → mesh}/preflightHeightfield.md +5 -6
- package/dist/docs/reference/mesh/preflightThreadSolid.md +90 -0
- package/dist/docs/reference/{geometry/reverseTriangleMesh.md → mesh/reverse.md} +6 -5
- package/dist/docs/reference/{geometry/revolveMesh.md → mesh/revolve.md} +13 -13
- package/dist/docs/reference/{geometry/computeTriangleMeshSignature.md → mesh/signature.md} +11 -11
- package/dist/docs/reference/mesh/sweep.md +86 -0
- package/dist/docs/reference/mesh/threadRidge.md +72 -0
- package/dist/docs/reference/mesh/threadSolid.md +90 -0
- package/dist/docs/reference/{geometry/transformTriangleMesh.md → mesh/transform.md} +7 -6
- package/dist/docs/reference/{geometry/validateTriangleMesh.md → mesh/validate.md} +17 -11
- package/dist/docs/reference/{geometry/validateSolidMesh.md → mesh/validateSolid.md} +15 -9
- package/dist/docs/reference/mesh.md +21 -0
- package/dist/docs/reference/model/AcmeThreadProfileSpec.md +80 -0
- package/dist/docs/reference/model/Anchor3.md +1 -1
- package/dist/docs/reference/model/AttachOptions.md +1 -1
- package/dist/docs/reference/model/Bevel.md +19 -0
- package/dist/docs/reference/model/{ThreadedNutBevel.md → BevelSize.md} +4 -4
- package/dist/docs/reference/model/Bounds2-type.md +1 -1
- package/dist/docs/reference/model/Bounds2Data.md +1 -1
- package/dist/docs/reference/model/Bounds2Input.md +1 -1
- package/dist/docs/reference/model/Bounds2Options.md +48 -8
- package/dist/docs/reference/model/Bounds3-type.md +1 -1
- package/dist/docs/reference/model/Bounds3Data.md +1 -1
- package/dist/docs/reference/model/Bounds3Input.md +1 -1
- package/dist/docs/reference/model/Bounds3Options.md +48 -8
- package/dist/docs/reference/model/BoxEdge.md +1 -1
- package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/model/BoxOptions.md +3 -3
- package/dist/docs/reference/model/ButtressPressureFlankSide.md +15 -0
- package/dist/docs/reference/model/ButtressThreadProfileSpec.md +98 -0
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/CircleContourOptions.md +1 -1
- package/dist/docs/reference/model/CircleOptions.md +1 -1
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -3
- package/dist/docs/reference/model/Computed.md +7 -3
- package/dist/docs/reference/model/ComputedValue.md +1 -1
- package/dist/docs/reference/model/Contour.md +1 -1
- package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/model/CorrespondingContour.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/model/CurveSamplingOptions.md +68 -0
- package/dist/docs/reference/model/CustomThreadProfileSpec.md +78 -0
- package/dist/docs/reference/model/CylinderOptions.md +1 -1
- package/dist/docs/reference/model/DiagnosticOptions.md +15 -1
- package/dist/docs/reference/model/EdgeTreatment.md +1 -1
- package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
- package/dist/docs/reference/model/EllipseOptions.md +1 -1
- package/dist/docs/reference/model/EndTreatments.md +1 -1
- package/dist/docs/reference/model/ExtrudeMeshOptions.md +133 -0
- package/dist/docs/reference/model/ExtrudeOptions.md +17 -8
- package/dist/docs/reference/model/ExtrusionSamplingOptions.md +84 -0
- package/dist/docs/reference/model/Frame3.md +1 -1
- package/dist/docs/reference/model/GenerateCallback.md +5 -5
- package/dist/docs/reference/model/GenerateContext.md +15 -63
- package/dist/docs/reference/model/GenerationDiagnostic.md +13 -1
- package/dist/docs/reference/model/GenerationError.md +1 -1
- package/dist/docs/reference/model/GeometryError.md +102 -0
- package/dist/docs/reference/model/GeometryErrorCode.md +15 -0
- package/dist/docs/reference/model/GeometryErrorContext.md +35 -0
- package/dist/docs/reference/model/GeometryResolution.md +1 -1
- package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/model/GridPatternOptions.md +1 -1
- package/dist/docs/reference/model/HeightfieldOptions.md +3 -2
- package/dist/docs/reference/model/HoleCutterOptions.md +1 -1
- package/dist/docs/reference/model/HoleCutterOverrun.md +1 -1
- package/dist/docs/reference/model/HoleCutterRecess.md +1 -1
- package/dist/docs/reference/model/HullOptions.md +1 -1
- package/dist/docs/reference/model/ImmutableBuffer-type.md +27 -3
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +8 -3
- package/dist/docs/reference/model/ImmutableValue.md +20 -0
- package/dist/docs/reference/model/ImplicitOptions.md +1 -1
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +54 -84
- package/dist/docs/reference/model/KnuckleHinge-type.md +1 -1
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +1 -1
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +1 -1
- package/dist/docs/reference/model/KnuckleHingeOptions.md +1 -1
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +1 -1
- package/dist/docs/reference/model/KnuckleHingeSpec.md +1 -1
- package/dist/docs/reference/model/KnuckleHingeWeb.md +1 -1
- package/dist/docs/reference/model/LinearPatternOptions.md +1 -1
- package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/model/LoftOptions.md +3 -3
- package/dist/docs/reference/model/LoftPlacement.md +1 -1
- package/dist/docs/reference/model/LoftStation.md +1 -1
- package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/model/ModelProgram.md +2 -2
- package/dist/docs/reference/model/ModelingLimits.md +1 -1
- package/dist/docs/reference/model/NumericArray.md +1 -1
- package/dist/docs/reference/model/{GeneratedPart.md → PartDeclaration.md} +8 -23
- package/dist/docs/reference/model/PartGeometry.md +2 -2
- package/dist/docs/reference/model/PartOptions.md +8 -19
- package/dist/docs/reference/model/Path2-type.md +1 -1
- package/dist/docs/reference/model/Path2Data.md +1 -1
- package/dist/docs/reference/model/Path2Input.md +1 -1
- package/dist/docs/reference/model/Path3-type.md +1 -1
- package/dist/docs/reference/model/Path3Data.md +1 -1
- package/dist/docs/reference/model/Path3Input.md +1 -1
- package/dist/docs/reference/model/PathLocation.md +1 -1
- package/dist/docs/reference/model/PathNormalGuide.md +1 -1
- package/dist/docs/reference/model/PathOptions.md +1 -1
- package/dist/docs/reference/model/PathPatternOptions.md +1 -1
- package/dist/docs/reference/model/PathResamplingOptions.md +7 -6
- package/dist/docs/reference/model/PatternSource.md +1 -1
- package/dist/docs/reference/model/Pivot2Options.md +1 -1
- package/dist/docs/reference/model/Pivot3Options.md +1 -1
- package/dist/docs/reference/model/PlaneOptions.md +1 -1
- package/dist/docs/reference/model/PolygonData.md +1 -1
- package/dist/docs/reference/model/PolygonOptions.md +1 -1
- package/dist/docs/reference/model/PrimitiveAttachment.md +1 -3
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +1 -1
- package/dist/docs/reference/model/PrintableThreadFit.md +1 -1
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/model/Profile.md +1 -1
- package/dist/docs/reference/model/ProfileComponent2.md +1 -1
- package/dist/docs/reference/model/ProfileContour2.md +1 -1
- package/dist/docs/reference/model/ProfileSpan2.md +1 -1
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/RadialPatternOptions.md +1 -1
- package/dist/docs/reference/model/RadialSizing.md +1 -1
- package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
- package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/model/RectangleOptions.md +3 -3
- package/dist/docs/reference/model/RegionData.md +1 -1
- package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
- package/dist/docs/reference/model/RevolveOptions.md +2 -2
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Section.md +131 -6
- package/dist/docs/reference/model/SectionHullOptions.md +1 -1
- package/dist/docs/reference/model/SectionInspection.md +5 -17
- package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
- package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Solid.md +245 -8
- package/dist/docs/reference/model/SolidInspection.md +5 -17
- package/dist/docs/reference/model/SolidSegmentHit.md +5 -1
- package/dist/docs/reference/model/SphereOptions.md +1 -1
- package/dist/docs/reference/model/SquareThreadProfileSpec.md +80 -0
- package/dist/docs/reference/model/StarContourOptions.md +81 -0
- package/dist/docs/reference/model/StarOptions.md +38 -16
- package/dist/docs/reference/model/StrokeCap.md +1 -1
- package/dist/docs/reference/model/StrokeJoin.md +1 -1
- package/dist/docs/reference/model/StrokeOptions.md +1 -1
- package/dist/docs/reference/model/SvgOrigin.md +1 -1
- package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
- package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
- package/dist/docs/reference/model/SweepOptions.md +1 -1
- package/dist/docs/reference/model/SweepOrientation.md +1 -1
- package/dist/docs/reference/model/TextSectionOptions.md +1 -1
- package/dist/docs/reference/model/ThreadBevelOptions.md +35 -0
- package/dist/docs/reference/model/ThreadEndStyle.md +1 -1
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +1 -1
- package/dist/docs/reference/model/ThreadHandedness.md +1 -1
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +1 -1
- package/dist/docs/reference/model/ThreadLeadInShape.md +1 -1
- package/dist/docs/reference/model/ThreadProfile.md +2 -2
- package/dist/docs/reference/model/ThreadProfileBaseSpec.md +54 -0
- package/dist/docs/reference/model/ThreadProfileSpec.md +24 -0
- package/dist/docs/reference/model/ThreadRidgeOptions.md +126 -4
- package/dist/docs/reference/model/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +2 -2
- package/dist/docs/reference/model/ThreadedNutOptions.md +75 -86
- package/dist/docs/reference/model/ThreadedNutPreflight.md +18 -6
- package/dist/docs/reference/model/ThreadedNutShape.md +1 -1
- package/dist/docs/reference/model/ThreadedRodOptions.md +54 -84
- package/dist/docs/reference/model/TorusOptions.md +1 -1
- package/dist/docs/reference/model/Transform2-type.md +1 -1
- package/dist/docs/reference/model/Transform2Data.md +1 -1
- package/dist/docs/reference/model/Transform2Input.md +1 -1
- package/dist/docs/reference/model/Transform3-type.md +1 -1
- package/dist/docs/reference/model/Transform3Data.md +1 -1
- package/dist/docs/reference/model/Transform3Input.md +1 -1
- package/dist/docs/reference/model/TrapezoidalThreadProfileSpec.md +97 -0
- package/dist/docs/reference/model/TriangleMesh.md +3 -11
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +10 -4
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +1 -1
- package/dist/docs/reference/model/TriangleMeshTopologyAnalysis.md +131 -0
- package/dist/docs/reference/model/TriangularThreadProfileSpec.md +96 -0
- package/dist/docs/reference/model/TubeOptions.md +10 -86
- package/dist/docs/reference/model/Vector2-type.md +1 -1
- package/dist/docs/reference/model/Vector2Data.md +1 -1
- package/dist/docs/reference/model/Vector2Input.md +1 -1
- package/dist/docs/reference/model/Vector3-type.md +1 -1
- package/dist/docs/reference/model/Vector3Data.md +1 -1
- package/dist/docs/reference/model/Vector3Input.md +1 -1
- package/dist/docs/reference/model/VectorTextLayout.md +1 -1
- package/dist/docs/reference/model/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/model/bounds2.md +4 -4
- package/dist/docs/reference/model/bounds3.md +4 -4
- package/dist/docs/reference/model/box.md +2 -2
- package/dist/docs/reference/model/categories/boolean-operations.md +6 -10
- package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -1
- package/dist/docs/reference/model/categories/bounds.md +2 -2
- package/dist/docs/reference/model/categories/contracts.md +3 -5
- package/dist/docs/reference/model/categories/core-values-errors.md +17 -3
- package/dist/docs/reference/model/categories/explicit-profiles.md +1 -1
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +10 -8
- package/dist/docs/reference/model/categories/generation.md +8 -8
- package/dist/docs/reference/model/categories/hinges.md +1 -1
- package/dist/docs/reference/model/categories/mesh-inspection.md +15 -6
- package/dist/docs/reference/model/categories/paths.md +4 -3
- package/dist/docs/reference/model/categories/primitives.md +5 -5
- package/dist/docs/reference/model/categories/resolution.md +1 -1
- package/dist/docs/reference/model/categories/sections.md +4 -3
- package/dist/docs/reference/model/categories/threads.md +16 -6
- package/dist/docs/reference/model/categories/transforms-placement.md +2 -3
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/cylinder.md +1 -1
- package/dist/docs/reference/model/ellipse.md +1 -1
- package/dist/docs/reference/model/extrude.md +5 -4
- package/dist/docs/reference/model/generate.md +4 -4
- package/dist/docs/reference/model/gridPattern.md +1 -1
- package/dist/docs/reference/model/heightfield.md +1 -1
- package/dist/docs/reference/model/holeCutter.md +12 -2
- package/dist/docs/reference/model/hull.md +1 -1
- package/dist/docs/reference/model/immutableBuffer.md +5 -4
- package/dist/docs/reference/model/implicit.md +1 -1
- package/dist/docs/reference/model/internalThreadCutter.md +12 -20
- package/dist/docs/reference/model/intersect.md +3 -3
- package/dist/docs/reference/model/isGeometryError.md +34 -0
- package/dist/docs/reference/model/knuckleHinge.md +2 -2
- package/dist/docs/reference/model/linearPattern.md +1 -1
- package/dist/docs/reference/model/loft.md +6 -5
- package/dist/docs/reference/model/matchProfiles.md +1 -1
- package/dist/docs/reference/model/minkowskiSum.md +1 -1
- package/dist/docs/reference/model/path2.md +1 -1
- package/dist/docs/reference/model/path3.md +1 -1
- package/dist/docs/reference/model/pathPattern.md +1 -1
- package/dist/docs/reference/model/polygon.md +1 -1
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +15 -23
- package/dist/docs/reference/model/preflightThreadedNut.md +22 -25
- package/dist/docs/reference/model/preflightThreadedRod.md +15 -23
- package/dist/docs/reference/model/radialPattern.md +1 -1
- package/dist/docs/reference/model/rectangle.md +2 -2
- package/dist/docs/reference/model/regularPolygon.md +1 -1
- package/dist/docs/reference/model/revolve.md +6 -5
- package/dist/docs/reference/model/solidFromMesh.md +7 -6
- package/dist/docs/reference/model/sphere.md +1 -1
- package/dist/docs/reference/model/star.md +7 -7
- package/dist/docs/reference/model/stroke.md +1 -1
- package/dist/docs/reference/model/svgPathSection.md +1 -1
- package/dist/docs/reference/model/svgSection.md +1 -1
- package/dist/docs/reference/model/sweep.md +5 -4
- package/dist/docs/reference/model/textSection.md +1 -1
- package/dist/docs/reference/model/threadRidge.md +14 -14
- package/dist/docs/reference/model/threadedNut.md +22 -25
- package/dist/docs/reference/model/threadedRod.md +12 -20
- package/dist/docs/reference/model/torus.md +1 -1
- package/dist/docs/reference/model/transform2.md +1 -1
- package/dist/docs/reference/model/transform3.md +1 -1
- package/dist/docs/reference/model/tube.md +1 -36
- package/dist/docs/reference/model/union.md +3 -3
- package/dist/docs/reference/model/vector2.md +1 -1
- package/dist/docs/reference/model/vector3.md +1 -1
- package/dist/docs/reference/model.md +15 -19
- package/dist/docs/reference/text/Bounds2Data.md +1 -1
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +2 -2
- package/dist/docs/reference/text/Vector2Data.md +1 -1
- package/dist/docs/reference/text/VectorFont.md +7 -7
- package/dist/docs/reference/text/VectorFontOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
- package/dist/docs/reference/text/VectorTextLayout.md +1 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +3 -3
- package/dist/docs/reference/text/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/text/VectorTextOptions.md +1 -1
- package/dist/docs/reference/text/categories/font-preparation.md +3 -3
- package/dist/docs/reference/text/prepareVectorFont.md +1 -1
- package/dist/docs/reference/text.md +4 -4
- package/dist/engine/execution.js +10 -6
- package/dist/engine/export-3mf.js +22 -115
- package/dist/engine/finalization.js +10 -10
- package/dist/engine/index.js +25 -31
- package/dist/engine/model-parts.js +8 -0
- package/dist/engine/model-summary.js +5 -5
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +3 -3
- package/dist/engine/native/operations.js +0 -7
- 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} +10 -10
- package/dist/engine/{operation-environment.js → operations/environment.js} +2 -2
- package/dist/engine/{extrusion-finishing.js → operations/extrusion-finishing.js} +7 -7
- 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/{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 +1 -1
- package/dist/engine/serialize-3mf.js +116 -0
- package/dist/engine/{deferred-context.js → session/deferred-context.js} +4 -4
- package/dist/engine/{model-dependencies.js → session/dependencies.js} +1 -1
- package/dist/engine/{session-graph.js → session/graph.js} +13 -11
- package/dist/engine/{session-native.js → session/native-cache.js} +1 -1
- package/dist/engine/{session.js → session/session.js} +16 -10
- package/dist/engine/{session-snapshot.js → session/snapshot-cache.js} +29 -59
- package/dist/geometry/anchors.js +4 -11
- package/dist/geometry/bounds-value.js +20 -10
- package/dist/geometry/heightfield.js +10 -12
- package/dist/{model → geometry}/immutable-buffer.js +28 -7
- package/dist/geometry/index.js +16 -22
- 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-signature.js +7 -6
- package/dist/geometry/mesh/mesh-solid.js +2 -3
- package/dist/geometry/mesh/mesh-types.js +1 -0
- package/dist/geometry/mesh/mesh.js +13 -22
- package/dist/geometry/mesh-api.js +14 -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/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 +8 -2
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +33 -2
- package/dist/model/operations.js +14 -144
- package/dist/model/recipe-declaration.js +6 -2
- package/dist/model/shape-handles.js +30 -7
- package/dist/text/index.js +1 -1
- package/package.json +21 -11
- 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/extrudeMesh.md +0 -77
- package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +0 -72
- package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +0 -106
- package/dist/docs/reference/geometry/meshBounds.md +0 -39
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +0 -95
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +0 -105
- package/dist/docs/reference/geometry/sweepMesh.md +0 -86
- package/dist/docs/reference/model/FinalizedModel.md +0 -131
- package/dist/docs/reference/model/FinalizedPart.md +0 -87
- package/dist/docs/reference/model/anchor.md +0 -47
- package/dist/docs/reference/model/castSegment.md +0 -40
- package/dist/docs/reference/model/categories/inspection.md +0 -29
- 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/split.md +0 -54
- package/dist/docs/reference/model/splitByPlane.md +0 -66
- package/dist/geometry/profiles/profiles.js +0 -71
- /package/dist/engine/{primitive-profile-types.js → operations/primitives/profile-types.js} +0 -0
- /package/dist/geometry/profiles/{matched.js → match-profiles.js} +0 -0
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Choose shapes, paths, profiles, and modules, then compose immutable geometry with clear sampling and preflight limits.
|
|
4
4
|
|
|
5
|
-
Use Sections for filled 2D shapes
|
|
6
|
-
|
|
5
|
+
Use Sections for filled 2D shapes and Solids for 3D material. Paths describe routes and boundaries;
|
|
6
|
+
profiles help you line up related boundaries for a loft or sweep. Import modeling functions from
|
|
7
|
+
the package root:
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
|
|
@@ -14,8 +15,8 @@ import { generate } from "@metamesh/project";
|
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
|
|
17
|
-
Studio supplies the API and runtime
|
|
18
|
-
|
|
18
|
+
Studio supplies the API and runtime in code Projects. You can use the same values in a standalone
|
|
19
|
+
generation program. Use the [Model API reference](../reference/model.md) for exact
|
|
19
20
|
signatures.
|
|
20
21
|
|
|
21
22
|
## Choose a modeling path
|
|
@@ -30,32 +31,34 @@ signatures.
|
|
|
30
31
|
| Repeated holes or features | [Patterns and placement](recipes.md#primitive-booleans-and-repeated-placement) | Position one feature before repeating it |
|
|
31
32
|
| Separate mating parts | [Explicit anchors](recipes.md#named-anchors-and-custom-frames) and [shared thread settings](https://metamesh.studio/docs/develop/printable-threads) | Share a mating datum and clearance decisions |
|
|
32
33
|
|
|
33
|
-
Combine these
|
|
34
|
-
|
|
35
|
-
sleeve.
|
|
34
|
+
Combine these approaches as your part needs them: join a flange to a sleeve, then add repeated
|
|
35
|
+
holes with cutters. Start with an existing primitive when it fits; `tube` is ready for a
|
|
36
|
+
concentric straight sleeve.
|
|
36
37
|
|
|
37
|
-
Start with synchronous generation and return named parts. Geometry values
|
|
38
|
-
that
|
|
38
|
+
Start with synchronous generation and return named parts. Geometry values describe immutable
|
|
39
|
+
recipes that Studio or your standalone engine evaluates. Add `computed` when expensive work
|
|
40
|
+
stays unchanged across edits. See
|
|
39
41
|
[generation and parameter changes](generation.md#start-with-generate) and the
|
|
40
42
|
[standalone CLI entry contract](https://metamesh.studio/docs/develop/agent-authoring#model-entries).
|
|
41
43
|
|
|
42
44
|
## Choose the module for your host
|
|
43
45
|
|
|
44
|
-
| Import
|
|
45
|
-
|
|
|
46
|
-
| [`@metamesh/modeling`](../reference/model.md)
|
|
47
|
-
| [`@metamesh/modeling/geometry`](../reference/geometry.md)
|
|
48
|
-
| [`@metamesh/modeling/
|
|
49
|
-
| [`@metamesh/modeling/
|
|
46
|
+
| Import | Use it for | Who owns execution |
|
|
47
|
+
| ---------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------- |
|
|
48
|
+
| [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, transforms, Booleans, sweeps, lofts, and patterns | A synchronous generation program |
|
|
49
|
+
| [`@metamesh/modeling/geometry`](../reference/geometry.md) | Pure paths, profiles, calculations, and indexed meshes | Your ordinary TypeScript code |
|
|
50
|
+
| [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md) | Triangle mesh construction, processing, and inspection | Your ordinary TypeScript code |
|
|
51
|
+
| [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
|
|
52
|
+
| [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
|
|
50
53
|
|
|
51
54
|
Construct shapes, vectors, paths, and transforms in ordinary TypeScript and reuse them in
|
|
52
|
-
synchronous generation.
|
|
55
|
+
synchronous generation. Studio or your standalone engine handles evaluation, measurements, and export.
|
|
53
56
|
|
|
54
57
|
## Use Modeling outside Studio
|
|
55
58
|
|
|
56
59
|
Start with a [complete standalone model](standalone-model.md), or follow
|
|
57
60
|
[Run Modeling in your application](hosting.md)
|
|
58
|
-
to initialize the engine, build a model, load WASM, and export
|
|
61
|
+
to initialize the engine, build a model, load WASM, and export the completed result.
|
|
59
62
|
For lettering, [prepare exact font bytes](fonts.md) before building.
|
|
60
63
|
|
|
61
64
|
## Geometry vocabulary
|
|
@@ -76,12 +79,14 @@ Choose the representation by the information you need to retain:
|
|
|
76
79
|
| `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
|
|
77
80
|
| `Anchor3` | An attachment frame | Relative placement |
|
|
78
81
|
|
|
79
|
-
`Section` and `Solid`
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
`Section` and `Solid` describe shapes as immutable recipes. You can construct and combine them
|
|
83
|
+
without an engine, then reuse ordinary recipes across sessions. Explicit resolution settings
|
|
84
|
+
stay with the recipe; omitted settings use the evaluating host's defaults. The host manages
|
|
85
|
+
evaluation caches and native kernel values.
|
|
86
|
+
|
|
87
|
+
Calling `shape.components()` reads evaluated geometry. Its selected shapes, and recipes using them,
|
|
88
|
+
can only be evaluated in their original session because the selection depends on that session's
|
|
89
|
+
evaluated topology.
|
|
85
90
|
|
|
86
91
|
Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
|
|
87
92
|
contour factories such as `circleContour` and `rectangleContour` when custom calculations or
|
|
@@ -103,12 +108,12 @@ sampling options:
|
|
|
103
108
|
- `polygon({ polygons: data })` accepts existing `RegionData`.
|
|
104
109
|
|
|
105
110
|
Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
|
|
106
|
-
disconnected components. Use `section.toRegionData()` inside synchronous generation to
|
|
107
|
-
the evaluated shape; keep serialized point data for interchange or
|
|
111
|
+
disconnected components. Use `section.toRegionData()` inside synchronous generation to read
|
|
112
|
+
the evaluated shape; keep serialized point data for interchange or calculations outside generation.
|
|
108
113
|
|
|
109
114
|
`rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
|
|
110
|
-
identified spans for custom geometry.
|
|
111
|
-
|
|
115
|
+
identified spans for custom geometry. Use `matchProfiles` to prepare a complete family when loft
|
|
116
|
+
stations or a sweep need holes, seams, or landmarks beyond ordinary primitives.
|
|
112
117
|
|
|
113
118
|
Identified spans also accept cubic Béziers with the same endpoints and controls as
|
|
114
119
|
[`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
|
|
@@ -117,10 +122,26 @@ retain repeated logical slots, while the completed loft removes degenerate faces
|
|
|
117
122
|
|
|
118
123
|
## Choose fluent values or standalone algorithms
|
|
119
124
|
|
|
125
|
+
### Convert representations deliberately
|
|
126
|
+
|
|
127
|
+
| From | Conversion | Evaluation and ownership |
|
|
128
|
+
| -------------------------- | ---------------------------------------------- | -------------------------------------------------------------- |
|
|
129
|
+
| `Contour` / `RegionData` | `polygon(...)` to `Section` | Captures a recipe without an engine |
|
|
130
|
+
| `Section` | `section.toRegionData()` | Observes evaluated geometry inside a host execution |
|
|
131
|
+
| `Profile` | `matchProfiles(...)` | Pure matching retains identified boundaries and landmarks |
|
|
132
|
+
| Closed `Path2` / `Contour` | `mesh.extrude(...)` to `TriangleMesh` | Pure mesh construction; no `ends` treatments |
|
|
133
|
+
| `TriangleMesh` | `solidFromMesh(...)` to `Solid` | Captures a recipe; native validation happens during evaluation |
|
|
134
|
+
| `Solid` / `TriangleMesh` | `part(...)`, then an engine run to `ModelPart` | Host finalizes durable immutable manufacturing buffers |
|
|
135
|
+
| `ModelPart` | Pass directly to mesh analysis or `export3mf` | No live session needed; use buffer `copy()` before mutation |
|
|
136
|
+
|
|
137
|
+
Pure extrusion uses `ExtrudeMeshOptions` for height, centering, twist, top scale, and sampling.
|
|
138
|
+
Native `Section.extrude` also supports `ends` through `ExtrudeOptions`; requesting them from
|
|
139
|
+
`mesh.extrude` throws instead of silently returning unfinished geometry.
|
|
140
|
+
|
|
120
141
|
Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
|
|
121
142
|
`path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
|
|
122
143
|
outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
|
|
123
|
-
[`
|
|
144
|
+
[`mesh.sweep`](../reference/mesh/sweep.md), or
|
|
124
145
|
[`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
|
|
125
146
|
|
|
126
147
|
### Fluent vector and tuple arithmetic
|
|
@@ -155,9 +176,9 @@ data, and any supported construction shorthand.
|
|
|
155
176
|
|
|
156
177
|
Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
|
|
157
178
|
and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
|
|
158
|
-
when a numerical algorithm needs only coordinates;
|
|
159
|
-
Options, reports, geometry descriptors, and recipes keep their descriptive
|
|
160
|
-
`
|
|
179
|
+
when a numerical algorithm needs only coordinates; keep the full record when closure matters too.
|
|
180
|
+
Options, reports, geometry descriptors, and recipes keep their own descriptive names. Use
|
|
181
|
+
`toMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a triangle mesh
|
|
161
182
|
or a Section as a region.
|
|
162
183
|
|
|
163
184
|
## Query paths and preserve closure
|
|
@@ -195,7 +216,7 @@ export const restoredPath = path3(boundary.toData());
|
|
|
195
216
|
|
|
196
217
|
`toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
|
|
197
218
|
value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
|
|
198
|
-
|
|
219
|
+
Don't repeat the endpoint of a closed path. Open paths may be empty; their bounds are `undefined`,
|
|
199
220
|
and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
|
|
200
221
|
not a filled interior or underlying analytic curve.
|
|
201
222
|
|
|
@@ -206,13 +227,21 @@ dimension. Authored point collections accept fluent vectors or tuples; serialize
|
|
|
206
227
|
|
|
207
228
|
## Compose modeling operations
|
|
208
229
|
|
|
209
|
-
|
|
210
|
-
|
|
230
|
+
Give intermediate shapes meaningful names and choose a curve tolerance that preserves the detail
|
|
231
|
+
you need. Many high-resolution Boolean operands take longer to build.
|
|
232
|
+
|
|
233
|
+
Dimension inputs accept matching fluent vectors or plain coordinate tuples, such as
|
|
234
|
+
`box({ size: vector3([30, 20, 6]) })`. Use `section.extrude(options)`, `section.revolve(options)`,
|
|
235
|
+
and `section.sweep(path, options)` in fluent modeling sequences. Imported `extrude`, `revolve`, and
|
|
236
|
+
`sweep` accept `Section | CorrespondingProfile`, so reusable profile functions can use either input
|
|
237
|
+
without branching. Both forms use the same operation contracts. Use `mesh.extrude(contour, options)`
|
|
238
|
+
when constructing triangle buffers directly.
|
|
211
239
|
|
|
212
240
|
Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
|
|
213
|
-
filled Section and `box({ size: [24, 16, 6] })` creates a Solid. `union` and `intersect`
|
|
214
|
-
|
|
215
|
-
|
|
241
|
+
filled Section and `box({ size: [24, 16, 6] })` creates a Solid. The `union`, `subtract`, and `intersect`
|
|
242
|
+
methods accept one same-dimensional shape or a readonly array; an empty array preserves the receiver.
|
|
243
|
+
Collection `union(shapes)` and `intersect(shapes)` combine peers and require at least one shape.
|
|
244
|
+
`section.offset(distance, options)` stays in the filled XY plane.
|
|
216
245
|
|
|
217
246
|
- `section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
|
|
218
247
|
`center: true` is requested.
|
|
@@ -220,9 +249,9 @@ cutters. `section.offset(distance, options)` stays in the filled XY plane.
|
|
|
220
249
|
- `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
|
|
221
250
|
rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. Invertible
|
|
222
251
|
XY transforms must keep consistent handedness. Use corresponding Profile stations for custom
|
|
223
|
-
topology. Boolean Sections and point contours
|
|
224
|
-
`"reindex"`, `"fast-distance"`, or `"distance"`
|
|
225
|
-
not establish semantic correspondence.
|
|
252
|
+
topology. Boolean Sections and point contours default to `correspondence: "direct"`, preserving
|
|
253
|
+
their supplied seams. Select `"reindex"`, `"fast-distance"`, or `"distance"` to change the
|
|
254
|
+
association strategy. Contour order alone does not establish semantic correspondence.
|
|
226
255
|
- `section.sweep(path, options)` supports open or closed paths, degree twist, uniform/XY/per-station
|
|
227
256
|
scales, and an explicit compatible closed seam.
|
|
228
257
|
|
|
@@ -242,16 +271,21 @@ in this order:
|
|
|
242
271
|
2. The operation's local `resolution`.
|
|
243
272
|
3. Host session defaults.
|
|
244
273
|
|
|
245
|
-
A shape
|
|
274
|
+
A shape doesn't carry its sampling policy into later operations; pass it explicitly where needed.
|
|
246
275
|
|
|
247
276
|
Use an exact segment count for intentionally faceted geometry or when two sampled contours must
|
|
248
277
|
match point for point. Use physical chord and segment limits for ordinary printable curves. If a
|
|
249
|
-
requested tolerance
|
|
278
|
+
requested tolerance can't fit within the safety cap, the operation fails instead of silently
|
|
250
279
|
returning a coarser shape.
|
|
251
280
|
|
|
252
281
|
`regularPolygon({ radius, sides, rotation, sizing })` makes a filled regular polygon.
|
|
253
282
|
`sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
|
|
254
283
|
meet the nominal radius. `circle` and `cylinder` support the same radial convention.
|
|
284
|
+
`tube` accepts a complete pair of inner/outer radii or diameters, with independent `innerSizing`
|
|
285
|
+
and `outerSizing`. For example, `tube({ innerDiameter: 8, outerDiameter: 12, height: 10,
|
|
286
|
+
innerSizing: "face" })` preserves an 8 mm clear bore between the sampled faces. Both defaults are
|
|
287
|
+
`"vertex"`; compensation that removes the wall rejects. Sampling and sizing do not establish a
|
|
288
|
+
manufacturing fit allowance.
|
|
255
289
|
|
|
256
290
|
Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
|
|
257
291
|
`profile` points:
|
|
@@ -269,8 +303,8 @@ millimetre gap, and degree spin. It accepts named or explicit anchors; Sections
|
|
|
269
303
|
|
|
270
304
|
Use [`transform2`](../reference/geometry/transform2.md) and
|
|
271
305
|
[`transform3`](../reference/geometry/transform3.md) chains for reusable placements. They are immutable
|
|
272
|
-
and pure
|
|
273
|
-
by a translation rotates around the origin, then moves the result:
|
|
306
|
+
and pure, so you don't need an engine to build them. Calls apply in written order. A rotation
|
|
307
|
+
followed by a translation rotates around the origin, then moves the result:
|
|
274
308
|
|
|
275
309
|
|
|
276
310
|
|
|
@@ -286,12 +320,14 @@ export const placedDirection = placement.applyDirection([10, 0, 0]); // approxim
|
|
|
286
320
|
|
|
287
321
|
|
|
288
322
|
Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
|
|
289
|
-
matching path helpers.
|
|
323
|
+
matching path helpers. Finished parts accept rigid transforms through `part(id, { geometry, transform })`;
|
|
324
|
+
pattern and attachment matrices work directly. Part placement rejects scale, shear and reflection.
|
|
325
|
+
`toData()` supplies a canonical matrix when another system needs it.
|
|
290
326
|
Construct the placement once and reuse it across point collections.
|
|
291
327
|
|
|
292
328
|
`current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
|
|
293
|
-
same-dimensional matrix. `inverse()` returns the reverse placement.
|
|
294
|
-
|
|
329
|
+
same-dimensional matrix. `inverse()` returns the reverse placement. Each operation returns a new
|
|
330
|
+
chain, so you can derive different placements from a shared starting point.
|
|
295
331
|
|
|
296
332
|
Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
|
|
297
333
|
the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
|
|
@@ -306,7 +342,7 @@ including under nonuniform scaling; it rejects zero normals. All three return fl
|
|
|
306
342
|
`Transform2` works directly with Sections and pure XY helpers; its `Transform2Data` is the same
|
|
307
343
|
canonical 3x3 representation throughout. Use `to3D()` when that XY placement
|
|
308
344
|
also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
|
|
309
|
-
that move the XY plane or collapse its dimensions; it
|
|
345
|
+
that move the XY plane or collapse its dimensions; it doesn't project 3D points.
|
|
310
346
|
See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
|
|
311
347
|
|
|
312
348
|
### Transform composition order
|
|
@@ -367,7 +403,7 @@ export const perpendicular = normal.dot(tangent); // approximately 0
|
|
|
367
403
|
|
|
368
404
|
|
|
369
405
|
|
|
370
|
-
Fluent math
|
|
406
|
+
Fluent math and shape transforms accept vector values directly; compose a transform for part placement. Serialized
|
|
371
407
|
geometry and low-level kernels use tuples. Keep model-specific equations beside the model.
|
|
372
408
|
|
|
373
409
|
## Measure and compare bounds
|
|
@@ -375,27 +411,22 @@ geometry and low-level kernels use tuples. Keep model-specific equations beside
|
|
|
375
411
|
Use [`bounds2`](../reference/geometry/bounds2.md) and
|
|
376
412
|
[`bounds3`](../reference/geometry/bounds3.md) for immutable axis-aligned bounds. `size()` and
|
|
377
413
|
`center()` return fluent vectors. `containsBounds(other)` tests positioned containment in the
|
|
378
|
-
same coordinate frame, including touching boundaries. It
|
|
414
|
+
same coordinate frame, including touching boundaries. It doesn't establish a manufacturing fit.
|
|
379
415
|
|
|
380
416
|
|
|
381
417
|
|
|
382
418
|
```ts
|
|
383
419
|
import { bounds3 } from "@metamesh/modeling";
|
|
384
|
-
import {
|
|
385
|
-
|
|
386
|
-
fitBounds,
|
|
387
|
-
layoutRow,
|
|
388
|
-
meshBounds,
|
|
389
|
-
rectangleContour,
|
|
390
|
-
} from "@metamesh/modeling/geometry";
|
|
420
|
+
import { fitBounds, layoutRow, rectangleContour } from "@metamesh/modeling/geometry";
|
|
421
|
+
import * as mesh from "@metamesh/modeling/geometry/mesh";
|
|
391
422
|
|
|
392
423
|
export const envelope = bounds3({ min: [-10, -5, 0], max: [10, 5, 8] });
|
|
393
424
|
export const size = envelope.size(); // Vector3: [20, 10, 8] mm
|
|
394
425
|
export const center = envelope.center(); // Vector3: [0, 0, 4] mm
|
|
395
426
|
|
|
396
|
-
const
|
|
427
|
+
const triangleMesh = mesh.extrude(rectangleContour({ size: [12, 6] }), { height: 4 });
|
|
397
428
|
// Mesh measurements are plain data. Wrap once for fluent queries.
|
|
398
|
-
export const measured = bounds3(
|
|
429
|
+
export const measured = bounds3(mesh.bounds(triangleMesh));
|
|
399
430
|
export const fits = envelope.containsBounds(measured); // true
|
|
400
431
|
export const data = measured.toData(); // Frozen { min, max } record for interchange.
|
|
401
432
|
|
|
@@ -417,10 +448,10 @@ Mesh and region measurements, inspection results, and engine snapshots retain pl
|
|
|
417
448
|
Compiled Generator packages passing bounds values to host recipes or computed data require
|
|
418
449
|
runtime `9.0.0` or newer in major 9.
|
|
419
450
|
|
|
420
|
-
|
|
421
|
-
[`layoutRow`](../reference/geometry/layoutRow.md)
|
|
422
|
-
|
|
423
|
-
|
|
451
|
+
Use [`fitBounds`](../reference/geometry/fitBounds.md) to calculate a placement and
|
|
452
|
+
[`layoutRow`](../reference/geometry/layoutRow.md) to arrange a collection. These standalone
|
|
453
|
+
algorithms accept values or plain records. Supply bounds after any intended rotation; an
|
|
454
|
+
axis-aligned box alone doesn't describe the underlying shape.
|
|
424
455
|
|
|
425
456
|
## SVG sections: fills and strokes are different inputs
|
|
426
457
|
|
|
@@ -430,7 +461,7 @@ handles supported shapes, paths, affine transforms, physical root units, `viewBo
|
|
|
430
461
|
allowlisted inline fill and stroke presentation.
|
|
431
462
|
|
|
432
463
|
[`svgPathSection`](../reference/model/svgPathSection.md) accepts SVG path-data text rather than a
|
|
433
|
-
document. It is a **fill-only** path operation:
|
|
464
|
+
document. It is a **fill-only** path operation: it doesn't apply stroke styling. Path
|
|
434
465
|
units default to millimetres and can be converted with its scale option.
|
|
435
466
|
|
|
436
467
|
Both functions convert SVG's Y-down plane to MetaMesh's Y-up plane and center the final painted
|
|
@@ -438,8 +469,8 @@ bounds by default. Use `origin: "document"` with `svgSection` when the converted
|
|
|
438
469
|
origin must remain meaningful. Adaptive flattening happens after supported transforms and unit
|
|
439
470
|
conversion, so tolerances apply in final millimetre space.
|
|
440
471
|
|
|
441
|
-
Unsupported layout or external content fails rather than disappearing silently.
|
|
442
|
-
|
|
472
|
+
Unsupported layout or external content fails rather than disappearing silently. These helpers
|
|
473
|
+
don't support nested SVG viewports, `<use>`, images, live text, external stylesheets,
|
|
443
474
|
clipping, masks, filters, scripts, animation, gradients, patterns, uploaded project assets, or
|
|
444
475
|
custom font files. Use the [SVG extrusion recipe](recipes.md#svg-parameter-and-extrusion)
|
|
445
476
|
for a complete authored example.
|
|
@@ -448,8 +479,8 @@ for a complete authored example.
|
|
|
448
479
|
|
|
449
480
|
`services.text.layout()` shapes text inside generation. Cache an expensive shared layout with
|
|
450
481
|
`computed`, measure its `metrics`, and pass it to `textSection(layout())`. There is no
|
|
451
|
-
ambient font provider
|
|
452
|
-
and a Font control for the face and weight.
|
|
482
|
+
ambient font provider, and exporting doesn't shape the text again. Declare a Text control for
|
|
483
|
+
the wording and a Font control for the face and weight.
|
|
453
484
|
|
|
454
485
|
Font size is the em size in millimetres, not the height of a particular letter. Layout supports
|
|
455
486
|
horizontal lines, spacing, and alignment, or a single circular baseline through
|
|
@@ -467,41 +498,50 @@ complete source, profile and fit choices, end treatments, and links into the exa
|
|
|
467
498
|
|
|
468
499
|
## Check preflight guarantees
|
|
469
500
|
|
|
470
|
-
|
|
471
|
-
|
|
501
|
+
Use a preflight to check inputs and see what an operation will require. Each preflight checks
|
|
502
|
+
different things, so read what its report covers:
|
|
472
503
|
|
|
473
|
-
- [`preflightHeightfield`](../reference/
|
|
504
|
+
- [`mesh.preflightHeightfield`](../reference/mesh/preflightHeightfield.md) checks grid dimensions,
|
|
474
505
|
coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
|
|
475
506
|
and byte counts without evaluating heights.
|
|
476
|
-
- [`
|
|
507
|
+
- [`mesh.preflightThreadSolid`](../reference/mesh/preflightThreadSolid.md)
|
|
477
508
|
and related thread preflights check dimensions, sampling, and conservative allocation estimates.
|
|
478
509
|
They return the sampling plan without constructing the final mesh or native solid.
|
|
479
510
|
- [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
|
|
480
511
|
SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
|
|
481
512
|
at the selected resolution; they do not predict later mesh allocation.
|
|
482
513
|
|
|
483
|
-
The `/geometry` preflights run without an engine and use explicit options or package defaults.
|
|
514
|
+
The `/geometry` and `mesh` preflights run without an engine and use explicit options or package defaults.
|
|
484
515
|
The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
|
|
485
516
|
[`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
|
|
486
517
|
[`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
|
|
487
518
|
model execution and use the host's resolution and limits.
|
|
488
519
|
|
|
489
|
-
Passing a preflight covers its documented checks. Construction can still fail
|
|
490
|
-
|
|
491
|
-
you
|
|
520
|
+
Passing a preflight covers only its documented checks. Construction can still fail while running
|
|
521
|
+
callbacks, meshing, or evaluating native geometry. Constructors enforce their limits even when
|
|
522
|
+
you skip a preflight; use one when its plan or diagnostics help you make a decision.
|
|
492
523
|
|
|
493
524
|
## Lifecycle and inspection
|
|
494
525
|
|
|
495
|
-
Studio or your standalone host
|
|
496
|
-
preview, and file delivery.
|
|
497
|
-
`
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
526
|
+
Studio or your standalone host handles initialization, cleanup, finalization, Worker recovery,
|
|
527
|
+
preview, and file delivery. Don't manually delete `Section` or `Solid` values. Use
|
|
528
|
+
`shape.inspect()` for bounds, topology counts, area, and volume.
|
|
529
|
+
Its immutable extrema are nested under `facts.bounds.min` and `facts.bounds.max`.
|
|
530
|
+
Native `componentCount` counts disconnected material components. Mesh analysis and signatures use
|
|
531
|
+
`shellCount` for surfaces connected by shared indexed edges: one sealed hollow body has one material
|
|
532
|
+
component and two shells. Open mesh analysis can also count open shells; this count does not certify
|
|
533
|
+
closed topology or geometric validity.
|
|
534
|
+
|
|
535
|
+
Queries such as `shape.inspect()`, `shape.isEmpty()`, `shape.components()`, `shape.anchor(name)`,
|
|
536
|
+
`solid.distance(other)`, and `solid.castSegment(origin, endpoint)` read evaluated geometry.
|
|
537
|
+
These queries and interchange with `solid.toMesh()` or `section.toRegionData()` require the host's
|
|
538
|
+
active synchronous generation. `solid.split(cutter)` returns the intersection and remainder;
|
|
539
|
+
`solid.splitByPlane(plane)` returns the positive and negative sides of the plane.
|
|
540
|
+
Constructing or combining a recipe outside generation doesn't evaluate it.
|
|
541
|
+
|
|
542
|
+
An inspection result describes the generated geometry; it doesn't certify wall thickness,
|
|
543
|
+
overhangs, fits, loads, or manufacturability. Express those requirements in your parameters and
|
|
544
|
+
validation, then check them in your manufacturing workflow.
|
|
505
545
|
|
|
506
546
|
- [Use geometry recipes](recipes.md)
|
|
507
547
|
- [Browse exact signatures](../reference/model.md)
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Prepare licensed font bytes and a reusable text layout before building a model outside Studio.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
To add lettering outside Studio, load a font you're licensed to use and prepare it through the
|
|
6
|
+
optional `@metamesh/modeling/text` entry point before synchronous generation. In Studio, use the
|
|
7
|
+
[Font control recipe](recipes.md#text-from-a-font-parameter).
|
|
8
8
|
|
|
9
9
|
## Install font support
|
|
10
10
|
|
|
@@ -15,11 +15,12 @@ pnpm add fontkit
|
|
|
15
15
|
pnpm add woff2-encoder
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed.
|
|
19
|
-
|
|
18
|
+
TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. Your
|
|
19
|
+
application supplies the font bytes; the library doesn't fetch them.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
preparing it. This identifies the supplied face; it
|
|
21
|
+
If you're using a static face whose actual weight isn't 400, pass that weight through
|
|
22
|
+
`staticWeight` when preparing it. This identifies the supplied face; it doesn't synthesize
|
|
23
|
+
another weight.
|
|
23
24
|
|
|
24
25
|
## Prepare one reusable layout
|
|
25
26
|
|
|
@@ -44,8 +45,8 @@ export async function makeLabelLayout(fontBytes: Uint8Array): Promise<{
|
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
|
|
47
|
-
Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and
|
|
48
|
-
in Y
|
|
48
|
+
Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and
|
|
49
|
+
measurements in millimetres, with Y pointing up, plus a separate `svg` string.
|
|
49
50
|
|
|
50
51
|
Pass the `layout` to [`textSection`](../reference/model/textSection.md) inside generation, then
|
|
51
52
|
extrude the filled section. Prepare layouts ahead of time, or supply a deterministic text service
|
|
@@ -57,4 +58,4 @@ The same layout options support horizontal lines or one circular line through
|
|
|
57
58
|
metrics, and circular-text constraints.
|
|
58
59
|
|
|
59
60
|
Use the [Font preparation reference](../reference/text.md) for font and layout options, or
|
|
60
|
-
[Run Modeling in your application](hosting.md) for
|
|
61
|
+
[Run Modeling in your application](hosting.md) for engine setup, export, and cleanup.
|
|
@@ -6,8 +6,8 @@ Build parts by combining primitives, applying transforms, and removing material
|
|
|
6
6
|
MetaMesh uses [Manifold](https://manifoldcad.org/docs/jsapi/), a solid-modeling kernel that works
|
|
7
7
|
with **manifold meshes**: closed, consistently oriented boundaries representing solid material.
|
|
8
8
|
|
|
9
|
-
Studio code
|
|
10
|
-
The engine
|
|
9
|
+
In a Studio code Project, `@metamesh/modeling` describes your shapes as immutable `Section` and
|
|
10
|
+
`Solid` recipes. The engine builds their geometry and takes care of the underlying kernel values.
|
|
11
11
|
|
|
12
12
|
## Coordinates and units
|
|
13
13
|
|
|
@@ -15,8 +15,8 @@ MetaMesh uses a right-handed coordinate system with **+Z up**. Model dimensions
|
|
|
15
15
|
Place a part intentionally around the origin, then use transforms or anchors to relate it to other
|
|
16
16
|
parts.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
Transforms leave the original shape unchanged. Keep a base shape, give each stage a useful name,
|
|
19
|
+
and reuse the same base for several features.
|
|
20
20
|
|
|
21
21
|
## Build solids compositionally
|
|
22
22
|
|
|
@@ -33,7 +33,7 @@ export default generate(({ part }) => {
|
|
|
33
33
|
// Primitives are centered by default, so both faces get 2 mm of overtravel.
|
|
34
34
|
// Overtravel is for robust subtraction; it does not enlarge the hole diameter.
|
|
35
35
|
const hole = cylinder({ height: 8, radius: 3 });
|
|
36
|
-
return [part("model", plate.subtract(
|
|
36
|
+
return [part("model", plate.subtract(hole))];
|
|
37
37
|
});
|
|
38
38
|
```
|
|
39
39
|
|
|
@@ -42,16 +42,18 @@ The cylinder clears both faces of the plate, leaving a through-hole without coin
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2…2 mm`; the cutter
|
|
45
|
-
occupies `Z = −4…4 mm`.
|
|
46
|
-
stays `3 mm`.
|
|
45
|
+
occupies `Z = −4…4 mm`. Extending the cutter beyond both faces makes a clear through-cut while the
|
|
46
|
+
hole radius stays `3 mm`. Use the body's datum to place the cutter so they stay aligned when
|
|
47
|
+
dimensions change.
|
|
47
48
|
|
|
48
49
|
Name intermediate solids by their purpose. Arrange independent repeated cutters first, then
|
|
49
|
-
subtract them together where possible. Many high-resolution Boolean steps
|
|
50
|
-
|
|
50
|
+
subtract them together where possible. Many high-resolution Boolean steps take longer to build
|
|
51
|
+
and make it harder to see what each step contributes.
|
|
51
52
|
|
|
52
|
-
The `union` and `intersect`
|
|
53
|
-
in XY.
|
|
54
|
-
|
|
53
|
+
The `union`, `subtract`, and `intersect` methods accept one shape or an array and also combine
|
|
54
|
+
filled Sections in XY. Use collection `union(shapes)` and `intersect(shapes)` when combining peers.
|
|
55
|
+
Use either Sections or Solids throughout each call. Keep an outline as a Section while
|
|
56
|
+
combining and offsetting it, then chain `.extrude({ height })` or `.revolve(options)` to make a Solid.
|
|
55
57
|
Transforms apply in written order about the origin: translating then rotating also rotates the
|
|
56
58
|
translated position. Place finished parts through `part` options when their geometry can be reused.
|
|
57
59
|
|
|
@@ -63,7 +65,7 @@ the final translations separate the results for comparison.
|
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
```ts
|
|
66
|
-
import { box, cylinder,
|
|
68
|
+
import { box, cylinder, transform3 } from "@metamesh/modeling";
|
|
67
69
|
import { generate } from "@metamesh/project";
|
|
68
70
|
|
|
69
71
|
export default generate(({ part }) => {
|
|
@@ -72,15 +74,15 @@ export default generate(({ part }) => {
|
|
|
72
74
|
// Reuse the same overlapping operands to compare the three operations.
|
|
73
75
|
// Place finished parts separately so display spacing can reuse their geometry.
|
|
74
76
|
return [
|
|
75
|
-
part("union", { geometry: union(
|
|
77
|
+
part("union", { geometry: block.union(tool), color: "#60a5fa" }),
|
|
76
78
|
part("difference", {
|
|
77
|
-
geometry: block.subtract(
|
|
78
|
-
|
|
79
|
+
geometry: block.subtract(tool),
|
|
80
|
+
transform: transform3().translate([42, 0, 0]),
|
|
79
81
|
color: "#f59e0b",
|
|
80
82
|
}),
|
|
81
83
|
part("intersection", {
|
|
82
|
-
geometry: intersect(
|
|
83
|
-
|
|
84
|
+
geometry: block.intersect(tool),
|
|
85
|
+
transform: transform3().translate([84, 0, 0]),
|
|
84
86
|
color: "#34d399",
|
|
85
87
|
}),
|
|
86
88
|
];
|
|
@@ -91,11 +93,11 @@ Left: all material from union. Center: block material outside the tool. Right: m
|
|
|
91
93
|
|
|
92
94
|
|
|
93
95
|
|
|
94
|
-
| Operation
|
|
95
|
-
|
|
|
96
|
-
| [`union`](../reference/model/
|
|
97
|
-
| [`shape.subtract`](../reference/model/Solid.md#subtract)
|
|
98
|
-
| [`intersect`](../reference/model/
|
|
96
|
+
| Operation | Material retained | Common use |
|
|
97
|
+
| ---------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
|
|
98
|
+
| [`shape.union`](../reference/model/Solid.md#union) | Inside any operand | Join an overlapping boss or rib to a body |
|
|
99
|
+
| [`shape.subtract`](../reference/model/Solid.md#subtract) | Inside the base, outside every cutter | Cut holes, pockets, and clearance envelopes |
|
|
100
|
+
| [`shape.intersect`](../reference/model/Solid.md#intersect) | Inside every operand | Trim a feature to an envelope or isolate shared material |
|
|
99
101
|
|
|
100
102
|
Use intentional overlap for joined features and overtravel for through-cutters. A face or point
|
|
101
103
|
that only touches another feature is not a reliable connection for a manufacturing part. Inspect
|
|
@@ -103,7 +105,7 @@ the result when thin walls, tangencies, or disconnected components are possible.
|
|
|
103
105
|
|
|
104
106
|
## Valid solid does not mean manufacturable part
|
|
105
107
|
|
|
106
|
-
The kernel can enforce solid topology, but it
|
|
108
|
+
The kernel can enforce solid topology, but it doesn't know your printer, material, load case,
|
|
107
109
|
tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
|
|
108
110
|
cross-field errors in the Project, then verify the exported file in its downstream tool.
|
|
109
111
|
|
|
@@ -111,12 +113,11 @@ Empty or zero-volume output is invalid; non-empty output still needs engineering
|
|
|
111
113
|
|
|
112
114
|
## Geometry ownership
|
|
113
115
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
`model.ts`.
|
|
116
|
+
Studio creates and cleans up the native resources needed to evaluate your `Section` and `Solid`
|
|
117
|
+
recipes. Don't initialize the kernel or manually delete shapes in `model.ts`.
|
|
117
118
|
|
|
118
|
-
Use `
|
|
119
|
-
`componentCount`. `components()` returns disconnected material pieces, preserving holes and
|
|
119
|
+
Use `shape.inspect()` for measurements such as bounds, area, volume, and
|
|
120
|
+
`componentCount`. `shape.components()` returns disconnected material pieces, preserving holes and
|
|
120
121
|
enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
|
|
121
122
|
makes two. Recombining the pieces preserves the original material.
|
|
122
123
|
|