@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
|
@@ -6,8 +6,8 @@ Build parts by combining primitives, applying transforms, and removing material
|
|
|
6
6
|
MetaMesh uses [Manifold](https://manifoldcad.org/docs/jsapi/), a solid-modeling kernel that works
|
|
7
7
|
with **manifold meshes**: closed, consistently oriented boundaries representing solid material.
|
|
8
8
|
|
|
9
|
-
Studio code
|
|
10
|
-
The engine
|
|
9
|
+
In a Studio code Project, `@metamesh/modeling` describes your shapes as immutable `Section` and
|
|
10
|
+
`Solid` recipes. The engine builds their geometry and takes care of the underlying kernel values.
|
|
11
11
|
|
|
12
12
|
## Coordinates and units
|
|
13
13
|
|
|
@@ -15,8 +15,8 @@ MetaMesh uses a right-handed coordinate system with **+Z up**. Model dimensions
|
|
|
15
15
|
Place a part intentionally around the origin, then use transforms or anchors to relate it to other
|
|
16
16
|
parts.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
Transforms leave the original shape unchanged. Keep a base shape, give each stage a useful name,
|
|
19
|
+
and reuse the same base for several features.
|
|
20
20
|
|
|
21
21
|
## Build solids compositionally
|
|
22
22
|
|
|
@@ -33,7 +33,7 @@ export default generate(({ part }) => {
|
|
|
33
33
|
// Primitives are centered by default, so both faces get 2 mm of overtravel.
|
|
34
34
|
// Overtravel is for robust subtraction; it does not enlarge the hole diameter.
|
|
35
35
|
const hole = cylinder({ height: 8, radius: 3 });
|
|
36
|
-
return [part("model", plate.subtract(
|
|
36
|
+
return [part("model", plate.subtract(hole))];
|
|
37
37
|
});
|
|
38
38
|
```
|
|
39
39
|
|
|
@@ -42,16 +42,18 @@ The cylinder clears both faces of the plate, leaving a through-hole without coin
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2…2 mm`; the cutter
|
|
45
|
-
occupies `Z = −4…4 mm`.
|
|
46
|
-
stays `3 mm`.
|
|
45
|
+
occupies `Z = −4…4 mm`. Extending the cutter beyond both faces makes a clear through-cut while the
|
|
46
|
+
hole radius stays `3 mm`. Use the body's datum to place the cutter so they stay aligned when
|
|
47
|
+
dimensions change.
|
|
47
48
|
|
|
48
49
|
Name intermediate solids by their purpose. Arrange independent repeated cutters first, then
|
|
49
|
-
subtract them together where possible. Many high-resolution Boolean steps
|
|
50
|
-
|
|
50
|
+
subtract them together where possible. Many high-resolution Boolean steps take longer to build
|
|
51
|
+
and make it harder to see what each step contributes.
|
|
51
52
|
|
|
52
|
-
The `union` and `intersect`
|
|
53
|
-
in XY.
|
|
54
|
-
|
|
53
|
+
The `union`, `subtract`, and `intersect` methods accept one shape or an array and also combine
|
|
54
|
+
filled Sections in XY. Use collection `union(shapes)` and `intersect(shapes)` when combining peers.
|
|
55
|
+
Use either Sections or Solids throughout each call. Keep an outline as a Section while
|
|
56
|
+
combining and offsetting it, then chain `.extrude({ height })` or `.revolve(options)` to make a Solid.
|
|
55
57
|
Transforms apply in written order about the origin: translating then rotating also rotates the
|
|
56
58
|
translated position. Place finished parts through `part` options when their geometry can be reused.
|
|
57
59
|
|
|
@@ -63,7 +65,7 @@ the final translations separate the results for comparison.
|
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
```ts
|
|
66
|
-
import { box, cylinder,
|
|
68
|
+
import { box, cylinder, transform3 } from "@metamesh/modeling";
|
|
67
69
|
import { generate } from "@metamesh/project";
|
|
68
70
|
|
|
69
71
|
export default generate(({ part }) => {
|
|
@@ -72,15 +74,15 @@ export default generate(({ part }) => {
|
|
|
72
74
|
// Reuse the same overlapping operands to compare the three operations.
|
|
73
75
|
// Place finished parts separately so display spacing can reuse their geometry.
|
|
74
76
|
return [
|
|
75
|
-
part("union", { geometry: union(
|
|
77
|
+
part("union", { geometry: block.union(tool), color: "#60a5fa" }),
|
|
76
78
|
part("difference", {
|
|
77
|
-
geometry: block.subtract(
|
|
78
|
-
|
|
79
|
+
geometry: block.subtract(tool),
|
|
80
|
+
transform: transform3().translate([42, 0, 0]),
|
|
79
81
|
color: "#f59e0b",
|
|
80
82
|
}),
|
|
81
83
|
part("intersection", {
|
|
82
|
-
geometry: intersect(
|
|
83
|
-
|
|
84
|
+
geometry: block.intersect(tool),
|
|
85
|
+
transform: transform3().translate([84, 0, 0]),
|
|
84
86
|
color: "#34d399",
|
|
85
87
|
}),
|
|
86
88
|
];
|
|
@@ -91,11 +93,11 @@ Left: all material from union. Center: block material outside the tool. Right: m
|
|
|
91
93
|
|
|
92
94
|
|
|
93
95
|
|
|
94
|
-
| Operation
|
|
95
|
-
|
|
|
96
|
-
| [`union`](../reference/model/
|
|
97
|
-
| [`shape.subtract`](../reference/model/Solid.md#subtract)
|
|
98
|
-
| [`intersect`](../reference/model/
|
|
96
|
+
| Operation | Material retained | Common use |
|
|
97
|
+
| ---------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
|
|
98
|
+
| [`shape.union`](../reference/model/Solid.md#union) | Inside any operand | Join an overlapping boss or rib to a body |
|
|
99
|
+
| [`shape.subtract`](../reference/model/Solid.md#subtract) | Inside the base, outside every cutter | Cut holes, pockets, and clearance envelopes |
|
|
100
|
+
| [`shape.intersect`](../reference/model/Solid.md#intersect) | Inside every operand | Trim a feature to an envelope or isolate shared material |
|
|
99
101
|
|
|
100
102
|
Use intentional overlap for joined features and overtravel for through-cutters. A face or point
|
|
101
103
|
that only touches another feature is not a reliable connection for a manufacturing part. Inspect
|
|
@@ -103,7 +105,7 @@ the result when thin walls, tangencies, or disconnected components are possible.
|
|
|
103
105
|
|
|
104
106
|
## Valid solid does not mean manufacturable part
|
|
105
107
|
|
|
106
|
-
The kernel can enforce solid topology, but it
|
|
108
|
+
The kernel can enforce solid topology, but it doesn't know your printer, material, load case,
|
|
107
109
|
tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
|
|
108
110
|
cross-field errors in the Project, then verify the exported file in its downstream tool.
|
|
109
111
|
|
|
@@ -111,12 +113,11 @@ Empty or zero-volume output is invalid; non-empty output still needs engineering
|
|
|
111
113
|
|
|
112
114
|
## Geometry ownership
|
|
113
115
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
`model.ts`.
|
|
116
|
+
Studio creates and cleans up the native resources needed to evaluate your `Section` and `Solid`
|
|
117
|
+
recipes. Don't initialize the kernel or manually delete shapes in `model.ts`.
|
|
117
118
|
|
|
118
|
-
Use `
|
|
119
|
-
`componentCount`. `components()` returns disconnected material pieces, preserving holes and
|
|
119
|
+
Use `shape.inspect()` for measurements such as bounds, area, volume, and
|
|
120
|
+
`componentCount`. `shape.components()` returns disconnected material pieces, preserving holes and
|
|
120
121
|
enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
|
|
121
122
|
makes two. Recombining the pieces preserves the original material.
|
|
122
123
|
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
# Code Project contract
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Learn how Studio runs your TypeScript model, reuses work across edits, and keeps a preview available when an edit fails.
|
|
4
4
|
|
|
5
|
-
An authored Project has one control definition and one TypeScript entry file.
|
|
6
|
-
|
|
5
|
+
An authored Project has one control definition and one TypeScript entry file. You write the model;
|
|
6
|
+
Studio compiles it, prepares services, runs the modeling engine, saves the Project, and shows the preview.
|
|
7
7
|
|
|
8
8
|
## Source boundary
|
|
9
9
|
|
|
10
10
|
Keep helpers in the single editable `model.ts` file. Import modeling operations from
|
|
11
|
-
`@metamesh/modeling`, pure utilities from `@metamesh/modeling/geometry`,
|
|
11
|
+
`@metamesh/modeling`, pure utilities from `@metamesh/modeling/geometry`, mesh operations from
|
|
12
|
+
`@metamesh/modeling/geometry/mesh`, and the typed
|
|
12
13
|
`generate` helper from `@metamesh/project`. These approved modules and declarations work offline.
|
|
13
|
-
Source
|
|
14
|
+
Source can't install packages, fetch modules, or initialize another kernel.
|
|
14
15
|
|
|
15
16
|
## Start with generate
|
|
16
17
|
|
|
@@ -31,9 +32,12 @@ export default generate(({ params: parameters, part }) => {
|
|
|
31
32
|
|
|
32
33
|
The helper infers `params` from **Model controls** as readonly numbers, strings, and structured
|
|
33
34
|
values. Import `type Parameters` from `@metamesh/project` when a separate helper needs the type.
|
|
35
|
+
Parameters and memo results use `ImmutableValue<T>` views: nested objects, arrays, and tuples
|
|
36
|
+
are readonly in TypeScript and frozen when captured at runtime. Create a copy for editable working
|
|
37
|
+
data. Fluent Modeling methods and explicit buffer `copy()` calls retain their normal return types.
|
|
34
38
|
|
|
35
|
-
The outer callback runs for each edit. Return a single `part(...)` or a readonly array of parts
|
|
36
|
-
`
|
|
39
|
+
The outer callback runs for each edit. Return a single `part(...)` or a readonly array of parts.
|
|
40
|
+
You can add `memo` when you need it.
|
|
37
41
|
Export only the default program; keep helpers local to `model.ts`. Definitions and presets remain
|
|
38
42
|
serializable metadata. There are no separate preparation/build exports.
|
|
39
43
|
|
|
@@ -55,9 +59,10 @@ assert(
|
|
|
55
59
|
|
|
56
60
|
|
|
57
61
|
|
|
58
|
-
Assertions follow normal code order. Put cheap checks before costly reads
|
|
59
|
-
|
|
60
|
-
also run inside
|
|
62
|
+
Assertions follow normal code order. Put cheap checks before costly reads so invalid dimensions
|
|
63
|
+
can stop the work early. An assertion that reads geometry must evaluate that geometry first.
|
|
64
|
+
Warnings belong in the outer callback; assertions can also run inside a memo helper when it
|
|
65
|
+
evaluates. Pass the full generation context to a helper that needs `assert` or fixed services.
|
|
61
66
|
|
|
62
67
|
## Reuse unchanged work
|
|
63
68
|
|
|
@@ -65,78 +70,90 @@ also run inside computed values, whenever that computation evaluates.
|
|
|
65
70
|
|
|
66
71
|
**Caching is optional**
|
|
67
72
|
|
|
68
|
-
Start with ordinary generation code. If parameter edits become slow, add `
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
Start with ordinary generation code. If parameter edits become slow, add `memo` around expensive
|
|
74
|
+
work that can stay unchanged across edits. Cheap arithmetic and part placement usually do not need
|
|
75
|
+
caching.
|
|
71
76
|
|
|
72
77
|
|
|
73
78
|
|
|
74
|
-
`
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
79
|
+
`memo(fn, ...args)` calls a synchronous helper and returns its immutable result directly. Repeated
|
|
80
|
+
calls with the same function and unchanged inputs can reuse that result. Define helpers at module
|
|
81
|
+
scope so their identity stays stable between generations.
|
|
82
|
+
|
|
83
|
+
Pass the exact `params` object when a helper needs several parameters. MetaMesh tracks the fields
|
|
84
|
+
read while the helper runs, including reads made by synchronous helpers it calls:
|
|
78
85
|
|
|
79
86
|
|
|
80
87
|
|
|
81
88
|
```ts
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
89
|
+
function buildTrackedBody(params: Readonly<Parameters>) {
|
|
90
|
+
const { width, height } = params;
|
|
91
|
+
return box({ size: [width, 10, height] });
|
|
92
|
+
}
|
|
86
93
|
```
|
|
87
94
|
|
|
88
95
|
|
|
89
96
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
97
|
+
You can also pass ordinary arguments, just as you would call the function normally. These are the
|
|
98
|
+
function's inputs, not a separate dependency declaration:
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
function buildBody(width: number, height: number) {
|
|
104
|
+
return box({ size: [width, 10, height] });
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
|
|
93
109
|
|
|
94
|
-
|
|
95
|
-
computation does not track the parameter and can reuse stale geometry. Move the read inside the
|
|
96
|
-
callback. If a changing value must be prepared outside, such as a loop item, list it in the optional
|
|
97
|
-
third argument:
|
|
110
|
+
Inside `generate`, both forms return values ready for `part` or the next memo:
|
|
98
111
|
|
|
99
112
|
|
|
100
113
|
|
|
101
114
|
```ts
|
|
102
|
-
const
|
|
103
|
-
const
|
|
104
|
-
height,
|
|
105
|
-
]);
|
|
115
|
+
const body = memo(buildTrackedBody, params);
|
|
116
|
+
const argumentBody = memo(buildBody, params.width, params.height);
|
|
106
117
|
```
|
|
107
118
|
|
|
108
119
|
|
|
109
120
|
|
|
110
|
-
Both
|
|
111
|
-
|
|
121
|
+
Both rebuild when width or height changes. Unrelated parameters can change without rebuilding.
|
|
122
|
+
Compose stages by passing memo results directly: `memo(finishBody, body, params)`.
|
|
123
|
+
In **New project → Cached panels**, changing **Gap** only moves the second panel; changing
|
|
124
|
+
**Notch width** reuses the hole pattern for the finishing cut.
|
|
112
125
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
126
|
+
A function defined inside `generate`, including an inline arrow, gets a new identity each run.
|
|
127
|
+
It still computes correctly, but cannot reuse previous runs. Studio warns about common cases while
|
|
128
|
+
Code is open; factories, dynamic aliases, and arbitrary JavaScript aren't always identifiable.
|
|
116
129
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
130
|
+
Test representative parameter edits in the same session when using cached computations. An isolated
|
|
131
|
+
run cannot expose stale reuse. Standalone sessions and Testkit's Generator runner accept
|
|
132
|
+
`verifyCache: true` to check retained results against fresh computation. The probe is bounded;
|
|
133
|
+
compare finalized output with `cache: false` when it cannot compare a model's calculations.
|
|
121
134
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
135
|
+
Ordinary arguments use `Object.is`, without comparing object or array contents. Use immutable
|
|
136
|
+
parameter values, memo results, or scalar inputs; other objects must be deeply frozen. Creating a
|
|
137
|
+
fresh frozen object each generation still misses the cache. Create temporary options inside the
|
|
138
|
+
helper, and pass its scalar inputs. A TypeScript `readonly` annotation doesn't freeze runtime data.
|
|
139
|
+
An array is one argument; use `memo(fn, ...tuple)` to spread several arguments.
|
|
125
140
|
|
|
126
141
|
Keep calculations synchronous and pure: do not mutate cached values, read clocks or randomness,
|
|
127
|
-
perform effects, or return promises or functions.
|
|
142
|
+
perform effects, or return promises or functions. Pass every changing input explicitly; a helper
|
|
143
|
+
that reads changing module state can reuse stale output. Neither editor warnings nor runtime
|
|
144
|
+
tracking can prove purity. The physical result must remain the same after
|
|
128
145
|
cache eviction or a worker restart. Cache expensive layouts or grids; cheap arithmetic usually
|
|
129
146
|
does not need its own computation.
|
|
130
147
|
|
|
131
|
-
For cached numeric data, call [`immutableBuffer`](../reference/
|
|
132
|
-
its `length`, `at(index)`, or `copy()`
|
|
148
|
+
For cached numeric data, call [`immutableBuffer`](../reference/geometry/immutableBuffer.md) and use
|
|
149
|
+
its `length`, `at(index)`, standard iteration, or `copy()` method. Copy once before a dense sampling callback so its
|
|
133
150
|
inner loop reads an ordinary typed array. Capture a cached indexed mesh with
|
|
134
|
-
[`
|
|
135
|
-
Raw typed arrays in
|
|
151
|
+
[`mesh.immutable`](../reference/mesh/immutable.md); its value can pass directly to `part`.
|
|
152
|
+
Raw typed arrays in memo results or arguments reject with guidance to use these helpers.
|
|
136
153
|
|
|
137
154
|
## Text services
|
|
138
155
|
|
|
139
|
-
|
|
156
|
+
Studio prepares the exact selected font bytes before passing `services` to the callback.
|
|
140
157
|
Call `services.text.layout()` synchronously, check its metrics, then pass the layout to
|
|
141
158
|
`textSection(layout)`. Generation itself does no networking:
|
|
142
159
|
|
|
@@ -163,30 +180,33 @@ export default generate(({ params, services, part }) => {
|
|
|
163
180
|
## Parts and placement
|
|
164
181
|
|
|
165
182
|
Use `part("body", geometry)` for the simple form, or pass an object with `geometry`,
|
|
166
|
-
`
|
|
167
|
-
Geometry and placement accept values
|
|
183
|
+
`transform` and `color`. Geometry accepts a Solid or indexed manufacturing mesh.
|
|
184
|
+
Geometry and placement accept values. Give each part a stable ID:
|
|
168
185
|
|
|
169
186
|
|
|
170
187
|
|
|
171
188
|
```ts
|
|
172
189
|
export default generate(({ params: parameters, part }) => {
|
|
173
190
|
const base = box({ size: [parameters.width, parameters.depth, parameters.height] });
|
|
174
|
-
const lid = box({ size: [parameters.width, parameters.depth, 2] })
|
|
175
|
-
0,
|
|
176
|
-
parameters.depth + 4,
|
|
177
|
-
0,
|
|
178
|
-
]);
|
|
191
|
+
const lid = box({ size: [parameters.width, parameters.depth, 2] });
|
|
179
192
|
return [
|
|
180
193
|
part("base", { geometry: base, color: "#3b82f6" }),
|
|
181
|
-
part("lid", {
|
|
194
|
+
part("lid", {
|
|
195
|
+
geometry: lid,
|
|
196
|
+
transform: transform3().translate([0, parameters.depth + 4, 0]),
|
|
197
|
+
color: "#f59e0b",
|
|
198
|
+
}),
|
|
182
199
|
];
|
|
183
200
|
});
|
|
184
201
|
```
|
|
185
202
|
|
|
186
203
|
|
|
187
204
|
|
|
188
|
-
|
|
189
|
-
|
|
205
|
+
Use a `transform3()` value or a row-major 16-number matrix for translation and rotation;
|
|
206
|
+
omitting it means identity placement. Scale, shear, reflection and perspective are rejected.
|
|
207
|
+
Pattern and attachment transforms pass directly to this option.
|
|
208
|
+
Lengths use millimetres and fluent rotations use degrees. Coordinates are right-handed with **+Z up**.
|
|
209
|
+
Fluent transform calls apply in written order. Part placement governs
|
|
190
210
|
preview, picking, measurements and all exports. Changing placement or color can reuse cached
|
|
191
211
|
geometry and renderer buffers. Studio's native part-color overrides update appearance directly.
|
|
192
212
|
Use modeling `translate`/`rotate` when moving a cutter or feature inside construction.
|
|
@@ -203,12 +223,12 @@ Solids and Sections are immutable deferred recipes. Ordinary recipes can be reus
|
|
|
203
223
|
sessions; unspecified resolution settings inherit the evaluating host's defaults. Apply local
|
|
204
224
|
resolution explicitly to each affected constructor or Section operation.
|
|
205
225
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
session because their identity depends on evaluated topology. The host cleans up native
|
|
226
|
+
Calls such as `shape.inspect()` evaluate the required geometry synchronously and return copied
|
|
227
|
+
measurements. `shape.components()` selections and recipes using them can only be evaluated in their
|
|
228
|
+
originating session because their identity depends on evaluated topology. The host cleans up native
|
|
209
229
|
allocations on success and failure. Nested or asynchronous execution rejects.
|
|
210
230
|
|
|
211
|
-
|
|
231
|
+
Changing the source or control definition invalidates the program session. Parameter edits reuse it.
|
|
212
232
|
Failed or stale requests retain the last valid preview; fatal failures replace the worker.
|
|
213
233
|
Unsupported older Project data remains available through raw backup for manual source conversion;
|
|
214
234
|
there is no old executor and no automatic destructive reset.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Choose geometry values and representations
|
|
2
|
+
|
|
3
|
+
Choose filled shapes, paths, profiles, and plain data, and understand when geometry is evaluated.
|
|
4
|
+
|
|
5
|
+
Choose a value by the information your next operation needs. Filled Sections and Solids represent
|
|
6
|
+
material; paths retain traversal and closure; identified profiles retain correspondence between
|
|
7
|
+
cross sections. Pure calculations do not need a host engine.
|
|
8
|
+
|
|
9
|
+
## Geometry vocabulary
|
|
10
|
+
|
|
11
|
+
Choose the representation by the information you need to retain:
|
|
12
|
+
|
|
13
|
+
| Representation | Retains | Typical use |
|
|
14
|
+
| -------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------ |
|
|
15
|
+
| `Vector2` / `Vector3` | Immutable finite coordinates and arithmetic methods | Readable calculations |
|
|
16
|
+
| `Path2` / `Path3` | Sampled points, traversal order, and closure | Trajectories and boundary queries |
|
|
17
|
+
| `Contour` | One closed boundary's point tuples, without a repeated endpoint | Custom calculations and meshing |
|
|
18
|
+
| `PolygonData` / `RegionData` | One exterior plus holes / a collection of filled polygons | Serialized filled topology |
|
|
19
|
+
| `Profile` / `ProfileContour2` | Identified family topology / one closed boundary of identified spans | Correspondence across related shapes |
|
|
20
|
+
| `CorrespondingProfile` | Shared sampled landmarks from `matchProfiles` | Loft or sweep stations |
|
|
21
|
+
| `Section` / `Solid` | Immutable filled 2D / 3D recipes | Booleans and model construction |
|
|
22
|
+
| `Vector2Data` / `Vector3Data`, `Path2Data` / `Path3Data` | Vector tuples and complete path records | Interchange and numerical kernels |
|
|
23
|
+
| `Bounds2` / `Bounds3` | Immutable axis-aligned extents and measurement methods | Containment and placement queries |
|
|
24
|
+
| `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
|
|
25
|
+
| `Anchor3` | An attachment frame | Relative placement |
|
|
26
|
+
|
|
27
|
+
`Section` and `Solid` describe shapes as immutable recipes. You can construct and combine them
|
|
28
|
+
without an engine, then reuse ordinary recipes across sessions. Explicit resolution settings
|
|
29
|
+
stay with the recipe; omitted settings use the evaluating host's defaults. The host manages
|
|
30
|
+
evaluation caches and native kernel values.
|
|
31
|
+
|
|
32
|
+
Calling `shape.components()` reads evaluated geometry. Its selected shapes, and recipes using them,
|
|
33
|
+
can only be evaluated in their original session because the selection depends on that session's
|
|
34
|
+
evaluated topology.
|
|
35
|
+
|
|
36
|
+
Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
|
|
37
|
+
contour factories such as `circleContour` and `rectangleContour` when custom calculations or
|
|
38
|
+
meshing need point data. These rectangle factories share size, center, corner treatment, and
|
|
39
|
+
sampling options:
|
|
40
|
+
|
|
41
|
+
| You need | Choose | Result |
|
|
42
|
+
| ------------------------------------------------- | --------------------------------------------------------------- | --------- |
|
|
43
|
+
| Filled material for Booleans or extrusion | [`rectangle`](../reference/model/rectangle.md) | `Section` |
|
|
44
|
+
| Sampled boundary coordinates | [`rectangleContour`](../reference/geometry/rectangleContour.md) | `Contour` |
|
|
45
|
+
| Stable edge and corner identities across stations | [`rectangleProfile`](../reference/geometry/rectangleProfile.md) | `Profile` |
|
|
46
|
+
|
|
47
|
+
[`polygon`](../reference/model/polygon.md) fills boundaries in four forms:
|
|
48
|
+
|
|
49
|
+
- `polygon(points)` fills one contour.
|
|
50
|
+
- `polygon({ outer, holes })` validates exterior/hole topology and normalizes winding.
|
|
51
|
+
- `polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
|
|
52
|
+
explicit `"evenodd"` fill.
|
|
53
|
+
- `polygon({ polygons: data })` accepts existing `RegionData`.
|
|
54
|
+
|
|
55
|
+
Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
|
|
56
|
+
disconnected components. Use `section.toRegionData()` inside synchronous generation to read
|
|
57
|
+
the evaluated shape; keep serialized point data for interchange or calculations outside generation.
|
|
58
|
+
|
|
59
|
+
`rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
|
|
60
|
+
identified spans for custom geometry. Use `matchProfiles` to prepare a complete family when loft
|
|
61
|
+
stations or a sweep need holes, seams, or landmarks beyond ordinary primitives.
|
|
62
|
+
|
|
63
|
+
Identified spans also accept cubic Béziers with the same endpoints and controls as
|
|
64
|
+
[`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
|
|
65
|
+
grid; physical sampling refines every member before choosing the family count. Collapsed spans
|
|
66
|
+
retain repeated logical slots, while the completed loft removes degenerate faces.
|
|
67
|
+
|
|
68
|
+
## Choose fluent values or standalone algorithms
|
|
69
|
+
|
|
70
|
+
### Convert representations deliberately
|
|
71
|
+
|
|
72
|
+
| From | Conversion | Evaluation and ownership |
|
|
73
|
+
| -------------------------- | ---------------------------------------------- | -------------------------------------------------------------- |
|
|
74
|
+
| `Contour` / `RegionData` | `polygon(...)` to `Section` | Captures a recipe without an engine |
|
|
75
|
+
| `Section` | `section.toRegionData()` | Observes evaluated geometry inside a host execution |
|
|
76
|
+
| `Profile` | `matchProfiles(...)` | Pure matching retains identified boundaries and landmarks |
|
|
77
|
+
| Closed `Path2` / `Contour` | `mesh.extrude(...)` to `TriangleMesh` | Pure mesh construction; no `ends` treatments |
|
|
78
|
+
| `TriangleMesh` | `solidFromMesh(...)` to `Solid` | Captures a recipe; native validation happens during evaluation |
|
|
79
|
+
| `Solid` / `TriangleMesh` | `part(...)`, then an engine run to `ModelPart` | Host finalizes durable immutable manufacturing buffers |
|
|
80
|
+
| `ModelPart` | Pass directly to mesh analysis or `export3mf` | No live session needed; use buffer `copy()` before mutation |
|
|
81
|
+
|
|
82
|
+
Pure extrusion uses `ExtrudeMeshOptions` for height, centering, twist, top scale, and sampling.
|
|
83
|
+
Native `Section.extrude` also supports `ends` through `ExtrudeOptions`; requesting them from
|
|
84
|
+
`mesh.extrude` throws instead of silently returning unfinished geometry.
|
|
85
|
+
|
|
86
|
+
Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
|
|
87
|
+
`path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
|
|
88
|
+
outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
|
|
89
|
+
[`mesh.sweep`](../reference/mesh/sweep.md), or
|
|
90
|
+
[`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
|
|
91
|
+
|
|
92
|
+
### Fluent vector and tuple arithmetic
|
|
93
|
+
|
|
94
|
+
Tuple kernels remain useful in numerical loops. The same arithmetic can be written in either form:
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
import { vector3 } from "@metamesh/modeling";
|
|
100
|
+
import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry";
|
|
101
|
+
|
|
102
|
+
export const fluentDirection = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
103
|
+
export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10);
|
|
104
|
+
// fluentDirection.toData() and tupleDirection contain the same coordinates.
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
Fluent vectors validate finite inputs and results and allocate immutable values. Basic tuple
|
|
110
|
+
arithmetic such as `add3` avoids those wrappers and assumes valid inputs; overflow can produce
|
|
111
|
+
nonfinite results. Individual kernels document additional checks, such as zero-length rejection
|
|
112
|
+
in `normalize3`.
|
|
113
|
+
|
|
114
|
+
## Value and data naming
|
|
115
|
+
|
|
116
|
+
Modeling values use domain names such as `Vector2`, `Transform2`, `Path2`, and `Bounds2`.
|
|
117
|
+
Their plain representations consistently use `Data`: `Vector2Data`, `Transform2Data`,
|
|
118
|
+
`Path2Data`, and `Bounds2Data`. Each value exposes `toData()` for a stable, deeply frozen
|
|
119
|
+
representation, and its factory accepts that data again. `Input` types describe accepted values,
|
|
120
|
+
data, and any supported construction shorthand.
|
|
121
|
+
|
|
122
|
+
Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
|
|
123
|
+
and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
|
|
124
|
+
when a numerical algorithm needs only coordinates; keep the full record when closure matters too.
|
|
125
|
+
Options, reports, geometry descriptors, and recipes keep their own descriptive names. Use
|
|
126
|
+
`toMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a triangle mesh
|
|
127
|
+
or a Section as a region.
|
|
128
|
+
|
|
129
|
+
## Query paths and preserve closure
|
|
130
|
+
|
|
131
|
+
Use `path2(points, { closed: true })` or `path3(points, { closed: true })` for a reusable boundary.
|
|
132
|
+
`length()` includes the closing edge. [`closestPoint`](../reference/geometry/Path3-type.md#closestpoint)
|
|
133
|
+
returns a [`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
|
|
134
|
+
millimetres, `edgeIndex`, and clamped `fraction` within that edge. Equal-distance ties select the
|
|
135
|
+
first edge in traversal order. The fraction is local to an edge; it is not a whole-path or analytic
|
|
136
|
+
curve parameter.
|
|
137
|
+
|
|
138
|
+
### Path coordinate round trip
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
import { path3 } from "@metamesh/modeling";
|
|
144
|
+
|
|
145
|
+
export const boundary = path3(
|
|
146
|
+
[
|
|
147
|
+
[0, 0, 0],
|
|
148
|
+
[10, 0, 0],
|
|
149
|
+
[10, 10, 0],
|
|
150
|
+
[0, 10, 0],
|
|
151
|
+
],
|
|
152
|
+
{ closed: true }
|
|
153
|
+
);
|
|
154
|
+
export const nearest = boundary.closestPoint([-2, 5, 0]);
|
|
155
|
+
// point: [0, 5, 0], distance: 2, edgeIndex: 3, fraction: 0.5
|
|
156
|
+
export const restoredPath = path3(boundary.toData());
|
|
157
|
+
// Both paths include the closing edge and have length 40 mm.
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
`toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
|
|
163
|
+
value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
|
|
164
|
+
Don't repeat the endpoint of a closed path. Open paths may be empty; their bounds are `undefined`,
|
|
165
|
+
and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
|
|
166
|
+
not a filled interior or underlying analytic curve.
|
|
167
|
+
|
|
168
|
+
Chain `transform`, `reverse`, and equal-distance `resample` to create new paths. Transforming a path
|
|
169
|
+
preserves traversal even after reflection. `polygon(path)` requires a closed planar value and
|
|
170
|
+
establishes exterior/hole winding; `stroke`, sweeps, and path patterns accept paths in the matching
|
|
171
|
+
dimension. Authored point collections accept fluent vectors or tuples; serialized data uses tuples.
|
|
172
|
+
|
|
173
|
+
## Compose modeling operations
|
|
174
|
+
|
|
175
|
+
Give intermediate shapes meaningful names and choose a curve tolerance that preserves the detail
|
|
176
|
+
you need. Many high-resolution Boolean operands take longer to build.
|
|
177
|
+
|
|
178
|
+
Dimension inputs accept matching fluent vectors or plain coordinate tuples, such as
|
|
179
|
+
`box({ size: vector3([30, 20, 6]) })`. Use `section.extrude(options)`, `section.revolve(options)`,
|
|
180
|
+
and `section.sweep(path, options)` in fluent modeling sequences. Imported `extrude`, `revolve`, and
|
|
181
|
+
`sweep` accept `Section | CorrespondingProfile`, so reusable profile functions can use either input
|
|
182
|
+
without branching. Both forms use the same operation contracts. Use `mesh.extrude(contour, options)`
|
|
183
|
+
when constructing triangle buffers directly.
|
|
184
|
+
|
|
185
|
+
Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
|
|
186
|
+
filled Section and `box({ size: [24, 16, 6] })` creates a Solid. The `union`, `subtract`, and `intersect`
|
|
187
|
+
methods accept one same-dimensional shape or a readonly array; an empty array preserves the receiver.
|
|
188
|
+
Collection `union(shapes)` and `intersect(shapes)` combine peers and require at least one shape.
|
|
189
|
+
`section.offset(distance, options)` stays in the filled XY plane.
|
|
190
|
+
|
|
191
|
+
For construction details, choose [profiles and extrusion](profiles-and-extrusion.md),
|
|
192
|
+
[sweeps and lofts](sweeps-and-lofts.md), or a
|
|
193
|
+
[worked recipe](recipes.md).
|