@metamesh/modeling 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +186 -0
- package/README.md +147 -157
- package/dist/api/engine.d.ts +106 -83
- package/dist/api/export-3mf.d.ts +2 -0
- package/dist/api/export-glb.d.ts +2 -0
- package/dist/api/export-stl.d.ts +2 -0
- package/dist/api/export.d.ts +160 -0
- package/dist/api/geometry.d.ts +250 -461
- package/dist/api/index.d.ts +470 -445
- package/dist/api/mesh.d.ts +489 -0
- package/dist/api/text.d.ts +1 -1
- package/dist/docs/guides/concepts.md +32 -495
- package/dist/docs/guides/fonts.md +14 -13
- package/dist/docs/guides/fundamentals.md +30 -29
- package/dist/docs/guides/generation.md +84 -64
- package/dist/docs/guides/geometry-values.md +193 -0
- package/dist/docs/guides/hosting.md +147 -48
- package/dist/docs/guides/profiles-and-extrusion.md +252 -0
- package/dist/docs/guides/recipes.md +33 -769
- package/dist/docs/guides/resolution-and-inspection.md +133 -0
- package/dist/docs/guides/solid-joins.md +126 -0
- package/dist/docs/guides/standalone-model.md +8 -7
- package/dist/docs/guides/svg-and-text.md +215 -0
- package/dist/docs/guides/sweeps-and-lofts.md +179 -0
- package/dist/docs/guides/transforms-and-placement.md +313 -0
- package/dist/docs/manifest.json +3224 -4430
- package/dist/docs/reference/engine/GenerationOptions.md +12 -5
- package/dist/docs/reference/engine/GeometryResource.md +19 -13
- package/dist/docs/reference/engine/ModelDependencies.md +9 -3
- package/dist/docs/reference/engine/ModelEngine.md +33 -24
- package/dist/docs/reference/engine/ModelEngineOptions.md +13 -2
- package/dist/docs/reference/engine/ModelPart.md +114 -0
- package/dist/docs/reference/engine/ModelResult.md +181 -0
- package/dist/docs/reference/engine/ModelRunArguments.md +34 -0
- package/dist/docs/reference/engine/ModelRunOptions.md +110 -0
- package/dist/docs/reference/engine/ModelSession.md +22 -16
- package/dist/docs/reference/engine/SessionOptions.md +21 -10
- package/dist/docs/reference/engine/categories/host-lifecycle.md +20 -15
- package/dist/docs/reference/engine/checkModel.md +49 -0
- package/dist/docs/reference/engine/createModelEngine.md +11 -13
- package/dist/docs/reference/engine/defaultModelingLimits.md +15 -2
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
- package/dist/docs/reference/engine.md +8 -15
- package/dist/docs/reference/export/Export3mfOptions.md +24 -0
- package/dist/docs/reference/export/ExportDiagnostic.md +59 -0
- package/dist/docs/reference/export/ExportFormat.md +25 -0
- package/dist/docs/reference/export/ExportGeometry.md +39 -0
- package/dist/docs/reference/export/ExportGlbOptions.md +118 -0
- package/dist/docs/reference/export/ExportLimits.md +83 -0
- package/dist/docs/reference/export/ExportMaterial.md +47 -0
- package/dist/docs/reference/export/ExportOptions.md +94 -0
- package/dist/docs/reference/export/ExportPart.md +88 -0
- package/dist/docs/reference/export/ExportReport.md +82 -0
- package/dist/docs/reference/export/ExportSink.md +39 -0
- package/dist/docs/reference/export/ExportStlOptions.md +24 -0
- package/dist/docs/reference/export/ExportedFile.md +110 -0
- package/dist/docs/reference/export/categories/mesh-serialization.md +47 -0
- package/dist/docs/reference/export/defaultExportLimits.md +20 -0
- package/dist/docs/reference/export/export3mf.md +64 -0
- package/dist/docs/reference/export/exportGlb.md +68 -0
- package/dist/docs/reference/export/exportStl.md +64 -0
- package/dist/docs/reference/export/write3mf.md +71 -0
- package/dist/docs/reference/export/writeGlb.md +75 -0
- package/dist/docs/reference/export/writeStl.md +71 -0
- package/dist/docs/reference/export.md +21 -0
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +7 -1
- package/dist/docs/reference/geometry/Anchor3-type.md +13 -3
- package/dist/docs/reference/geometry/ArcCurve2.md +8 -2
- package/dist/docs/reference/geometry/ArcCurve3.md +8 -2
- package/dist/docs/reference/geometry/AttachOptions.md +13 -3
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +9 -3
- package/dist/docs/reference/geometry/Bevel.md +32 -0
- package/dist/docs/reference/geometry/BevelSize.md +28 -0
- package/dist/docs/reference/geometry/Bounds2-type.md +18 -4
- package/dist/docs/reference/geometry/Bounds2Data.md +22 -4
- package/dist/docs/reference/geometry/Bounds2Input.md +18 -4
- package/dist/docs/reference/geometry/Bounds2Options.md +61 -11
- package/dist/docs/reference/geometry/Bounds3-type.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Data.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Input.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Options.md +61 -11
- package/dist/docs/reference/geometry/BoundsFit2.md +10 -4
- package/dist/docs/reference/geometry/BoundsFit3.md +10 -4
- package/dist/docs/reference/geometry/BoundsFitOptions.md +10 -4
- package/dist/docs/reference/geometry/BoxAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +12 -6
- package/dist/docs/reference/geometry/BoxEdge.md +11 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +11 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +11 -1
- package/dist/docs/reference/geometry/BoxOptions.md +13 -3
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +16 -2
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +12 -2
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +15 -3
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
- package/dist/docs/reference/geometry/CircularSampling.md +7 -1
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +8 -2
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -2
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +8 -2
- package/dist/docs/reference/geometry/Contour.md +12 -2
- package/dist/docs/reference/geometry/ContourCurve.md +8 -2
- package/dist/docs/reference/geometry/ContourPoint.md +8 -2
- package/dist/docs/reference/geometry/ContourSegment.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingComponent.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingContour.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingProfile.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +12 -2
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +8 -2
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +8 -2
- package/dist/docs/reference/geometry/Curve2.md +8 -2
- package/dist/docs/reference/geometry/Curve3.md +8 -2
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +16 -2
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +11 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +11 -1
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +8 -2
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +14 -4
- package/dist/docs/reference/geometry/EndTreatments.md +12 -2
- package/dist/docs/reference/{model/ExtrudeOptions.md → geometry/ExtrudeMeshOptions.md} +30 -26
- package/dist/docs/reference/geometry/ExtrudeOptions.md +29 -11
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +18 -4
- package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
- package/dist/docs/reference/geometry/Frame3.md +16 -2
- package/dist/docs/reference/geometry/GeometryError.md +11 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +11 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +11 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +15 -1
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +16 -2
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +15 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +12 -2
- package/dist/docs/reference/geometry/HeightfieldOptions.md +18 -3
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +12 -2
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +9 -3
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +110 -0
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +57 -0
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +63 -84
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +12 -2
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +8 -2
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +8 -2
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +12 -2
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +12 -2
- package/dist/docs/reference/geometry/LineCurve2.md +8 -2
- package/dist/docs/reference/geometry/LineCurve3.md +8 -2
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/LoftCorrespondence.md +16 -2
- package/dist/docs/reference/geometry/LoftMeshStation.md +12 -2
- package/dist/docs/reference/geometry/LoftOptions.md +18 -4
- package/dist/docs/reference/geometry/LoftPlacement.md +16 -2
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +8 -2
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +12 -2
- package/dist/docs/reference/geometry/MetricFastenerSize.md +8 -2
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +8 -2
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +8 -2
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +8 -2
- package/dist/docs/reference/geometry/ModelingLimits.md +19 -1
- package/dist/docs/reference/geometry/NumericArray.md +28 -0
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
- package/dist/docs/reference/geometry/Path2-type.md +16 -2
- package/dist/docs/reference/geometry/Path2Data.md +16 -2
- package/dist/docs/reference/geometry/Path2Input.md +16 -2
- package/dist/docs/reference/geometry/Path3-type.md +16 -2
- package/dist/docs/reference/geometry/Path3Data.md +16 -2
- package/dist/docs/reference/geometry/Path3Input.md +16 -2
- package/dist/docs/reference/geometry/PathFrame.md +8 -2
- package/dist/docs/reference/geometry/PathLocation.md +16 -2
- package/dist/docs/reference/geometry/PathNormalGuide.md +16 -2
- package/dist/docs/reference/geometry/PathOptions.md +12 -2
- package/dist/docs/reference/geometry/PathPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/PathPlacement.md +8 -2
- package/dist/docs/reference/geometry/PathResamplingOptions.md +16 -2
- package/dist/docs/reference/geometry/Pivot2Options.md +17 -3
- package/dist/docs/reference/geometry/Pivot3Options.md +17 -3
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +12 -2
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +12 -2
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +12 -2
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +12 -2
- package/dist/docs/reference/geometry/PolygonData.md +12 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +11 -3
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +11 -1
- package/dist/docs/reference/geometry/PrintableThreadFit.md +12 -2
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +12 -2
- package/dist/docs/reference/geometry/Profile.md +8 -2
- package/dist/docs/reference/geometry/ProfileComponent2.md +12 -2
- package/dist/docs/reference/geometry/ProfileContour2.md +12 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +12 -2
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/RackPitchDimensions.md +8 -2
- package/dist/docs/reference/geometry/RackPitchSpec.md +8 -2
- package/dist/docs/reference/geometry/RadialPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/RadialSizing.md +11 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +11 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +14 -4
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +12 -2
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +12 -2
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +10 -4
- package/dist/docs/reference/geometry/RegionData.md +12 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +17 -3
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +10 -4
- package/dist/docs/reference/geometry/SampleContourOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleHelixOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -2
- package/dist/docs/reference/geometry/SampledThreadHelices.md +8 -2
- package/dist/docs/reference/geometry/SideProfileCurve.md +8 -2
- package/dist/docs/reference/geometry/SideProfilePoint.md +8 -2
- package/dist/docs/reference/geometry/SideProfileSegment.md +8 -2
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +12 -2
- package/dist/docs/reference/geometry/SphereOptions.md +11 -1
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/StarContourOptions.md +84 -0
- package/dist/docs/reference/geometry/StrokeCap.md +12 -2
- package/dist/docs/reference/geometry/StrokeJoin.md +12 -2
- package/dist/docs/reference/geometry/StrokeOptions.md +12 -2
- package/dist/docs/reference/geometry/SvgImportOptions.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +8 -2
- package/dist/docs/reference/geometry/SweepOptions.md +16 -2
- package/dist/docs/reference/geometry/SweepOrientation.md +16 -2
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +18 -31
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadEndStyle.md +16 -2
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +16 -2
- package/dist/docs/reference/geometry/ThreadHandedness.md +16 -2
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +16 -2
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfile-type.md +17 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/{HelicalThreadRidgeMeshOptions.md → ThreadRidgeOptions.md} +19 -5
- package/dist/docs/reference/geometry/ThreadRole.md +8 -2
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshOptions.md → ThreadSolidOptions.md} +29 -66
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +17 -3
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +86 -87
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +29 -7
- package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +63 -84
- package/dist/docs/reference/geometry/TorusOptions.md +11 -1
- package/dist/docs/reference/geometry/Transform2-type.md +17 -3
- package/dist/docs/reference/geometry/Transform2Data.md +17 -3
- package/dist/docs/reference/geometry/Transform2Input.md +17 -3
- package/dist/docs/reference/geometry/Transform3-type.md +17 -3
- package/dist/docs/reference/geometry/Transform3Data.md +17 -3
- package/dist/docs/reference/geometry/Transform3Input.md +17 -3
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/TriangleMesh.md +19 -6
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +25 -5
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +13 -3
- package/dist/docs/reference/geometry/TriangleMeshInput.md +29 -0
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +16 -2
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +14 -4
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +145 -0
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/TubeOptions.md +20 -86
- package/dist/docs/reference/geometry/Vector2-type.md +17 -3
- package/dist/docs/reference/geometry/Vector2Data.md +21 -3
- package/dist/docs/reference/geometry/Vector2Input.md +17 -3
- package/dist/docs/reference/geometry/Vector3-type.md +17 -3
- package/dist/docs/reference/geometry/Vector3Data.md +17 -3
- package/dist/docs/reference/geometry/Vector3Input.md +17 -3
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +12 -2
- package/dist/docs/reference/geometry/VectorTextLayout.md +16 -2
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +14 -4
- package/dist/docs/reference/geometry/VectorTextMetrics.md +16 -2
- package/dist/docs/reference/geometry/VectorTextOptions.md +12 -2
- package/dist/docs/reference/geometry/add2.md +9 -3
- package/dist/docs/reference/geometry/add3.md +9 -3
- package/dist/docs/reference/geometry/anchor3.md +9 -3
- package/dist/docs/reference/geometry/anchorFrame3.md +8 -2
- package/dist/docs/reference/geometry/applyTransformDirection3.md +9 -3
- package/dist/docs/reference/geometry/applyTransformPoint3.md +9 -3
- package/dist/docs/reference/geometry/attachmentTransform3.md +9 -3
- package/dist/docs/reference/geometry/bounds2.md +18 -8
- package/dist/docs/reference/geometry/bounds3.md +18 -8
- package/dist/docs/reference/geometry/boundsCenter.md +10 -4
- package/dist/docs/reference/geometry/boundsSize.md +10 -4
- package/dist/docs/reference/geometry/boxAnchor3.md +11 -5
- package/dist/docs/reference/geometry/categories/bounds-layout.md +6 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +3 -3
- package/dist/docs/reference/geometry/categories/mechanical.md +9 -11
- package/dist/docs/reference/geometry/categories/meshes.md +20 -33
- package/dist/docs/reference/geometry/categories/pattern-placement.md +3 -3
- package/dist/docs/reference/geometry/categories/primitive-options.md +4 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +6 -5
- package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +5 -4
- package/dist/docs/reference/geometry/categories/vector-import.md +4 -4
- package/dist/docs/reference/geometry/circleContour.md +8 -2
- package/dist/docs/reference/geometry/closeToAxis.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +8 -2
- package/dist/docs/reference/geometry/composeTransform3.md +9 -3
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +8 -2
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -2
- package/dist/docs/reference/geometry/contourContainsPoint.md +8 -2
- package/dist/docs/reference/geometry/cross2.md +9 -3
- package/dist/docs/reference/geometry/cross3.md +9 -3
- package/dist/docs/reference/geometry/cylinderAnchor3.md +10 -4
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/distance2.md +9 -3
- package/dist/docs/reference/geometry/distance3.md +9 -3
- package/dist/docs/reference/geometry/distributeAlongPath.md +8 -2
- package/dist/docs/reference/geometry/dot2.md +9 -3
- package/dist/docs/reference/geometry/dot3.md +9 -3
- package/dist/docs/reference/geometry/ellipseContour.md +8 -2
- package/dist/docs/reference/geometry/eulerTransform3.md +9 -3
- package/dist/docs/reference/geometry/fitBounds.md +10 -4
- package/dist/docs/reference/geometry/fitTextLayout.md +8 -2
- package/dist/docs/reference/geometry/frameTransform3.md +9 -3
- package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +8 -2
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +8 -2
- package/dist/docs/reference/geometry/gridPatternTransforms.md +8 -2
- package/dist/docs/reference/{model → geometry}/immutableBuffer.md +13 -2
- package/dist/docs/reference/geometry/inverseTransform3.md +9 -3
- package/dist/docs/reference/geometry/isGeometryError.md +11 -1
- package/dist/docs/reference/geometry/layoutRow.md +10 -4
- package/dist/docs/reference/geometry/length2.md +9 -3
- package/dist/docs/reference/geometry/length3.md +9 -3
- package/dist/docs/reference/geometry/lerp2.md +9 -3
- package/dist/docs/reference/geometry/lerp3.md +9 -3
- package/dist/docs/reference/geometry/linearPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/matchProfiles.md +8 -2
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +8 -2
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +8 -2
- package/dist/docs/reference/geometry/normalize2.md +9 -3
- package/dist/docs/reference/geometry/normalize3.md +9 -3
- package/dist/docs/reference/geometry/normalizeContour.md +8 -2
- package/dist/docs/reference/geometry/normalizePolygon.md +8 -2
- package/dist/docs/reference/geometry/normalizeRegion.md +8 -2
- package/dist/docs/reference/geometry/path2.md +12 -2
- package/dist/docs/reference/geometry/path3.md +12 -2
- package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +25 -26
- package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +31 -27
- package/dist/docs/reference/geometry/preflightThreadedRod.md +25 -26
- package/dist/docs/reference/geometry/projectOntoPlane3.md +9 -3
- package/dist/docs/reference/geometry/radialPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/rectangleContour.md +17 -6
- package/dist/docs/reference/geometry/rectangleProfile.md +9 -3
- package/dist/docs/reference/geometry/regionArea.md +8 -2
- package/dist/docs/reference/geometry/regionBounds.md +8 -2
- package/dist/docs/reference/geometry/regularPolygonContour.md +9 -3
- package/dist/docs/reference/geometry/resamplePolyline2.md +8 -2
- package/dist/docs/reference/geometry/resamplePolyline3.md +8 -2
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveArcSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +8 -2
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +8 -2
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +8 -2
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +8 -2
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +8 -2
- package/dist/docs/reference/geometry/resolveRackPitch.md +8 -2
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -2
- package/dist/docs/reference/geometry/rotate2.md +9 -3
- package/dist/docs/reference/geometry/rotationTransform3.md +9 -3
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -2
- package/dist/docs/reference/geometry/sampleContour.md +8 -2
- package/dist/docs/reference/geometry/sampleCurve2.md +8 -2
- package/dist/docs/reference/geometry/sampleCurve3.md +8 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +8 -2
- package/dist/docs/reference/geometry/sampleHelix.md +8 -2
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +8 -2
- package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -2
- package/dist/docs/reference/geometry/sampleSideProfile.md +8 -2
- package/dist/docs/reference/geometry/sampleTextContours.md +8 -2
- package/dist/docs/reference/geometry/sampleThreadHelices.md +8 -2
- package/dist/docs/reference/geometry/scale2.md +9 -3
- package/dist/docs/reference/geometry/scale3.md +9 -3
- package/dist/docs/reference/geometry/scaleTransform3.md +9 -3
- package/dist/docs/reference/geometry/signedContourArea.md +8 -2
- package/dist/docs/reference/geometry/starContour.md +24 -16
- package/dist/docs/reference/geometry/strokeRegionData.md +8 -2
- package/dist/docs/reference/geometry/subtract2.md +9 -3
- package/dist/docs/reference/geometry/subtract3.md +9 -3
- package/dist/docs/reference/geometry/threadProfile.md +8 -2
- package/dist/docs/reference/geometry/transform2.md +13 -3
- package/dist/docs/reference/geometry/transform3.md +13 -3
- package/dist/docs/reference/geometry/transformDeterminant3.md +9 -3
- package/dist/docs/reference/geometry/transformRegionData.md +8 -2
- package/dist/docs/reference/geometry/translationTransform3.md +9 -3
- package/dist/docs/reference/geometry/triangulateContour.md +8 -2
- package/dist/docs/reference/geometry/validateRigidTransform3.md +41 -0
- package/dist/docs/reference/geometry/validateTransform3.md +9 -3
- package/dist/docs/reference/geometry/vector2.md +13 -3
- package/dist/docs/reference/geometry/vector3.md +13 -3
- package/dist/docs/reference/geometry.md +10 -10
- package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
- package/dist/docs/reference/mesh/RenderMesh.md +68 -0
- package/dist/docs/reference/mesh/analyze.md +102 -0
- package/dist/docs/reference/mesh/analyzeQuality.md +62 -0
- package/dist/docs/reference/mesh/bounds.md +45 -0
- package/dist/docs/reference/mesh/categories/operations.md +57 -0
- package/dist/docs/reference/mesh/centroid.md +45 -0
- package/dist/docs/reference/mesh/extrude.md +79 -0
- package/dist/docs/reference/mesh/heightfield.md +57 -0
- package/dist/docs/reference/mesh/immutable.md +51 -0
- package/dist/docs/reference/mesh/join.md +47 -0
- package/dist/docs/reference/mesh/loft.md +83 -0
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +102 -0
- package/dist/docs/reference/mesh/preflightHeightfield.md +48 -0
- package/dist/docs/reference/mesh/preflightThreadSolid.md +96 -0
- package/dist/docs/reference/mesh/render.md +57 -0
- package/dist/docs/reference/mesh/reverse.md +41 -0
- package/dist/docs/reference/{geometry/revolveMesh.md → mesh/revolve.md} +23 -17
- package/dist/docs/reference/mesh/signature.md +70 -0
- package/dist/docs/reference/mesh/sweep.md +92 -0
- package/dist/docs/reference/mesh/threadRidge.md +78 -0
- package/dist/docs/reference/mesh/threadSolid.md +96 -0
- package/dist/docs/reference/mesh/transform.md +53 -0
- package/dist/docs/reference/mesh/validate.md +75 -0
- package/dist/docs/reference/{geometry/validateSolidMesh.md → mesh/validateSolid.md} +23 -11
- package/dist/docs/reference/mesh.md +21 -0
- package/dist/docs/reference/model/CircleOptions.md +13 -7
- package/dist/docs/reference/model/DiagnosticOptions.md +21 -1
- package/dist/docs/reference/model/EllipseOptions.md +13 -7
- package/dist/docs/reference/model/GenerateCallback.md +11 -5
- package/dist/docs/reference/model/GenerateContext.md +26 -99
- package/dist/docs/reference/model/GenerationDiagnostic.md +19 -1
- package/dist/docs/reference/model/GenerationError.md +8 -2
- package/dist/docs/reference/model/HoleCutterOptions.md +17 -10
- package/dist/docs/reference/model/HoleCutterOverrun.md +10 -3
- package/dist/docs/reference/model/HoleCutterRecess.md +10 -3
- package/dist/docs/reference/model/HullOptions.md +13 -6
- package/dist/docs/reference/model/ImmutableValue.md +26 -0
- package/dist/docs/reference/model/ImplicitOptions.md +12 -6
- package/dist/docs/reference/model/JoinOptions.md +76 -0
- package/dist/docs/reference/model/JoinTransition.md +54 -0
- package/dist/docs/reference/model/KnuckleHinge-type.md +9 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
- package/dist/docs/reference/model/KnuckleHingeOptions.md +10 -4
- package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
- package/dist/docs/reference/model/LoftStation.md +16 -9
- package/dist/docs/reference/model/Memo.md +54 -0
- package/dist/docs/reference/model/ModelProgram.md +8 -2
- package/dist/docs/reference/model/PartDeclaration.md +87 -0
- package/dist/docs/reference/model/PartGeometry.md +10 -4
- package/dist/docs/reference/model/PartOptions.md +16 -22
- package/dist/docs/reference/model/PatternSource.md +10 -4
- package/dist/docs/reference/model/PlaneOptions.md +11 -4
- package/dist/docs/reference/model/PolygonOptions.md +20 -14
- package/dist/docs/reference/model/Profile.md +10 -4
- package/dist/docs/reference/model/RectangleOptions.md +28 -22
- package/dist/docs/reference/model/RegularPolygonOptions.md +13 -7
- package/dist/docs/reference/model/Section.md +196 -77
- package/dist/docs/reference/model/SectionHullOptions.md +13 -6
- package/dist/docs/reference/model/SectionInspection.md +12 -18
- package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
- package/dist/docs/reference/model/SectionOffsetOptions.md +12 -6
- package/dist/docs/reference/model/Solid.md +339 -54
- package/dist/docs/reference/model/SolidInspection.md +12 -18
- package/dist/docs/reference/model/SolidSegmentHit.md +14 -4
- package/dist/docs/reference/model/StarOptions.md +53 -25
- package/dist/docs/reference/model/SvgOrigin.md +10 -4
- package/dist/docs/reference/model/SvgPathSectionOptions.md +14 -8
- package/dist/docs/reference/model/SvgSectionOptions.md +16 -10
- package/dist/docs/reference/model/TextSectionOptions.md +14 -8
- package/dist/docs/reference/model/box.md +18 -11
- package/dist/docs/reference/model/categories/boolean-operations.md +13 -11
- package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -7
- package/dist/docs/reference/model/categories/explicit-profiles.md +1 -14
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +11 -23
- package/dist/docs/reference/model/categories/generation.md +10 -15
- package/dist/docs/reference/model/categories/hinges.md +1 -4
- package/dist/docs/reference/model/categories/mesh-inspection.md +14 -9
- package/dist/docs/reference/model/categories/primitives.md +8 -24
- package/dist/docs/reference/model/categories/sections.md +6 -16
- package/dist/docs/reference/model/categories/threads.md +3 -30
- package/dist/docs/reference/model/categories/transforms-placement.md +5 -35
- package/dist/docs/reference/model/circle.md +10 -4
- package/dist/docs/reference/model/cylinder.md +13 -6
- package/dist/docs/reference/model/ellipse.md +10 -4
- package/dist/docs/reference/model/extrude.md +28 -20
- package/dist/docs/reference/model/generate.md +10 -4
- package/dist/docs/reference/model/gridPattern.md +15 -9
- package/dist/docs/reference/model/heightfield.md +10 -4
- package/dist/docs/reference/model/holeCutter.md +21 -4
- package/dist/docs/reference/model/hull.md +9 -2
- package/dist/docs/reference/model/implicit.md +9 -3
- package/dist/docs/reference/model/internalThreadCutter.md +31 -33
- package/dist/docs/reference/model/intersect.md +11 -4
- package/dist/docs/reference/model/join.md +89 -0
- package/dist/docs/reference/model/knuckleHinge.md +8 -2
- package/dist/docs/reference/model/linearPattern.md +15 -9
- package/dist/docs/reference/model/loft.md +36 -28
- package/dist/docs/reference/model/matchProfiles.md +14 -8
- package/dist/docs/reference/model/minkowskiSum.md +9 -2
- package/dist/docs/reference/model/pathPattern.md +25 -19
- package/dist/docs/reference/model/polygon.md +13 -7
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +33 -35
- package/dist/docs/reference/model/preflightThreadedNut.md +43 -40
- package/dist/docs/reference/model/preflightThreadedRod.md +33 -35
- package/dist/docs/reference/model/radialPattern.md +15 -9
- package/dist/docs/reference/model/rectangle.md +14 -8
- package/dist/docs/reference/model/regularPolygon.md +10 -4
- package/dist/docs/reference/model/revolve.md +25 -17
- package/dist/docs/reference/model/solidFromMesh.md +16 -9
- package/dist/docs/reference/model/sphere.md +13 -6
- package/dist/docs/reference/model/star.md +17 -11
- package/dist/docs/reference/model/stroke.md +21 -15
- package/dist/docs/reference/model/svgPathSection.md +12 -6
- package/dist/docs/reference/model/svgSection.md +13 -7
- package/dist/docs/reference/model/sweep.md +29 -21
- package/dist/docs/reference/model/textSection.md +15 -9
- package/dist/docs/reference/model/threadRidge.md +21 -15
- package/dist/docs/reference/model/threadedNut.md +41 -38
- package/dist/docs/reference/model/threadedRod.md +31 -33
- package/dist/docs/reference/model/torus.md +20 -13
- package/dist/docs/reference/model/tube.md +13 -41
- package/dist/docs/reference/model/union.md +11 -4
- package/dist/docs/reference/model.md +11 -20
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +8 -2
- package/dist/docs/reference/text/VectorFont.md +39 -33
- package/dist/docs/reference/text/VectorFontOptions.md +7 -1
- package/dist/docs/reference/text/categories/font-preparation.md +3 -15
- package/dist/docs/reference/text/prepareVectorFont.md +7 -1
- package/dist/docs/reference/text.md +4 -4
- package/dist/engine/execution.js +10 -6
- package/dist/engine/finalization.js +2 -74
- package/dist/engine/index.js +24 -30
- package/dist/engine/model-parts.js +8 -0
- package/dist/engine/model-summary.js +5 -5
- package/dist/engine/native/construction-mesh.js +41 -0
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +5 -54
- package/dist/engine/native/mesh-observation.js +55 -0
- package/dist/engine/native/operations.js +0 -7
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/native/scoped-primitives.js +5 -4
- package/dist/engine/native/threads.js +14 -14
- package/dist/engine/{construction-operations.js → operations/construction.js} +25 -23
- package/dist/engine/{modeling-context.js → operations/context.js} +12 -10
- package/dist/engine/{operation-environment.js → operations/environment.js} +2 -2
- package/dist/engine/{extrusion-finishing.js → operations/extrusion-finishing.js} +23 -22
- package/dist/engine/{hole-cutter-operation.js → operations/hole-cutter.js} +3 -3
- package/dist/engine/{inspection-operations.js → operations/inspection.js} +6 -6
- package/dist/engine/operations/join-collar-profile.js +120 -0
- package/dist/engine/operations/join.js +508 -0
- package/dist/engine/{knuckle-hinge-operation.js → operations/knuckle-hinge.js} +4 -4
- package/dist/engine/{loft-operations.js → operations/loft.js} +13 -12
- package/dist/engine/{mechanical-operations.js → operations/mechanical.js} +2 -2
- package/dist/engine/{pattern-operations.js → operations/patterns.js} +4 -4
- package/dist/engine/{primitive-anchors.js → operations/primitives/anchors.js} +9 -4
- package/dist/engine/{primitive-operations.js → operations/primitives/construction.js} +18 -19
- package/dist/engine/{primitive-correspondence.js → operations/primitives/correspondence.js} +4 -4
- package/dist/engine/{profile-mesh.js → operations/primitives/profile-mesh.js} +12 -12
- package/dist/engine/{primitive-profiles.js → operations/primitives/profiles.js} +7 -7
- package/dist/engine/{section-operations.js → operations/sections.js} +8 -8
- package/dist/engine/{transform-operations.js → operations/transforms.js} +8 -8
- package/dist/engine/placement.js +3 -4
- package/dist/engine/recipe-realization.js +2 -2
- package/dist/engine/{deferred-context.js → session/deferred-context.js} +4 -4
- package/dist/engine/session/dependencies.js +93 -0
- package/dist/engine/session/graph.js +428 -0
- package/dist/engine/{session-native.js → session/native-cache.js} +2 -2
- package/dist/engine/{session.js → session/session.js} +20 -14
- package/dist/engine/{session-snapshot.js → session/snapshot-cache.js} +30 -60
- package/dist/export/3mf.js +190 -0
- package/dist/export/capture.js +178 -0
- package/dist/export/glb.js +209 -0
- package/dist/export/index.js +5 -0
- package/dist/export/limits.js +18 -0
- package/dist/export/stl.js +105 -0
- package/dist/export/types.js +1 -0
- package/dist/export/writer.js +54 -0
- package/dist/geometry/anchors.js +4 -11
- package/dist/geometry/bounds-value.js +22 -12
- package/dist/geometry/heightfield.js +10 -12
- package/dist/{model → geometry}/immutable-buffer.js +31 -12
- package/dist/geometry/index.js +16 -22
- package/dist/geometry/join-geometry.js +839 -0
- package/dist/geometry/loft/loft.js +11 -6
- package/dist/geometry/mechanical/index.js +5 -5
- package/dist/geometry/mechanical/threads/bevel.js +24 -0
- package/dist/geometry/mechanical/{threads.js → threads/fit.js} +4 -4
- package/dist/geometry/mechanical/{thread-helices.js → threads/helices.js} +3 -3
- package/dist/geometry/mechanical/{thread-mesh-plan.js → threads/mesh-plan.js} +38 -53
- package/dist/geometry/mechanical/{thread-mesh.js → threads/mesh.js} +9 -9
- package/dist/geometry/mechanical/{thread-profiles.js → threads/profiles.js} +3 -3
- package/dist/geometry/mechanical/{thread-solids.js → threads/solids.js} +58 -89
- package/dist/geometry/mechanical/{thread-surface.js → threads/surface.js} +7 -8
- package/dist/geometry/mesh/mesh-centroid.js +3 -2
- package/dist/geometry/mesh/mesh-planar.js +27 -8
- package/dist/geometry/mesh/mesh-quality.js +2 -1
- package/dist/geometry/mesh/mesh-render.js +205 -0
- package/dist/geometry/mesh/mesh-signature.js +7 -6
- package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
- package/dist/geometry/mesh/mesh-solid.js +8 -5
- package/dist/geometry/mesh/mesh-types.js +1 -0
- package/dist/geometry/mesh/mesh.js +13 -22
- package/dist/geometry/mesh-api.js +15 -0
- package/dist/geometry/primitive-resolvers.js +42 -14
- package/dist/geometry/profiles/primitives/circle.js +19 -0
- package/dist/geometry/profiles/{shapes.js → primitives/ellipse.js} +6 -10
- package/dist/geometry/profiles/{rectangle.js → primitives/rectangle.js} +14 -12
- package/dist/geometry/profiles/primitives/regular-polygon.js +33 -0
- package/dist/geometry/profiles/primitives/star.js +28 -0
- package/dist/geometry/region-offset.js +278 -0
- package/dist/geometry/regions.js +11 -1
- package/dist/geometry/revolve/revolve-mesh.js +1 -1
- package/dist/geometry/{svg-import.js → svg/import.js} +10 -10
- package/dist/geometry/sweeps/sweep-mesh.js +1 -1
- package/dist/geometry/transform3.js +29 -0
- package/dist/index.js +2 -1
- package/dist/model/diagnostic-path.js +26 -0
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +9 -3
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +45 -14
- package/dist/model/join.js +1 -0
- package/dist/model/operations.js +34 -144
- package/dist/model/recipe-declaration.js +7 -2
- package/dist/model/shape-handles.js +31 -7
- package/dist/text/index.js +1 -1
- package/package.json +38 -11
- package/dist/docs/reference/engine/Export3mfOptions.md +0 -29
- package/dist/docs/reference/engine/ExportMeshPart.md +0 -65
- package/dist/docs/reference/engine/ModelSnapshot.md +0 -184
- package/dist/docs/reference/engine/SnapshotPart.md +0 -133
- package/dist/docs/reference/engine/validateModel.md +0 -48
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +0 -14
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +0 -61
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +0 -56
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +0 -39
- package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +0 -64
- package/dist/docs/reference/geometry/extrudeMesh.md +0 -77
- package/dist/docs/reference/geometry/heightfieldMesh.md +0 -52
- package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +0 -72
- package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +0 -106
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +0 -40
- package/dist/docs/reference/geometry/loftMesh.md +0 -77
- package/dist/docs/reference/geometry/meshBounds.md +0 -39
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +0 -95
- package/dist/docs/reference/geometry/preflightHeightfield.md +0 -43
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +0 -105
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +0 -34
- package/dist/docs/reference/geometry/sweepMesh.md +0 -86
- package/dist/docs/reference/geometry/transformTriangleMesh.md +0 -46
- package/dist/docs/reference/geometry/validateTriangleMesh.md +0 -63
- package/dist/docs/reference/model/Anchor3.md +0 -55
- package/dist/docs/reference/model/AttachOptions.md +0 -69
- package/dist/docs/reference/model/Bounds2-type.md +0 -125
- package/dist/docs/reference/model/Bounds2Data.md +0 -44
- package/dist/docs/reference/model/Bounds2Input.md +0 -19
- package/dist/docs/reference/model/Bounds2Options.md +0 -70
- package/dist/docs/reference/model/Bounds3-type.md +0 -125
- package/dist/docs/reference/model/Bounds3Data.md +0 -44
- package/dist/docs/reference/model/Bounds3Input.md +0 -19
- package/dist/docs/reference/model/Bounds3Options.md +0 -70
- package/dist/docs/reference/model/BoxEdge.md +0 -15
- package/dist/docs/reference/model/BoxEdgeSelection.md +0 -19
- package/dist/docs/reference/model/BoxEdgeTreatments.md +0 -20
- package/dist/docs/reference/model/BoxOptions.md +0 -92
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +0 -35
- package/dist/docs/reference/model/CircleContourOptions.md +0 -21
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +0 -64
- package/dist/docs/reference/model/Computed.md +0 -40
- package/dist/docs/reference/model/ComputedValue.md +0 -24
- package/dist/docs/reference/model/Contour.md +0 -24
- package/dist/docs/reference/model/CorrespondingComponent.md +0 -46
- package/dist/docs/reference/model/CorrespondingContour.md +0 -46
- package/dist/docs/reference/model/CorrespondingProfile.md +0 -22
- package/dist/docs/reference/model/CorrespondingProfileStation.md +0 -27
- package/dist/docs/reference/model/CylinderOptions.md +0 -58
- package/dist/docs/reference/model/EdgeTreatment.md +0 -22
- package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
- package/dist/docs/reference/model/EndTreatments.md +0 -39
- package/dist/docs/reference/model/FinalizedModel.md +0 -131
- package/dist/docs/reference/model/FinalizedPart.md +0 -87
- package/dist/docs/reference/model/Frame3.md +0 -63
- package/dist/docs/reference/model/GeneratedPart.md +0 -97
- package/dist/docs/reference/model/GeometryResolution.md +0 -70
- package/dist/docs/reference/model/GeometrySamplingLimits.md +0 -62
- package/dist/docs/reference/model/GeometryToleranceOptions.md +0 -46
- package/dist/docs/reference/model/GridPatternOptions.md +0 -50
- package/dist/docs/reference/model/HeightfieldOptions.md +0 -67
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +0 -141
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +0 -59
- package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -84
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -38
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -246
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +0 -77
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +0 -47
- package/dist/docs/reference/model/KnuckleHingeSpec.md +0 -18
- package/dist/docs/reference/model/LinearPatternOptions.md +0 -39
- package/dist/docs/reference/model/LoftCorrespondence.md +0 -27
- package/dist/docs/reference/model/LoftOptions.md +0 -91
- package/dist/docs/reference/model/LoftPlacement.md +0 -73
- package/dist/docs/reference/model/MatchProfilesOptions.md +0 -35
- package/dist/docs/reference/model/ModelingLimits.md +0 -126
- package/dist/docs/reference/model/NumericArray.md +0 -14
- package/dist/docs/reference/model/Path2-type.md +0 -196
- package/dist/docs/reference/model/Path2Data.md +0 -50
- package/dist/docs/reference/model/Path2Input.md +0 -20
- package/dist/docs/reference/model/Path3-type.md +0 -196
- package/dist/docs/reference/model/Path3Data.md +0 -50
- package/dist/docs/reference/model/Path3Input.md +0 -20
- package/dist/docs/reference/model/PathLocation.md +0 -69
- package/dist/docs/reference/model/PathNormalGuide.md +0 -46
- package/dist/docs/reference/model/PathOptions.md +0 -38
- package/dist/docs/reference/model/PathPatternOptions.md +0 -48
- package/dist/docs/reference/model/PathResamplingOptions.md +0 -83
- package/dist/docs/reference/model/Pivot2Options.md +0 -28
- package/dist/docs/reference/model/Pivot3Options.md +0 -28
- package/dist/docs/reference/model/PolygonData.md +0 -44
- package/dist/docs/reference/model/PrimitiveAttachment.md +0 -41
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +0 -110
- package/dist/docs/reference/model/PrintableThreadFit.md +0 -15
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
- package/dist/docs/reference/model/ProfileComponent2.md +0 -46
- package/dist/docs/reference/model/ProfileContour2.md +0 -36
- package/dist/docs/reference/model/ProfileSpan2.md +0 -47
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +0 -41
- package/dist/docs/reference/model/RadialPatternOptions.md +0 -59
- package/dist/docs/reference/model/RadialSizing.md +0 -15
- package/dist/docs/reference/model/RadialSizingOptions.md +0 -40
- package/dist/docs/reference/model/RectangleContourOptions.md +0 -72
- package/dist/docs/reference/model/RectangleCornerTreatment.md +0 -40
- package/dist/docs/reference/model/RectangleCornerTreatments.md +0 -20
- package/dist/docs/reference/model/RegionData.md +0 -19
- package/dist/docs/reference/model/RevolveOptions.md +0 -94
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +0 -96
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
- package/dist/docs/reference/model/SphereOptions.md +0 -20
- package/dist/docs/reference/model/StrokeCap.md +0 -16
- package/dist/docs/reference/model/StrokeJoin.md +0 -16
- package/dist/docs/reference/model/StrokeOptions.md +0 -91
- package/dist/docs/reference/model/SweepOptions.md +0 -116
- package/dist/docs/reference/model/SweepOrientation.md +0 -116
- package/dist/docs/reference/model/ThreadEndStyle.md +0 -15
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +0 -118
- package/dist/docs/reference/model/ThreadHandedness.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInShape.md +0 -15
- package/dist/docs/reference/model/ThreadProfile.md +0 -87
- package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -19
- package/dist/docs/reference/model/ThreadedNutBevel.md +0 -15
- package/dist/docs/reference/model/ThreadedNutOptions.md +0 -274
- package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -99
- package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
- package/dist/docs/reference/model/ThreadedRodOptions.md +0 -246
- package/dist/docs/reference/model/TorusOptions.md +0 -110
- package/dist/docs/reference/model/Transform2-type.md +0 -257
- package/dist/docs/reference/model/Transform2Data.md +0 -16
- package/dist/docs/reference/model/Transform2Input.md +0 -21
- package/dist/docs/reference/model/Transform3-type.md +0 -297
- package/dist/docs/reference/model/Transform3Data.md +0 -19
- package/dist/docs/reference/model/Transform3Input.md +0 -21
- package/dist/docs/reference/model/TriangleMesh.md +0 -42
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -123
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/model/TubeOptions.md +0 -143
- package/dist/docs/reference/model/Vector2-type.md +0 -271
- package/dist/docs/reference/model/Vector2Data.md +0 -15
- package/dist/docs/reference/model/Vector2Input.md +0 -21
- package/dist/docs/reference/model/Vector3-type.md +0 -283
- package/dist/docs/reference/model/Vector3Data.md +0 -15
- package/dist/docs/reference/model/Vector3Input.md +0 -21
- package/dist/docs/reference/model/VectorTextLayout.md +0 -40
- package/dist/docs/reference/model/VectorTextMetrics.md +0 -100
- package/dist/docs/reference/model/anchor.md +0 -47
- package/dist/docs/reference/model/bounds2.md +0 -37
- package/dist/docs/reference/model/bounds3.md +0 -37
- package/dist/docs/reference/model/castSegment.md +0 -40
- package/dist/docs/reference/model/categories/bounds.md +0 -38
- package/dist/docs/reference/model/categories/contracts.md +0 -18
- package/dist/docs/reference/model/categories/core-values-errors.md +0 -30
- package/dist/docs/reference/model/categories/inspection.md +0 -29
- package/dist/docs/reference/model/categories/paths.md +0 -41
- package/dist/docs/reference/model/categories/resolution.md +0 -20
- package/dist/docs/reference/model/components.md +0 -71
- package/dist/docs/reference/model/compose.md +0 -31
- package/dist/docs/reference/model/distance.md +0 -45
- package/dist/docs/reference/model/immutableMesh.md +0 -44
- package/dist/docs/reference/model/inspectSection.md +0 -38
- package/dist/docs/reference/model/inspectSolid.md +0 -38
- package/dist/docs/reference/model/isEmpty.md +0 -39
- package/dist/docs/reference/model/path2.md +0 -54
- package/dist/docs/reference/model/path3.md +0 -49
- package/dist/docs/reference/model/split.md +0 -54
- package/dist/docs/reference/model/splitByPlane.md +0 -66
- package/dist/docs/reference/model/transform2.md +0 -46
- package/dist/docs/reference/model/transform3.md +0 -48
- package/dist/docs/reference/model/vector2.md +0 -40
- package/dist/docs/reference/model/vector3.md +0 -47
- package/dist/docs/reference/text/Bounds2Data.md +0 -34
- package/dist/docs/reference/text/Vector2Data.md +0 -7
- package/dist/docs/reference/text/VectorTextArcBaseline.md +0 -53
- package/dist/docs/reference/text/VectorTextLayout.md +0 -34
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +0 -111
- package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
- package/dist/docs/reference/text/VectorTextOptions.md +0 -50
- package/dist/engine/export-3mf.js +0 -116
- package/dist/engine/model-dependencies.js +0 -46
- package/dist/engine/session-graph.js +0 -449
- package/dist/geometry/profiles/profiles.js +0 -71
- /package/dist/engine/{primitive-profile-types.js → operations/primitives/profile-types.js} +0 -0
- /package/dist/{engine → geometry/mesh}/mesh-view-cache.js +0 -0
- /package/dist/geometry/profiles/{matched.js → match-profiles.js} +0 -0
|
@@ -1,507 +1,44 @@
|
|
|
1
1
|
# Geometry API concepts
|
|
2
2
|
|
|
3
|
-
Choose
|
|
3
|
+
Choose geometry representations and modules, then find the conventions and host setup for your model.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
and
|
|
5
|
+
Modeling separates the shape you describe from the host that evaluates it. Build immutable
|
|
6
|
+
Sections and Solids for material, use pure geometry values for calculations, and let Studio or
|
|
7
|
+
your standalone engine produce the finished result.
|
|
7
8
|
|
|
9
|
+
## Choose the representation
|
|
8
10
|
|
|
11
|
+
| You need | Use |
|
|
12
|
+
| ------------------------------------------------------ | -------------------------------- |
|
|
13
|
+
| Filled material for Booleans, extrusion, or revolution | A `Section` or `Solid` |
|
|
14
|
+
| Sampled coordinates and traversal queries | A `Path2`, `Path3`, or `Contour` |
|
|
15
|
+
| Matching landmarks across cross sections | An identified `Profile` family |
|
|
16
|
+
| Triangle buffers for a renderer or mesh algorithm | A `TriangleMesh` |
|
|
9
17
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
[Geometry values and representations](geometry-values.md) explains these choices,
|
|
19
|
+
plain interchange data, and conversion between them. [Placement](transforms-and-placement.md)
|
|
20
|
+
covers vectors, transforms, anchors, patterns, and bounds. [Resolution and inspection](resolution-and-inspection.md)
|
|
21
|
+
explains sampling, preflight guarantees, and evaluated measurements.
|
|
14
22
|
|
|
23
|
+
## Choose the module
|
|
15
24
|
|
|
25
|
+
- [`@metamesh/modeling`](../reference/model.md): shapes, Booleans, construction, and generation programs.
|
|
26
|
+
- [`@metamesh/modeling/geometry`](../reference/geometry.md): pure paths, profiles, transforms, and calculations.
|
|
27
|
+
- [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md): triangle mesh construction, processing, and inspection.
|
|
28
|
+
- [`@metamesh/modeling/engine`](../reference/engine.md): standalone execution and finalization.
|
|
29
|
+
- [`@metamesh/modeling/export`](../reference/export.md): renderer-independent STL, 3MF, and GLB export.
|
|
30
|
+
- [`@metamesh/modeling/text`](../reference/text.md): exact font preparation and vector layouts.
|
|
16
31
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
32
|
+
Constructing and combining ordinary recipes doesn't need an engine. Geometry observations run
|
|
33
|
+
inside synchronous generation. The host owns evaluation, prepared services, and native resources;
|
|
34
|
+
[inspect the result](resolution-and-inspection.md#lifecycle-and-inspection) before relying
|
|
35
|
+
on its dimensions.
|
|
20
36
|
|
|
21
|
-
## Choose
|
|
37
|
+
## Choose where to run
|
|
22
38
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
| A hollow sleeve with a flange, cup, or knob | [Revolve a closed radial profile](recipes.md#revolve-a-radial-profile) around +Z | Describe the material, including walls and bores, in radius/height coordinates |
|
|
28
|
-
| A routed strip or tube | [Sweep a section along a path](recipes.md#rotation-minimizing-path-sweep) | Choose section orientation and the closed seam |
|
|
29
|
-
| A transition between different cross sections | [Loft corresponding boundaries](recipes.md#matched-section-loft) | Match landmarks and holes between stations |
|
|
30
|
-
| Repeated holes or features | [Patterns and placement](recipes.md#primitive-booleans-and-repeated-placement) | Position one feature before repeating it |
|
|
31
|
-
| Separate mating parts | [Explicit anchors](recipes.md#named-anchors-and-custom-frames) and [shared thread settings](https://metamesh.studio/docs/develop/printable-threads) | Share a mating datum and clearance decisions |
|
|
39
|
+
- **Studio:** follow the [code Project path](https://metamesh.studio/docs/develop#follow-the-studio-path). Studio supplies
|
|
40
|
+
controls, prepared services, preview, and export.
|
|
41
|
+
- **Locally:** follow the [standalone path](https://metamesh.studio/docs/engine#follow-the-standalone-path). The CLI or
|
|
42
|
+
your application supplies the host.
|
|
32
43
|
|
|
33
|
-
|
|
34
|
-
repeated cutter. Prefer an existing primitive when it fits; use `tube` for a concentric straight
|
|
35
|
-
sleeve.
|
|
36
|
-
|
|
37
|
-
Start with synchronous generation and return named parts. Geometry values are immutable recipes
|
|
38
|
-
that the host evaluates. Add `computed` when expensive work stays unchanged across edits. See
|
|
39
|
-
[generation and parameter changes](generation.md#start-with-generate) and the
|
|
40
|
-
[standalone CLI entry contract](https://metamesh.studio/docs/develop/agent-authoring#model-entries).
|
|
41
|
-
|
|
42
|
-
## Choose the module for your host
|
|
43
|
-
|
|
44
|
-
| Import | Use it for | Who owns execution |
|
|
45
|
-
| --------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------- |
|
|
46
|
-
| [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, transforms, Booleans, sweeps, lofts, and patterns | A synchronous generation program |
|
|
47
|
-
| [`@metamesh/modeling/geometry`](../reference/geometry.md) | Pure paths, profiles, calculations, and indexed meshes | Your ordinary TypeScript code |
|
|
48
|
-
| [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
|
|
49
|
-
| [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
|
|
50
|
-
|
|
51
|
-
Construct shapes, vectors, paths, and transforms in ordinary TypeScript and reuse them in
|
|
52
|
-
synchronous generation. The host owns evaluation, observations, and export.
|
|
53
|
-
|
|
54
|
-
## Use Modeling outside Studio
|
|
55
|
-
|
|
56
|
-
Start with a [complete standalone model](standalone-model.md), or follow
|
|
57
|
-
[Run Modeling in your application](hosting.md)
|
|
58
|
-
to initialize the engine, build a model, load WASM, and export its completed snapshot.
|
|
59
|
-
For lettering, [prepare exact font bytes](fonts.md) before building.
|
|
60
|
-
|
|
61
|
-
## Geometry vocabulary
|
|
62
|
-
|
|
63
|
-
Choose the representation by the information you need to retain:
|
|
64
|
-
|
|
65
|
-
| Representation | Retains | Typical use |
|
|
66
|
-
| -------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------ |
|
|
67
|
-
| `Vector2` / `Vector3` | Immutable finite coordinates and arithmetic methods | Readable calculations |
|
|
68
|
-
| `Path2` / `Path3` | Sampled points, traversal order, and closure | Trajectories and boundary queries |
|
|
69
|
-
| `Contour` | One closed boundary's point tuples, without a repeated endpoint | Custom calculations and meshing |
|
|
70
|
-
| `PolygonData` / `RegionData` | One exterior plus holes / a collection of filled polygons | Serialized filled topology |
|
|
71
|
-
| `Profile` / `ProfileContour2` | Identified family topology / one closed boundary of identified spans | Correspondence across related shapes |
|
|
72
|
-
| `CorrespondingProfile` | Shared sampled landmarks from `matchProfiles` | Loft or sweep stations |
|
|
73
|
-
| `Section` / `Solid` | Immutable filled 2D / 3D recipes | Booleans and model construction |
|
|
74
|
-
| `Vector2Data` / `Vector3Data`, `Path2Data` / `Path3Data` | Vector tuples and complete path records | Interchange and numerical kernels |
|
|
75
|
-
| `Bounds2` / `Bounds3` | Immutable axis-aligned extents and measurement methods | Containment and placement queries |
|
|
76
|
-
| `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
|
|
77
|
-
| `Anchor3` | An attachment frame | Relative placement |
|
|
78
|
-
|
|
79
|
-
`Section` and `Solid` are opaque immutable recipes. Construction and composition need no engine;
|
|
80
|
-
ordinary recipes can be reused across sessions regardless of where they were constructed.
|
|
81
|
-
Explicitly supplied resolution settings are captured; unspecified settings inherit the evaluating
|
|
82
|
-
host's defaults. The host owns evaluation caches and native kernel values. `components()` is an
|
|
83
|
-
observation: its selected shapes, and recipes using them, can only be evaluated in the originating
|
|
84
|
-
session because component identity depends on evaluated topology.
|
|
85
|
-
|
|
86
|
-
Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
|
|
87
|
-
contour factories such as `circleContour` and `rectangleContour` when custom calculations or
|
|
88
|
-
meshing need point data. These rectangle factories share size, center, corner treatment, and
|
|
89
|
-
sampling options:
|
|
90
|
-
|
|
91
|
-
| You need | Choose | Result |
|
|
92
|
-
| ------------------------------------------------- | --------------------------------------------------------------- | --------- |
|
|
93
|
-
| Filled material for Booleans or extrusion | [`rectangle`](../reference/model/rectangle.md) | `Section` |
|
|
94
|
-
| Sampled boundary coordinates | [`rectangleContour`](../reference/geometry/rectangleContour.md) | `Contour` |
|
|
95
|
-
| Stable edge and corner identities across stations | [`rectangleProfile`](../reference/geometry/rectangleProfile.md) | `Profile` |
|
|
96
|
-
|
|
97
|
-
[`polygon`](../reference/model/polygon.md) fills boundaries in four forms:
|
|
98
|
-
|
|
99
|
-
- `polygon(points)` fills one contour.
|
|
100
|
-
- `polygon({ outer, holes })` validates exterior/hole topology and normalizes winding.
|
|
101
|
-
- `polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
|
|
102
|
-
explicit `"evenodd"` fill.
|
|
103
|
-
- `polygon({ polygons: data })` accepts existing `RegionData`.
|
|
104
|
-
|
|
105
|
-
Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
|
|
106
|
-
disconnected components. Use `section.toRegionData()` inside synchronous generation to observe
|
|
107
|
-
the evaluated shape; keep serialized point data for interchange or pure preparation.
|
|
108
|
-
|
|
109
|
-
`rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
|
|
110
|
-
identified spans for custom geometry. Prepare a complete explicit family with `matchProfiles`
|
|
111
|
-
when loft stations or a sweep need authored holes, seams, or landmarks beyond ordinary primitives.
|
|
112
|
-
|
|
113
|
-
Identified spans also accept cubic Béziers with the same endpoints and controls as
|
|
114
|
-
[`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
|
|
115
|
-
grid; physical sampling refines every member before choosing the family count. Collapsed spans
|
|
116
|
-
retain repeated logical slots, while the completed loft removes degenerate faces.
|
|
117
|
-
|
|
118
|
-
## Choose fluent values or standalone algorithms
|
|
119
|
-
|
|
120
|
-
Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
|
|
121
|
-
`path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
|
|
122
|
-
outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
|
|
123
|
-
[`sweepMesh`](../reference/geometry/sweepMesh.md), or
|
|
124
|
-
[`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
|
|
125
|
-
|
|
126
|
-
### Fluent vector and tuple arithmetic
|
|
127
|
-
|
|
128
|
-
Tuple kernels remain useful in numerical loops. The same arithmetic can be written in either form:
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
```ts
|
|
133
|
-
import { vector3 } from "@metamesh/modeling";
|
|
134
|
-
import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry";
|
|
135
|
-
|
|
136
|
-
export const fluentDirection = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
137
|
-
export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10);
|
|
138
|
-
// fluentDirection.toData() and tupleDirection contain the same coordinates.
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
Fluent vectors validate finite inputs and results and allocate immutable values. Basic tuple
|
|
144
|
-
arithmetic such as `add3` avoids those wrappers and assumes valid inputs; overflow can produce
|
|
145
|
-
nonfinite results. Individual kernels document additional checks, such as zero-length rejection
|
|
146
|
-
in `normalize3`.
|
|
147
|
-
|
|
148
|
-
## Value and data naming
|
|
149
|
-
|
|
150
|
-
Modeling values use domain names such as `Vector2`, `Transform2`, `Path2`, and `Bounds2`.
|
|
151
|
-
Their plain representations consistently use `Data`: `Vector2Data`, `Transform2Data`,
|
|
152
|
-
`Path2Data`, and `Bounds2Data`. Each value exposes `toData()` for a stable, deeply frozen
|
|
153
|
-
representation, and its factory accepts that data again. `Input` types describe accepted values,
|
|
154
|
-
data, and any supported construction shorthand.
|
|
155
|
-
|
|
156
|
-
Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
|
|
157
|
-
and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
|
|
158
|
-
when a numerical algorithm needs only coordinates; use the full record to retain topology.
|
|
159
|
-
Options, reports, geometry descriptors, and recipes keep their descriptive contracts. Use
|
|
160
|
-
`toTriangleMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a mesh
|
|
161
|
-
or a Section as a region.
|
|
162
|
-
|
|
163
|
-
## Query paths and preserve closure
|
|
164
|
-
|
|
165
|
-
Use `path2(points, { closed: true })` or `path3(points, { closed: true })` for a reusable boundary.
|
|
166
|
-
`length()` includes the closing edge. [`closestPoint`](../reference/geometry/Path3-type.md#closestpoint)
|
|
167
|
-
returns a [`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
|
|
168
|
-
millimetres, `edgeIndex`, and clamped `fraction` within that edge. Equal-distance ties select the
|
|
169
|
-
first edge in traversal order. The fraction is local to an edge; it is not a whole-path or analytic
|
|
170
|
-
curve parameter.
|
|
171
|
-
|
|
172
|
-
### Path coordinate round trip
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
```ts
|
|
177
|
-
import { path3 } from "@metamesh/modeling";
|
|
178
|
-
|
|
179
|
-
export const boundary = path3(
|
|
180
|
-
[
|
|
181
|
-
[0, 0, 0],
|
|
182
|
-
[10, 0, 0],
|
|
183
|
-
[10, 10, 0],
|
|
184
|
-
[0, 10, 0],
|
|
185
|
-
],
|
|
186
|
-
{ closed: true }
|
|
187
|
-
);
|
|
188
|
-
export const nearest = boundary.closestPoint([-2, 5, 0]);
|
|
189
|
-
// point: [0, 5, 0], distance: 2, edgeIndex: 3, fraction: 0.5
|
|
190
|
-
export const restoredPath = path3(boundary.toData());
|
|
191
|
-
// Both paths include the closing edge and have length 40 mm.
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
`toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
|
|
197
|
-
value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
|
|
198
|
-
Closed paths omit the duplicated endpoint. Open paths may be empty; their bounds are `undefined`,
|
|
199
|
-
and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
|
|
200
|
-
not a filled interior or underlying analytic curve.
|
|
201
|
-
|
|
202
|
-
Chain `transform`, `reverse`, and equal-distance `resample` to create new paths. Transforming a path
|
|
203
|
-
preserves traversal even after reflection. `polygon(path)` requires a closed planar value and
|
|
204
|
-
establishes exterior/hole winding; `stroke`, sweeps, and path patterns accept paths in the matching
|
|
205
|
-
dimension. Authored point collections accept fluent vectors or tuples; serialized data uses tuples.
|
|
206
|
-
|
|
207
|
-
## Compose modeling operations
|
|
208
|
-
|
|
209
|
-
Name meaningful intermediate values and choose a curve tolerance that preserves the required
|
|
210
|
-
shape. Many high-resolution Boolean operands increase generation time.
|
|
211
|
-
|
|
212
|
-
Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
|
|
213
|
-
filled Section and `box({ size: [24, 16, 6] })` creates a Solid. `union` and `intersect`
|
|
214
|
-
combine same-dimensional arrays. `shape.subtract(cutters)` accepts an array of same-dimensional
|
|
215
|
-
cutters. `section.offset(distance, options)` stays in the filled XY plane.
|
|
216
|
-
|
|
217
|
-
- `section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
|
|
218
|
-
`center: true` is requested.
|
|
219
|
-
- `section.revolve({ degrees })` rotates radial/Z geometry around +Z.
|
|
220
|
-
- `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
|
|
221
|
-
rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. Invertible
|
|
222
|
-
XY transforms must keep consistent handedness. Use corresponding Profile stations for custom
|
|
223
|
-
topology. Boolean Sections and point contours need a `correspondence` method (`"direct"`,
|
|
224
|
-
`"reindex"`, `"fast-distance"`, or `"distance"`) or explicit profiles; contour order alone does
|
|
225
|
-
not establish semantic correspondence.
|
|
226
|
-
- `section.sweep(path, options)` supports open or closed paths, degree twist, uniform/XY/per-station
|
|
227
|
-
scales, and an explicit compatible closed seam.
|
|
228
|
-
|
|
229
|
-
## Coordinates, units, and resolution
|
|
230
|
-
|
|
231
|
-
MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
|
|
232
|
-
tolerances are millimetres; angular arguments such as `rotate` use degrees.
|
|
233
|
-
Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-value rotations also take degrees.
|
|
234
|
-
The low-level [`rotationTransform3`](../reference/geometry/rotationTransform3.md) constructor
|
|
235
|
-
requires an explicit `{ degrees }` or `{ radians }` angle.
|
|
236
|
-
|
|
237
|
-
`GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
|
|
238
|
-
chord error, 16–512 segments per complete circle, and no maximum segment length. Settings apply
|
|
239
|
-
in this order:
|
|
240
|
-
|
|
241
|
-
1. An operation-specific `segments` or `circularSegments` count.
|
|
242
|
-
2. The operation's local `resolution`.
|
|
243
|
-
3. Host session defaults.
|
|
244
|
-
|
|
245
|
-
A shape does not carry its sampling policy into later operations; pass it explicitly where needed.
|
|
246
|
-
|
|
247
|
-
Use an exact segment count for intentionally faceted geometry or when two sampled contours must
|
|
248
|
-
match point for point. Use physical chord and segment limits for ordinary printable curves. If a
|
|
249
|
-
requested tolerance cannot fit within the safety cap, the operation fails instead of silently
|
|
250
|
-
returning a coarser shape.
|
|
251
|
-
|
|
252
|
-
`regularPolygon({ radius, sides, rotation, sizing })` makes a filled regular polygon.
|
|
253
|
-
`sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
|
|
254
|
-
meet the nominal radius. `circle` and `cylinder` support the same radial convention.
|
|
255
|
-
|
|
256
|
-
Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
|
|
257
|
-
`profile` points:
|
|
258
|
-
|
|
259
|
-
- Boxes select disjoint named edges or groups; rectangles select individual corners.
|
|
260
|
-
- Cylinder/frustum and straight convex extrusion rims use independent `ends.bottom` and `ends.top`.
|
|
261
|
-
- Zero radius, zero chamfer/smooth distance, or an all-zero distance pair leaves a feature untreated.
|
|
262
|
-
Other setback pairs require two positive values; negative and nonfinite amounts reject.
|
|
263
|
-
- Disabled extrusion end treatments retain ordinary support, including holes and twist.
|
|
264
|
-
|
|
265
|
-
`attachment` maps a shape-local anchor to a world anchor after construction, using alignment,
|
|
266
|
-
millimetre gap, and degree spin. It accepts named or explicit anchors; Sections must stay in XY.
|
|
267
|
-
|
|
268
|
-
## Reuse a transform across shapes and coordinates
|
|
269
|
-
|
|
270
|
-
Use [`transform2`](../reference/geometry/transform2.md) and
|
|
271
|
-
[`transform3`](../reference/geometry/transform3.md) chains for reusable placements. They are immutable
|
|
272
|
-
and pure; no engine initialization is needed. Calls apply in written order. A rotation followed
|
|
273
|
-
by a translation rotates around the origin, then moves the result:
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
```ts
|
|
278
|
-
import { transform3, vector3 } from "@metamesh/modeling";
|
|
279
|
-
|
|
280
|
-
// Calls apply in written order: rotate, then translate.
|
|
281
|
-
const placement = transform3().rotate([0, 0, 90]).translate([20, 0, 5]);
|
|
282
|
-
export const placedPoint = placement.applyPoint([10, 0, 0]); // approximately [20, 10, 5]
|
|
283
|
-
export const placedDirection = placement.applyDirection([10, 0, 0]); // approximately [0, 10, 0]
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
|
|
289
|
-
matching path helpers. `toData()` supplies a canonical matrix when another system needs it.
|
|
290
|
-
Construct the placement once and reuse it across point collections.
|
|
291
|
-
|
|
292
|
-
`current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
|
|
293
|
-
same-dimensional matrix. `inverse()` returns the reverse placement. Transform-building operations
|
|
294
|
-
return new chains, so shared placements can branch safely.
|
|
295
|
-
|
|
296
|
-
Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
|
|
297
|
-
the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
|
|
298
|
-
Z; `rotateAxis(axis, degrees, { pivot })` normalizes its nonzero axis. Omitted pivots use the
|
|
299
|
-
coordinate origin. Uniform and per-axis scales must be finite and nonzero; negative factors reflect.
|
|
300
|
-
Nonfinite inputs, invalid axes, and singular matrices throw `GeometryError`.
|
|
301
|
-
|
|
302
|
-
`applyPoint` includes translation. `applyDirection` excludes translation and preserves scale;
|
|
303
|
-
its result is not normalized. `applyNormal` applies the inverse transpose and returns a unit normal,
|
|
304
|
-
including under nonuniform scaling; it rejects zero normals. All three return fluent vectors.
|
|
305
|
-
|
|
306
|
-
`Transform2` works directly with Sections and pure XY helpers; its `Transform2Data` is the same
|
|
307
|
-
canonical 3x3 representation throughout. Use `to3D()` when that XY placement
|
|
308
|
-
also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
|
|
309
|
-
that move the XY plane or collapse its dimensions; it does not project 3D points.
|
|
310
|
-
See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
|
|
311
|
-
|
|
312
|
-
### Transform composition order
|
|
313
|
-
|
|
314
|
-
For low-level matrix interoperability, the factories accept existing canonical matrices. Use
|
|
315
|
-
`transform3(frameTransform3(frame))` for an orthonormal frame. The raw constructors and
|
|
316
|
-
`composeTransform3(after, before)` remain available; composition applies `before` first:
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
```ts
|
|
321
|
-
import { transform3 } from "@metamesh/modeling";
|
|
322
|
-
import { applyTransformPoint3, composeTransform3 } from "@metamesh/modeling/geometry";
|
|
323
|
-
|
|
324
|
-
const current = transform3().rotate([0, 0, 90]);
|
|
325
|
-
const next = transform3().translate([20, 0, 5]);
|
|
326
|
-
export const chainedPoint = current.andThen(next).applyPoint([10, 0, 0]);
|
|
327
|
-
export const composedPoint = applyTransformPoint3(
|
|
328
|
-
composeTransform3(next.toData(), current.toData()),
|
|
329
|
-
[10, 0, 0]
|
|
330
|
-
); // Both results are approximately [20, 10, 5].
|
|
331
|
-
export const reversedPoint = next.andThen(current).applyPoint([10, 0, 0]);
|
|
332
|
-
// approximately [0, 30, 5]
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
## Calculate with vectors
|
|
338
|
-
|
|
339
|
-
Use [`vector2`](../reference/geometry/vector2.md) and [`vector3`](../reference/geometry/vector3.md)
|
|
340
|
-
for readable arithmetic chains. Operands accept tuples or vectors; `dot`, `length` and `distance`
|
|
341
|
-
return numbers. `cross` returns a signed scalar in 2D and a right-handed vector in 3D.
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
```ts
|
|
346
|
-
export const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
347
|
-
export const alignment = direction.dot([0, 0, 1]); // number
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
Values snapshot their input and operations return new values. `toData()` returns the value's
|
|
353
|
-
frozen coordinate tuple without allocating another copy. Normalization rejects zero-length vectors;
|
|
354
|
-
nonfinite coordinates, scalar parameters and overflowing results throw `GeometryError`.
|
|
355
|
-
|
|
356
|
-
For rotations and nonuniform scaling, use a reusable transform's `applyDirection`. Use
|
|
357
|
-
`applyNormal` for surface normals:
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
```ts
|
|
362
|
-
const stretched = transform3().scale([2, 1, 1]);
|
|
363
|
-
export const normal = stretched.applyNormal([1, 1, 0]);
|
|
364
|
-
export const tangent = stretched.applyDirection([1, -1, 0]);
|
|
365
|
-
export const perpendicular = normal.dot(tangent); // approximately 0
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
Fluent math, shape transforms, and part placement accept vector values directly. Serialized
|
|
371
|
-
geometry and low-level kernels use tuples. Keep model-specific equations beside the model.
|
|
372
|
-
|
|
373
|
-
## Measure and compare bounds
|
|
374
|
-
|
|
375
|
-
Use [`bounds2`](../reference/geometry/bounds2.md) and
|
|
376
|
-
[`bounds3`](../reference/geometry/bounds3.md) for immutable axis-aligned bounds. `size()` and
|
|
377
|
-
`center()` return fluent vectors. `containsBounds(other)` tests positioned containment in the
|
|
378
|
-
same coordinate frame, including touching boundaries. It does not establish a manufacturing fit.
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
```ts
|
|
383
|
-
import { bounds3 } from "@metamesh/modeling";
|
|
384
|
-
import {
|
|
385
|
-
extrudeMesh,
|
|
386
|
-
fitBounds,
|
|
387
|
-
layoutRow,
|
|
388
|
-
meshBounds,
|
|
389
|
-
rectangleContour,
|
|
390
|
-
} from "@metamesh/modeling/geometry";
|
|
391
|
-
|
|
392
|
-
export const envelope = bounds3({ min: [-10, -5, 0], max: [10, 5, 8] });
|
|
393
|
-
export const size = envelope.size(); // Vector3: [20, 10, 8] mm
|
|
394
|
-
export const center = envelope.center(); // Vector3: [0, 0, 4] mm
|
|
395
|
-
|
|
396
|
-
const mesh = extrudeMesh(rectangleContour({ size: [12, 6] }), { height: 4 });
|
|
397
|
-
// Mesh measurements are plain data. Wrap once for fluent queries.
|
|
398
|
-
export const measured = bounds3(meshBounds(mesh));
|
|
399
|
-
export const fits = envelope.containsBounds(measured); // true
|
|
400
|
-
export const data = measured.toData(); // Frozen { min, max } record for interchange.
|
|
401
|
-
|
|
402
|
-
// Collection and placement algorithms accept bounds values directly.
|
|
403
|
-
export const fitting = fitBounds(measured, envelope, { maxScale: 1 });
|
|
404
|
-
export const positions = layoutRow([measured, envelope], { gap: 2 });
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
Factories snapshot finite, ordered coordinates with finite extents; zero extents are valid.
|
|
410
|
-
Alternatively construct from nonnegative dimensions with `bounds2({ size: [30, 18] })` or
|
|
411
|
-
`bounds3({ size: [30, 18, 8], center: false })`. Size construction centers on the origin by default;
|
|
412
|
-
size and min/max construction are mutually exclusive.
|
|
413
|
-
`min` and `max` are frozen tuples, and `toData()` returns the value's stable frozen plain record.
|
|
414
|
-
Path `bounds()` queries return matching fluent bounds, or `undefined` for an empty path.
|
|
415
|
-
Mesh and region measurements, inspection results, and engine snapshots retain plain
|
|
416
|
-
`Bounds2Data` or `Bounds3Data`; wrap a measurement when you need fluent queries.
|
|
417
|
-
Compiled Generator packages passing bounds values to host recipes or computed data require
|
|
418
|
-
runtime `9.0.0` or newer in major 9.
|
|
419
|
-
|
|
420
|
-
Keep [`fitBounds`](../reference/geometry/fitBounds.md) and
|
|
421
|
-
[`layoutRow`](../reference/geometry/layoutRow.md) as standalone algorithms: they compute placement
|
|
422
|
-
reports and collection layouts. Both accept values or plain records. Supply bounds after any
|
|
423
|
-
intended rotation; an axis-aligned box alone does not describe the underlying shape.
|
|
424
|
-
|
|
425
|
-
## SVG sections: fills and strokes are different inputs
|
|
426
|
-
|
|
427
|
-
[`svgSection`](../reference/model/svgSection.md) converts a bounded complete SVG document into one
|
|
428
|
-
painted `Section`. Supported visible **fills and bounded strokes both contribute geometry**. It
|
|
429
|
-
handles supported shapes, paths, affine transforms, physical root units, `viewBox` scaling, and
|
|
430
|
-
allowlisted inline fill and stroke presentation.
|
|
431
|
-
|
|
432
|
-
[`svgPathSection`](../reference/model/svgPathSection.md) accepts SVG path-data text rather than a
|
|
433
|
-
document. It is a **fill-only** path operation: stroke styling is not part of that contract. Path
|
|
434
|
-
units default to millimetres and can be converted with its scale option.
|
|
435
|
-
|
|
436
|
-
Both functions convert SVG's Y-down plane to MetaMesh's Y-up plane and center the final painted
|
|
437
|
-
bounds by default. Use `origin: "document"` with `svgSection` when the converted document viewport
|
|
438
|
-
origin must remain meaningful. Adaptive flattening happens after supported transforms and unit
|
|
439
|
-
conversion, so tolerances apply in final millimetre space.
|
|
440
|
-
|
|
441
|
-
Unsupported layout or external content fails rather than disappearing silently. The current public
|
|
442
|
-
contract does not include nested SVG viewports, `<use>`, images, live text, external stylesheets,
|
|
443
|
-
clipping, masks, filters, scripts, animation, gradients, patterns, uploaded project assets, or
|
|
444
|
-
custom font files. Use the [SVG extrusion recipe](recipes.md#svg-parameter-and-extrusion)
|
|
445
|
-
for a complete authored example.
|
|
446
|
-
|
|
447
|
-
## Text and font variability
|
|
448
|
-
|
|
449
|
-
`services.text.layout()` shapes text inside generation. Cache an expensive shared layout with
|
|
450
|
-
`computed`, measure its `metrics`, and pass it to `textSection(layout())`. There is no
|
|
451
|
-
ambient font provider or repeated shaping during export. Declare a Text control for the wording
|
|
452
|
-
and a Font control for the face and weight.
|
|
453
|
-
|
|
454
|
-
Font size is the em size in millimetres, not the height of a particular letter. Layout supports
|
|
455
|
-
horizontal lines, spacing, and alignment, or a single circular baseline through
|
|
456
|
-
[`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). Follow the
|
|
457
|
-
[text recipe](recipes.md#text-from-a-font-parameter) for the control setup,
|
|
458
|
-
layout conventions, and font availability limits.
|
|
459
|
-
|
|
460
|
-
## Printable threads
|
|
461
|
-
|
|
462
|
-
The public API provides coordinated external threads, internal cutters, and threaded nuts. Reuse
|
|
463
|
-
one profile and fit policy across mating parts, then prove them with a short calibration print.
|
|
464
|
-
|
|
465
|
-
Follow [Build printable threads](https://metamesh.studio/docs/develop/printable-threads) for the illustrated workflow,
|
|
466
|
-
complete source, profile and fit choices, end treatments, and links into the exact API contracts.
|
|
467
|
-
|
|
468
|
-
## Check preflight guarantees
|
|
469
|
-
|
|
470
|
-
Preflights expose operation-specific checks and reports. Read their return contracts before
|
|
471
|
-
using a successful result as a guarantee:
|
|
472
|
-
|
|
473
|
-
- [`preflightHeightfield`](../reference/geometry/preflightHeightfield.md) checks grid dimensions,
|
|
474
|
-
coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
|
|
475
|
-
and byte counts without evaluating heights.
|
|
476
|
-
- [`preflightHelicalThreadSolidMesh`](../reference/geometry/preflightHelicalThreadSolidMesh.md)
|
|
477
|
-
and related thread preflights check dimensions, sampling, and conservative allocation estimates.
|
|
478
|
-
They return the sampling plan without constructing the final mesh or native solid.
|
|
479
|
-
- [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
|
|
480
|
-
SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
|
|
481
|
-
at the selected resolution; they do not predict later mesh allocation.
|
|
482
|
-
|
|
483
|
-
The `/geometry` preflights run without an engine and use explicit options or package defaults.
|
|
484
|
-
The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
|
|
485
|
-
[`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
|
|
486
|
-
[`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
|
|
487
|
-
model execution and use the host's resolution and limits.
|
|
488
|
-
|
|
489
|
-
Passing a preflight covers its documented checks. Construction can still fail during callback
|
|
490
|
-
evaluation, meshing, or native evaluation. Constructors enforce their applicable limits even when
|
|
491
|
-
you omit an explicit preflight; preflight is an optional planning and diagnostics step.
|
|
492
|
-
|
|
493
|
-
## Lifecycle and inspection
|
|
494
|
-
|
|
495
|
-
Studio or your standalone host owns initialization, cleanup, finalization, Worker recovery,
|
|
496
|
-
preview, and file delivery. Do not manually delete `Section` or `Solid` values. Use
|
|
497
|
-
`inspectSection()` and `inspectSolid()` for bounds, topology counts, area, and volume.
|
|
498
|
-
|
|
499
|
-
Observations, including `section.toRegionData()`, require the host's active synchronous generation.
|
|
500
|
-
Constructing or composing a recipe outside generation does not evaluate it.
|
|
501
|
-
|
|
502
|
-
An inspection result describes the generated geometry; it does not certify wall thickness,
|
|
503
|
-
overhangs, fits, loads, or manufacturability. Keep those product decisions in parameters,
|
|
504
|
-
validation, and your downstream manufacturing checks.
|
|
505
|
-
|
|
506
|
-
- [Use geometry recipes](recipes.md)
|
|
507
|
-
- [Browse exact signatures](../reference/model.md)
|
|
44
|
+
When you're ready to shape a part, choose a [worked modeling technique](recipes.md).
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Prepare licensed font bytes and a reusable text layout before building a model outside Studio.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
To add lettering outside Studio, load a font you're licensed to use and prepare it through the
|
|
6
|
+
optional `@metamesh/modeling/text` entry point before synchronous generation. In Studio, use the
|
|
7
|
+
[Font control recipe](svg-and-text.md#text-from-a-font-parameter).
|
|
8
8
|
|
|
9
9
|
## Install font support
|
|
10
10
|
|
|
@@ -15,11 +15,12 @@ pnpm add fontkit
|
|
|
15
15
|
pnpm add woff2-encoder
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed.
|
|
19
|
-
|
|
18
|
+
TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. Your
|
|
19
|
+
application supplies the font bytes; the library doesn't fetch them.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
preparing it. This identifies the supplied face; it
|
|
21
|
+
If you're using a static face whose actual weight isn't 400, pass that weight through
|
|
22
|
+
`staticWeight` when preparing it. This identifies the supplied face; it doesn't synthesize
|
|
23
|
+
another weight.
|
|
23
24
|
|
|
24
25
|
## Prepare one reusable layout
|
|
25
26
|
|
|
@@ -44,17 +45,17 @@ export async function makeLabelLayout(fontBytes: Uint8Array): Promise<{
|
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
|
|
47
|
-
Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and
|
|
48
|
-
in Y
|
|
48
|
+
Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and
|
|
49
|
+
measurements in millimetres, with Y pointing up, plus a separate `svg` string.
|
|
49
50
|
|
|
50
51
|
Pass the `layout` to [`textSection`](../reference/model/textSection.md) inside generation, then
|
|
51
52
|
extrude the filled section. Prepare layouts ahead of time, or supply a deterministic text service
|
|
52
|
-
and cache layouts with `
|
|
53
|
+
and cache layouts with `memo`.
|
|
53
54
|
|
|
54
55
|
The same layout options support horizontal lines or one circular line through
|
|
55
|
-
[`VectorTextArcBaseline`](../reference/
|
|
56
|
-
[text recipe](
|
|
56
|
+
[`VectorTextArcBaseline`](../reference/geometry/VectorTextArcBaseline.md). The
|
|
57
|
+
[text recipe](svg-and-text.md#text-from-a-font-parameter) explains units, alignment,
|
|
57
58
|
metrics, and circular-text constraints.
|
|
58
59
|
|
|
59
60
|
Use the [Font preparation reference](../reference/text.md) for font and layout options, or
|
|
60
|
-
[Run Modeling in your application](hosting.md) for
|
|
61
|
+
[Run Modeling in your application](hosting.md) for engine setup, export, and cleanup.
|