@metamesh/modeling 0.14.0 → 0.16.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 +61 -0
- package/README.md +55 -13
- package/dist/api/engine.d.ts +15 -7
- package/dist/api/geometry.d.ts +853 -562
- package/dist/api/index.d.ts +604 -227
- package/dist/api/text.d.ts +9 -7
- package/dist/docs/guides/concepts.md +295 -91
- package/dist/docs/guides/fonts.md +9 -8
- package/dist/docs/guides/fundamentals.md +22 -23
- package/dist/docs/guides/generation.md +24 -23
- package/dist/docs/guides/hosting.md +26 -11
- package/dist/docs/guides/recipes.md +74 -48
- package/dist/docs/guides/standalone-model.md +42 -0
- package/dist/docs/manifest.json +1555 -749
- package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
- package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
- package/dist/docs/reference/engine/GenerationOptions.md +1 -1
- package/dist/docs/reference/engine/GeometryResource.md +1 -1
- package/dist/docs/reference/engine/ModelDependencies.md +1 -1
- package/dist/docs/reference/engine/ModelEngine.md +1 -1
- package/dist/docs/reference/engine/ModelEngineOptions.md +4 -8
- package/dist/docs/reference/engine/ModelSession.md +1 -1
- package/dist/docs/reference/engine/ModelSnapshot.md +21 -10
- package/dist/docs/reference/engine/SessionOptions.md +1 -1
- package/dist/docs/reference/engine/SnapshotPart.md +6 -3
- package/dist/docs/reference/engine/categories/host-lifecycle.md +7 -2
- package/dist/docs/reference/engine/createModelEngine.md +3 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
- package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
- package/dist/docs/reference/engine/validateModel.md +1 -1
- package/dist/docs/reference/engine.md +6 -2
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
- package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +6 -5
- package/dist/docs/reference/geometry/ArcCurve2.md +11 -7
- package/dist/docs/reference/geometry/ArcCurve3.md +13 -9
- package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +11 -5
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +2 -1
- package/dist/docs/reference/geometry/Bounds2-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds2Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds2Input.md +21 -0
- package/dist/docs/reference/geometry/Bounds3-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
- package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
- package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
- package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -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 +10 -10
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -7
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
- package/dist/docs/reference/geometry/Contour.md +10 -4
- package/dist/docs/reference/geometry/ContourCurve.md +5 -1
- package/dist/docs/reference/geometry/ContourPoint.md +6 -1
- package/dist/docs/reference/geometry/ContourSegment.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
- package/dist/docs/reference/geometry/Curve2.md +5 -1
- package/dist/docs/reference/geometry/Curve3.md +5 -1
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +9 -3
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +6 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -3
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +7 -3
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +11 -6
- 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 +7 -3
- package/dist/docs/reference/geometry/EndTreatments.md +1 -1
- package/dist/docs/reference/geometry/ExtrudeOptions.md +10 -6
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -5
- package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
- package/dist/docs/reference/geometry/Frame3.md +10 -6
- 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 +5 -5
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +11 -5
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
- package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +9 -5
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +10 -6
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +10 -6
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
- package/dist/docs/reference/geometry/LineCurve2.md +8 -4
- package/dist/docs/reference/geometry/LineCurve3.md +8 -4
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
- package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +8 -4
- package/dist/docs/reference/geometry/LoftOptions.md +5 -1
- package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
- package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
- package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
- package/dist/docs/reference/geometry/Path2-type.md +196 -0
- package/dist/docs/reference/geometry/Path2Data.md +50 -0
- package/dist/docs/reference/geometry/Path2Input.md +20 -0
- package/dist/docs/reference/geometry/Path3-type.md +196 -0
- package/dist/docs/reference/geometry/Path3Data.md +50 -0
- package/dist/docs/reference/geometry/Path3Input.md +20 -0
- package/dist/docs/reference/geometry/PathFrame.md +9 -5
- package/dist/docs/reference/geometry/PathLocation.md +69 -0
- package/dist/docs/reference/geometry/PathNormalGuide.md +10 -5
- package/dist/docs/reference/geometry/PathOptions.md +38 -0
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
- package/dist/docs/reference/geometry/PathPlacement.md +8 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +84 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
- package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +26 -22
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
- package/dist/docs/reference/geometry/PolygonData.md +7 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -4
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +31 -0
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +104 -0
- package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
- package/dist/docs/reference/geometry/Profile.md +8 -2
- package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
- package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
- package/dist/docs/reference/geometry/RackPitchSpec.md +10 -5
- package/dist/docs/reference/geometry/RadialPatternOptions.md +17 -22
- 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 +7 -3
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
- package/dist/docs/reference/geometry/RegionData.md +6 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +7 -3
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +13 -4
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
- package/dist/docs/reference/geometry/SampleContourOptions.md +7 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +7 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
- package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
- package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
- package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +7 -3
- package/dist/docs/reference/geometry/SphereOptions.md +3 -3
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/StrokeCap.md +14 -0
- package/dist/docs/reference/geometry/StrokeJoin.md +14 -0
- package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +11 -7
- package/dist/docs/reference/geometry/SvgImportOptions.md +5 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +6 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +19 -15
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +16 -11
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +14 -9
- package/dist/docs/reference/geometry/SweepOptions.md +10 -6
- package/dist/docs/reference/geometry/SweepOrientation.md +11 -7
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +9 -5
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +7 -3
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
- package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +7 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadRole.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +10 -6
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
- package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +10 -6
- package/dist/docs/reference/geometry/TorusOptions.md +8 -8
- package/dist/docs/reference/geometry/Transform2-type.md +6 -5
- package/dist/docs/reference/geometry/Transform2Data.md +15 -0
- package/dist/docs/reference/geometry/Transform2Input.md +4 -3
- package/dist/docs/reference/geometry/Transform3-type.md +6 -5
- package/dist/docs/reference/geometry/Transform3Data.md +18 -0
- package/dist/docs/reference/geometry/Transform3Input.md +4 -3
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +9 -4
- package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +8 -4
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +8 -4
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +8 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/TubeOptions.md +8 -8
- package/dist/docs/reference/geometry/Vector2-type.md +6 -5
- package/dist/docs/reference/geometry/Vector2Data.md +15 -0
- package/dist/docs/reference/geometry/Vector2Input.md +4 -3
- package/dist/docs/reference/geometry/Vector3-type.md +6 -5
- package/dist/docs/reference/geometry/Vector3Data.md +15 -0
- package/dist/docs/reference/geometry/Vector3Input.md +4 -3
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +8 -3
- package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +5 -1
- package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
- package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
- package/dist/docs/reference/geometry/add2.md +7 -6
- package/dist/docs/reference/geometry/add3.md +7 -6
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +6 -2
- package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +10 -9
- package/dist/docs/reference/geometry/anchorFrame3.md +9 -5
- package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
- package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
- package/dist/docs/reference/geometry/{attachTransform.md → attachmentTransform3.md} +16 -15
- package/dist/docs/reference/geometry/bounds2.md +38 -0
- package/dist/docs/reference/geometry/bounds3.md +38 -0
- package/dist/docs/reference/geometry/boundsCenter.md +12 -11
- package/dist/docs/reference/geometry/boundsFromSize.md +12 -11
- package/dist/docs/reference/geometry/boundsSize.md +12 -11
- package/dist/docs/reference/geometry/boxAnchor3.md +7 -6
- package/dist/docs/reference/geometry/categories/bounds-layout.md +23 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +27 -13
- package/dist/docs/reference/geometry/categories/mechanical.md +27 -15
- package/dist/docs/reference/geometry/categories/meshes.md +18 -10
- package/dist/docs/reference/geometry/categories/pattern-placement.md +11 -9
- package/dist/docs/reference/geometry/categories/primitive-options.md +10 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -13
- package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +25 -16
- package/dist/docs/reference/geometry/categories/vector-import.md +15 -9
- package/dist/docs/reference/geometry/circleContour.md +5 -1
- package/dist/docs/reference/geometry/closeToAxis.md +14 -5
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +9 -5
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +9 -5
- package/dist/docs/reference/geometry/composeTransform3.md +7 -6
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +14 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +17 -7
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
- package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +8 -4
- package/dist/docs/reference/geometry/containsBounds.md +10 -9
- package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
- package/dist/docs/reference/geometry/cross2.md +6 -5
- package/dist/docs/reference/geometry/cross3.md +7 -6
- package/dist/docs/reference/geometry/cylinderAnchor3.md +7 -6
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/distance2.md +6 -5
- package/dist/docs/reference/geometry/distance3.md +6 -5
- package/dist/docs/reference/geometry/distributeAlongPath.md +12 -6
- package/dist/docs/reference/geometry/dot2.md +6 -5
- package/dist/docs/reference/geometry/dot3.md +6 -5
- package/dist/docs/reference/geometry/ellipseContour.md +5 -1
- package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
- package/dist/docs/reference/geometry/extrudeMesh.md +12 -8
- package/dist/docs/reference/geometry/fitBounds.md +10 -9
- package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
- package/dist/docs/reference/geometry/frameTransform3.md +5 -4
- package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +7 -3
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
- package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +9 -5
- package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +9 -5
- package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
- package/dist/docs/reference/geometry/isGeometryError.md +5 -2
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
- package/dist/docs/reference/geometry/layoutRow.md +11 -7
- package/dist/docs/reference/geometry/length2.md +5 -4
- package/dist/docs/reference/geometry/length3.md +5 -4
- package/dist/docs/reference/geometry/lerp2.md +7 -6
- package/dist/docs/reference/geometry/lerp3.md +7 -6
- package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/loftMesh.md +6 -1
- package/dist/docs/reference/geometry/matchProfiles.md +11 -2
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
- package/dist/docs/reference/geometry/meshBounds.md +8 -4
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +7 -3
- package/dist/docs/reference/geometry/normalize2.md +10 -6
- package/dist/docs/reference/geometry/normalize3.md +10 -6
- package/dist/docs/reference/geometry/normalizeContour.md +8 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +15 -11
- package/dist/docs/reference/geometry/path2.md +54 -0
- package/dist/docs/reference/geometry/path3.md +49 -0
- package/dist/docs/reference/geometry/pathPatternTransforms.md +13 -9
- package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +13 -4
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +15 -4
- package/dist/docs/reference/geometry/preflightSvgRegion.md +15 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +14 -4
- package/dist/docs/reference/geometry/preflightThreadedRod.md +14 -4
- package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
- package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
- package/dist/docs/reference/geometry/rectangleContour.md +10 -3
- package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
- package/dist/docs/reference/geometry/regionArea.md +5 -1
- package/dist/docs/reference/geometry/regionBounds.md +8 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +9 -5
- package/dist/docs/reference/geometry/resamplePolyline2.md +9 -5
- package/dist/docs/reference/geometry/resamplePolyline3.md +9 -5
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +4 -4
- package/dist/docs/reference/geometry/resolveArcSegments.md +4 -4
- package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +7 -3
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
- package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -4
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/revolveMesh.md +14 -10
- package/dist/docs/reference/geometry/rotate2.md +6 -5
- package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -6
- package/dist/docs/reference/geometry/sampleContour.md +14 -4
- package/dist/docs/reference/geometry/sampleCurve2.md +8 -5
- package/dist/docs/reference/geometry/sampleCurve3.md +6 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleHelix.md +13 -5
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
- package/dist/docs/reference/geometry/sampleSideProfile.md +17 -7
- package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +6 -2
- package/dist/docs/reference/geometry/scale2.md +6 -5
- package/dist/docs/reference/geometry/scale3.md +6 -5
- package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
- package/dist/docs/reference/geometry/signedContourArea.md +5 -1
- package/dist/docs/reference/geometry/starContour.md +8 -4
- package/dist/docs/reference/geometry/strokeRegionData.md +67 -0
- package/dist/docs/reference/geometry/subtract2.md +7 -6
- package/dist/docs/reference/geometry/subtract3.md +7 -6
- package/dist/docs/reference/geometry/sweepMesh.md +13 -9
- package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +10 -6
- package/dist/docs/reference/geometry/transform2.md +14 -7
- package/dist/docs/reference/geometry/transform3.md +16 -7
- package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
- package/dist/docs/reference/geometry/transformRegionData.md +5 -1
- package/dist/docs/reference/geometry/transformTriangleMesh.md +10 -6
- package/dist/docs/reference/geometry/translationTransform3.md +7 -6
- package/dist/docs/reference/geometry/triangulateContour.md +5 -1
- package/dist/docs/reference/geometry/validateSolidMesh.md +10 -3
- package/dist/docs/reference/geometry/validateTransform3.md +6 -5
- package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/vector2.md +10 -2
- package/dist/docs/reference/geometry/vector3.md +10 -2
- package/dist/docs/reference/geometry.md +8 -6
- package/dist/docs/reference/model/Anchor3.md +6 -5
- package/dist/docs/reference/model/AttachOptions.md +11 -5
- package/dist/docs/reference/model/Bounds2-type.md +125 -0
- package/dist/docs/reference/model/Bounds2Data.md +44 -0
- package/dist/docs/reference/model/Bounds2Input.md +19 -0
- package/dist/docs/reference/model/Bounds3-type.md +125 -0
- package/dist/docs/reference/model/Bounds3Data.md +44 -0
- package/dist/docs/reference/model/Bounds3Input.md +19 -0
- 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 +10 -10
- 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 +3 -3
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/model/Computed.md +6 -1
- package/dist/docs/reference/model/ComputedValue.md +5 -1
- package/dist/docs/reference/model/Contour.md +6 -4
- 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/CylinderOptions.md +3 -3
- package/dist/docs/reference/model/DiagnosticOptions.md +6 -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 +3 -3
- package/dist/docs/reference/model/EndTreatments.md +1 -1
- package/dist/docs/reference/model/ExtrudeOptions.md +6 -6
- package/dist/docs/reference/model/FinalizedModel.md +20 -10
- package/dist/docs/reference/model/FinalizedPart.md +1 -1
- package/dist/docs/reference/model/Frame3.md +6 -6
- package/dist/docs/reference/model/GenerateCallback.md +5 -1
- package/dist/docs/reference/model/GenerateContext.md +5 -1
- package/dist/docs/reference/model/GeneratedPart.md +5 -1
- package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
- package/dist/docs/reference/model/GenerationError.md +5 -1
- package/dist/docs/reference/model/GeometryResolution.md +5 -5
- 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 +12 -5
- package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +4 -3
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
- package/dist/docs/reference/model/HullOptions.md +5 -5
- package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
- package/dist/docs/reference/model/ImplicitOptions.md +6 -6
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +5 -4
- package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +34 -0
- package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
- package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
- package/dist/docs/reference/model/LinearPatternOptions.md +13 -5
- package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/model/LoftOptions.md +1 -1
- package/dist/docs/reference/model/LoftPlacement.md +1 -1
- package/dist/docs/reference/model/LoftStation.md +3 -3
- package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/model/ModelProgram.md +5 -1
- package/dist/docs/reference/model/ModelingLimits.md +1 -1
- package/dist/docs/reference/model/NumericArray.md +8 -1
- package/dist/docs/reference/model/PartGeometry.md +5 -1
- package/dist/docs/reference/model/PartOptions.md +5 -1
- package/dist/docs/reference/model/Path2-type.md +196 -0
- package/dist/docs/reference/model/Path2Data.md +50 -0
- package/dist/docs/reference/model/Path2Input.md +20 -0
- package/dist/docs/reference/model/Path3-type.md +196 -0
- package/dist/docs/reference/model/Path3Data.md +50 -0
- package/dist/docs/reference/model/Path3Input.md +20 -0
- package/dist/docs/reference/model/PathLocation.md +69 -0
- package/dist/docs/reference/model/PathNormalGuide.md +6 -5
- package/dist/docs/reference/model/PathOptions.md +38 -0
- package/dist/docs/reference/model/PathPatternOptions.md +4 -3
- package/dist/docs/reference/model/PathResamplingOptions.md +83 -0
- package/dist/docs/reference/model/PatternSource.md +2 -1
- package/dist/docs/reference/model/Pivot2Options.md +2 -1
- package/dist/docs/reference/model/Pivot3Options.md +2 -1
- package/dist/docs/reference/model/PlaneOptions.md +3 -3
- package/dist/docs/reference/model/PolygonData.md +3 -2
- package/dist/docs/reference/model/PolygonOptions.md +8 -8
- package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +8 -7
- package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +42 -20
- package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
- package/dist/docs/reference/model/Profile.md +4 -2
- package/dist/docs/reference/model/ProfileComponent2.md +1 -1
- package/dist/docs/reference/model/ProfileContour2.md +4 -2
- package/dist/docs/reference/model/ProfileSpan2.md +3 -3
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/model/RadialPatternOptions.md +18 -22
- 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 +10 -10
- package/dist/docs/reference/model/RegionData.md +2 -2
- package/dist/docs/reference/model/RegularPolygonOptions.md +5 -5
- package/dist/docs/reference/model/RevolveOptions.md +9 -4
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Section.md +20 -12
- package/dist/docs/reference/model/SectionHullOptions.md +5 -5
- package/dist/docs/reference/model/SectionInspection.md +10 -10
- 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 +31 -7
- package/dist/docs/reference/model/SolidInspection.md +7 -7
- package/dist/docs/reference/model/{SolidRayHit.md → SolidSegmentHit.md} +6 -6
- package/dist/docs/reference/model/SphereOptions.md +3 -3
- package/dist/docs/reference/model/StarOptions.md +10 -10
- package/dist/docs/reference/model/{StrokePathCap.md → StrokeCap.md} +3 -3
- package/dist/docs/reference/model/{StrokePathJoin.md → StrokeJoin.md} +3 -3
- package/dist/docs/reference/model/StrokeOptions.md +6 -6
- 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 +6 -6
- package/dist/docs/reference/model/SweepOrientation.md +7 -7
- package/dist/docs/reference/model/TextSectionOptions.md +1 -1
- package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
- package/dist/docs/reference/model/ThreadHandedness.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
- package/dist/docs/reference/model/ThreadProfile.md +4 -3
- package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
- package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
- package/dist/docs/reference/model/ThreadedNutOptions.md +5 -4
- package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
- package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
- package/dist/docs/reference/model/ThreadedRodOptions.md +5 -4
- package/dist/docs/reference/model/TorusOptions.md +8 -8
- package/dist/docs/reference/model/Transform2-type.md +6 -5
- package/dist/docs/reference/model/Transform2Data.md +16 -0
- package/dist/docs/reference/model/Transform2Input.md +4 -3
- package/dist/docs/reference/model/Transform3-type.md +6 -5
- package/dist/docs/reference/model/Transform3Data.md +19 -0
- package/dist/docs/reference/model/Transform3Input.md +4 -3
- package/dist/docs/reference/model/TriangleMesh.md +1 -1
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +4 -4
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
- package/dist/docs/reference/model/TubeOptions.md +8 -8
- package/dist/docs/reference/model/Vector2-type.md +6 -5
- package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
- package/dist/docs/reference/model/Vector2Input.md +4 -3
- package/dist/docs/reference/model/Vector3-type.md +6 -5
- package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
- package/dist/docs/reference/model/Vector3Input.md +4 -3
- package/dist/docs/reference/model/VectorTextLayout.md +1 -1
- package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/model/anchor.md +2 -1
- package/dist/docs/reference/model/bounds2.md +36 -0
- package/dist/docs/reference/model/bounds3.md +36 -0
- package/dist/docs/reference/model/box.md +4 -4
- package/dist/docs/reference/model/castSegment.md +40 -0
- package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
- package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
- package/dist/docs/reference/model/categories/bounds.md +36 -0
- package/dist/docs/reference/model/categories/contracts.md +4 -2
- package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
- package/dist/docs/reference/model/categories/explicit-profiles.md +7 -5
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
- package/dist/docs/reference/model/categories/generation.md +11 -2
- package/dist/docs/reference/model/categories/hinges.md +38 -0
- package/dist/docs/reference/model/categories/inspection.md +12 -6
- package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
- package/dist/docs/reference/model/categories/paths.md +41 -0
- package/dist/docs/reference/model/categories/primitives.md +10 -4
- package/dist/docs/reference/model/categories/resolution.md +4 -2
- package/dist/docs/reference/model/categories/sections.md +12 -8
- package/dist/docs/reference/model/categories/threads.md +11 -8
- package/dist/docs/reference/model/categories/transforms-placement.md +23 -15
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/components.md +6 -6
- package/dist/docs/reference/model/compose.md +1 -1
- package/dist/docs/reference/model/cylinder.md +1 -1
- package/dist/docs/reference/model/distance.md +1 -1
- package/dist/docs/reference/model/ellipse.md +1 -1
- package/dist/docs/reference/model/extrude.md +3 -3
- package/dist/docs/reference/model/generate.md +5 -1
- package/dist/docs/reference/model/gridPattern.md +5 -4
- package/dist/docs/reference/model/heightfield.md +5 -2
- package/dist/docs/reference/model/hull.md +1 -1
- package/dist/docs/reference/model/immutableBuffer.md +5 -1
- package/dist/docs/reference/model/immutableMesh.md +5 -1
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/inspectSection.md +1 -1
- package/dist/docs/reference/model/inspectSolid.md +1 -1
- package/dist/docs/reference/model/internalThreadCutter.md +5 -4
- package/dist/docs/reference/model/intersect.md +1 -1
- package/dist/docs/reference/model/isEmpty.md +1 -1
- package/dist/docs/reference/model/knuckleHinge.md +47 -0
- package/dist/docs/reference/model/linearPattern.md +5 -4
- package/dist/docs/reference/model/loft.md +1 -1
- package/dist/docs/reference/model/matchProfiles.md +2 -2
- package/dist/docs/reference/model/minkowskiSum.md +1 -1
- package/dist/docs/reference/model/path2.md +54 -0
- package/dist/docs/reference/model/path3.md +49 -0
- package/dist/docs/reference/model/pathPattern.md +14 -12
- package/dist/docs/reference/model/polygon.md +8 -5
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +9 -3
- package/dist/docs/reference/model/preflightThreadedNut.md +9 -3
- package/dist/docs/reference/model/preflightThreadedRod.md +9 -3
- package/dist/docs/reference/model/radialPattern.md +6 -37
- package/dist/docs/reference/model/rectangle.md +7 -4
- package/dist/docs/reference/model/regularPolygon.md +1 -1
- package/dist/docs/reference/model/revolve.md +5 -4
- package/dist/docs/reference/model/solidFromMesh.md +1 -1
- package/dist/docs/reference/model/sphere.md +1 -1
- package/dist/docs/reference/model/split.md +1 -1
- package/dist/docs/reference/model/splitByPlane.md +1 -1
- package/dist/docs/reference/model/star.md +4 -4
- package/dist/docs/reference/model/stroke.md +8 -8
- 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 +7 -7
- package/dist/docs/reference/model/textSection.md +1 -1
- package/dist/docs/reference/model/threadRidge.md +3 -2
- package/dist/docs/reference/model/threadedNut.md +5 -4
- package/dist/docs/reference/model/threadedRod.md +5 -4
- package/dist/docs/reference/model/torus.md +3 -3
- package/dist/docs/reference/model/transform2.md +14 -7
- package/dist/docs/reference/model/transform3.md +16 -7
- package/dist/docs/reference/model/tube.md +3 -3
- package/dist/docs/reference/model/union.md +1 -1
- package/dist/docs/reference/model/vector2.md +10 -2
- package/dist/docs/reference/model/vector3.md +10 -2
- package/dist/docs/reference/model.md +17 -9
- package/dist/docs/reference/text/Bounds2Data.md +34 -0
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
- package/dist/docs/reference/text/Vector2Data.md +7 -0
- package/dist/docs/reference/text/VectorFont.md +2 -2
- package/dist/docs/reference/text/VectorFontOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +3 -3
- package/dist/docs/reference/text/VectorTextLayout.md +1 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/text/VectorTextOptions.md +1 -1
- package/dist/docs/reference/text/categories/font-preparation.md +8 -6
- package/dist/docs/reference/text/prepareVectorFont.md +2 -2
- package/dist/docs/reference/text.md +4 -2
- package/dist/engine/construction-operations.js +31 -14
- package/dist/engine/execution.js +39 -8
- package/dist/engine/extrusion-finishing.js +1 -1
- package/dist/engine/index.js +6 -1
- package/dist/engine/inspection-operations.js +13 -11
- package/dist/engine/knuckle-hinge-operation.js +85 -0
- package/dist/engine/loft-operations.js +35 -14
- package/dist/engine/mechanical-operations.js +3 -1
- package/dist/engine/model-summary.js +8 -5
- package/dist/engine/modeling-context.js +8 -1
- package/dist/engine/native/material-components.js +305 -0
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/native/threads.js +3 -3
- package/dist/engine/native/transforms.js +5 -7
- package/dist/engine/operation-environment.js +2 -2
- package/dist/engine/pattern-operations.js +1 -1
- package/dist/engine/placement.js +2 -2
- package/dist/engine/primitive-anchors.js +17 -17
- package/dist/engine/primitive-operations.js +1 -1
- package/dist/engine/primitive-profiles.js +7 -7
- package/dist/engine/profile-mesh.js +7 -7
- package/dist/engine/recipe-realization.js +10 -2
- package/dist/engine/section-operations.js +33 -8
- package/dist/engine/session-snapshot.js +14 -4
- package/dist/engine/session.js +10 -5
- package/dist/engine/shape-anchors.js +3 -3
- package/dist/engine/transform-operations.js +27 -27
- package/dist/geometry/anchors.js +40 -33
- package/dist/geometry/bounds-value.js +93 -0
- package/dist/geometry/bounds.js +10 -8
- package/dist/geometry/curves/sampling.js +15 -16
- package/dist/geometry/edge-finishing.js +1 -1
- package/dist/geometry/errors.js +1 -0
- package/dist/geometry/extrusion.js +13 -16
- package/dist/geometry/heightfield.js +12 -1
- package/dist/geometry/index.js +12 -11
- package/dist/geometry/loft/loft-simple-mesh.js +6 -6
- package/dist/geometry/loft/loft.js +22 -13
- package/dist/geometry/math/immutable-value.js +1 -1
- package/dist/geometry/math/vector-value.js +11 -3
- package/dist/geometry/math/vector2.js +1 -0
- package/dist/geometry/math/vector3.js +1 -0
- package/dist/geometry/mechanical/gear-motion.js +3 -3
- package/dist/geometry/mechanical/gears.js +38 -38
- package/dist/geometry/mechanical/index.js +4 -3
- package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
- package/dist/geometry/mechanical/standards.js +1 -1
- package/dist/geometry/mechanical/thread-helices.js +2 -3
- package/dist/geometry/mechanical/thread-mesh-plan.js +11 -7
- package/dist/geometry/mechanical/thread-mesh.js +7 -7
- package/dist/geometry/mechanical/thread-profiles.js +5 -5
- package/dist/geometry/mechanical/thread-solids.js +31 -6
- package/dist/geometry/mechanical/thread-surface.js +1 -1
- package/dist/geometry/mechanical/threads.js +8 -8
- package/dist/geometry/mesh/mesh-centroid.js +1 -0
- package/dist/geometry/mesh/mesh-planar.js +25 -27
- package/dist/geometry/mesh/mesh-quality.js +5 -5
- package/dist/geometry/mesh/mesh-signature.js +13 -13
- package/dist/geometry/mesh/mesh-solid.js +8 -7
- package/dist/geometry/mesh/mesh.js +4 -15
- package/dist/geometry/paths/closest-point.js +8 -19
- package/dist/geometry/paths/frames.js +42 -11
- package/dist/geometry/paths/helix.js +17 -6
- package/dist/geometry/paths/path-value.js +268 -0
- package/dist/geometry/paths/planar.js +36 -23
- package/dist/geometry/paths/resampling.js +27 -5
- package/dist/geometry/patterns/placements.js +100 -27
- package/dist/geometry/patterns.js +5 -3
- package/dist/geometry/polygon-clipping.js +17 -0
- package/dist/geometry/profiles/contour.js +7 -6
- package/dist/geometry/profiles/matched.js +5 -4
- package/dist/geometry/profiles/profiles.js +4 -4
- package/dist/geometry/profiles/rectangle.js +14 -5
- package/dist/geometry/profiles/side-profile.js +9 -7
- package/dist/geometry/profiles/span-sampling.js +1 -1
- package/dist/geometry/resolution.js +34 -34
- package/dist/geometry/revolve/revolve-mesh.js +12 -7
- package/dist/geometry/stroke-path.js +12 -27
- package/dist/geometry/svg/fill.js +7 -21
- package/dist/geometry/svg-import.js +31 -25
- package/dist/geometry/sweeps/options.js +5 -4
- package/dist/geometry/sweeps/orientation.js +5 -5
- package/dist/geometry/sweeps/stations.js +10 -10
- package/dist/geometry/sweeps/sweep-closed.js +2 -2
- package/dist/geometry/sweeps/sweep-mesh.js +9 -3
- package/dist/geometry/sweeps/sweep-open.js +1 -1
- package/dist/geometry/sweeps/validation.js +4 -7
- package/dist/geometry/text-fitting.js +1 -0
- package/dist/geometry/transform-geometry.js +7 -14
- package/dist/geometry/transform-matrix.js +1 -1
- package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
- package/dist/index.js +3 -1
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +62 -10
- package/dist/model/knuckle-hinge.js +1 -0
- package/dist/model/operations.js +79 -26
- package/dist/model/recipe-declaration.js +21 -7
- package/dist/model/shape-handles.js +2 -1
- package/dist/text/index.js +15 -9
- package/dist/text/vector-text-layout.js +31 -26
- package/package.json +1 -1
- package/dist/docs/reference/geometry/Bounds2.md +0 -39
- package/dist/docs/reference/geometry/Bounds3.md +0 -39
- package/dist/docs/reference/geometry/ClosestPointOnPathOptions.md +0 -34
- package/dist/docs/reference/geometry/ClosestPointOnPathResult.md +0 -65
- package/dist/docs/reference/geometry/Path2.md +0 -14
- package/dist/docs/reference/geometry/Path3.md +0 -14
- package/dist/docs/reference/geometry/PrimitivePlacement.md +0 -31
- package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +0 -83
- package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
- package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
- package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
- package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
- package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
- package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
- package/dist/docs/reference/geometry/closestPointOnPath.md +0 -110
- package/dist/docs/reference/geometry/cumulativePathLengths.md +0 -33
- package/dist/docs/reference/geometry/measureTriangleMesh.md +0 -55
- package/dist/docs/reference/geometry/pathLength.md +0 -33
- package/dist/docs/reference/geometry/strokePathRegion.md +0 -63
- package/dist/docs/reference/geometry/transformContour.md +0 -42
- package/dist/docs/reference/geometry/transformPath2.md +0 -40
- package/dist/docs/reference/geometry/transformPath3.md +0 -33
- package/dist/docs/reference/model/Bounds2.md +0 -39
- package/dist/docs/reference/model/Bounds3.md +0 -39
- package/dist/docs/reference/model/Path2.md +0 -20
- package/dist/docs/reference/model/Transform2Matrix.md +0 -15
- package/dist/docs/reference/model/Transform3Matrix.md +0 -18
- package/dist/docs/reference/model/rayCast.md +0 -40
- package/dist/docs/reference/model/toTriangleMesh.md +0 -27
- package/dist/docs/reference/text/Bounds2.md +0 -34
- package/dist/docs/reference/text/Vector2Tuple.md +0 -7
- package/dist/geometry/paths/path.js +0 -32
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
# Modeling fundamentals
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Combine watertight solids with Booleans and transforms, and understand geometry ownership in Studio code Projects.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
working with an arbitrary triangle soup.
|
|
5
|
+
Build parts by combining primitives, applying transforms, and removing material with cutters.
|
|
6
|
+
MetaMesh uses [Manifold](https://manifoldcad.org/docs/jsapi/), a solid-modeling kernel that works
|
|
7
|
+
with **manifold meshes**: closed, consistently oriented boundaries representing solid material.
|
|
9
8
|
|
|
10
|
-
Studio code Projects use
|
|
11
|
-
|
|
12
|
-
recipes. The engine owns the underlying kernel values.
|
|
9
|
+
Studio code Projects use `@metamesh/modeling` to construct immutable `Section` and `Solid` recipes.
|
|
10
|
+
The engine evaluates them and owns the underlying kernel values.
|
|
13
11
|
|
|
14
12
|
## Coordinates and units
|
|
15
13
|
|
|
@@ -47,9 +45,9 @@ The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2
|
|
|
47
45
|
occupies `Z = −4…4 mm`. That overtravel makes the subtraction deliberate while the hole radius
|
|
48
46
|
stays `3 mm`. Derive cutter placement from the same datum as the body when changing dimensions.
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
Name intermediate solids by their purpose. Arrange independent repeated cutters first, then
|
|
49
|
+
subtract them together where possible. Many high-resolution Boolean steps increase generation
|
|
50
|
+
time and obscure design intent.
|
|
53
51
|
|
|
54
52
|
The `union` and `intersect` functions and `shape.subtract(cutters)` also combine filled Sections
|
|
55
53
|
in XY. Choose one dimension for every operand in a call. Keep a Section native through its Boolean
|
|
@@ -109,27 +107,28 @@ The kernel can enforce solid topology, but it does not know your printer, materi
|
|
|
109
107
|
tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
|
|
110
108
|
cross-field errors in the Project, then verify the exported file in its downstream tool.
|
|
111
109
|
|
|
112
|
-
|
|
113
|
-
engineering certification.
|
|
110
|
+
Empty or zero-volume output is invalid; non-empty output still needs engineering checks.
|
|
114
111
|
|
|
115
112
|
## Geometry ownership
|
|
116
113
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
114
|
+
`Section` and `Solid` values are immutable recipes. Evaluating them creates native resources
|
|
115
|
+
owned and cleaned up by Studio. Do not initialize the kernel or manually delete shapes in
|
|
116
|
+
`model.ts`.
|
|
120
117
|
|
|
121
|
-
Use `inspectSection()` or `inspectSolid()`
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
118
|
+
Use `inspectSection()` or `inspectSolid()` for measurements such as bounds, area, volume, and
|
|
119
|
+
`componentCount`. `components()` returns disconnected material pieces, preserving holes and
|
|
120
|
+
enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
|
|
121
|
+
makes two. Recombining the pieces preserves the original material.
|
|
122
|
+
|
|
123
|
+
Snapshot `stats.partCount` counts named `part(...)` declarations; one part may contain several
|
|
124
|
+
material components. Return one declaration or an array for Studio to preview and export.
|
|
126
125
|
|
|
127
126
|
|
|
128
127
|
|
|
129
128
|
**Use the MetaMesh reference for authored code**
|
|
130
129
|
|
|
131
|
-
The upstream Manifold documentation is useful background on the underlying mathematics. Exact
|
|
132
|
-
|
|
130
|
+
The upstream Manifold documentation is useful background on the underlying mathematics. Exact code
|
|
131
|
+
Project symbols and guarantees come from the [Model API reference](../reference/model.md).
|
|
133
132
|
|
|
134
133
|
|
|
135
134
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Code Project contract
|
|
2
2
|
|
|
3
|
-
Understand
|
|
3
|
+
Understand Studio’s TypeScript source contract, computed caches, parts, resource ownership, and recovery.
|
|
4
4
|
|
|
5
5
|
An authored Project has one control definition and one TypeScript entry file. Studio supplies the
|
|
6
6
|
compiler, prepared services, modeling engine, persistence and preview.
|
|
@@ -29,9 +29,8 @@ export default generate(({ params: parameters, part }) => {
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
The helper infers `params` from **Model controls
|
|
33
|
-
|
|
34
|
-
`type Parameters` from `@metamesh/project` when a separate helper needs that explicit type.
|
|
32
|
+
The helper infers `params` from **Model controls** as readonly numbers, strings, and structured
|
|
33
|
+
values. Import `type Parameters` from `@metamesh/project` when a separate helper needs the type.
|
|
35
34
|
|
|
36
35
|
The outer callback runs for each edit. Return a single `part(...)` or a readonly array of parts;
|
|
37
36
|
`computed` is optional.
|
|
@@ -92,9 +91,10 @@ Call other computed readers inside the callback too: `computed("finished", () =>
|
|
|
92
91
|
tracks the base result automatically. In **New project → Cached panels**, changing **Gap** only
|
|
93
92
|
moves the second panel; changing **Notch width** reuses the hole pattern for the finishing cut.
|
|
94
93
|
|
|
95
|
-
An earlier read such as `const { height } = params`
|
|
96
|
-
computation does not track
|
|
97
|
-
must be prepared outside, such as a loop item, list it in the optional
|
|
94
|
+
An earlier read such as `const { height } = params` captures a snapshot. Using it inside a
|
|
95
|
+
computation does not track the parameter and can reuse stale geometry. Move the read inside the
|
|
96
|
+
callback. If a changing value must be prepared outside, such as a loop item, list it in the optional
|
|
97
|
+
third argument:
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
|
|
@@ -114,19 +114,19 @@ The same capture rule applies to an eagerly read result such as `const value = o
|
|
|
114
114
|
Select and call readers inside the callback when possible. Studio warns about common hidden captures
|
|
115
115
|
while Code is open; its advisory checks cannot prove arbitrary JavaScript correct.
|
|
116
116
|
|
|
117
|
-
Dependency entries
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
Dependency entries use `Object.is`, without comparing object or array contents. Use immutable
|
|
118
|
+
parameter values, computed results, or scalar inputs; other objects must be deeply frozen. Create
|
|
119
|
+
temporary options inside the callback, since fresh object or array dependencies prevent reuse.
|
|
120
|
+
Studio warns about obvious fresh dependencies without running generation.
|
|
121
121
|
|
|
122
122
|
IDs identify logical computations, so loops and conditions work without hook call-order rules.
|
|
123
123
|
IDs must be unique lowercase hyphen-separated alphanumeric names of at most 64 characters within
|
|
124
124
|
their namespace.
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
perform effects, or return promises
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
Keep calculations synchronous and pure: do not mutate cached values, read clocks or randomness,
|
|
127
|
+
perform effects, or return promises or functions. The physical result must remain the same after
|
|
128
|
+
cache eviction or a worker restart. Cache expensive layouts or grids; cheap arithmetic usually
|
|
129
|
+
does not need its own computation.
|
|
130
130
|
|
|
131
131
|
For cached numeric data, call [`immutableBuffer`](../reference/model/immutableBuffer.md) and use
|
|
132
132
|
its `length`, `at(index)`, or `copy()` methods. Copy once before a dense sampling callback so its
|
|
@@ -185,7 +185,7 @@ export default generate(({ params: parameters, part }) => {
|
|
|
185
185
|
|
|
186
186
|
|
|
187
187
|
|
|
188
|
-
Lengths
|
|
188
|
+
Lengths use millimetres and rotations use degrees. Coordinates are right-handed with **+Z up**.
|
|
189
189
|
Rotation applies about fixed X, then Y, then Z axes before translation. Part placement governs
|
|
190
190
|
preview, picking, measurements and all exports. Changing placement or color can reuse cached
|
|
191
191
|
geometry and renderer buffers. Studio's native part-color overrides update appearance directly.
|
|
@@ -199,13 +199,14 @@ instance limits, including cache hits. Empty output is invalid.
|
|
|
199
199
|
|
|
200
200
|
## Ownership and recovery
|
|
201
201
|
|
|
202
|
-
Solids and Sections
|
|
203
|
-
sessions
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
202
|
+
Solids and Sections are immutable deferred recipes. Ordinary recipes can be reused across
|
|
203
|
+
sessions; unspecified resolution settings inherit the evaluating host's defaults. Apply local
|
|
204
|
+
resolution explicitly to each affected constructor or Section operation.
|
|
205
|
+
|
|
206
|
+
Observations such as `inspectSolid` evaluate required geometry synchronously and return copied
|
|
207
|
+
facts. `components()` selections and recipes using them can only be evaluated in their originating
|
|
208
|
+
session because their identity depends on evaluated topology. The host cleans up native
|
|
209
|
+
allocations on success and failure. Nested or asynchronous execution rejects.
|
|
209
210
|
|
|
210
211
|
Source/control-definition changes invalidate the program session. Parameter edits reuse it.
|
|
211
212
|
Failed or stale requests retain the last valid preview; fatal failures replace the worker.
|
|
@@ -53,27 +53,42 @@ move engine initialization out of the function and reuse that engine and its mod
|
|
|
53
53
|
|
|
54
54
|
## Keep execution synchronous
|
|
55
55
|
|
|
56
|
-
Acquire assets before generation
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
Acquire assets before generation and supply synchronous services when creating a session.
|
|
57
|
+
Computed readers and geometry observations require active synchronous generation. They cannot
|
|
58
|
+
cross an async boundary, and sessions cannot run inside another session run in the same realm.
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
Recipes and evaluated geometry have different lifetimes:
|
|
61
|
+
|
|
62
|
+
- Immutable `Solid` and `Section` recipes, vectors, paths, and transforms can be created without an
|
|
63
|
+
engine and reused across sessions. Explicit resolution settings stay with a recipe; omitted
|
|
64
|
+
settings inherit the evaluating host's defaults.
|
|
65
|
+
- A session owns evaluation, optional computed caches, and native resources. Temporary native
|
|
66
|
+
allocations are cleaned after each run. Computed shapes may stay cached for later cuts or
|
|
67
|
+
Booleans; separate expensive base geometry from finishing operations to reuse it.
|
|
68
|
+
- Observed `components()` selections depend on evaluated topology and belong to their originating
|
|
69
|
+
session. Ordinary recipes remain portable.
|
|
70
|
+
|
|
71
|
+
A snapshot retains captured manufacturing buffers independently of its session:
|
|
72
|
+
|
|
73
|
+
- Reading a part's `positions` or `indices`, including through its local `geometry` resource,
|
|
74
|
+
returns a fresh owned copy. Read each field once when processing its buffer.
|
|
75
|
+
- `session.dispose()` releases caches; captured snapshots remain usable.
|
|
76
|
+
- `snapshot.dispose()` releases its references and invalidates later `parts`, `bounds`, and `stats`
|
|
77
|
+
access. Diagnostics, dependencies, and parts already obtained remain usable. Other snapshots
|
|
78
|
+
and exports already in progress are unaffected.
|
|
79
|
+
|
|
80
|
+
Dispose each snapshot when its consumer is done.
|
|
66
81
|
|
|
67
82
|
## Load WASM in a browser Worker
|
|
68
83
|
|
|
69
84
|
The package includes its matching JS/WASM kernel. Node and unbundled browser modules resolve the
|
|
70
85
|
installed WASM asset automatically. A browser bundler must retain or emit that relative asset;
|
|
71
86
|
[`modelingWasmUrl`](../reference/engine/modelingWasmUrl.md) can supply the emitted URL through
|
|
72
|
-
`createModelEngine({
|
|
87
|
+
`createModelEngine({ wasmUrl: modelingWasmUrl })`.
|
|
73
88
|
|
|
74
89
|
Your application owns Worker creation and message handling. Separate Workers have independent
|
|
75
90
|
execution scopes. Transfer owned copies of completed buffers; transferring cache backing storage
|
|
76
|
-
would detach it. Native
|
|
91
|
+
would detach it. Native handles remain private to their engine.
|
|
77
92
|
|
|
78
93
|
## Set resource limits
|
|
79
94
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Modeling recipes
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Build plates, cups, routed tubes, lofts, repeated features, SVG shapes, and lettering with complete modeling examples.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Choose a recipe, inspect its render, and copy the complete source into a Studio
|
|
6
|
+
[code Project](https://metamesh.studio/docs/develop/code-projects). Each illustrated recipe renders that same source;
|
|
7
|
+
open its interactive preview to orbit the result.
|
|
8
8
|
|
|
9
9
|
| You want to make | Start here | Main decision |
|
|
10
10
|
| ------------------------ | -------------------------------------------------------------- | --------------------------------------------------------- |
|
|
@@ -20,8 +20,8 @@ the interactive preview to orbit the result; copy the code into a Studio code Pr
|
|
|
20
20
|
|
|
21
21
|
All dimensions in these recipes are millimetres. MetaMesh uses a right-handed coordinate system
|
|
22
22
|
with +Z up, degrees for angular arguments including `rotate`, and non-duplicated contour seams.
|
|
23
|
-
The examples default-export a synchronous `generate` program. Use
|
|
24
|
-
and optional `computed` values
|
|
23
|
+
The examples default-export a synchronous `generate` program. Use assertions for constraints
|
|
24
|
+
and optional `computed` values to cache expensive shared calculations, geometry, or text layouts.
|
|
25
25
|
[Define parameters and validation](https://metamesh.studio/docs/develop/parameters-and-validation) connects
|
|
26
26
|
source values to controls.
|
|
27
27
|
|
|
@@ -47,9 +47,9 @@ Subtract the opening in 2D, offset the filled material, then extrude it into one
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
`rectangle` and `circle` take object options and return filled Sections. `section.subtract(cutters)
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
`rectangle` and `circle` take object options and return filled Sections. `section.subtract(cutters)`,
|
|
51
|
+
`union`, and `intersect` also support Solids; every operand in a call must have the same dimension.
|
|
52
|
+
`section.offset(distance)` offsets the filled material. `section.extrude({ height })` preserves
|
|
53
53
|
holes and places the bottom at zero unless `center: true` is requested.
|
|
54
54
|
|
|
55
55
|
Positive offset grows material on every boundary: this example grows the outside by `1.2 mm` and
|
|
@@ -59,8 +59,8 @@ offset the outside first and subtract the hole afterward. See
|
|
|
59
59
|
|
|
60
60
|
## SVG parameter and extrusion
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
Pass an SVG control's string value from `params` directly to `svgSection`. This example aliases
|
|
63
|
+
`params` as `parameters`:
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
|
|
@@ -76,10 +76,10 @@ export default generate(({ params: parameters, part }) => {
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
The property name
|
|
80
|
-
`parameters.logo`
|
|
79
|
+
The property name matches the ID in **Model controls**: `profile6` in this example, or
|
|
80
|
+
`parameters.logo` for a control with ID `logo`.
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
`svgSection` also accepts literal SVG documents. Here two nested subpaths make a badge
|
|
83
83
|
with a rectangular opening:
|
|
84
84
|
|
|
85
85
|
|
|
@@ -101,7 +101,7 @@ export default generate(({ part }) => {
|
|
|
101
101
|
`);
|
|
102
102
|
// Check the imported topology before using it in the manufacturing solid.
|
|
103
103
|
const measurements = inspectSection(badge);
|
|
104
|
-
if (measurements.
|
|
104
|
+
if (measurements.componentCount !== 1 || measurements.contourCount !== 2) {
|
|
105
105
|
throw new Error("Expected one badge with one rectangular opening.");
|
|
106
106
|
}
|
|
107
107
|
return [part("model", badge.extrude({ height: 4, center: true }))];
|
|
@@ -160,7 +160,7 @@ One radial wall profile revolved around +Z creates the floor and tapered cup wal
|
|
|
160
160
|
|
|
161
161
|
[`polygon`](../reference/model/polygon.md) fills the ordered contour.
|
|
162
162
|
[`Section.revolve`](../reference/model/Section.md#revolve) defaults to a complete `360°` turn. Set
|
|
163
|
-
`
|
|
163
|
+
`degrees: 270` for a capped partial turn that exposes the cross section. Keep the closed
|
|
164
164
|
profile free of self-intersections and never repeat its first point at the end.
|
|
165
165
|
|
|
166
166
|
For an open side outline, [`sampleSideProfile`](../reference/geometry/sampleSideProfile.md)
|
|
@@ -240,7 +240,7 @@ export default generate(({ part }) => {
|
|
|
240
240
|
const arms = radialPattern(arm.translate([18, 0, 0]).rotate([0, 0, 30]), {
|
|
241
241
|
count: 6,
|
|
242
242
|
axis: [0, 0, 1],
|
|
243
|
-
|
|
243
|
+
angle: 60,
|
|
244
244
|
});
|
|
245
245
|
// Both shapes are Z-centered; extra cutter height clears both hub faces.
|
|
246
246
|
const bore = cylinder({ height: 16, radius: 4 });
|
|
@@ -269,8 +269,7 @@ to a Section and its plain point data. This placement rotates around `[2, 1]`, t
|
|
|
269
269
|
|
|
270
270
|
|
|
271
271
|
```ts
|
|
272
|
-
import { polygon, transform2 } from "@metamesh/modeling";
|
|
273
|
-
import { transformContour } from "@metamesh/modeling/geometry";
|
|
272
|
+
import { path2, pathPattern, polygon, rectangle, transform2, union } from "@metamesh/modeling";
|
|
274
273
|
|
|
275
274
|
const planarPlacement = transform2()
|
|
276
275
|
.rotate(90, { pivot: [2, 1] })
|
|
@@ -286,24 +285,46 @@ export const placedBody = polygon({ outer: outline, holes: [] })
|
|
|
286
285
|
.transform(planarPlacement)
|
|
287
286
|
.extrude({ height: 8 });
|
|
288
287
|
|
|
289
|
-
//
|
|
290
|
-
export const sectionMatrix = planarPlacement.
|
|
291
|
-
export const placedContour =
|
|
288
|
+
// Paths accept the same placement. Matrices and tuples remain available for interchange.
|
|
289
|
+
export const sectionMatrix = planarPlacement.toData();
|
|
290
|
+
export const placedContour = path2(outline, { closed: true }).transform(planarPlacement);
|
|
292
291
|
```
|
|
293
292
|
|
|
294
293
|
|
|
295
294
|
|
|
296
|
-
Pass the placement directly to `section.transform(planarPlacement)
|
|
297
|
-
|
|
298
|
-
[`transformRegionData`](../reference/geometry/transformRegionData.md)
|
|
299
|
-
[`transformPath2`](../reference/geometry/transformPath2.md).
|
|
295
|
+
Pass the placement directly to `section.transform(planarPlacement)` or `path.transform(planarPlacement)`.
|
|
296
|
+
Fill the transformed closed path with `polygon(placedContour)` when you need material.
|
|
297
|
+
[`transformRegionData`](../reference/geometry/transformRegionData.md) serves serialized filled data.
|
|
300
298
|
|
|
301
|
-
A negative scale factor reflects the placement. Paths retain
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
reuse the placement instead of building a chain inside each point iteration. `
|
|
299
|
+
A negative scale factor reflects the placement. Paths retain traversal order, including closed
|
|
300
|
+
paths; filled Sections and serialized regions restore outer and hole winding. `andThen(next)`
|
|
301
|
+
composes another placement in execution order;
|
|
302
|
+
reuse the placement instead of building a chain inside each point iteration. `toData()` is
|
|
305
303
|
available for matrix interchange.
|
|
306
304
|
|
|
305
|
+
Section path patterns consume `Path2` values directly. Tangent orientation aligns the Section's
|
|
306
|
+
local +X direction with the path while preserving its XY plane:
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
```ts
|
|
311
|
+
const guide = path2([
|
|
312
|
+
[0, 0],
|
|
313
|
+
[12, 0],
|
|
314
|
+
[12, 12],
|
|
315
|
+
]);
|
|
316
|
+
const tabs = pathPattern(rectangle({ size: [4, 2] }), guide, {
|
|
317
|
+
count: 5,
|
|
318
|
+
orientation: "tangent",
|
|
319
|
+
});
|
|
320
|
+
export const patternedTabs = union(tabs).extrude({ height: 3 });
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
Linear Section patterns use XY directions. Radial Section patterns rotate about an optional XY
|
|
326
|
+
`pivot` using the implicit +Z axis; spatial Solid patterns retain their explicit rotation axis.
|
|
327
|
+
|
|
307
328
|
## Rotation-minimizing path sweep
|
|
308
329
|
|
|
309
330
|
|
|
@@ -339,13 +360,16 @@ The asymmetric section makes its transported orientation visible as the path tur
|
|
|
339
360
|
|
|
340
361
|
|
|
341
362
|
|
|
342
|
-
`section.sweep(path, options)` transports
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
363
|
+
`section.sweep(path, options)` transports a filled shape along a path:
|
|
364
|
+
|
|
365
|
+
- `orientation: { kind: "transport", initialNormal: [0, 1, 0] }` chooses the starting profile-X
|
|
366
|
+
direction. Fixed normals, directed normal guides, and discrete Frenet frames are alternatives;
|
|
367
|
+
singular selected policies reject.
|
|
368
|
+
- `twist` adds total rotation by physical path length. Set `twistBy: "stations"` to use the authored
|
|
369
|
+
station schedule instead.
|
|
370
|
+
- `scale` accepts a positive uniform size, an XY pair, or one XY pair per normalized station.
|
|
371
|
+
- `closed: true` joins an implicitly closed path without repeated endpoints. Orientation, scales,
|
|
372
|
+
and `seamProfileOffset` must describe a compatible closing seam.
|
|
349
373
|
|
|
350
374
|
Start with the open path above, inspect the first cap and the turns, then replace the rectangle
|
|
351
375
|
with a [`circle`](../reference/model/circle.md) for a round rod. A sweep follows the supplied path
|
|
@@ -381,7 +405,7 @@ and placement. `pin.attach("bottom", anchor(base, "top"))` mates opposed directi
|
|
|
381
405
|
patterns carry those frames with the shape, with outward normals preserved under nonuniform scale
|
|
382
406
|
and reflection. The axis names are `left/right` (−X/+X), `back/front` (−Y/+Y) and `bottom/top` (−Z/+Z).
|
|
383
407
|
|
|
384
|
-
Use `shape.withAnchors({ mount:
|
|
408
|
+
Use `shape.withAnchors({ mount: anchor3(position, direction, up) })` to define a custom datum
|
|
385
409
|
on a new handle. Existing names remain unless replaced; definitions are copied and immutable.
|
|
386
410
|
Boolean and other constructed shapes need explicit definitions because their surfaces may change.
|
|
387
411
|
Anchor names use lowercase kebab-case, with at most 64 characters and 128 definitions per shape.
|
|
@@ -392,9 +416,9 @@ move them. Tube and torus axial datums may lie over an opening; a cone has no ca
|
|
|
392
416
|
Regular polygons and stars expose only `center`. Custom `Anchor3` frames, including pure
|
|
393
417
|
`boxAnchor3` and `cylinderAnchor3` helpers, work wherever a source or target frame is required.
|
|
394
418
|
|
|
395
|
-
Primitive `
|
|
396
|
-
|
|
397
|
-
preserve the XY plane.
|
|
419
|
+
Primitive `attachment` uses the same source/target anchor, `alignment`, `gap`, and `spin`
|
|
420
|
+
options as `attach`, including a named `source`. It applies after local construction; Section
|
|
421
|
+
attachment must preserve the XY plane.
|
|
398
422
|
|
|
399
423
|
The `gap` here separates the two pieces along the target normal; it is a placement distance, not
|
|
400
424
|
a radial fit clearance. Keep separate named parts for an assembly. For one fused part, remove the
|
|
@@ -494,7 +518,7 @@ The two rounded rectangles retain matching corner identities while their size an
|
|
|
494
518
|
This [`loft`](../reference/model/loft.md) example places a rounded rectangle at two heights. Use
|
|
495
519
|
`scale`, `rotate` and `translate` to pose the top profile in XY; `rotate` takes degrees. Each
|
|
496
520
|
station uses `z` for an ordinary horizontal plane. To tilt a station, pass
|
|
497
|
-
`frame: anchorFrame3(
|
|
521
|
+
`frame: anchorFrame3(anchor3(position, direction, up))` instead; the direction chooses its
|
|
498
522
|
normal and a nonparallel `up` vector chooses its roll.
|
|
499
523
|
|
|
500
524
|
The primitive retains its corner identities, so `loft` pairs corresponding landmarks without
|
|
@@ -513,8 +537,8 @@ reindex also chooses a cyclic phase, while distance methods optimize ordered con
|
|
|
513
537
|
|
|
514
538
|
## Sample a heightfield
|
|
515
539
|
|
|
516
|
-
Build a relief tile from absolute Z heights over a rectangular XY grid.
|
|
517
|
-
[`heightfield`](../reference/model/heightfield.md) returns a Solid for
|
|
540
|
+
Build a relief tile from absolute Z heights over a rectangular XY grid.
|
|
541
|
+
[`heightfield`](../reference/model/heightfield.md) returns a Solid for Booleans and placement during
|
|
518
542
|
generation. Pure [`heightfieldMesh`](../reference/geometry/heightfieldMesh.md) accepts the same options
|
|
519
543
|
and returns an indexed mesh without an engine. Pass it directly as a mesh part, or wrap it in
|
|
520
544
|
[`immutableMesh`](../reference/model/immutableMesh.md) when returning it from a cached computation.
|
|
@@ -648,7 +672,7 @@ export function fitLabel(layout: VectorTextLayout): FittedTextLayout {
|
|
|
648
672
|
|
|
649
673
|
For a circular label, add a [`baseline`](../reference/text/VectorTextArcBaseline.md) with
|
|
650
674
|
`kind: "arc"` and a positive `radius` in millimetres to the layout options. The baseline is centered
|
|
651
|
-
at the XY origin; `
|
|
675
|
+
at the XY origin; `centerAngle` chooses its alignment datum and `direction` chooses the
|
|
652
676
|
reading direction. Each shaped glyph group rotates without bending. Circular text requires one
|
|
653
677
|
line and baseline vertical alignment; its default horizontal alignment is centered. Arbitrary
|
|
654
678
|
path text and automatic wrapping are outside this API.
|
|
@@ -666,6 +690,8 @@ replacement. Studio does not support custom font uploads.
|
|
|
666
690
|
|
|
667
691
|
## Solid inspection
|
|
668
692
|
|
|
693
|
+
Use `inspectSolid()` during generation to check bounds, volume, and component count:
|
|
694
|
+
|
|
669
695
|
|
|
670
696
|
|
|
671
697
|
```ts
|
|
@@ -676,7 +702,7 @@ export default generate(({ part }) => {
|
|
|
676
702
|
const result = box({ size: [40, 30, 5] });
|
|
677
703
|
const measurements = inspectSolid(result);
|
|
678
704
|
|
|
679
|
-
if (measurements.min[2] < -2.5 || measurements.
|
|
705
|
+
if (measurements.min[2] < -2.5 || measurements.componentCount !== 1) {
|
|
680
706
|
throw new Error("Unexpected placement or disconnected result.");
|
|
681
707
|
}
|
|
682
708
|
|
|
@@ -709,8 +735,8 @@ export const rowModel = generate<Record<never, never>>(({ part }) => {
|
|
|
709
735
|
|
|
710
736
|
Inspection copies supported native facts. Manufacturing finalization checks finite, closed,
|
|
711
737
|
oriented and reconstructable output before it becomes the preview or export snapshot. These
|
|
712
|
-
checks do not certify manufacturability
|
|
713
|
-
|
|
738
|
+
checks do not certify manufacturability. Keep minimum walls, overhangs, fits, and parameter
|
|
739
|
+
messages in your model's validation.
|
|
714
740
|
|
|
715
741
|
After adapting a recipe, check its default, the largest and smallest supported dimensions, and
|
|
716
742
|
every optional feature. Inspect the current result in Studio before exporting it. Continue with
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Write a standalone model
|
|
2
|
+
|
|
3
|
+
Write a TypeScript model for a plate with a hole, then check and run it with the CLI.
|
|
4
|
+
|
|
5
|
+
A standalone model uses `@metamesh/modeling` and default-exports a synchronous generation program.
|
|
6
|
+
The CLI or your application supplies the engine.
|
|
7
|
+
|
|
8
|
+
## Minimal model entry
|
|
9
|
+
|
|
10
|
+
Save this complete example as `model.ts`. It makes a 30 × 20 × 6 mm plate with a through-hole:
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
```ts
|
|
15
|
+
import { box, cylinder, generate } from "@metamesh/modeling";
|
|
16
|
+
|
|
17
|
+
export default generate<Record<never, never>>(({ part }) => {
|
|
18
|
+
const body = box({ size: [30, 20, 6] });
|
|
19
|
+
const bore = cylinder({ height: 8, radius: 3, sizing: "face" });
|
|
20
|
+
return part("plate", body.subtract([bore]));
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
The cutter extends beyond both faces of the centered plate. `part("plate", ...)` gives the output
|
|
27
|
+
a stable identity. This model takes an empty parameter map.
|
|
28
|
+
|
|
29
|
+
## Check and run
|
|
30
|
+
|
|
31
|
+
With [Modeling and the CLI installed](https://metamesh.studio/docs/develop/agent-authoring#install-and-discover-the-environment),
|
|
32
|
+
check the source and generate a captured result:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pnpm exec metamesh check model.ts --kind model
|
|
36
|
+
pnpm exec metamesh run model.ts --kind model
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Continue with [inspection and rendering](https://metamesh.studio/docs/develop/agent-authoring#inspect-the-captured-result),
|
|
40
|
+
or [host the program in your application](hosting.md).
|
|
41
|
+
Use the [construction chooser](concepts.md#choose-a-modeling-path) when you
|
|
42
|
+
need to select another modeling approach.
|