@metamesh/modeling 0.11.0 → 0.13.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 +39 -0
- package/README.md +60 -58
- package/dist/api/engine.d.ts +123 -97
- package/dist/api/geometry.d.ts +3896 -3307
- package/dist/api/index.d.ts +2489 -2267
- package/dist/api/text.d.ts +119 -107
- package/dist/docs/guides/concepts.md +197 -0
- package/dist/docs/guides/fonts.md +51 -0
- package/dist/docs/guides/fundamentals.md +135 -0
- package/dist/docs/guides/generation.md +221 -0
- package/dist/docs/guides/hosting.md +88 -0
- package/dist/docs/guides/recipes.md +668 -0
- package/dist/docs/manifest.json +9851 -0
- package/dist/docs/reference/engine/Export3mfOptions.md +29 -0
- package/dist/docs/reference/engine/ExportMeshPart.md +65 -0
- package/dist/docs/reference/engine/GenerationOptions.md +62 -0
- package/dist/docs/reference/engine/GeometryResource.md +77 -0
- package/dist/docs/reference/engine/ModelDependencies.md +41 -0
- package/dist/docs/reference/engine/ModelEngine.md +103 -0
- package/dist/docs/reference/engine/ModelEngineOptions.md +33 -0
- package/dist/docs/reference/engine/ModelSession.md +96 -0
- package/dist/docs/reference/engine/ModelSnapshot.md +173 -0
- package/dist/docs/reference/engine/SessionOptions.md +123 -0
- package/dist/docs/reference/engine/SnapshotPart.md +130 -0
- package/dist/docs/reference/engine/categories/host-lifecycle.md +37 -0
- package/dist/docs/reference/engine/createModelEngine.md +56 -0
- package/dist/docs/reference/engine/defaultModelingLimits.md +7 -0
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -0
- package/dist/docs/reference/engine/validateModel.md +48 -0
- package/dist/docs/reference/engine.md +25 -0
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +75 -0
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +79 -0
- package/dist/docs/reference/geometry/Anchor3.md +49 -0
- package/dist/docs/reference/geometry/ArcCurve2.md +70 -0
- package/dist/docs/reference/geometry/ArcCurve3.md +94 -0
- package/dist/docs/reference/geometry/AttachTransformOptions.md +58 -0
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +61 -0
- package/dist/docs/reference/geometry/Bounds2.md +39 -0
- package/dist/docs/reference/geometry/Bounds3.md +39 -0
- package/dist/docs/reference/geometry/BoundsFit2.md +52 -0
- package/dist/docs/reference/geometry/BoundsFit3.md +52 -0
- package/dist/docs/reference/geometry/BoundsFitOptions.md +23 -0
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +23 -0
- package/dist/docs/reference/geometry/BoxAnchorFace.md +7 -0
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +59 -0
- package/dist/docs/reference/geometry/BoxEdge.md +7 -0
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +14 -0
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +15 -0
- package/dist/docs/reference/geometry/BoxOptions.md +87 -0
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +7 -0
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +93 -0
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +29 -0
- package/dist/docs/reference/geometry/CircleContourOptions.md +15 -0
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +59 -0
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +41 -0
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +7 -0
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +53 -0
- package/dist/docs/reference/geometry/Contour.md +17 -0
- package/dist/docs/reference/geometry/ContourCurve.md +35 -0
- package/dist/docs/reference/geometry/ContourPoint.md +29 -0
- package/dist/docs/reference/geometry/ContourSegment.md +86 -0
- package/dist/docs/reference/geometry/CorrespondingComponent.md +46 -0
- package/dist/docs/reference/geometry/CorrespondingContour.md +46 -0
- package/dist/docs/reference/geometry/CorrespondingProfile.md +22 -0
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +27 -0
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +70 -0
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +70 -0
- package/dist/docs/reference/geometry/Curve2.md +16 -0
- package/dist/docs/reference/geometry/Curve3.md +16 -0
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +64 -0
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +73 -0
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +7 -0
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +83 -0
- package/dist/docs/reference/geometry/CylinderOptions.md +53 -0
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +209 -0
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +7 -0
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +71 -0
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +82 -0
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +34 -0
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +41 -0
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +47 -0
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +82 -0
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -0
- package/dist/docs/reference/geometry/EdgeTreatment.md +17 -0
- package/dist/docs/reference/geometry/EllipseContourOptions.md +15 -0
- package/dist/docs/reference/geometry/EndTreatments.md +34 -0
- package/dist/docs/reference/geometry/ExtrudeOptions.md +134 -0
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +77 -0
- package/dist/docs/reference/geometry/FittedTextLayout.md +60 -0
- package/dist/docs/reference/geometry/Frame3.md +58 -0
- package/dist/docs/reference/geometry/GeometryError.md +97 -0
- package/dist/docs/reference/geometry/GeometryErrorCode.md +7 -0
- package/dist/docs/reference/geometry/GeometryErrorContext.md +29 -0
- package/dist/docs/reference/geometry/GeometryResolution.md +65 -0
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +62 -0
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +41 -0
- package/dist/docs/reference/geometry/GridPatternOptions.md +42 -0
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +14 -0
- package/dist/docs/reference/geometry/HeightfieldOptions.md +67 -0
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +53 -0
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +141 -0
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +265 -0
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +53 -0
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +14 -0
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +242 -0
- package/dist/docs/reference/geometry/LineCurve2.md +46 -0
- package/dist/docs/reference/geometry/LineCurve3.md +46 -0
- package/dist/docs/reference/geometry/LinearPatternOptions.md +30 -0
- package/dist/docs/reference/geometry/LoftCorrespondence.md +19 -0
- package/dist/docs/reference/geometry/LoftMeshStation.md +27 -0
- package/dist/docs/reference/geometry/LoftOptions.md +84 -0
- package/dist/docs/reference/geometry/LoftPlacement.md +66 -0
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +18 -0
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +35 -0
- package/dist/docs/reference/geometry/MetricFastenerSize.md +7 -0
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +72 -0
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +29 -0
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +41 -0
- package/dist/docs/reference/geometry/ModelingLimits.md +126 -0
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +17 -0
- package/dist/docs/reference/geometry/Path2.md +14 -0
- package/dist/docs/reference/geometry/Path3.md +14 -0
- package/dist/docs/reference/geometry/PathFrame.md +46 -0
- package/dist/docs/reference/geometry/PathNormalGuide.md +38 -0
- package/dist/docs/reference/geometry/PathPatternOptions.md +46 -0
- package/dist/docs/reference/geometry/PathPlacement.md +34 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +7 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +156 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +120 -0
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +190 -0
- package/dist/docs/reference/geometry/Polygon.md +38 -0
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +92 -0
- package/dist/docs/reference/geometry/PrimitivePlacement.md +31 -0
- package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +83 -0
- package/dist/docs/reference/geometry/PrintableThreadFit.md +7 -0
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +45 -0
- package/dist/docs/reference/geometry/Profile.md +22 -0
- package/dist/docs/reference/geometry/ProfileComponent2.md +46 -0
- package/dist/docs/reference/geometry/ProfileContour2.md +34 -0
- package/dist/docs/reference/geometry/ProfileSpan2.md +47 -0
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +36 -0
- package/dist/docs/reference/geometry/RackPitchDimensions.md +113 -0
- package/dist/docs/reference/geometry/RackPitchSpec.md +77 -0
- package/dist/docs/reference/geometry/RadialPatternOptions.md +62 -0
- package/dist/docs/reference/geometry/RadialSizing.md +7 -0
- package/dist/docs/reference/geometry/RadialSizingOptions.md +40 -0
- package/dist/docs/reference/geometry/RectangleContourOptions.md +66 -0
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +34 -0
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +14 -0
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +94 -0
- package/dist/docs/reference/geometry/Region.md +14 -0
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +84 -0
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +65 -0
- package/dist/docs/reference/geometry/RevolveOptions.md +82 -0
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +91 -0
- package/dist/docs/reference/geometry/RowLayoutOptions.md +23 -0
- package/dist/docs/reference/geometry/SampleContourOptions.md +71 -0
- package/dist/docs/reference/geometry/SampleHelixOptions.md +95 -0
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +71 -0
- package/dist/docs/reference/geometry/SampledCurve2.md +34 -0
- package/dist/docs/reference/geometry/SampledCurve3.md +34 -0
- package/dist/docs/reference/geometry/SampledThreadHelices.md +58 -0
- package/dist/docs/reference/geometry/SideProfileCurve.md +35 -0
- package/dist/docs/reference/geometry/SideProfilePoint.md +29 -0
- package/dist/docs/reference/geometry/SideProfileSegment.md +86 -0
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +71 -0
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +34 -0
- package/dist/docs/reference/geometry/SphereOptions.md +15 -0
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +75 -0
- package/dist/docs/reference/geometry/StrokePathCap.md +7 -0
- package/dist/docs/reference/geometry/StrokePathJoin.md +7 -0
- package/dist/docs/reference/geometry/StrokePathRegionOptions.md +85 -0
- package/dist/docs/reference/geometry/SvgImportOptions.md +60 -0
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +61 -0
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +118 -0
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +65 -0
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +53 -0
- package/dist/docs/reference/geometry/SweepOptions.md +109 -0
- package/dist/docs/reference/geometry/SweepOrientation.md +109 -0
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +53 -0
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +100 -0
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +73 -0
- package/dist/docs/reference/geometry/ThreadEndStyle.md +7 -0
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +113 -0
- package/dist/docs/reference/geometry/ThreadHandedness.md +7 -0
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +120 -0
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +7 -0
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +7 -0
- package/dist/docs/reference/geometry/ThreadProfile.md +82 -0
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +49 -0
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +19 -0
- package/dist/docs/reference/geometry/ThreadRole.md +7 -0
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +7 -0
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +269 -0
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +94 -0
- package/dist/docs/reference/geometry/ThreadedNutShape.md +7 -0
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +242 -0
- package/dist/docs/reference/geometry/TorusOptions.md +105 -0
- package/dist/docs/reference/geometry/Transform3.md +12 -0
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +91 -0
- package/dist/docs/reference/geometry/TriangleMesh.md +34 -0
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +119 -0
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +75 -0
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +75 -0
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +39 -0
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +190 -0
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +107 -0
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +41 -0
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +29 -0
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +51 -0
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +91 -0
- package/dist/docs/reference/geometry/TubeOptions.md +138 -0
- package/dist/docs/reference/geometry/Vector2.md +7 -0
- package/dist/docs/reference/geometry/Vector3.md +7 -0
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +53 -0
- package/dist/docs/reference/geometry/VectorTextLayout.md +39 -0
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +111 -0
- package/dist/docs/reference/geometry/VectorTextMetrics.md +94 -0
- package/dist/docs/reference/geometry/VectorTextOptions.md +50 -0
- package/dist/docs/reference/geometry/add3.md +38 -0
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +57 -0
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +52 -0
- package/dist/docs/reference/geometry/anchorFrame3.md +40 -0
- package/dist/docs/reference/geometry/applyTransformDirection3.md +41 -0
- package/dist/docs/reference/geometry/applyTransformPoint3.md +39 -0
- package/dist/docs/reference/geometry/attachTransform.md +73 -0
- package/dist/docs/reference/geometry/boundsCenter.md +62 -0
- package/dist/docs/reference/geometry/boundsFromSize.md +83 -0
- package/dist/docs/reference/geometry/boundsSize.md +62 -0
- package/dist/docs/reference/geometry/boxAnchor3.md +48 -0
- package/dist/docs/reference/geometry/buildHelicalThreadRidgeMesh.md +68 -0
- package/dist/docs/reference/geometry/buildHelicalThreadSolidMesh.md +102 -0
- package/dist/docs/reference/geometry/categories/bounds-layout.md +35 -0
- package/dist/docs/reference/geometry/categories/curves-paths.md +63 -0
- package/dist/docs/reference/geometry/categories/mechanical.md +101 -0
- package/dist/docs/reference/geometry/categories/meshes.md +73 -0
- package/dist/docs/reference/geometry/categories/pattern-placement.md +34 -0
- package/dist/docs/reference/geometry/categories/primitive-options.md +36 -0
- package/dist/docs/reference/geometry/categories/profiles-regions.md +74 -0
- package/dist/docs/reference/geometry/categories/resolution-errors.md +46 -0
- package/dist/docs/reference/geometry/categories/transforms-math.md +63 -0
- package/dist/docs/reference/geometry/categories/vector-import.md +40 -0
- package/dist/docs/reference/geometry/circleContour.md +33 -0
- package/dist/docs/reference/geometry/closeToAxis.md +34 -0
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +51 -0
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +42 -0
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +56 -0
- package/dist/docs/reference/geometry/composeTransform3.md +40 -0
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +45 -0
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +47 -0
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +31 -0
- package/dist/docs/reference/geometry/containsBounds.md +72 -0
- package/dist/docs/reference/geometry/contourContainsPoint.md +33 -0
- package/dist/docs/reference/geometry/createAnchor3.md +63 -0
- package/dist/docs/reference/geometry/createThreadProfile.md +37 -0
- package/dist/docs/reference/geometry/createTriangleMeshSignature.md +60 -0
- package/dist/docs/reference/geometry/cross3.md +38 -0
- package/dist/docs/reference/geometry/cumulativePathLengths.md +33 -0
- package/dist/docs/reference/geometry/cylinderAnchor3.md +56 -0
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +14 -0
- package/dist/docs/reference/geometry/distributeAlongPath.md +51 -0
- package/dist/docs/reference/geometry/dot3.md +38 -0
- package/dist/docs/reference/geometry/ellipseContour.md +33 -0
- package/dist/docs/reference/geometry/eulerTransform3.md +38 -0
- package/dist/docs/reference/geometry/extrudeMesh.md +73 -0
- package/dist/docs/reference/geometry/fitBounds.md +95 -0
- package/dist/docs/reference/geometry/fitTextLayout.md +57 -0
- package/dist/docs/reference/geometry/frameTransform3.md +44 -0
- package/dist/docs/reference/geometry/getMetricClearanceHole.md +33 -0
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +27 -0
- package/dist/docs/reference/geometry/gridPatternTransforms.md +31 -0
- package/dist/docs/reference/geometry/heightfieldMesh.md +43 -0
- package/dist/docs/reference/geometry/inverseTransform3.md +30 -0
- package/dist/docs/reference/geometry/isGeometryError.md +26 -0
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +36 -0
- package/dist/docs/reference/geometry/layoutRow.md +43 -0
- package/dist/docs/reference/geometry/length3.md +26 -0
- package/dist/docs/reference/geometry/lerp3.md +38 -0
- package/dist/docs/reference/geometry/linearPatternTransforms.md +31 -0
- package/dist/docs/reference/geometry/loftMesh.md +72 -0
- package/dist/docs/reference/geometry/matchProfiles.md +51 -0
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +47 -0
- package/dist/docs/reference/geometry/measureTriangleMesh.md +55 -0
- package/dist/docs/reference/geometry/meshBounds.md +35 -0
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +29 -0
- package/dist/docs/reference/geometry/normalize3.md +32 -0
- package/dist/docs/reference/geometry/normalizeContour.md +45 -0
- package/dist/docs/reference/geometry/normalizePolygon.md +37 -0
- package/dist/docs/reference/geometry/normalizeRegion.md +33 -0
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +91 -0
- package/dist/docs/reference/geometry/pathLength.md +33 -0
- package/dist/docs/reference/geometry/pathPatternTransforms.md +57 -0
- package/dist/docs/reference/geometry/preflightHeightfield.md +34 -0
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +96 -0
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +85 -0
- package/dist/docs/reference/geometry/preflightSvgRegion.md +56 -0
- package/dist/docs/reference/geometry/preflightThreadedNut.md +96 -0
- package/dist/docs/reference/geometry/preflightThreadedRod.md +85 -0
- package/dist/docs/reference/geometry/projectOntoPlane3.md +32 -0
- package/dist/docs/reference/geometry/radialPatternTransforms.md +47 -0
- package/dist/docs/reference/geometry/rectangleContour.md +49 -0
- package/dist/docs/reference/geometry/rectangleProfile.md +53 -0
- package/dist/docs/reference/geometry/regionArea.md +34 -0
- package/dist/docs/reference/geometry/regionBounds.md +27 -0
- package/dist/docs/reference/geometry/regularPolygonContour.md +53 -0
- package/dist/docs/reference/geometry/resamplePolyline2.md +64 -0
- package/dist/docs/reference/geometry/resamplePolyline3.md +67 -0
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +79 -0
- package/dist/docs/reference/geometry/resolveArcSegments.md +67 -0
- package/dist/docs/reference/geometry/resolveCircularSegments.md +61 -0
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +31 -0
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +31 -0
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +74 -0
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +26 -0
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +59 -0
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +27 -0
- package/dist/docs/reference/geometry/resolveRackPitch.md +27 -0
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +59 -0
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +30 -0
- package/dist/docs/reference/geometry/revolveMesh.md +76 -0
- package/dist/docs/reference/geometry/rotateAroundAxis3.md +38 -0
- package/dist/docs/reference/geometry/rotationTransform3.md +49 -0
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +50 -0
- package/dist/docs/reference/geometry/sampleContour.md +77 -0
- package/dist/docs/reference/geometry/sampleCurve2.md +61 -0
- package/dist/docs/reference/geometry/sampleCurve3.md +61 -0
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +58 -0
- package/dist/docs/reference/geometry/sampleHelix.md +41 -0
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +59 -0
- package/dist/docs/reference/geometry/sampleRackToothPath.md +39 -0
- package/dist/docs/reference/geometry/sampleSideProfile.md +73 -0
- package/dist/docs/reference/geometry/sampleTextContours.md +53 -0
- package/dist/docs/reference/geometry/sampleThreadHelices.md +63 -0
- package/dist/docs/reference/geometry/scale3.md +38 -0
- package/dist/docs/reference/geometry/scaleTransform3.md +34 -0
- package/dist/docs/reference/geometry/signedContourArea.md +26 -0
- package/dist/docs/reference/geometry/starContour.md +51 -0
- package/dist/docs/reference/geometry/strokePathRegion.md +63 -0
- package/dist/docs/reference/geometry/subtract3.md +38 -0
- package/dist/docs/reference/geometry/sweepMesh.md +82 -0
- package/dist/docs/reference/geometry/transformContour.md +42 -0
- package/dist/docs/reference/geometry/transformDeterminant3.md +32 -0
- package/dist/docs/reference/geometry/transformPath2.md +40 -0
- package/dist/docs/reference/geometry/transformPath3.md +33 -0
- package/dist/docs/reference/geometry/transformRegion.md +40 -0
- package/dist/docs/reference/geometry/transformTriangleMesh.md +42 -0
- package/dist/docs/reference/geometry/translationTransform3.md +31 -0
- package/dist/docs/reference/geometry/triangulateContour.md +26 -0
- package/dist/docs/reference/geometry/validateSolidMesh.md +52 -0
- package/dist/docs/reference/geometry/validateTransform3.md +43 -0
- package/dist/docs/reference/geometry/validateTriangleMesh.md +59 -0
- package/dist/docs/reference/geometry.md +30 -0
- package/dist/docs/reference/model/Anchor3.md +54 -0
- package/dist/docs/reference/model/AttachOptions.md +63 -0
- package/dist/docs/reference/model/Bounds2.md +39 -0
- package/dist/docs/reference/model/Bounds3.md +39 -0
- package/dist/docs/reference/model/BoxEdge.md +15 -0
- package/dist/docs/reference/model/BoxEdgeSelection.md +19 -0
- package/dist/docs/reference/model/BoxEdgeTreatments.md +20 -0
- package/dist/docs/reference/model/BoxOptions.md +92 -0
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +35 -0
- package/dist/docs/reference/model/CircleContourOptions.md +21 -0
- package/dist/docs/reference/model/CircleOptions.md +21 -0
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +64 -0
- package/dist/docs/reference/model/Computed.md +35 -0
- package/dist/docs/reference/model/ComputedValue.md +20 -0
- package/dist/docs/reference/model/Contour.md +22 -0
- package/dist/docs/reference/model/CorrespondingComponent.md +46 -0
- package/dist/docs/reference/model/CorrespondingContour.md +46 -0
- package/dist/docs/reference/model/CorrespondingProfile.md +22 -0
- package/dist/docs/reference/model/CorrespondingProfileStation.md +27 -0
- package/dist/docs/reference/model/CylinderOptions.md +58 -0
- package/dist/docs/reference/model/DiagnosticOptions.md +23 -0
- package/dist/docs/reference/model/EdgeTreatment.md +22 -0
- package/dist/docs/reference/model/EllipseContourOptions.md +21 -0
- package/dist/docs/reference/model/EllipseOptions.md +21 -0
- package/dist/docs/reference/model/EndTreatments.md +39 -0
- package/dist/docs/reference/model/ExtrudeOptions.md +140 -0
- package/dist/docs/reference/model/FinalizedModel.md +121 -0
- package/dist/docs/reference/model/FinalizedPart.md +87 -0
- package/dist/docs/reference/model/Frame3.md +63 -0
- package/dist/docs/reference/model/GenerateCallback.md +37 -0
- package/dist/docs/reference/model/GenerateContext.md +277 -0
- package/dist/docs/reference/model/GeneratedPart.md +93 -0
- package/dist/docs/reference/model/GenerationDiagnostic.md +41 -0
- package/dist/docs/reference/model/GenerationError.md +54 -0
- package/dist/docs/reference/model/GeometryResolution.md +70 -0
- package/dist/docs/reference/model/GeometrySamplingLimits.md +62 -0
- package/dist/docs/reference/model/GeometryToleranceOptions.md +46 -0
- package/dist/docs/reference/model/GridPatternOptions.md +43 -0
- package/dist/docs/reference/model/HeightfieldOptions.md +67 -0
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +140 -0
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +58 -0
- package/dist/docs/reference/model/HullOptions.md +72 -0
- package/dist/docs/reference/model/ImmutableBuffer-type.md +80 -0
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +34 -0
- package/dist/docs/reference/model/ImplicitOptions.md +83 -0
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +245 -0
- package/dist/docs/reference/model/LinearPatternOptions.md +31 -0
- package/dist/docs/reference/model/LoftCorrespondence.md +27 -0
- package/dist/docs/reference/model/LoftOptions.md +91 -0
- package/dist/docs/reference/model/LoftPlacement.md +73 -0
- package/dist/docs/reference/model/LoftStation.md +35 -0
- package/dist/docs/reference/model/MatchProfilesOptions.md +35 -0
- package/dist/docs/reference/model/ModelProgram.md +44 -0
- package/dist/docs/reference/model/ModelingLimits.md +126 -0
- package/dist/docs/reference/model/NumericArray.md +7 -0
- package/dist/docs/reference/model/PartGeometry.md +16 -0
- package/dist/docs/reference/model/PartOptions.md +65 -0
- package/dist/docs/reference/model/PathNormalGuide.md +45 -0
- package/dist/docs/reference/model/PathPatternOptions.md +47 -0
- package/dist/docs/reference/model/PatternSource.md +26 -0
- package/dist/docs/reference/model/PlaneOptions.md +39 -0
- package/dist/docs/reference/model/Polygon-type.md +43 -0
- package/dist/docs/reference/model/PolygonOptions.md +112 -0
- package/dist/docs/reference/model/PrimitivePlacement.md +40 -0
- package/dist/docs/reference/model/PrimitivePlacementOptions.md +88 -0
- package/dist/docs/reference/model/PrintableThreadFit.md +14 -0
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +50 -0
- package/dist/docs/reference/model/Profile.md +22 -0
- package/dist/docs/reference/model/ProfileComponent2.md +46 -0
- package/dist/docs/reference/model/ProfileContour2.md +34 -0
- package/dist/docs/reference/model/ProfileSpan2.md +47 -0
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +41 -0
- package/dist/docs/reference/model/RadialPatternOptions.md +63 -0
- package/dist/docs/reference/model/RadialSizing.md +15 -0
- package/dist/docs/reference/model/RadialSizingOptions.md +40 -0
- package/dist/docs/reference/model/RectangleContourOptions.md +72 -0
- package/dist/docs/reference/model/RectangleCornerTreatment.md +40 -0
- package/dist/docs/reference/model/RectangleCornerTreatments.md +20 -0
- package/dist/docs/reference/model/RectangleOptions.md +107 -0
- package/dist/docs/reference/model/Region.md +19 -0
- package/dist/docs/reference/model/RegionOffsetJoin.md +16 -0
- package/dist/docs/reference/model/RegionOffsetOptions.md +65 -0
- package/dist/docs/reference/model/RegularPolygonOptions.md +53 -0
- package/dist/docs/reference/model/RevolveOptions.md +89 -0
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +96 -0
- package/dist/docs/reference/model/Section.md +450 -0
- package/dist/docs/reference/model/SectionHullOptions.md +72 -0
- package/dist/docs/reference/model/SectionInspection.md +98 -0
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +76 -0
- package/dist/docs/reference/model/Solid.md +350 -0
- package/dist/docs/reference/model/SolidInspection.md +98 -0
- package/dist/docs/reference/model/SolidRayHit.md +58 -0
- package/dist/docs/reference/model/SphereOptions.md +20 -0
- package/dist/docs/reference/model/StarOptions.md +98 -0
- package/dist/docs/reference/model/SvgOrigin.md +16 -0
- package/dist/docs/reference/model/SvgPathSectionOptions.md +78 -0
- package/dist/docs/reference/model/SvgSectionOptions.md +66 -0
- package/dist/docs/reference/model/SweepOptions.md +116 -0
- package/dist/docs/reference/model/SweepOrientation.md +116 -0
- package/dist/docs/reference/model/TextSectionOptions.md +41 -0
- package/dist/docs/reference/model/ThreadEndStyle.md +14 -0
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +117 -0
- package/dist/docs/reference/model/ThreadHandedness.md +14 -0
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +14 -0
- package/dist/docs/reference/model/ThreadLeadInShape.md +14 -0
- package/dist/docs/reference/model/ThreadProfile.md +86 -0
- package/dist/docs/reference/model/ThreadRidgeOptions.md +18 -0
- package/dist/docs/reference/model/ThreadedNutBevel.md +14 -0
- package/dist/docs/reference/model/ThreadedNutOptions.md +273 -0
- package/dist/docs/reference/model/ThreadedNutPreflight.md +98 -0
- package/dist/docs/reference/model/ThreadedNutShape.md +14 -0
- package/dist/docs/reference/model/ThreadedRodOptions.md +245 -0
- package/dist/docs/reference/model/TorusOptions.md +110 -0
- package/dist/docs/reference/model/Transform2.md +15 -0
- package/dist/docs/reference/model/Transform3.md +18 -0
- package/dist/docs/reference/model/TriangleMesh.md +42 -0
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +123 -0
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +79 -0
- package/dist/docs/reference/model/TubeOptions.md +143 -0
- package/dist/docs/reference/model/Vector2.md +15 -0
- package/dist/docs/reference/model/Vector3.md +15 -0
- package/dist/docs/reference/model/VectorTextLayout.md +40 -0
- package/dist/docs/reference/model/VectorTextMetrics.md +100 -0
- package/dist/docs/reference/model/anchor.md +46 -0
- package/dist/docs/reference/model/box.md +62 -0
- package/dist/docs/reference/model/categories/boolean-operations.md +37 -0
- package/dist/docs/reference/model/categories/bounded-surfaces.md +26 -0
- package/dist/docs/reference/model/categories/contracts.md +16 -0
- package/dist/docs/reference/model/categories/core-values-errors.md +30 -0
- package/dist/docs/reference/model/categories/explicit-profiles.md +32 -0
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +42 -0
- package/dist/docs/reference/model/categories/generation.md +44 -0
- package/dist/docs/reference/model/categories/inspection.md +23 -0
- package/dist/docs/reference/model/categories/mesh-inspection.md +29 -0
- package/dist/docs/reference/model/categories/primitives.md +61 -0
- package/dist/docs/reference/model/categories/resolution.md +18 -0
- package/dist/docs/reference/model/categories/sections.md +59 -0
- package/dist/docs/reference/model/categories/threads.md +50 -0
- package/dist/docs/reference/model/categories/transforms-placement.md +43 -0
- package/dist/docs/reference/model/circle.md +39 -0
- package/dist/docs/reference/model/components.md +68 -0
- package/dist/docs/reference/model/compose.md +31 -0
- package/dist/docs/reference/model/cylinder.md +52 -0
- package/dist/docs/reference/model/distance.md +45 -0
- package/dist/docs/reference/model/ellipse.md +39 -0
- package/dist/docs/reference/model/extrude.md +83 -0
- package/dist/docs/reference/model/fromRegion.md +33 -0
- package/dist/docs/reference/model/generate.md +46 -0
- package/dist/docs/reference/model/gridPattern.md +80 -0
- package/dist/docs/reference/model/heightfield.md +40 -0
- package/dist/docs/reference/model/hull.md +74 -0
- package/dist/docs/reference/model/immutableBuffer.md +44 -0
- package/dist/docs/reference/model/immutableMesh.md +40 -0
- package/dist/docs/reference/model/implicit.md +47 -0
- package/dist/docs/reference/model/inspectSection.md +38 -0
- package/dist/docs/reference/model/inspectSolid.md +38 -0
- package/dist/docs/reference/model/internalThreadCutter.md +100 -0
- package/dist/docs/reference/model/intersect.md +70 -0
- package/dist/docs/reference/model/isEmpty.md +39 -0
- package/dist/docs/reference/model/linearPattern.md +80 -0
- package/dist/docs/reference/model/loft.md +137 -0
- package/dist/docs/reference/model/matchProfiles.md +42 -0
- package/dist/docs/reference/model/minkowskiSum.md +37 -0
- package/dist/docs/reference/model/pathPattern.md +118 -0
- package/dist/docs/reference/model/polygon.md +40 -0
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +89 -0
- package/dist/docs/reference/model/preflightThreadedNut.md +100 -0
- package/dist/docs/reference/model/preflightThreadedRod.md +89 -0
- package/dist/docs/reference/model/radialPattern.md +113 -0
- package/dist/docs/reference/model/rayCast.md +40 -0
- package/dist/docs/reference/model/rectangle.md +59 -0
- package/dist/docs/reference/model/regularPolygon.md +39 -0
- package/dist/docs/reference/model/revolve.md +74 -0
- package/dist/docs/reference/model/solidFromMesh.md +42 -0
- package/dist/docs/reference/model/sphere.md +42 -0
- package/dist/docs/reference/model/split.md +54 -0
- package/dist/docs/reference/model/splitByPlane.md +66 -0
- package/dist/docs/reference/model/star.md +63 -0
- package/dist/docs/reference/model/svgPathSection.md +65 -0
- package/dist/docs/reference/model/svgSection.md +64 -0
- package/dist/docs/reference/model/sweep.md +92 -0
- package/dist/docs/reference/model/textSection.md +57 -0
- package/dist/docs/reference/model/threadRidge.md +72 -0
- package/dist/docs/reference/model/threadedNut.md +110 -0
- package/dist/docs/reference/model/threadedRod.md +99 -0
- package/dist/docs/reference/model/toRegion.md +33 -0
- package/dist/docs/reference/model/toTriangleMesh.md +27 -0
- package/dist/docs/reference/model/torus.md +70 -0
- package/dist/docs/reference/model/tube.md +77 -0
- package/dist/docs/reference/model/union.md +72 -0
- package/dist/docs/reference/model.md +39 -0
- package/dist/docs/reference/text/Bounds2.md +34 -0
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -0
- package/dist/docs/reference/text/Vector2.md +7 -0
- package/dist/docs/reference/text/VectorFont.md +186 -0
- package/dist/docs/reference/text/VectorFontOptions.md +17 -0
- package/dist/docs/reference/text/VectorTextArcBaseline.md +53 -0
- package/dist/docs/reference/text/VectorTextLayout.md +34 -0
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +111 -0
- package/dist/docs/reference/text/VectorTextMetrics.md +94 -0
- package/dist/docs/reference/text/VectorTextOptions.md +50 -0
- package/dist/docs/reference/text/categories/font-preparation.md +38 -0
- package/dist/docs/reference/text/prepareVectorFont.md +46 -0
- package/dist/docs/reference/text.md +21 -0
- package/dist/engine/construction-operations.js +10 -3
- package/dist/engine/deferred-context.js +12 -3
- package/dist/engine/execution.js +1 -1
- package/dist/engine/export-3mf.js +2 -2
- package/dist/engine/finalization.js +3 -3
- package/dist/engine/immutable-generation-data.js +36 -6
- package/dist/engine/loft-operations.js +4 -4
- package/dist/engine/native/adapter.js +1 -1
- package/dist/engine/native/regions.js +9 -9
- package/dist/engine/pattern-operations.js +24 -13
- package/dist/engine/pattern-transform.js +9 -0
- package/dist/engine/placement.js +2 -2
- package/dist/engine/primitive-operations.js +10 -10
- package/dist/engine/profile-mesh.js +7 -7
- package/dist/engine/section-operations.js +25 -14
- package/dist/engine/session-graph.js +40 -33
- package/dist/engine/session.js +1 -2
- package/dist/geometry/bounds.js +117 -0
- package/dist/geometry/cylinder.js +5 -1
- package/dist/geometry/edge-finishing.js +2 -2
- package/dist/geometry/heightfield.js +1 -1
- package/dist/geometry/index.js +15 -12
- package/dist/geometry/{loft-correspondence.js → loft/loft-correspondence.js} +3 -3
- package/dist/geometry/{loft-geometry.js → loft/loft-geometry.js} +8 -8
- package/dist/geometry/{loft-options.js → loft/loft-options.js} +2 -2
- package/dist/geometry/{loft-simple-mesh.js → loft/loft-simple-mesh.js} +6 -6
- package/dist/geometry/{loft-triangulation.js → loft/loft-triangulation.js} +6 -6
- package/dist/geometry/{loft.js → loft/loft.js} +8 -8
- package/dist/geometry/math/vector3.js +5 -1
- package/dist/geometry/mechanical/gears.js +2 -2
- package/dist/geometry/mechanical/thread-mesh.js +3 -3
- package/dist/geometry/mechanical/thread-profiles.js +2 -2
- package/dist/geometry/mechanical/thread-surface.js +14 -5
- package/dist/geometry/{mesh-centroid.js → mesh/mesh-centroid.js} +1 -1
- package/dist/geometry/{mesh-planar.js → mesh/mesh-planar.js} +1 -1
- package/dist/geometry/{mesh-quality.js → mesh/mesh-quality.js} +2 -2
- package/dist/geometry/{mesh-signature.js → mesh/mesh-signature.js} +2 -2
- package/dist/geometry/{mesh-solid.js → mesh/mesh-solid.js} +2 -2
- package/dist/geometry/{mesh.js → mesh/mesh.js} +7 -8
- package/dist/geometry/paths/frames.js +4 -5
- package/dist/geometry/patterns/options.js +1 -0
- package/dist/{engine/pattern-placements.js → geometry/patterns/placements.js} +22 -8
- package/dist/geometry/patterns.js +25 -0
- package/dist/geometry/primitive-resolvers.js +9 -9
- package/dist/geometry/profiles/contour.js +3 -3
- package/dist/geometry/profiles/matched.js +3 -3
- package/dist/geometry/profiles/profiles.js +10 -10
- package/dist/geometry/profiles/rectangle.js +7 -7
- package/dist/geometry/profiles/shapes.js +9 -9
- package/dist/geometry/profiles/side-profile.js +37 -0
- package/dist/geometry/regions.js +15 -15
- package/dist/geometry/revolve/revolve-mesh.js +5 -5
- package/dist/geometry/stroke-path.js +2 -2
- package/dist/geometry/svg/errors.js +0 -3
- package/dist/geometry/svg/fill.js +7 -7
- package/dist/geometry/svg/index.js +1 -1
- package/dist/geometry/svg/matrix.js +0 -114
- package/dist/geometry/svg/parser.js +1 -439
- package/dist/geometry/svg-import.js +3 -3
- package/dist/geometry/sweeps/sweep-closed.js +1 -1
- package/dist/geometry/sweeps/sweep-mesh.js +1 -1
- package/dist/geometry/sweeps/sweep-open.js +3 -3
- package/dist/geometry/sweeps/validation.js +2 -2
- package/dist/geometry/text-fitting.js +85 -0
- package/dist/geometry/tolerance.js +2 -2
- package/dist/geometry/transform-geometry.js +9 -9
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +1 -1
- package/dist/model/operation-contracts.js +1 -0
- package/dist/model/operation-dispatch.js +6 -0
- package/dist/model/operations.js +19 -49
- package/package.json +10 -8
- /package/dist/geometry/{mesh-edge-table.js → mesh/mesh-edge-table.js} +0 -0
- /package/dist/geometry/{mesh-solid-intersections.js → mesh/mesh-solid-intersections.js} +0 -0
package/dist/api/text.d.ts
CHANGED
|
@@ -1,107 +1,119 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
export declare interface
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
1
|
+
/** Axis-aligned bounds in two-dimensional model space. */
|
|
2
|
+
export declare interface Bounds2 {
|
|
3
|
+
/** Inclusive maximum X/Y coordinates. */
|
|
4
|
+
readonly max: Vector2;
|
|
5
|
+
/** Inclusive minimum X/Y coordinates. */
|
|
6
|
+
readonly min: Vector2;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Limits apply before parsing or shaping untrusted font data. */
|
|
10
|
+
export declare const MAX_VECTOR_FONT_BYTES: number;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here.
|
|
14
|
+
*
|
|
15
|
+
* @example Prepare a label before building geometry
|
|
16
|
+
* ```ts
|
|
17
|
+
* async function prepareLabel(fontBytes: Uint8Array) {
|
|
18
|
+
* const font = await prepareVectorFont(fontBytes);
|
|
19
|
+
* return font.layout("MetaMesh", { fontSize: 8 });
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function prepareVectorFont(
|
|
24
|
+
bytes: Uint8Array,
|
|
25
|
+
options?: VectorFontOptions,
|
|
26
|
+
): Promise<VectorFont>;
|
|
27
|
+
|
|
28
|
+
/** A two-dimensional Cartesian vector or point. */
|
|
29
|
+
export declare type Vector2 = readonly [x: number, y: number];
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A prepared font owns its parsed bytes; keep handles local to their Worker or invocation.
|
|
33
|
+
*/
|
|
34
|
+
export declare interface VectorFont {
|
|
35
|
+
/** Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and supports blank text. */
|
|
36
|
+
readonly layout: (
|
|
37
|
+
text: string,
|
|
38
|
+
options: VectorTextLayoutOptions,
|
|
39
|
+
) => VectorTextLayout;
|
|
40
|
+
/** Measure the same cached vector layout; all returned lengths are in millimetres. */
|
|
41
|
+
readonly measure: (
|
|
42
|
+
text: string,
|
|
43
|
+
options: VectorTextLayoutOptions,
|
|
44
|
+
) => VectorTextMetrics;
|
|
45
|
+
/** Serialize visible horizontal or circular outlines as bounded path-only SVG in physical millimetres. */
|
|
46
|
+
readonly toSvg: (text: string, options: VectorTextLayoutOptions) => string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Identifies the actual weight of a static face, without synthesizing a different weight. */
|
|
50
|
+
export declare interface VectorFontOptions {
|
|
51
|
+
/** Actual weight of a static face, 1–1000; defaults to 400. */
|
|
52
|
+
readonly staticWeight?: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** A circular baseline centered at the XY origin, with rigid shaped glyph groups. */
|
|
56
|
+
export declare interface VectorTextArcBaseline {
|
|
57
|
+
/** Selects a circular baseline; glyph outlines rotate without bending or stretching. */
|
|
58
|
+
readonly kind: "arc";
|
|
59
|
+
/** Baseline radius in millimetres, greater than zero and at most 10000. */
|
|
60
|
+
readonly radius: number;
|
|
61
|
+
/** Alignment datum in degrees counterclockwise from +X; defaults to 90. */
|
|
62
|
+
readonly centerAngleDegrees?: number;
|
|
63
|
+
/** Reading direction around the circle; defaults to clockwise. */
|
|
64
|
+
readonly direction?: "clockwise" | "counterclockwise";
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Immutable vector layout with no browser, font parser, or kernel ownership.
|
|
69
|
+
*/
|
|
70
|
+
export declare interface VectorTextLayout {
|
|
71
|
+
/** Nonzero-filled path data in millimetres, positive Y upward; empty for text with no ink. */
|
|
72
|
+
readonly paths: readonly string[];
|
|
73
|
+
/** Exact measurements of these paths and their logical text layout. */
|
|
74
|
+
readonly metrics: VectorTextMetrics;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping.
|
|
79
|
+
*/
|
|
80
|
+
export declare interface VectorTextLayoutOptions extends VectorTextOptions {
|
|
81
|
+
/** Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left. */
|
|
82
|
+
readonly align?: "left" | "center" | "right";
|
|
83
|
+
/** Omitted uses horizontal lines. Arcs require one line and baseline vertical alignment. */
|
|
84
|
+
readonly baseline?: VectorTextArcBaseline;
|
|
85
|
+
/** Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics. */
|
|
86
|
+
readonly lineHeight?: number;
|
|
87
|
+
/** Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline. */
|
|
88
|
+
readonly verticalAlign?: "baseline" | "top" | "center" | "bottom";
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Text measurements from the same immutable layout that supplies geometry and SVG outlines. */
|
|
92
|
+
export declare interface VectorTextMetrics {
|
|
93
|
+
/** Visible curve bounds after alignment, or null when the text has no ink. */
|
|
94
|
+
readonly bounds: Bounds2 | null;
|
|
95
|
+
/** Unaligned logical advance and negative baseline displacement in mm; arcs retain [arc length, 0]. */
|
|
96
|
+
readonly advance: readonly [number, number];
|
|
97
|
+
/** Maximum logical line advance in millimetres, including spaces; arc length on circular baselines. */
|
|
98
|
+
readonly logicalWidth: number;
|
|
99
|
+
/** Selected font's ascender distance above a baseline in millimetres, independent of the text. */
|
|
100
|
+
readonly ascent: number;
|
|
101
|
+
/** Selected font's descender distance below a baseline in millimetres, a non-negative value. */
|
|
102
|
+
readonly descent: number;
|
|
103
|
+
/** Actual distance between baselines in millimetres. */
|
|
104
|
+
readonly lineHeight: number;
|
|
105
|
+
/** Number of lines, including empty and trailing lines; empty text occupies one line. */
|
|
106
|
+
readonly lineCount: number;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Shaping controls for a prepared exact font face; all lengths are in millimetres. */
|
|
110
|
+
export declare interface VectorTextOptions {
|
|
111
|
+
/** Em size in millimetres, greater than zero and at most 10000; not the visible glyph height. */
|
|
112
|
+
readonly fontSize: number;
|
|
113
|
+
/** Actual static or variable weight, 1–1000; defaults to the prepared face's static weight. */
|
|
114
|
+
readonly fontWeight?: number;
|
|
115
|
+
/** Tracking between glyph clusters in millimetres, -100–100; defaults to zero. */
|
|
116
|
+
readonly letterSpacing?: number;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export {};
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Geometry API concepts
|
|
2
|
+
|
|
3
|
+
Choose the public Modeling modules, understand geometry and lifecycle conventions, and use them in Studio or a standalone Node or Worker host.
|
|
4
|
+
|
|
5
|
+
Import modeling functions from the package root:
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { box, cylinder } from "@metamesh/modeling";
|
|
11
|
+
import { generate } from "@metamesh/project";
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Studio supplies this API and its runtime to code Projects. Standalone applications use the same
|
|
17
|
+
operations inside a generation program. The [Model API reference](../reference/model.md) provides
|
|
18
|
+
exact signatures; this guide explains how the concepts fit together.
|
|
19
|
+
|
|
20
|
+
## Choose the module for your host
|
|
21
|
+
|
|
22
|
+
| Import | Use it for | Who owns execution |
|
|
23
|
+
| --------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------- |
|
|
24
|
+
| [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, transforms, Booleans, sweeps, lofts, and patterns | A synchronous generation program |
|
|
25
|
+
| [`@metamesh/modeling/geometry`](../reference/geometry.md) | Pure paths, profiles, calculations, and indexed meshes | Your ordinary TypeScript code |
|
|
26
|
+
| [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
|
|
27
|
+
| [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
|
|
28
|
+
|
|
29
|
+
Call root modeling operations inside synchronous generation. Add pure geometry helpers for custom
|
|
30
|
+
calculations.
|
|
31
|
+
|
|
32
|
+
## Use Modeling outside Studio
|
|
33
|
+
|
|
34
|
+
Follow [Run Modeling in your application](hosting.md)
|
|
35
|
+
to initialize the engine, build a model, load WASM, and export its completed snapshot.
|
|
36
|
+
For lettering, [prepare exact font bytes](fonts.md) before building.
|
|
37
|
+
|
|
38
|
+
## Geometry vocabulary
|
|
39
|
+
|
|
40
|
+
The public API names values by modeling role:
|
|
41
|
+
|
|
42
|
+
- A `Path3` is an ordered 3D trajectory.
|
|
43
|
+
- A `Path2` is an ordered 2D trajectory.
|
|
44
|
+
- A `Contour` is plain point data for a closed 2D boundary, without a repeated closing point.
|
|
45
|
+
- A `Polygon` is explicit point data for one outer contour and its holes. A `Region` contains
|
|
46
|
+
disjoint polygons; neither is an engine-owned modeling handle.
|
|
47
|
+
- A `Profile` specifies identified components, contours and spans for a related shape family.
|
|
48
|
+
- A `CorrespondingProfile` contains the shared sampled landmarks produced by `matchProfiles`.
|
|
49
|
+
- A `Section` is a filled 2D shape used for section Booleans, offsets, extrusion, revolution,
|
|
50
|
+
sweeps, and lofts.
|
|
51
|
+
- A `Solid` is a valid three-dimensional result that can participate in solid Booleans and become
|
|
52
|
+
model output.
|
|
53
|
+
- An `Anchor3` is an explicit local frame used to place one solid against another.
|
|
54
|
+
- `Vector2` and `Vector3` are fixed numeric tuples for low-level coordinates.
|
|
55
|
+
- `Bounds2` and `Bounds3` contain finite minimum and maximum tuples for measurements and placement.
|
|
56
|
+
|
|
57
|
+
`Section` and `Solid` are opaque, evaluator-owned handles. Authored code chains their immutable
|
|
58
|
+
methods and combines collections through imported functions. The engine owns native kernel values.
|
|
59
|
+
|
|
60
|
+
Ordinary models use root Sections for shapes, Booleans, extrusion, sweeps, and lofts. The pure
|
|
61
|
+
`/geometry` entry supplies point data through `circleContour`, `rectangleContour`, and other contour factories
|
|
62
|
+
when custom calculations or mesh construction need it. `rectangle`, `rectangleContour`, and
|
|
63
|
+
`rectangleProfile` share size, center, corner treatment, and sampling options; their result type
|
|
64
|
+
reflects the operation's role.
|
|
65
|
+
|
|
66
|
+
Use [`polygon(points)`](../reference/model/polygon.md) to fill one contour. The explicit
|
|
67
|
+
`polygon({ outer, holes })` form validates exterior/hole topology and normalizes winding.
|
|
68
|
+
`polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
|
|
69
|
+
explicit `"evenodd"` fill. These constructors return the same `Section` type as `circle` or
|
|
70
|
+
`rectangle`; subsequent Booleans may produce holes or disconnected components.
|
|
71
|
+
|
|
72
|
+
`rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
|
|
73
|
+
identified spans for custom geometry. Prepare a complete explicit family with `matchProfiles`
|
|
74
|
+
when loft stations or a sweep need authored holes, seams, or landmarks beyond ordinary primitives.
|
|
75
|
+
|
|
76
|
+
Identified spans also accept cubic Béziers with the same endpoints and controls as
|
|
77
|
+
[`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
|
|
78
|
+
grid; physical sampling refines every member before choosing the family count. Collapsed spans
|
|
79
|
+
retain repeated logical slots, while the completed loft removes degenerate faces.
|
|
80
|
+
|
|
81
|
+
## Choose a modeling path
|
|
82
|
+
|
|
83
|
+
| Starting intent | Typical operations |
|
|
84
|
+
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
85
|
+
| A block, cylinder, sphere, or cone | Primitive solids, transforms, then [solid Booleans](fundamentals.md#choose-the-boolean-by-the-material-you-want) |
|
|
86
|
+
| A plate, gasket, logo, or profile | Build a `Section`, use section Booleans or offsets, then [extrude](recipes.md#section-hole-offset-and-extrusion) |
|
|
87
|
+
| A rotational part | [Revolve a closed radial profile](recipes.md#revolve-a-radial-profile) around +Z |
|
|
88
|
+
| A tube or routed shape | [Sweep one supported section](recipes.md#rotation-minimizing-path-sweep) along an open or closed path |
|
|
89
|
+
| A transition between profiles | [Loft corresponding boundaries](recipes.md#matched-section-loft) with holes |
|
|
90
|
+
| Repeated or mating parts | [Patterns](recipes.md#primitive-booleans-and-repeated-placement), [explicit anchors](recipes.md#named-anchors-and-custom-frames), and [reusable thread settings](https://metamesh.studio/docs/develop/printable-threads) |
|
|
91
|
+
|
|
92
|
+
Name meaningful intermediate values and choose a curve tolerance that preserves the required
|
|
93
|
+
shape. Many high-resolution Boolean operands increase generation time.
|
|
94
|
+
|
|
95
|
+
Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
|
|
96
|
+
filled Section and `box({ size: [24, 16, 6] })` creates a Solid. `union` and `intersect`
|
|
97
|
+
combine same-dimensional arrays. `shape.subtract(cutters)` accepts an array of same-dimensional
|
|
98
|
+
cutters. `section.offset(distance, options)` stays in the filled XY plane.
|
|
99
|
+
|
|
100
|
+
`section.extrude({ height, twistDegrees, scaleTop })` adds +Z depth, with its bottom at zero unless
|
|
101
|
+
`center: true` is requested. `section.revolve({ revolveDegrees })` rotates radial/Z geometry around
|
|
102
|
+
+Z. `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
|
|
103
|
+
rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. This also works
|
|
104
|
+
after invertible XY transforms with consistent handedness. It accepts explicit corresponding
|
|
105
|
+
Profile stations for custom topology. Boolean Sections and point contours need a selected
|
|
106
|
+
`correspondence` method (`"direct"`, `"reindex"`, `"fast-distance"`, or `"distance"`) or explicit
|
|
107
|
+
profiles; Boolean contour order does not establish semantic correspondence.
|
|
108
|
+
`section.sweep(path, options)` supports open or closed paths,
|
|
109
|
+
degree twist, uniform/XY/per-station scales and an explicit compatible closed seam.
|
|
110
|
+
|
|
111
|
+
## Coordinates, units, and resolution
|
|
112
|
+
|
|
113
|
+
MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
|
|
114
|
+
tolerances are millimetres; angular arguments such as `rotate` use degrees.
|
|
115
|
+
|
|
116
|
+
`GeometryResolution` controls sampled curves in physical space. The default maximum chord error is
|
|
117
|
+
`0.05 mm`, with 16–512 segments for a complete circle and no default maximum segment length. An
|
|
118
|
+
operation-specific `segments` or `circularSegments` value takes priority, followed by its local
|
|
119
|
+
`resolution`, and then host session defaults. A shape does not carry a sampling policy into later
|
|
120
|
+
operations; pass the policy explicitly where needed.
|
|
121
|
+
|
|
122
|
+
Use an exact segment count for intentionally faceted geometry or when two sampled contours must
|
|
123
|
+
match point for point. Use physical chord and segment limits for ordinary printable curves. If a
|
|
124
|
+
requested tolerance cannot fit within the safety cap, the operation fails instead of silently
|
|
125
|
+
returning a coarser shape.
|
|
126
|
+
|
|
127
|
+
`regularPolygon({ radius, sides, rotationDegrees, sizing })` makes a filled regular polygon.
|
|
128
|
+
`sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
|
|
129
|
+
meet the nominal radius. `circle` and `cylinder` support the same radial convention.
|
|
130
|
+
|
|
131
|
+
Finishing shares `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
|
|
132
|
+
`profile` points across applicable box edges, rectangle corners, and cylinder/extrusion ends.
|
|
133
|
+
Boxes can select disjoint named edges or groups; rectangles can select individual corners.
|
|
134
|
+
Cylinder/frustum and straight convex extrusion rims use independent `ends.bottom` and `ends.top`.
|
|
135
|
+
Zero rounding radius, zero chamfer/smooth distance, or an all-zero distance pair leaves the
|
|
136
|
+
selected feature untreated. Other setback pairs must have two positive values; negative and
|
|
137
|
+
nonfinite amounts reject. Disabled extrusion end treatments retain ordinary extrusion support,
|
|
138
|
+
including holes and twist.
|
|
139
|
+
`placement` maps a named or explicit shape-local anchor to a world anchor after local
|
|
140
|
+
construction, using alignment, millimetre gap and degree spin. Section placement must stay in XY.
|
|
141
|
+
|
|
142
|
+
## SVG sections: fills and strokes are different inputs
|
|
143
|
+
|
|
144
|
+
[`svgSection`](../reference/model/svgSection.md) converts a bounded complete SVG document into one
|
|
145
|
+
painted `Section`. Supported visible **fills and bounded strokes both contribute geometry**. It
|
|
146
|
+
handles supported shapes, paths, affine transforms, physical root units, `viewBox` scaling, and
|
|
147
|
+
allowlisted inline fill and stroke presentation.
|
|
148
|
+
|
|
149
|
+
[`svgPathSection`](../reference/model/svgPathSection.md) accepts SVG path-data text rather than a
|
|
150
|
+
document. It is a **fill-only** path operation: stroke styling is not part of that contract. Path
|
|
151
|
+
units default to millimetres and can be converted with its scale option.
|
|
152
|
+
|
|
153
|
+
Both functions convert SVG's Y-down plane to MetaMesh's Y-up plane and center the final painted
|
|
154
|
+
bounds by default. Use `origin: "document"` with `svgSection` when the converted document viewport
|
|
155
|
+
origin must remain meaningful. Adaptive flattening happens after supported transforms and unit
|
|
156
|
+
conversion, so tolerances apply in final millimetre space.
|
|
157
|
+
|
|
158
|
+
Unsupported layout or external content fails rather than disappearing silently. The current public
|
|
159
|
+
contract does not include nested SVG viewports, `<use>`, images, live text, external stylesheets,
|
|
160
|
+
clipping, masks, filters, scripts, animation, gradients, patterns, uploaded project assets, or
|
|
161
|
+
custom font files. Use the [SVG extrusion recipe](recipes.md#svg-parameter-and-extrusion)
|
|
162
|
+
for a complete authored example.
|
|
163
|
+
|
|
164
|
+
## Text and font variability
|
|
165
|
+
|
|
166
|
+
`services.text.layout()` shapes text inside generation. Cache an expensive shared layout with
|
|
167
|
+
`computed`, measure its `metrics`, and pass it to `textSection(layout())`. There is no
|
|
168
|
+
ambient font provider or repeated shaping during export. Declare a Text control for the wording
|
|
169
|
+
and a Font control for the face and weight.
|
|
170
|
+
|
|
171
|
+
Font size is the em size in millimetres, not the height of a particular letter. Layout supports
|
|
172
|
+
multiple lines, spacing, and alignment. Follow the
|
|
173
|
+
[text recipe](recipes.md#text-from-a-font-parameter) for the control setup,
|
|
174
|
+
layout conventions, and font availability limits.
|
|
175
|
+
|
|
176
|
+
## Printable threads
|
|
177
|
+
|
|
178
|
+
The public API provides coordinated external threads, internal cutters, and threaded nuts. Reuse
|
|
179
|
+
one profile and fit policy across mating parts, then prove them with a short calibration print.
|
|
180
|
+
|
|
181
|
+
Follow [Build printable threads](https://metamesh.studio/docs/develop/printable-threads) for the illustrated workflow,
|
|
182
|
+
complete source, profile and fit choices, end treatments, and links into the exact API contracts.
|
|
183
|
+
|
|
184
|
+
## Lifecycle and inspection
|
|
185
|
+
|
|
186
|
+
Studio or your standalone engine owns geometry initialization, cleanup, and mesh finalization.
|
|
187
|
+
The host owns Worker recovery, preview, and file delivery. Do not manually delete `Section` or `Solid`
|
|
188
|
+
values. Use
|
|
189
|
+
`inspectSection()` and `inspectSolid()` for supported bounds, topology counts, area, and volume
|
|
190
|
+
measurements.
|
|
191
|
+
|
|
192
|
+
An inspection result describes the generated geometry; it does not certify wall thickness,
|
|
193
|
+
overhangs, fits, loads, or manufacturability. Keep those product decisions in parameters,
|
|
194
|
+
validation, and your downstream manufacturing checks.
|
|
195
|
+
|
|
196
|
+
- [Use geometry recipes](recipes.md)
|
|
197
|
+
- [Browse exact signatures](../reference/model.md)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Prepare fonts for modeling
|
|
2
|
+
|
|
3
|
+
Prepare licensed font bytes and a reusable text layout before building a model outside Studio.
|
|
4
|
+
|
|
5
|
+
Your host acquires exact licensed font bytes before synchronous generation.
|
|
6
|
+
Studio authors use the [Font control recipe](recipes.md#text-from-a-font-parameter);
|
|
7
|
+
standalone applications use the optional `@metamesh/modeling/text` entry point.
|
|
8
|
+
|
|
9
|
+
## Install font support
|
|
10
|
+
|
|
11
|
+
Install the optional `fontkit` peer. WOFF2 input also needs `woff2-encoder`:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pnpm add fontkit
|
|
15
|
+
pnpm add woff2-encoder
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. The library
|
|
19
|
+
does not fetch fonts; your application supplies their bytes.
|
|
20
|
+
|
|
21
|
+
## Prepare one reusable layout
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { prepareVectorFont, type VectorTextLayout } from "@metamesh/modeling/text";
|
|
27
|
+
|
|
28
|
+
export async function makeLabelLayout(fontBytes: Uint8Array): Promise<{
|
|
29
|
+
readonly layout: VectorTextLayout;
|
|
30
|
+
readonly svg: string;
|
|
31
|
+
}> {
|
|
32
|
+
// Acquire licensed font bytes in your host before synchronous generation.
|
|
33
|
+
// Install fontkit; WOFF2 input also needs the optional woff2-encoder peer.
|
|
34
|
+
const font = await prepareVectorFont(fontBytes);
|
|
35
|
+
const layout = font.layout("MetaMesh", { fontSize: 8, letterSpacing: 0.15 });
|
|
36
|
+
const svg = font.toSvg("MetaMesh", { fontSize: 8, letterSpacing: 0.15 });
|
|
37
|
+
// Pass layout to textSection inside generation; its paths and metrics use Y-up millimetres.
|
|
38
|
+
return { layout, svg };
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
Call `makeLabelLayout(fontBytes)` with the acquired bytes. It returns a `layout` and a separate
|
|
45
|
+
`svg` string. The layout contains paths and metrics in Y-up millimetres. Pass the returned `layout` to
|
|
46
|
+
[`textSection`](../reference/model/textSection.md) inside generation, then extrude its filled
|
|
47
|
+
section with the ordinary modeling operations. A host can prepare layouts ahead of time or inject
|
|
48
|
+
a deterministic text service and cache layouts with `computed`.
|
|
49
|
+
|
|
50
|
+
Use the [Font preparation reference](../reference/text.md) for font and layout options, or
|
|
51
|
+
[Run Modeling in your application](hosting.md) for the host lifecycle.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Modeling fundamentals
|
|
2
|
+
|
|
3
|
+
Understand watertight solids, coordinates, transforms, Boolean operations, and geometry ownership in Studio code Projects.
|
|
4
|
+
|
|
5
|
+
[Manifold](https://manifoldcad.org/docs/jsapi/) is the solid-modeling kernel behind MetaMesh. Its
|
|
6
|
+
core idea is a **manifold** mesh: an oriented, watertight boundary in which every edge belongs to a
|
|
7
|
+
valid solid. That invariant makes Boolean operations and manufacturing output more dependable than
|
|
8
|
+
working with an arbitrary triangle soup.
|
|
9
|
+
|
|
10
|
+
Studio code Projects use Manifold through the curated `@metamesh/modeling` API. The public
|
|
11
|
+
contract combines constructors and collection functions with fluent, opaque `Section` and `Solid`
|
|
12
|
+
recipes. The engine owns the underlying kernel values.
|
|
13
|
+
|
|
14
|
+
## Coordinates and units
|
|
15
|
+
|
|
16
|
+
MetaMesh uses a right-handed coordinate system with **+Z up**. Model dimensions are millimetres.
|
|
17
|
+
Place a part intentionally around the origin, then use transforms or anchors to relate it to other
|
|
18
|
+
parts.
|
|
19
|
+
|
|
20
|
+
Transform methods preserve the input and return immutable geometry recipes, so you can name
|
|
21
|
+
meaningful stages and reuse a source shape without tracking hidden state.
|
|
22
|
+
|
|
23
|
+
## Build solids compositionally
|
|
24
|
+
|
|
25
|
+
Start with primitives, position them, and subtract a cutter that extends beyond both body faces:
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
import { box, cylinder } from "@metamesh/modeling";
|
|
31
|
+
import { generate } from "@metamesh/project";
|
|
32
|
+
|
|
33
|
+
export default generate(({ part }) => {
|
|
34
|
+
const plate = box({ size: [80, 50, 4] });
|
|
35
|
+
// Primitives are centered by default, so both faces get 2 mm of overtravel.
|
|
36
|
+
// Overtravel is for robust subtraction; it does not enlarge the hole diameter.
|
|
37
|
+
const hole = cylinder({ height: 8, radius: 3 });
|
|
38
|
+
return [part("model", plate.subtract([hole]))];
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The cylinder clears both faces of the plate, leaving a through-hole without coincident cutter ends.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2…2 mm`; the cutter
|
|
47
|
+
occupies `Z = −4…4 mm`. That overtravel makes the subtraction deliberate while the hole radius
|
|
48
|
+
stays `3 mm`. Derive cutter placement from the same datum as the body when changing dimensions.
|
|
49
|
+
|
|
50
|
+
Prefer a small number of named intermediate solids. If many repeated cutters are independent, build
|
|
51
|
+
or arrange them first and perform one meaningful subtraction where the API allows it. Excessive
|
|
52
|
+
high-resolution Boolean steps cost time and obscure design intent.
|
|
53
|
+
|
|
54
|
+
The `union` and `intersect` functions and `shape.subtract(cutters)` also combine filled Sections
|
|
55
|
+
in XY. Choose one dimension for every operand in a call. Keep a Section native through its Boolean
|
|
56
|
+
and offset steps, then chain `.extrude({ height })` or `.revolve(options)` to make a Solid.
|
|
57
|
+
Transforms apply in written order about the origin: translating then rotating also rotates the
|
|
58
|
+
translated position. Place finished parts through `part` options when their geometry can be reused.
|
|
59
|
+
|
|
60
|
+
## Choose the Boolean by the material you want
|
|
61
|
+
|
|
62
|
+
These three parts use the same overlapping block and cylindrical tool. Only the operation changes;
|
|
63
|
+
the final translations separate the results for comparison.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import { box, cylinder, intersect, union } from "@metamesh/modeling";
|
|
69
|
+
import { generate } from "@metamesh/project";
|
|
70
|
+
|
|
71
|
+
export default generate(({ part }) => {
|
|
72
|
+
const block = box({ size: [24, 24, 8] });
|
|
73
|
+
const tool = cylinder({ diameter: 20, height: 12 }).translate([10, 0, 0]);
|
|
74
|
+
// Reuse the same overlapping operands to compare the three operations.
|
|
75
|
+
// Place finished parts separately so display spacing can reuse their geometry.
|
|
76
|
+
return [
|
|
77
|
+
part("union", { geometry: union([block, tool]), color: "#60a5fa" }),
|
|
78
|
+
part("difference", {
|
|
79
|
+
geometry: block.subtract([tool]),
|
|
80
|
+
position: [42, 0, 0],
|
|
81
|
+
color: "#f59e0b",
|
|
82
|
+
}),
|
|
83
|
+
part("intersection", {
|
|
84
|
+
geometry: intersect([block, tool]),
|
|
85
|
+
position: [84, 0, 0],
|
|
86
|
+
color: "#34d399",
|
|
87
|
+
}),
|
|
88
|
+
];
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Left: all material from union. Center: block material outside the tool. Right: material shared by both operands.
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
| Operation | Material retained | Common use |
|
|
97
|
+
| -------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
|
|
98
|
+
| [`union`](../reference/model/union.md) | 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
|
+
| [`intersect`](../reference/model/intersect.md) | Inside every operand | Trim a feature to an envelope or isolate shared material |
|
|
101
|
+
|
|
102
|
+
Use intentional overlap for joined features and overtravel for through-cutters. A face or point
|
|
103
|
+
that only touches another feature is not a reliable connection for a manufacturing part. Inspect
|
|
104
|
+
the result when thin walls, tangencies, or disconnected components are possible.
|
|
105
|
+
|
|
106
|
+
## Valid solid does not mean manufacturable part
|
|
107
|
+
|
|
108
|
+
The kernel can enforce solid topology, but it does not know your printer, material, load case,
|
|
109
|
+
tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
|
|
110
|
+
cross-field errors in the Project, then verify the exported file in its downstream tool.
|
|
111
|
+
|
|
112
|
+
Likewise, an empty or zero-volume result is invalid model output, but a non-empty result is not an
|
|
113
|
+
engineering certification.
|
|
114
|
+
|
|
115
|
+
## Geometry ownership
|
|
116
|
+
|
|
117
|
+
Geometry values allocate resources outside ordinary JavaScript objects. Studio's evaluator owns
|
|
118
|
+
those resources for each run and cleans them up deterministically. Authored code should never
|
|
119
|
+
initialize the kernel or manually delete a `Section` or `Solid`.
|
|
120
|
+
|
|
121
|
+
Use `inspectSection()` or `inspectSolid()` when you need supported measurements such as bounds,
|
|
122
|
+
area, volume, or part counts. Return an array of `part(...)` declarations to hand the final result
|
|
123
|
+
back to Studio for preview and export.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
**Use the MetaMesh reference for authored code**
|
|
128
|
+
|
|
129
|
+
The upstream Manifold documentation is useful background on the underlying mathematics. Exact
|
|
130
|
+
code-Project symbols and guarantees come from the [Geometry API reference](../reference/model.md).
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
- [Try geometry recipes](recipes.md)
|
|
135
|
+
- [Read the Project contract](generation.md)
|