@metamesh/modeling 0.18.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 +33 -0
- package/README.md +73 -57
- package/dist/api/engine.d.ts +7 -47
- 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 +7 -7
- package/dist/api/index.d.ts +85 -35
- package/dist/api/mesh.d.ts +35 -6
- package/dist/docs/guides/concepts.md +32 -535
- package/dist/docs/guides/fonts.md +4 -4
- package/dist/docs/guides/generation.md +52 -45
- package/dist/docs/guides/geometry-values.md +193 -0
- package/dist/docs/guides/hosting.md +53 -30
- package/dist/docs/guides/profiles-and-extrusion.md +252 -0
- package/dist/docs/guides/recipes.md +33 -780
- 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 +1 -1
- 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 +2818 -5862
- package/dist/docs/reference/engine/GenerationOptions.md +10 -4
- package/dist/docs/reference/engine/GeometryResource.md +8 -2
- package/dist/docs/reference/engine/ModelDependencies.md +9 -3
- package/dist/docs/reference/engine/ModelEngine.md +9 -3
- package/dist/docs/reference/engine/ModelEngineOptions.md +9 -3
- package/dist/docs/reference/engine/ModelPart.md +9 -3
- package/dist/docs/reference/engine/ModelResult.md +8 -2
- package/dist/docs/reference/engine/ModelRunArguments.md +7 -1
- package/dist/docs/reference/engine/ModelRunOptions.md +10 -4
- package/dist/docs/reference/engine/ModelSession.md +7 -1
- package/dist/docs/reference/engine/SessionOptions.md +10 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +3 -8
- package/dist/docs/reference/engine/checkModel.md +7 -1
- package/dist/docs/reference/engine/createModelEngine.md +10 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +9 -3
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
- package/dist/docs/reference/engine.md +7 -7
- 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 +16 -2
- package/dist/docs/reference/geometry/BevelSize.md +16 -2
- 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 +14 -4
- 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 +14 -4
- 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 +9 -3
- 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 +11 -1
- 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 -1
- 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 +9 -3
- 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 +12 -2
- package/dist/docs/reference/geometry/EndTreatments.md +12 -2
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +16 -2
- package/dist/docs/reference/geometry/ExtrudeOptions.md +13 -3
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +16 -2
- 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 +16 -2
- 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 +16 -14
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +17 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +12 -2
- 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 +16 -2
- 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 +16 -2
- 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 -1
- 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 +12 -2
- 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 +8 -2
- 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 +16 -2
- 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 +12 -2
- 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 +12 -2
- 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 +16 -2
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/ThreadRidgeOptions.md +16 -2
- package/dist/docs/reference/geometry/ThreadRole.md +8 -2
- package/dist/docs/reference/geometry/ThreadSolidOptions.md +12 -2
- package/dist/docs/reference/geometry/ThreadSolidPreflight.md +16 -2
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +12 -2
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +12 -2
- package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +12 -2
- 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 +20 -2
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +16 -2
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshInput.md +12 -2
- 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 +12 -2
- 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 +16 -2
- 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 +11 -1
- 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 +12 -2
- 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 +16 -6
- package/dist/docs/reference/geometry/bounds3.md +16 -6
- 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 +9 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +4 -4
- package/dist/docs/reference/geometry/categories/curves-paths.md +2 -2
- package/dist/docs/reference/geometry/categories/mechanical.md +2 -2
- package/dist/docs/reference/geometry/categories/meshes.md +3 -3
- package/dist/docs/reference/geometry/categories/pattern-placement.md +2 -2
- package/dist/docs/reference/geometry/categories/primitive-options.md +2 -2
- package/dist/docs/reference/geometry/categories/profiles-regions.md +2 -2
- package/dist/docs/reference/geometry/categories/resolution-errors.md +1 -1
- package/dist/docs/reference/geometry/categories/transforms-math.md +3 -3
- package/dist/docs/reference/geometry/categories/vector-import.md +2 -2
- 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 +9 -3
- 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/geometry/immutableBuffer.md +12 -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 +8 -2
- package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +8 -2
- package/dist/docs/reference/geometry/preflightThreadedRod.md +8 -2
- 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 +8 -2
- package/dist/docs/reference/geometry/rectangleProfile.md +8 -2
- 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 +8 -2
- 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 +8 -2
- 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 +9 -3
- 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 +2 -2
- 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 +12 -6
- package/dist/docs/reference/mesh/analyzeQuality.md +11 -5
- package/dist/docs/reference/mesh/bounds.md +10 -4
- package/dist/docs/reference/mesh/categories/operations.md +5 -95
- package/dist/docs/reference/mesh/centroid.md +10 -4
- package/dist/docs/reference/mesh/extrude.md +11 -5
- package/dist/docs/reference/mesh/heightfield.md +11 -5
- package/dist/docs/reference/mesh/immutable.md +13 -9
- package/dist/docs/reference/mesh/join.md +10 -4
- package/dist/docs/reference/mesh/loft.md +11 -5
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +11 -5
- package/dist/docs/reference/mesh/preflightHeightfield.md +11 -5
- package/dist/docs/reference/mesh/preflightThreadSolid.md +10 -4
- package/dist/docs/reference/mesh/render.md +57 -0
- package/dist/docs/reference/mesh/reverse.md +10 -4
- package/dist/docs/reference/mesh/revolve.md +11 -5
- package/dist/docs/reference/mesh/signature.md +11 -5
- package/dist/docs/reference/mesh/sweep.md +12 -6
- package/dist/docs/reference/mesh/threadRidge.md +10 -4
- package/dist/docs/reference/mesh/threadSolid.md +10 -4
- package/dist/docs/reference/mesh/transform.md +11 -5
- package/dist/docs/reference/mesh/validate.md +10 -4
- package/dist/docs/reference/mesh/validateSolid.md +10 -4
- package/dist/docs/reference/mesh.md +1 -1
- package/dist/docs/reference/model/CircleOptions.md +13 -7
- package/dist/docs/reference/model/DiagnosticOptions.md +7 -1
- package/dist/docs/reference/model/EllipseOptions.md +13 -7
- package/dist/docs/reference/model/GenerateCallback.md +7 -1
- package/dist/docs/reference/model/GenerateContext.md +14 -39
- package/dist/docs/reference/model/GenerationDiagnostic.md +7 -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 +7 -1
- 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 +7 -1
- package/dist/docs/reference/model/PartDeclaration.md +11 -6
- package/dist/docs/reference/model/PartGeometry.md +10 -4
- package/dist/docs/reference/model/PartOptions.md +11 -6
- 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 +68 -74
- package/dist/docs/reference/model/SectionHullOptions.md +13 -6
- package/dist/docs/reference/model/SectionInspection.md +10 -4
- 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 +101 -53
- package/dist/docs/reference/model/SolidInspection.md +10 -4
- package/dist/docs/reference/model/SolidSegmentHit.md +11 -5
- package/dist/docs/reference/model/StarOptions.md +24 -18
- 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 +8 -2
- 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 +6 -20
- package/dist/docs/reference/model/categories/generation.md +5 -10
- package/dist/docs/reference/model/categories/hinges.md +1 -4
- package/dist/docs/reference/model/categories/mesh-inspection.md +2 -6
- package/dist/docs/reference/model/categories/primitives.md +5 -21
- package/dist/docs/reference/model/categories/sections.md +4 -15
- package/dist/docs/reference/model/categories/threads.md +2 -39
- package/dist/docs/reference/model/categories/transforms-placement.md +4 -33
- 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 +26 -19
- package/dist/docs/reference/model/generate.md +8 -2
- 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 +10 -3
- 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 +23 -17
- package/dist/docs/reference/model/intersect.md +9 -2
- package/dist/docs/reference/model/join.md +89 -0
- package/dist/docs/reference/model/knuckleHinge.md +7 -1
- package/dist/docs/reference/model/linearPattern.md +15 -9
- package/dist/docs/reference/model/loft.md +31 -24
- 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 +25 -19
- package/dist/docs/reference/model/preflightThreadedNut.md +29 -23
- package/dist/docs/reference/model/preflightThreadedRod.md +25 -19
- 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 +22 -15
- package/dist/docs/reference/model/solidFromMesh.md +12 -6
- package/dist/docs/reference/model/sphere.md +13 -6
- package/dist/docs/reference/model/star.md +12 -6
- 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 +27 -20
- 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 +27 -21
- package/dist/docs/reference/model/threadedRod.md +23 -17
- package/dist/docs/reference/model/torus.md +20 -13
- package/dist/docs/reference/model/tube.md +13 -6
- package/dist/docs/reference/model/union.md +9 -2
- package/dist/docs/reference/model.md +3 -8
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -1
- 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 +1 -13
- package/dist/docs/reference/text/prepareVectorFont.md +7 -1
- package/dist/docs/reference/text.md +1 -1
- package/dist/engine/finalization.js +2 -74
- package/dist/engine/index.js +2 -2
- package/dist/engine/native/construction-mesh.js +41 -0
- package/dist/engine/native/material-components.js +2 -51
- package/dist/engine/native/mesh-observation.js +55 -0
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/operations/context.js +2 -0
- package/dist/engine/operations/extrusion-finishing.js +17 -16
- package/dist/engine/operations/join-collar-profile.js +120 -0
- package/dist/engine/operations/join.js +508 -0
- package/dist/engine/recipe-realization.js +1 -1
- package/dist/engine/session/dependencies.js +89 -42
- package/dist/engine/session/graph.js +319 -342
- package/dist/engine/session/native-cache.js +1 -1
- package/dist/engine/session/session.js +5 -5
- package/dist/engine/session/snapshot-cache.js +2 -2
- 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/bounds-value.js +4 -4
- package/dist/geometry/immutable-buffer.js +4 -6
- package/dist/geometry/join-geometry.js +839 -0
- package/dist/geometry/mesh/mesh-render.js +205 -0
- package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
- package/dist/geometry/mesh/mesh-solid.js +6 -2
- package/dist/geometry/mesh-api.js +1 -0
- package/dist/geometry/region-offset.js +278 -0
- package/dist/geometry/regions.js +11 -1
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +2 -2
- package/dist/model/immutable-generation-data.js +13 -13
- package/dist/model/join.js +1 -0
- package/dist/model/operations.js +20 -0
- package/dist/model/recipe-declaration.js +1 -0
- package/dist/model/shape-handles.js +1 -0
- package/package.json +18 -1
- package/dist/docs/reference/engine/Export3mfOptions.md +0 -46
- package/dist/docs/reference/engine/ExportMeshPart.md +0 -31
- package/dist/docs/reference/engine/ModelingLimits.md +0 -121
- package/dist/docs/reference/engine/export3mf.md +0 -55
- package/dist/docs/reference/mesh/AcmeThreadProfileSpec.md +0 -79
- package/dist/docs/reference/mesh/Bevel.md +0 -18
- package/dist/docs/reference/mesh/BevelSize.md +0 -14
- package/dist/docs/reference/mesh/Bounds2.md +0 -125
- package/dist/docs/reference/mesh/Bounds2Data.md +0 -43
- package/dist/docs/reference/mesh/Bounds2Input.md +0 -19
- package/dist/docs/reference/mesh/Bounds3.md +0 -125
- package/dist/docs/reference/mesh/Bounds3Data.md +0 -43
- package/dist/docs/reference/mesh/Bounds3Input.md +0 -19
- package/dist/docs/reference/mesh/ButtressPressureFlankSide.md +0 -14
- package/dist/docs/reference/mesh/ButtressThreadProfileSpec.md +0 -97
- package/dist/docs/reference/mesh/CircularPrimitiveOptions.md +0 -60
- package/dist/docs/reference/mesh/CurveSamplingOptions.md +0 -69
- package/dist/docs/reference/mesh/CustomThreadProfileSpec.md +0 -77
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +0 -129
- package/dist/docs/reference/mesh/ExtrusionSamplingOptions.md +0 -81
- package/dist/docs/reference/mesh/Frame3.md +0 -62
- package/dist/docs/reference/mesh/GeometryResolution.md +0 -74
- package/dist/docs/reference/mesh/GeometrySamplingLimits.md +0 -66
- package/dist/docs/reference/mesh/GeometryToleranceOptions.md +0 -46
- package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +0 -18
- package/dist/docs/reference/mesh/HeightfieldOptions.md +0 -72
- package/dist/docs/reference/mesh/HeightfieldPreflight.md +0 -58
- package/dist/docs/reference/mesh/ImmutableBuffer.md +0 -108
- package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +0 -43
- package/dist/docs/reference/mesh/LoftCorrespondence.md +0 -24
- package/dist/docs/reference/mesh/LoftMeshStation.md +0 -31
- package/dist/docs/reference/mesh/LoftOptions.md +0 -88
- package/dist/docs/reference/mesh/LoftPlacement.md +0 -70
- package/dist/docs/reference/mesh/ModelingLimits.md +0 -130
- package/dist/docs/reference/mesh/NumericArray.md +0 -14
- package/dist/docs/reference/mesh/Path2.md +0 -197
- package/dist/docs/reference/mesh/Path2Data.md +0 -50
- package/dist/docs/reference/mesh/Path2Input.md +0 -20
- package/dist/docs/reference/mesh/Path3.md +0 -197
- package/dist/docs/reference/mesh/Path3Data.md +0 -50
- package/dist/docs/reference/mesh/Path3Input.md +0 -20
- package/dist/docs/reference/mesh/PathLocation.md +0 -69
- package/dist/docs/reference/mesh/PathNormalGuide.md +0 -43
- package/dist/docs/reference/mesh/PathResamplingOptions.md +0 -84
- package/dist/docs/reference/mesh/Pivot2Options.md +0 -26
- package/dist/docs/reference/mesh/Pivot3Options.md +0 -26
- package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +0 -14
- package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +0 -160
- package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +0 -124
- package/dist/docs/reference/mesh/PlanarPatchQuality.md +0 -194
- package/dist/docs/reference/mesh/RevolveOptions.md +0 -91
- package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +0 -38
- package/dist/docs/reference/mesh/SquareThreadProfileSpec.md +0 -79
- package/dist/docs/reference/mesh/SweepOptions.md +0 -113
- package/dist/docs/reference/mesh/SweepOrientation.md +0 -113
- package/dist/docs/reference/mesh/ThreadEndStyle.md +0 -14
- package/dist/docs/reference/mesh/ThreadEndTreatmentOptions.md +0 -117
- package/dist/docs/reference/mesh/ThreadHandedness.md +0 -14
- package/dist/docs/reference/mesh/ThreadLeadInEnvelope.md +0 -14
- package/dist/docs/reference/mesh/ThreadLeadInShape.md +0 -14
- package/dist/docs/reference/mesh/ThreadProfile.md +0 -86
- package/dist/docs/reference/mesh/ThreadProfileBaseSpec.md +0 -53
- package/dist/docs/reference/mesh/ThreadProfileSpec.md +0 -23
- package/dist/docs/reference/mesh/ThreadRidgeOptions.md +0 -145
- package/dist/docs/reference/mesh/ThreadSolidOptions.md +0 -222
- package/dist/docs/reference/mesh/ThreadSolidPreflight.md +0 -58
- package/dist/docs/reference/mesh/Transform2.md +0 -256
- package/dist/docs/reference/mesh/Transform2Data.md +0 -14
- package/dist/docs/reference/mesh/Transform2Input.md +0 -19
- package/dist/docs/reference/mesh/Transform3.md +0 -296
- package/dist/docs/reference/mesh/Transform3Data.md +0 -17
- package/dist/docs/reference/mesh/Transform3Input.md +0 -19
- package/dist/docs/reference/mesh/TrapezoidalThreadProfileSpec.md +0 -96
- package/dist/docs/reference/mesh/TriangleMesh.md +0 -34
- package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +0 -129
- package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +0 -79
- package/dist/docs/reference/mesh/TriangleMeshInput.md +0 -19
- package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +0 -43
- package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +0 -194
- package/dist/docs/reference/mesh/TriangleMeshSignature.md +0 -111
- package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +0 -46
- package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +0 -34
- package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +0 -131
- package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +0 -55
- package/dist/docs/reference/mesh/TriangularThreadProfileSpec.md +0 -95
- package/dist/docs/reference/mesh/Vector2.md +0 -270
- package/dist/docs/reference/mesh/Vector2Data.md +0 -14
- package/dist/docs/reference/mesh/Vector2Input.md +0 -19
- package/dist/docs/reference/mesh/Vector3.md +0 -282
- package/dist/docs/reference/mesh/Vector3Data.md +0 -14
- package/dist/docs/reference/mesh/Vector3Input.md +0 -19
- package/dist/docs/reference/model/AcmeThreadProfileSpec.md +0 -80
- package/dist/docs/reference/model/Anchor3.md +0 -55
- package/dist/docs/reference/model/AttachOptions.md +0 -69
- package/dist/docs/reference/model/Bevel.md +0 -19
- package/dist/docs/reference/model/BevelSize.md +0 -15
- 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 -110
- 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 -110
- 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/ButtressPressureFlankSide.md +0 -15
- package/dist/docs/reference/model/ButtressThreadProfileSpec.md +0 -98
- 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 -62
- package/dist/docs/reference/model/Computed.md +0 -44
- 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/CurveSamplingOptions.md +0 -68
- package/dist/docs/reference/model/CustomThreadProfileSpec.md +0 -78
- 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/ExtrudeMeshOptions.md +0 -133
- package/dist/docs/reference/model/ExtrudeOptions.md +0 -149
- package/dist/docs/reference/model/ExtrusionSamplingOptions.md +0 -84
- package/dist/docs/reference/model/Frame3.md +0 -63
- package/dist/docs/reference/model/GeometryError.md +0 -102
- package/dist/docs/reference/model/GeometryErrorCode.md +0 -15
- package/dist/docs/reference/model/GeometryErrorContext.md +0 -35
- 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 -68
- package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -108
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -43
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -216
- 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 -84
- 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 -39
- 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/SquareThreadProfileSpec.md +0 -80
- package/dist/docs/reference/model/StarContourOptions.md +0 -81
- 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/ThreadBevelOptions.md +0 -35
- 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/ThreadProfileBaseSpec.md +0 -54
- package/dist/docs/reference/model/ThreadProfileSpec.md +0 -24
- package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -141
- package/dist/docs/reference/model/ThreadSolidPreflight.md +0 -59
- package/dist/docs/reference/model/ThreadedNutOptions.md +0 -263
- package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -111
- package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
- package/dist/docs/reference/model/ThreadedRodOptions.md +0 -216
- 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/TrapezoidalThreadProfileSpec.md +0 -97
- package/dist/docs/reference/model/TriangleMesh.md +0 -34
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -129
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/model/TriangleMeshTopologyAnalysis.md +0 -131
- package/dist/docs/reference/model/TriangularThreadProfileSpec.md +0 -96
- package/dist/docs/reference/model/TubeOptions.md +0 -67
- 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/bounds2.md +0 -37
- package/dist/docs/reference/model/bounds3.md +0 -37
- package/dist/docs/reference/model/categories/bounds.md +0 -38
- package/dist/docs/reference/model/categories/contracts.md +0 -16
- package/dist/docs/reference/model/categories/core-values-errors.md +0 -44
- package/dist/docs/reference/model/categories/paths.md +0 -42
- package/dist/docs/reference/model/categories/resolution.md +0 -20
- package/dist/docs/reference/model/immutableBuffer.md +0 -49
- package/dist/docs/reference/model/isGeometryError.md +0 -34
- package/dist/docs/reference/model/path2.md +0 -54
- package/dist/docs/reference/model/path3.md +0 -49
- 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 -23
- package/dist/engine/serialize-3mf.js +0 -116
- /package/dist/{engine → geometry/mesh}/mesh-view-cache.js +0 -0
|
@@ -32,12 +32,12 @@ export default generate(({ params: parameters, part }) => {
|
|
|
32
32
|
|
|
33
33
|
The helper infers `params` from **Model controls** as readonly numbers, strings, and structured
|
|
34
34
|
values. Import `type Parameters` from `@metamesh/project` when a separate helper needs the type.
|
|
35
|
-
Parameters and
|
|
35
|
+
Parameters and memo results use `ImmutableValue<T>` views: nested objects, arrays, and tuples
|
|
36
36
|
are readonly in TypeScript and frozen when captured at runtime. Create a copy for editable working
|
|
37
37
|
data. Fluent Modeling methods and explicit buffer `copy()` calls retain their normal return types.
|
|
38
38
|
|
|
39
39
|
The outer callback runs for each edit. Return a single `part(...)` or a readonly array of parts.
|
|
40
|
-
You can add `
|
|
40
|
+
You can add `memo` when you need it.
|
|
41
41
|
Export only the default program; keep helpers local to `model.ts`. Definitions and presets remain
|
|
42
42
|
serializable metadata. There are no separate preparation/build exports.
|
|
43
43
|
|
|
@@ -61,8 +61,8 @@ assert(
|
|
|
61
61
|
|
|
62
62
|
Assertions follow normal code order. Put cheap checks before costly reads so invalid dimensions
|
|
63
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
|
|
65
|
-
that
|
|
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.
|
|
66
66
|
|
|
67
67
|
## Reuse unchanged work
|
|
68
68
|
|
|
@@ -70,79 +70,86 @@ that computation evaluates.
|
|
|
70
70
|
|
|
71
71
|
**Caching is optional**
|
|
72
72
|
|
|
73
|
-
Start with ordinary generation code. If parameter edits become slow, add `
|
|
74
|
-
|
|
75
|
-
|
|
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.
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
`
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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:
|
|
83
85
|
|
|
84
86
|
|
|
85
87
|
|
|
86
88
|
```ts
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
function buildTrackedBody(params: Readonly<Parameters>) {
|
|
90
|
+
const { width, height } = params;
|
|
91
|
+
return box({ size: [width, 10, height] });
|
|
92
|
+
}
|
|
91
93
|
```
|
|
92
94
|
|
|
93
95
|
|
|
94
96
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
+
|
|
98
108
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
inside the callback. If a changing value must be prepared outside, such as a loop item, list it
|
|
102
|
-
in the optional third argument:
|
|
109
|
+
|
|
110
|
+
Inside `generate`, both forms return values ready for `part` or the next memo:
|
|
103
111
|
|
|
104
112
|
|
|
105
113
|
|
|
106
114
|
```ts
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
height,
|
|
110
|
-
]);
|
|
115
|
+
const body = memo(buildTrackedBody, params);
|
|
116
|
+
const argumentBody = memo(buildBody, params.width, params.height);
|
|
111
117
|
```
|
|
112
118
|
|
|
113
119
|
|
|
114
120
|
|
|
115
|
-
Both
|
|
116
|
-
|
|
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.
|
|
117
125
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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.
|
|
121
129
|
|
|
122
130
|
Test representative parameter edits in the same session when using cached computations. An isolated
|
|
123
131
|
run cannot expose stale reuse. Standalone sessions and Testkit's Generator runner accept
|
|
124
132
|
`verifyCache: true` to check retained results against fresh computation. The probe is bounded;
|
|
125
|
-
compare finalized output with `cache: false` when it cannot compare a model's
|
|
126
|
-
|
|
127
|
-
Dependency entries use `Object.is`, without comparing object or array contents. Use immutable
|
|
128
|
-
parameter values, computed results, or scalar inputs; other objects must be deeply frozen. Create
|
|
129
|
-
temporary options inside the callback, since fresh object or array dependencies prevent reuse.
|
|
130
|
-
Studio warns about obvious fresh dependencies without running generation.
|
|
133
|
+
compare finalized output with `cache: false` when it cannot compare a model's calculations.
|
|
131
134
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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.
|
|
135
140
|
|
|
136
141
|
Keep calculations synchronous and pure: do not mutate cached values, read clocks or randomness,
|
|
137
|
-
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
|
|
138
145
|
cache eviction or a worker restart. Cache expensive layouts or grids; cheap arithmetic usually
|
|
139
146
|
does not need its own computation.
|
|
140
147
|
|
|
141
|
-
For cached numeric data, call [`immutableBuffer`](../reference/
|
|
148
|
+
For cached numeric data, call [`immutableBuffer`](../reference/geometry/immutableBuffer.md) and use
|
|
142
149
|
its `length`, `at(index)`, standard iteration, or `copy()` method. Copy once before a dense sampling callback so its
|
|
143
150
|
inner loop reads an ordinary typed array. Capture a cached indexed mesh with
|
|
144
|
-
[`mesh.immutable`](../reference/mesh/immutable.md); its
|
|
145
|
-
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.
|
|
146
153
|
|
|
147
154
|
## Text services
|
|
148
155
|
|
|
@@ -174,7 +181,7 @@ export default generate(({ params, services, part }) => {
|
|
|
174
181
|
|
|
175
182
|
Use `part("body", geometry)` for the simple form, or pass an object with `geometry`,
|
|
176
183
|
`transform` and `color`. Geometry accepts a Solid or indexed manufacturing mesh.
|
|
177
|
-
Geometry and placement accept values
|
|
184
|
+
Geometry and placement accept values. Give each part a stable ID:
|
|
178
185
|
|
|
179
186
|
|
|
180
187
|
|
|
@@ -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).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Run Modeling in your application
|
|
2
2
|
|
|
3
|
-
Set up the engine in Node or a browser Worker,
|
|
3
|
+
Set up the engine in Node or a browser Worker, then export a captured model as STL, 3MF, or GLB.
|
|
4
4
|
|
|
5
|
-
Build a model in your own application, then export its parts as 3MF. Install Modeling in your
|
|
5
|
+
Build a model in your own application, then export its parts as STL, 3MF, or GLB. Install Modeling in your
|
|
6
6
|
Node application or browser Worker project:
|
|
7
7
|
|
|
8
8
|
```bash
|
|
@@ -25,9 +25,10 @@ This complete function returns the 3MF bytes for a plate with a hole:
|
|
|
25
25
|
|
|
26
26
|
```ts
|
|
27
27
|
import { box, cylinder, generate } from "@metamesh/modeling";
|
|
28
|
-
import { createModelEngine
|
|
28
|
+
import { createModelEngine } from "@metamesh/modeling/engine";
|
|
29
|
+
import { export3mf } from "@metamesh/modeling/export/3mf";
|
|
29
30
|
|
|
30
|
-
export async function makePlate3mf(): Promise<
|
|
31
|
+
export async function makePlate3mf(): Promise<Uint8Array> {
|
|
31
32
|
const engine = await createModelEngine();
|
|
32
33
|
const model = engine.run(
|
|
33
34
|
generate(({ part }) => {
|
|
@@ -37,15 +38,15 @@ export async function makePlate3mf(): Promise<ArrayBuffer> {
|
|
|
37
38
|
return [part("plate", { geometry: plate.subtract(bore), color: "#67e8f9" })];
|
|
38
39
|
})
|
|
39
40
|
);
|
|
40
|
-
return export3mf(model.parts, { name: "Plate" });
|
|
41
|
+
return (await export3mf(model.parts, { name: "Plate" })).bytes;
|
|
41
42
|
}
|
|
42
43
|
```
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
|
|
46
|
-
Call `makePlate3mf()` and save or download its returned `
|
|
47
|
+
Call `makePlate3mf()` and save or download its returned `Uint8Array`. If your application stays
|
|
47
48
|
open across edits, initialize the engine once and reuse it. Keep an explicit model session when
|
|
48
|
-
edits should reuse
|
|
49
|
+
edits should reuse memoized geometry.
|
|
49
50
|
|
|
50
51
|
`engine.run(program, parameters, options?)` returns a durable result after releasing its temporary
|
|
51
52
|
session. Both `engine.run()` and `session.run()` return the same durable immutable `ModelResult`.
|
|
@@ -61,7 +62,7 @@ absence is expected.
|
|
|
61
62
|
## Keep execution synchronous
|
|
62
63
|
|
|
63
64
|
Load fonts and other assets before generation, and supply any synchronous services when creating
|
|
64
|
-
a run or session.
|
|
65
|
+
a run or session. Memo helpers and geometry queries run inside synchronous generation: they can't
|
|
65
66
|
cross an async boundary. A session also can't run inside another session run in the same
|
|
66
67
|
JavaScript realm.
|
|
67
68
|
|
|
@@ -70,8 +71,8 @@ Keep these lifetimes in mind when reusing shapes:
|
|
|
70
71
|
- Immutable `Solid` and `Section` recipes, vectors, paths, and transforms can be created without an
|
|
71
72
|
engine and reused across sessions. Explicit resolution settings stay with a recipe; omitted
|
|
72
73
|
settings inherit the evaluating host's defaults.
|
|
73
|
-
- A session runs the model, keeps optional
|
|
74
|
-
cleans up temporary native geometry after each run.
|
|
74
|
+
- A session runs the model, keeps optional memo caches, and manages native resources. It
|
|
75
|
+
cleans up temporary native geometry after each run. Memoized shapes can stay cached for later
|
|
75
76
|
cuts or Booleans; keep expensive base geometry separate from finishing operations to reuse it.
|
|
76
77
|
- Selections returned by `shape.components()` depend on the evaluated shape. Keep them, and any recipes
|
|
77
78
|
that use them, in the session they came from. Ordinary recipes remain portable.
|
|
@@ -121,12 +122,13 @@ For incremental delivery, the optional `@metamesh/generator-sdk/modeling` adapte
|
|
|
121
122
|
|
|
122
123
|
|
|
123
124
|
```ts
|
|
124
|
-
import { ModelDeliveryEncoder
|
|
125
|
+
import { ModelDeliveryEncoder } from "@metamesh/generator-sdk/modeling";
|
|
125
126
|
// eslint-disable-next-line no-restricted-imports -- Host documentation snippet; Web only displays this code.
|
|
126
127
|
import { PartDeliveryDecoder } from "@metamesh/generator-sdk/runtime";
|
|
127
|
-
import {
|
|
128
|
+
import { type ModelResult } from "@metamesh/modeling/engine";
|
|
129
|
+
import { export3mf } from "@metamesh/modeling/export/3mf";
|
|
128
130
|
|
|
129
|
-
export async function transferAndExport(model: ModelResult): Promise<
|
|
131
|
+
export async function transferAndExport(model: ModelResult): Promise<Uint8Array> {
|
|
130
132
|
const encoder = new ModelDeliveryEncoder("preview");
|
|
131
133
|
const delivery = encoder.encode(model, {
|
|
132
134
|
revisionId: "preview-1",
|
|
@@ -146,7 +148,7 @@ export async function transferAndExport(model: ModelResult): Promise<ArrayBuffer
|
|
|
146
148
|
maxBytes: 96 * 1024 * 1024,
|
|
147
149
|
});
|
|
148
150
|
const parts = decoder.decode(received.parts);
|
|
149
|
-
return export3mf(
|
|
151
|
+
return (await export3mf(parts, { name: "Transferred model" })).bytes;
|
|
150
152
|
}
|
|
151
153
|
```
|
|
152
154
|
|
|
@@ -154,8 +156,9 @@ export async function transferAndExport(model: ModelResult): Promise<ArrayBuffer
|
|
|
154
156
|
|
|
155
157
|
Keep one encoder and decoder per ordered connection. Clear both when the receiver is replaced.
|
|
156
158
|
Decoded parts contain **local** buffers under `geometry`, plus world placement. Keep these received
|
|
157
|
-
buffers immutable and attached.
|
|
158
|
-
|
|
159
|
+
buffers immutable and attached. Pass decoded parts directly to the shared exporters. They read
|
|
160
|
+
local geometry and apply each part's placement once, preserving shared resources where the format
|
|
161
|
+
permits it. Engine `ModelResult.parts` use that same export contract.
|
|
159
162
|
|
|
160
163
|
## Set resource limits
|
|
161
164
|
|
|
@@ -165,18 +168,38 @@ budget fail explicitly; the engine does not silently reduce modeling fidelity.
|
|
|
165
168
|
|
|
166
169
|
## Export the completed result
|
|
167
170
|
|
|
168
|
-
Import `export3mf` from `@metamesh/modeling/
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
The
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
171
|
+
Import `export3mf`, `exportStl`, or `exportGlb` from `@metamesh/modeling/export`, or load one format
|
|
172
|
+
from `/export/3mf`, `/export/stl`, or `/export/glb`. Every exporter accepts completed parts with local
|
|
173
|
+
`geometry`, an optional placement transform, and optional display color and material identity.
|
|
174
|
+
No engine or renderer is required, and export never reruns the model.
|
|
175
|
+
|
|
176
|
+
The result contains `bytes: Uint8Array`, `mediaType`, `extension`, `byteLength`, and structured
|
|
177
|
+
`diagnostics`. The host chooses the filename and saves or downloads the bytes. Resolve selected
|
|
178
|
+
parts and appearance overrides before exporting so the file belongs to one captured revision.
|
|
179
|
+
|
|
180
|
+
Inputs use millimetres and Z-up coordinates. 3MF retains those units; GLB converts to metres and
|
|
181
|
+
Y-up. Binary STL writes placed triangles and reports dropped appearance, material assignments,
|
|
182
|
+
and part names. GLB preserves named parts, shared geometry, placement, and crease-aware shading.
|
|
183
|
+
Export preserves the supplied physical sampling; no writer silently simplifies geometry.
|
|
184
|
+
|
|
185
|
+
Use explicit `materialId` values with `options.materials` when material identity matters. Two
|
|
186
|
+
materials may share the same RGB value and remain distinct. Per-part display color overrides do
|
|
187
|
+
not change the selected material identity. 3MF carries portable material names and standard
|
|
188
|
+
Materials-extension color groups separately; assigned parts combine those properties with
|
|
189
|
+
`multiproperties`. Slicer support for those properties varies, and this metadata does not select a
|
|
190
|
+
filament or physical tray. Full slicer projects, printer/process presets, and device/filament mapping
|
|
191
|
+
require a separate application adapter.
|
|
192
|
+
|
|
193
|
+
Exports have their own input and output ceilings through `options.limits`; they do not inherit an
|
|
194
|
+
engine's policy. `meshValidation: "solid"` requests the bounded geometric checks in addition to
|
|
195
|
+
the format's structural requirements. Pass an `AbortSignal` to cancel bounded work.
|
|
196
|
+
|
|
197
|
+
For large output, `write3mf(parts, sink, options)`, `writeStl`, and `writeGlb` await each sink write
|
|
198
|
+
before continuing and return metadata and diagnostics without collecting the complete output.
|
|
199
|
+
Browser applications own Worker execution; an async function alone does not move CPU work off
|
|
200
|
+
the UI thread. Format entry points isolate runtime loading, while npm installs the containing
|
|
201
|
+
package's dependencies together.
|
|
202
|
+
|
|
203
|
+
Use the [Export API reference](../reference/export.md) for serialization options,
|
|
204
|
+
the [Engine API reference](../reference/engine.md) for execution, and
|
|
182
205
|
[Modeling guides](https://metamesh.studio/docs/modeling) to choose geometry operations.
|