@metamesh/modeling 0.19.0 → 0.20.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 +49 -0
- package/README.md +34 -18
- package/dist/api/engine.d.ts +217 -121
- package/dist/api/export.d.ts +123 -79
- package/dist/api/geometry.d.ts +406 -2102
- package/dist/api/index.d.ts +472 -1798
- package/dist/api/math.d.ts +315 -0
- package/dist/api/mechanical.d.ts +1041 -0
- package/dist/api/mesh.d.ts +360 -88
- package/dist/api/text.d.ts +24 -44
- package/dist/docs/guides/concepts.md +67 -33
- package/dist/docs/guides/exporting.md +88 -0
- package/dist/docs/guides/fonts.md +5 -3
- package/dist/docs/guides/fundamentals.md +12 -24
- package/dist/docs/guides/generation.md +24 -16
- package/dist/docs/guides/geometry-values.md +192 -134
- package/dist/docs/guides/hosting.md +51 -96
- package/dist/docs/guides/profiles-and-extrusion.md +159 -11
- package/dist/docs/guides/recipes.md +121 -28
- package/dist/docs/guides/resolution-and-inspection.md +43 -23
- package/dist/docs/guides/solid-joins.md +12 -2
- package/dist/docs/guides/standalone-model.md +4 -2
- package/dist/docs/guides/svg-and-text.md +76 -39
- package/dist/docs/guides/sweeps-and-lofts.md +88 -44
- package/dist/docs/guides/transforms-and-placement.md +113 -103
- package/dist/docs/guides/workers.md +166 -0
- package/dist/docs/manifest.json +4133 -4153
- package/dist/docs/reference/engine/GenerationOptions.md +2 -3
- package/dist/docs/reference/engine/GeometryResource.md +6 -6
- package/dist/docs/reference/engine/ModelDependencies.md +2 -2
- package/dist/docs/reference/engine/ModelEngine.md +2 -3
- package/dist/docs/reference/engine/ModelEngineOptions.md +2 -7
- package/dist/docs/reference/engine/ModelPart.md +6 -6
- package/dist/docs/reference/engine/ModelResult.md +2 -2
- package/dist/docs/reference/engine/ModelRunArguments.md +2 -2
- package/dist/docs/reference/engine/ModelRunOptions.md +2 -3
- package/dist/docs/reference/engine/ModelSession.md +2 -2
- package/dist/docs/reference/engine/SessionOptions.md +2 -3
- package/dist/docs/reference/engine/categories/host-lifecycle.md +9 -3
- package/dist/docs/reference/engine/checkModel.md +6 -2
- package/dist/docs/reference/engine/createModelEngine.md +5 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +4 -11
- package/dist/docs/reference/engine/modelingWasmUrl.md +2 -2
- package/dist/docs/reference/engine.md +7 -1
- package/dist/docs/reference/export/Export3mfOptions.md +2 -6
- package/dist/docs/reference/export/ExportDiagnostic.md +2 -14
- package/dist/docs/reference/export/ExportFormat.md +2 -14
- package/dist/docs/reference/export/ExportGeometry.md +3 -15
- package/dist/docs/reference/export/ExportGlbOptions.md +14 -18
- package/dist/docs/reference/export/ExportLimits.md +2 -14
- package/dist/docs/reference/export/ExportMaterial.md +2 -14
- package/dist/docs/reference/export/ExportOptions.md +2 -14
- package/dist/docs/reference/export/ExportPart.md +2 -14
- package/dist/docs/reference/export/ExportReport.md +2 -14
- package/dist/docs/reference/export/ExportSink.md +5 -15
- package/dist/docs/reference/export/ExportStlOptions.md +2 -6
- package/dist/docs/reference/export/ExportedFile.md +14 -26
- package/dist/docs/reference/export/categories/mesh-serialization.md +9 -3
- package/dist/docs/reference/export/defaultExportLimits.md +2 -2
- package/dist/docs/reference/export/export3mf.md +4 -6
- package/dist/docs/reference/export/exportGlb.md +8 -10
- package/dist/docs/reference/export/exportStl.md +4 -6
- package/dist/docs/reference/export/write3mf.md +6 -6
- package/dist/docs/reference/export/writeGlb.md +10 -10
- package/dist/docs/reference/export/writeStl.md +6 -6
- package/dist/docs/reference/export.md +9 -3
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
- package/dist/docs/reference/geometry/Anchor3-type.md +3 -7
- package/dist/docs/reference/geometry/Anchor3Options.md +70 -0
- package/dist/docs/reference/geometry/ArcCurve2.md +3 -3
- package/dist/docs/reference/geometry/ArcCurve3.md +3 -3
- package/dist/docs/reference/geometry/AttachOptions.md +4 -9
- package/dist/docs/reference/geometry/Bounds2-type.md +9 -30
- package/dist/docs/reference/geometry/Bounds2Data.md +2 -19
- package/dist/docs/reference/geometry/Bounds2Input.md +2 -10
- package/dist/docs/reference/geometry/Bounds2Options.md +2 -6
- package/dist/docs/reference/geometry/Bounds3-type.md +9 -30
- package/dist/docs/reference/geometry/Bounds3Data.md +2 -15
- package/dist/docs/reference/geometry/Bounds3Input.md +2 -10
- package/dist/docs/reference/geometry/Bounds3Options.md +2 -6
- package/dist/docs/reference/geometry/BoundsFit2.md +2 -2
- package/dist/docs/reference/geometry/BoundsFit3.md +2 -2
- package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -2
- package/dist/docs/reference/geometry/BoxAnchorFace.md +3 -3
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +3 -3
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +3 -7
- package/dist/docs/reference/geometry/CircleContourOptions.md +3 -7
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +3 -12
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +2 -2
- package/dist/docs/reference/geometry/CircularSampling.md +2 -2
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +2 -2
- package/dist/docs/reference/geometry/Contour.md +4 -9
- package/dist/docs/reference/geometry/ContourCurve.md +3 -3
- package/dist/docs/reference/geometry/ContourPoint.md +3 -3
- package/dist/docs/reference/geometry/ContourSegment.md +3 -3
- package/dist/docs/reference/geometry/CorrespondingComponent.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingContour.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingProfile.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +4 -8
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +3 -3
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +3 -3
- package/dist/docs/reference/geometry/Curve2.md +3 -3
- package/dist/docs/reference/geometry/Curve3.md +3 -3
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +3 -11
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +3 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -4
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +2 -2
- package/dist/docs/reference/geometry/EdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -7
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -18
- package/dist/docs/reference/geometry/FittedTextLayout.md +2 -2
- package/dist/docs/reference/geometry/{Frame3.md → Frame3-type.md} +4 -11
- package/dist/docs/reference/geometry/Frame3Options.md +69 -0
- package/dist/docs/reference/geometry/GeometryError.md +2 -6
- package/dist/docs/reference/geometry/GeometryErrorCode.md +2 -6
- package/dist/docs/reference/geometry/GeometryErrorContext.md +2 -6
- package/dist/docs/reference/geometry/GeometryResolution.md +2 -10
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +3 -11
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +3 -11
- package/dist/docs/reference/geometry/GridPatternOptions.md +7 -9
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +2 -10
- package/dist/docs/reference/geometry/LineCurve2.md +3 -3
- package/dist/docs/reference/geometry/LineCurve3.md +3 -3
- package/dist/docs/reference/geometry/LinearPatternOptions.md +2 -6
- package/dist/docs/reference/geometry/LoftPlacement.md +13 -21
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +3 -7
- package/dist/docs/reference/geometry/ModelingLimits.md +2 -14
- package/dist/docs/reference/geometry/NumericArray.md +2 -10
- package/dist/docs/reference/geometry/Path2-type.md +153 -12
- package/dist/docs/reference/geometry/Path2Data.md +3 -11
- package/dist/docs/reference/geometry/Path2Input.md +3 -11
- package/dist/docs/reference/geometry/Path3-type.md +153 -12
- package/dist/docs/reference/geometry/Path3Data.md +3 -11
- package/dist/docs/reference/geometry/Path3Input.md +3 -11
- package/dist/docs/reference/geometry/PathFrame.md +3 -3
- package/dist/docs/reference/geometry/PathLocation.md +3 -11
- package/dist/docs/reference/geometry/PathNormalGuide.md +4 -12
- package/dist/docs/reference/geometry/PathOptions.md +3 -7
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -7
- package/dist/docs/reference/geometry/PathPlacement.md +5 -5
- package/dist/docs/reference/geometry/PathResamplingOptions.md +3 -11
- package/dist/docs/reference/geometry/PathStation.md +87 -0
- package/dist/docs/reference/geometry/PathSubdivisionOptions.md +44 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +3 -11
- package/dist/docs/reference/geometry/Pivot3Options.md +3 -11
- package/dist/docs/reference/geometry/PolygonData.md +4 -8
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +3 -3
- package/dist/docs/reference/geometry/Profile.md +3 -4
- package/dist/docs/reference/geometry/ProfileComponent2.md +3 -7
- package/dist/docs/reference/geometry/ProfileContour2.md +3 -7
- package/dist/docs/reference/geometry/ProfileSpan2.md +3 -7
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +5 -8
- package/dist/docs/reference/geometry/RadialPatternOptions.md +2 -6
- package/dist/docs/reference/geometry/RadialSizing.md +2 -6
- package/dist/docs/reference/geometry/RadialSizingOptions.md +2 -6
- package/dist/docs/reference/geometry/RectangleContourOptions.md +4 -7
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +3 -7
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +3 -7
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/RegionData.md +3 -7
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +3 -3
- package/dist/docs/reference/geometry/ResolvedGeometryResolution.md +71 -0
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +2 -2
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -2
- package/dist/docs/reference/geometry/SampleContourOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve3.md +3 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +3 -3
- package/dist/docs/reference/geometry/SideProfilePoint.md +3 -3
- package/dist/docs/reference/geometry/SideProfileSegment.md +3 -3
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/SplineOptions.md +69 -0
- package/dist/docs/reference/geometry/StarContourOptions.md +7 -7
- package/dist/docs/reference/geometry/StrokeCap.md +2 -6
- package/dist/docs/reference/geometry/StrokeJoin.md +2 -6
- package/dist/docs/reference/geometry/StrokeOptions.md +3 -7
- package/dist/docs/reference/geometry/SvgImportOptions.md +4 -4
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +2 -2
- package/dist/docs/reference/geometry/Transform2-type.md +3 -11
- package/dist/docs/reference/geometry/Transform2Data.md +3 -11
- package/dist/docs/reference/geometry/Transform2Input.md +3 -11
- package/dist/docs/reference/geometry/Transform3-type.md +4 -12
- package/dist/docs/reference/geometry/Transform3Data.md +3 -11
- package/dist/docs/reference/geometry/Transform3Input.md +6 -13
- package/dist/docs/reference/geometry/Vector2-type.md +3 -11
- package/dist/docs/reference/geometry/Vector2Data.md +3 -15
- package/dist/docs/reference/geometry/Vector2Input.md +3 -11
- package/dist/docs/reference/geometry/Vector3-type.md +27 -11
- package/dist/docs/reference/geometry/Vector3Data.md +3 -11
- package/dist/docs/reference/geometry/Vector3Input.md +3 -11
- package/dist/docs/reference/geometry/VectorTextLayout.md +2 -10
- package/dist/docs/reference/geometry/VectorTextMetrics.md +3 -11
- package/dist/docs/reference/geometry/anchor3.md +17 -26
- package/dist/docs/reference/geometry/anchorFrame3.md +6 -6
- package/dist/docs/reference/geometry/attachmentTransform3.md +8 -8
- package/dist/docs/reference/geometry/bounds2.md +6 -8
- package/dist/docs/reference/geometry/bounds3.md +4 -6
- package/dist/docs/reference/geometry/boundsCenter.md +2 -2
- package/dist/docs/reference/geometry/boundsSize.md +2 -2
- package/dist/docs/reference/geometry/boxAnchor3.md +3 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +9 -3
- package/dist/docs/reference/geometry/categories/curves-paths.md +24 -13
- package/dist/docs/reference/geometry/categories/immutable-data.md +40 -0
- package/dist/docs/reference/geometry/categories/pattern-placement.md +10 -4
- package/dist/docs/reference/geometry/categories/primitive-options.md +8 -13
- package/dist/docs/reference/geometry/categories/profiles-regions.md +11 -5
- package/dist/docs/reference/geometry/categories/resolution-errors.md +8 -1
- package/dist/docs/reference/geometry/categories/transforms-math.md +20 -51
- package/dist/docs/reference/geometry/categories/vector-import.md +7 -4
- package/dist/docs/reference/geometry/circleContour.md +3 -3
- package/dist/docs/reference/geometry/closeToAxis.md +7 -3
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +9 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +13 -6
- package/dist/docs/reference/geometry/contourContainsPoint.md +7 -3
- package/dist/docs/reference/geometry/cylinderAnchor3.md +5 -5
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +3 -3
- package/dist/docs/reference/geometry/distributeAlongPath.md +16 -11
- package/dist/docs/reference/geometry/ellipseContour.md +3 -3
- package/dist/docs/reference/geometry/fitBounds.md +10 -2
- package/dist/docs/reference/geometry/fitTextLayout.md +5 -5
- package/dist/docs/reference/geometry/frame3.md +66 -0
- package/dist/docs/reference/geometry/gridPatternTransforms.md +6 -6
- package/dist/docs/reference/geometry/immutableBuffer.md +5 -7
- package/dist/docs/reference/geometry/isGeometryError.md +2 -6
- package/dist/docs/reference/geometry/layoutRow.md +4 -2
- package/dist/docs/reference/geometry/linearPatternTransforms.md +6 -6
- package/dist/docs/reference/geometry/matchProfiles.md +5 -3
- package/dist/docs/reference/geometry/normalizeContour.md +8 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -3
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -3
- package/dist/docs/reference/geometry/path2.md +7 -7
- package/dist/docs/reference/geometry/path3.md +7 -7
- package/dist/docs/reference/geometry/pathPatternTransforms.md +12 -8
- package/dist/docs/reference/geometry/preflightSvgRegion.md +5 -5
- package/dist/docs/reference/geometry/radialPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/rectangleContour.md +3 -3
- package/dist/docs/reference/geometry/rectangleProfile.md +3 -4
- package/dist/docs/reference/geometry/regionArea.md +3 -3
- package/dist/docs/reference/geometry/regionBounds.md +6 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +3 -3
- package/dist/docs/reference/geometry/resamplePolyline2.md +7 -3
- package/dist/docs/reference/geometry/resamplePolyline3.md +7 -3
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +5 -5
- package/dist/docs/reference/geometry/resolveArcSegments.md +8 -6
- package/dist/docs/reference/geometry/resolveCircularSampling.md +2 -2
- package/dist/docs/reference/geometry/resolveCircularSegments.md +5 -3
- package/dist/docs/reference/geometry/{resolveExtrusionDivisions.md → resolveExtrusionSlices.md} +16 -15
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -3
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +3 -3
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -5
- package/dist/docs/reference/geometry/sampleContour.md +5 -5
- package/dist/docs/reference/geometry/sampleCurve2.md +7 -3
- package/dist/docs/reference/geometry/sampleCurve3.md +7 -3
- package/dist/docs/reference/geometry/sampleHelix.md +3 -3
- package/dist/docs/reference/geometry/sampleSideProfile.md +5 -5
- package/dist/docs/reference/geometry/sampleTextContours.md +3 -3
- package/dist/docs/reference/geometry/signedContourArea.md +5 -3
- package/dist/docs/reference/geometry/spline2.md +68 -0
- package/dist/docs/reference/geometry/spline3.md +62 -0
- package/dist/docs/reference/geometry/starContour.md +3 -3
- package/dist/docs/reference/geometry/strokeRegionData.md +8 -5
- package/dist/docs/reference/geometry/transform2.md +5 -7
- package/dist/docs/reference/geometry/transform3.md +23 -10
- package/dist/docs/reference/geometry/transformRegionData.md +7 -3
- package/dist/docs/reference/geometry/triangulateContour.md +6 -4
- package/dist/docs/reference/geometry/vector2.md +6 -8
- package/dist/docs/reference/geometry/vector3.md +8 -8
- package/dist/docs/reference/geometry.md +13 -18
- package/dist/docs/reference/{geometry → math}/AxisAngleRotation3.md +4 -5
- package/dist/docs/reference/math/IDENTITY_TRANSFORM3.md +20 -0
- package/dist/docs/reference/math/add2.md +38 -0
- package/dist/docs/reference/math/add3.md +46 -0
- package/dist/docs/reference/math/applyTransformDirection3.md +46 -0
- package/dist/docs/reference/math/applyTransformPoint3.md +44 -0
- package/dist/docs/reference/math/categories/tuple-matrix.md +67 -0
- package/dist/docs/reference/math/cross2.md +38 -0
- package/dist/docs/reference/math/cross3.md +44 -0
- package/dist/docs/reference/math/distance2.md +38 -0
- package/dist/docs/reference/math/distance3.md +38 -0
- package/dist/docs/reference/math/dot2.md +38 -0
- package/dist/docs/reference/math/dot3.md +44 -0
- package/dist/docs/reference/math/eulerTransform3.md +43 -0
- package/dist/docs/reference/math/inverseTransform3.md +36 -0
- package/dist/docs/reference/math/length2.md +32 -0
- package/dist/docs/reference/math/length3.md +32 -0
- package/dist/docs/reference/math/lerp2.md +46 -0
- package/dist/docs/reference/math/lerp3.md +46 -0
- package/dist/docs/reference/math/multiplyTransform3.md +46 -0
- package/dist/docs/reference/math/normalize2.md +45 -0
- package/dist/docs/reference/math/normalize3.md +45 -0
- package/dist/docs/reference/math/projectOntoPlane3.md +40 -0
- package/dist/docs/reference/math/rotate2.md +40 -0
- package/dist/docs/reference/math/rotationTransform3.md +56 -0
- package/dist/docs/reference/math/scale2.md +38 -0
- package/dist/docs/reference/math/scale3.md +44 -0
- package/dist/docs/reference/math/scaleTransform3.md +39 -0
- package/dist/docs/reference/math/subtract2.md +38 -0
- package/dist/docs/reference/math/subtract3.md +44 -0
- package/dist/docs/reference/math/transformDeterminant3.md +38 -0
- package/dist/docs/reference/math/translationTransform3.md +36 -0
- package/dist/docs/reference/math/validateRigidTransform3.md +38 -0
- package/dist/docs/reference/math/validateTransform3.md +48 -0
- package/dist/docs/reference/math.md +22 -0
- package/dist/docs/reference/{geometry → mechanical}/AcmeThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/Bevel.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/BevelSize.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ButtressPressureFlankSide.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ButtressThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleFit.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CompensatedThreadDiameters.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CustomThreadProfileSpec.md +5 -15
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearMeshKind.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearOutlineOptions.md +5 -10
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionOptions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionReport.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/InternalThreadCutterOptions.md +6 -13
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeBaseSpec.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeDimensions.md +4 -5
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeInterval.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSamplingOptions.md +5 -14
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSpec.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/METRIC_FASTENER_STANDARDS.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerSize.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerStandard.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricHexNutDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricSocketCapHeadDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/PRINTABLE_THREAD_FIT_POLICIES.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFit.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFitPolicy.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/RackPitchDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/RackPitchSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/SampledThreadHelices.md +4 -8
- package/dist/docs/reference/{geometry → mechanical}/SquareThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ThreadBevelOptions.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadCircularSegmentsOptions.md +5 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadCompensationOptions.md +4 -5
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndStyle.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndTreatmentOptions.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadHandedness.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadHelixOptions.md +5 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInEnvelope.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInShape.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfile-type.md +5 -17
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileBaseSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileSpec.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadRidgeOptions.md +7 -18
- package/dist/docs/reference/{geometry → mechanical}/ThreadRole.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidOptions.md +8 -15
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidPreflight.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutOptions.md +7 -14
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutPreflight.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutShape.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadedRodOptions.md +6 -13
- package/dist/docs/reference/{geometry → mechanical}/TrapezoidalThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/TriangularThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/categories/mechanical.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadDiameters.md +4 -4
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileAxially.md +12 -6
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileForFaceting.md +13 -3
- package/dist/docs/reference/{geometry → mechanical}/getMetricClearanceHoleDiameter.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/getMetricFastenerStandard.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/measureInternalCylindricalGearPairMotion.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/minimumCylindricalGearToothCountWithoutUndercut.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/preflightInternalThreadCutter.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedNut.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedRod.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGear.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGearPair.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveKnuckleHinge.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/resolvePrintableThreadFitPolicy.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveRackPitch.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveThreadCircularSegments.md +7 -5
- package/dist/docs/reference/{geometry → mechanical}/sampleCylindricalGearOutline.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleInternalCylindricalGearSpaceOutline.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleRackToothPath.md +10 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleThreadHelices.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/threadProfile.md +7 -3
- package/dist/docs/reference/mechanical.md +19 -0
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +128 -0
- package/dist/docs/reference/{geometry → mesh}/HeightfieldMeshLimits.md +5 -13
- package/dist/docs/reference/{geometry → mesh}/HeightfieldPreflight.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/ImmutableTriangleMesh.md +5 -17
- package/dist/docs/reference/mesh/LoftMeshStation.md +32 -0
- package/dist/docs/reference/mesh/MeshRenderOptions.md +3 -3
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationFallbackReason.md +4 -8
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationResult.md +4 -8
- package/dist/docs/reference/{geometry → mesh}/PlanarPatchQuality.md +4 -12
- package/dist/docs/reference/mesh/RenderMesh.md +19 -19
- package/dist/docs/reference/{geometry → mesh}/SolidMeshValidationOptions.md +4 -12
- package/dist/docs/reference/{geometry → mesh}/TriangleMesh.md +8 -12
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysis.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysisOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshInput.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshMeasurements.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityReport.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignature.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureOptions.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureTolerances.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshTopologyAnalysis.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshValidationOptions.md +4 -9
- package/dist/docs/reference/mesh/analyze.md +26 -18
- package/dist/docs/reference/mesh/analyzeQuality.md +12 -12
- package/dist/docs/reference/mesh/bounds.md +5 -6
- package/dist/docs/reference/mesh/categories/operations.md +37 -4
- package/dist/docs/reference/mesh/centroid.md +5 -6
- package/dist/docs/reference/mesh/extrude.md +21 -20
- package/dist/docs/reference/mesh/heightfield.md +8 -8
- package/dist/docs/reference/mesh/immutable.md +7 -5
- package/dist/docs/reference/mesh/join.md +7 -7
- package/dist/docs/reference/mesh/loft.md +19 -18
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +21 -21
- package/dist/docs/reference/mesh/preflightHeightfield.md +8 -8
- package/dist/docs/reference/mesh/preflightThreadSolid.md +22 -25
- package/dist/docs/reference/mesh/render.md +7 -5
- package/dist/docs/reference/mesh/reverse.md +7 -7
- package/dist/docs/reference/mesh/revolve.md +12 -14
- package/dist/docs/reference/mesh/signature.md +12 -12
- package/dist/docs/reference/mesh/sweep.md +96 -25
- package/dist/docs/reference/mesh/threadRidge.md +19 -18
- package/dist/docs/reference/mesh/threadSolid.md +23 -22
- package/dist/docs/reference/mesh/transform.md +8 -9
- package/dist/docs/reference/mesh/validate.md +11 -11
- package/dist/docs/reference/mesh/validateSolid.md +10 -10
- package/dist/docs/reference/mesh.md +8 -2
- package/dist/docs/reference/model/BoxEdge.md +23 -0
- package/dist/docs/reference/model/BoxEdgeSelection.md +27 -0
- package/dist/docs/reference/model/BoxEdgeTreatments.md +27 -0
- package/dist/docs/reference/{geometry → model}/BoxOptions.md +12 -12
- package/dist/docs/reference/model/CircleOptions.md +4 -5
- package/dist/docs/reference/model/CornerCutterOptions.md +93 -0
- package/dist/docs/reference/model/CornerCutterTreatment.md +53 -0
- package/dist/docs/reference/model/{HoleCutterOverrun.md → CutterOverrun.md} +8 -7
- package/dist/docs/reference/model/CylinderOptions.md +64 -0
- package/dist/docs/reference/model/DiagnosticOptions.md +2 -2
- package/dist/docs/reference/model/EdgeCutterOptions.md +129 -0
- package/dist/docs/reference/model/EllipseOptions.md +4 -5
- package/dist/docs/reference/model/EndTreatments.md +43 -0
- package/dist/docs/reference/model/ExtrudeOptions.md +153 -0
- package/dist/docs/reference/model/GenerateCallback.md +2 -2
- package/dist/docs/reference/model/GenerateContext.md +27 -3
- package/dist/docs/reference/model/GenerationDiagnostic.md +2 -2
- package/dist/docs/reference/model/GenerationError.md +2 -2
- package/dist/docs/reference/{geometry → model}/HeightfieldOptions.md +5 -23
- package/dist/docs/reference/model/HoleCutterOpening.md +27 -0
- package/dist/docs/reference/model/HoleCutterOptions.md +9 -22
- package/dist/docs/reference/model/HoleCutterRecess.md +5 -4
- package/dist/docs/reference/model/HullOptions.md +2 -3
- package/dist/docs/reference/model/ImmutableValue.md +2 -2
- package/dist/docs/reference/model/ImplicitOptions.md +3 -9
- package/dist/docs/reference/model/JoinOptions.md +2 -5
- package/dist/docs/reference/model/JoinTransition.md +2 -2
- package/dist/docs/reference/model/KnuckleHinge-type.md +2 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +2 -2
- package/dist/docs/reference/model/KnuckleHingeOptions.md +3 -5
- package/dist/docs/reference/model/KnuckleHingeWeb.md +2 -2
- package/dist/docs/reference/{geometry → model}/LoftCorrespondence.md +8 -11
- package/dist/docs/reference/{geometry → model}/LoftOptions.md +11 -16
- package/dist/docs/reference/model/LoftStation.md +4 -5
- package/dist/docs/reference/model/Memo.md +2 -2
- package/dist/docs/reference/model/ModelProgram.md +2 -2
- package/dist/docs/reference/model/PartDeclaration.md +4 -5
- package/dist/docs/reference/model/PartGeometry.md +3 -5
- package/dist/docs/reference/model/PartOptions.md +4 -5
- package/dist/docs/reference/model/PatternSource.md +4 -4
- package/dist/docs/reference/model/PlaneOptions.md +3 -7
- package/dist/docs/reference/model/PolygonOptions.md +2 -7
- package/dist/docs/reference/model/PrimitiveAttachment.md +50 -0
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +111 -0
- package/dist/docs/reference/model/RectangleOptions.md +21 -26
- package/dist/docs/reference/model/RegularPolygonOptions.md +4 -37
- package/dist/docs/reference/{geometry → model}/RevolveOptions.md +15 -24
- package/dist/docs/reference/model/Section.md +115 -53
- package/dist/docs/reference/model/SectionHullOptions.md +2 -3
- package/dist/docs/reference/model/SectionInspection.md +2 -6
- package/dist/docs/reference/model/SectionOffsetJoin.md +2 -2
- package/dist/docs/reference/model/SectionOffsetOptions.md +2 -3
- package/dist/docs/reference/model/Solid.md +24 -12
- package/dist/docs/reference/model/SolidInspection.md +2 -6
- package/dist/docs/reference/model/SolidSegmentHit.md +2 -6
- package/dist/docs/reference/model/SphereOptions.md +27 -0
- package/dist/docs/reference/model/StarOptions.md +21 -23
- package/dist/docs/reference/model/SvgOrigin.md +2 -2
- package/dist/docs/reference/model/SvgPathSectionOptions.md +3 -5
- package/dist/docs/reference/model/SvgSectionOptions.md +3 -6
- package/dist/docs/reference/model/SweepOptions.md +109 -0
- package/dist/docs/reference/model/SweepOrientation.md +119 -0
- package/dist/docs/reference/model/SweepTransformOptions.md +105 -0
- package/dist/docs/reference/model/TextSectionOptions.md +2 -7
- package/dist/docs/reference/{geometry → model}/TorusOptions.md +11 -10
- package/dist/docs/reference/model/TubeOptions.md +84 -0
- package/dist/docs/reference/model/box.md +11 -10
- package/dist/docs/reference/model/categories/boolean-operations.md +9 -3
- package/dist/docs/reference/model/categories/bounded-surfaces.md +13 -1
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +26 -7
- package/dist/docs/reference/model/categories/generation.md +11 -3
- package/dist/docs/reference/model/categories/hinges.md +7 -1
- package/dist/docs/reference/model/categories/mesh-inspection.md +7 -1
- package/dist/docs/reference/model/categories/primitives.md +34 -6
- package/dist/docs/reference/model/categories/sections.md +8 -2
- package/dist/docs/reference/model/categories/threads.md +8 -5
- package/dist/docs/reference/model/categories/transforms-placement.md +15 -10
- package/dist/docs/reference/model/circle.md +7 -3
- package/dist/docs/reference/model/cornerCutter.md +88 -0
- package/dist/docs/reference/model/cylinder.md +6 -5
- package/dist/docs/reference/model/edgeCutter.md +91 -0
- package/dist/docs/reference/model/ellipse.md +7 -3
- package/dist/docs/reference/model/extrude.md +29 -23
- package/dist/docs/reference/model/generate.md +4 -2
- package/dist/docs/reference/model/gridPattern.md +11 -4
- package/dist/docs/reference/model/heightfield.md +5 -5
- package/dist/docs/reference/model/holeCutter.md +26 -12
- package/dist/docs/reference/model/hull.md +2 -2
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/internalThreadCutter.md +32 -21
- package/dist/docs/reference/model/intersect.md +7 -3
- package/dist/docs/reference/model/join.md +6 -2
- package/dist/docs/reference/model/knuckleHinge.md +2 -3
- package/dist/docs/reference/model/linearPattern.md +11 -4
- package/dist/docs/reference/model/loft.md +28 -24
- package/dist/docs/reference/model/minkowskiSum.md +3 -3
- package/dist/docs/reference/model/pathPattern.md +17 -8
- package/dist/docs/reference/model/polygon.md +8 -3
- package/dist/docs/reference/model/radialPattern.md +11 -4
- package/dist/docs/reference/model/rectangle.md +11 -7
- package/dist/docs/reference/model/regularPolygon.md +7 -3
- package/dist/docs/reference/model/revolve.md +18 -12
- package/dist/docs/reference/model/solidFromMesh.md +10 -6
- package/dist/docs/reference/model/sphere.md +7 -6
- package/dist/docs/reference/model/star.md +11 -7
- package/dist/docs/reference/model/stroke.md +12 -8
- package/dist/docs/reference/model/svgPathSection.md +10 -4
- package/dist/docs/reference/model/svgSection.md +10 -4
- package/dist/docs/reference/model/sweep.md +102 -25
- package/dist/docs/reference/model/textSection.md +7 -3
- package/dist/docs/reference/model/threadRidge.md +16 -17
- package/dist/docs/reference/model/threadedNut.md +25 -22
- package/dist/docs/reference/model/threadedRod.md +21 -18
- package/dist/docs/reference/model/torus.md +13 -12
- package/dist/docs/reference/model/tube.md +6 -5
- package/dist/docs/reference/model/union.md +7 -3
- package/dist/docs/reference/model.md +10 -5
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +2 -2
- package/dist/docs/reference/text/VectorFont.md +38 -34
- package/dist/docs/reference/text/VectorFontOptions.md +2 -2
- package/dist/docs/reference/{geometry → text}/VectorTextArcBaseline.md +2 -11
- package/dist/docs/reference/{geometry → text}/VectorTextLayoutOptions.md +3 -11
- package/dist/docs/reference/{geometry → text}/VectorTextOptions.md +2 -10
- package/dist/docs/reference/text/categories/font-preparation.md +10 -1
- package/dist/docs/reference/text/prepareVectorFont.md +4 -2
- package/dist/docs/reference/text.md +7 -1
- package/dist/engine/execution.js +5 -3
- package/dist/engine/finalization.js +5 -5
- package/dist/engine/index.js +9 -4
- package/dist/engine/native/adapter.js +1 -1
- package/dist/engine/native/construction-mesh.js +15 -5
- package/dist/engine/native/context.js +10 -7
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +2 -2
- package/dist/engine/native/mesh-observation.js +1 -1
- package/dist/engine/native/regions.js +44 -24
- package/dist/engine/native/scoped-primitives.js +3 -3
- package/dist/engine/native/scoped-threads.js +1 -13
- package/dist/engine/native/threads.js +2 -2
- package/dist/engine/native/transforms.js +2 -2
- package/dist/engine/operations/construction.js +77 -27
- package/dist/engine/operations/context.js +13 -6
- package/dist/engine/operations/cutters.js +112 -0
- package/dist/engine/operations/environment.js +2 -2
- package/dist/engine/operations/extrusion-finishing.js +42 -16
- package/dist/engine/operations/hole-cutter.js +125 -114
- package/dist/engine/operations/join-collar-profile.js +19 -19
- package/dist/engine/operations/join.js +86 -73
- package/dist/engine/operations/knuckle-hinge.js +25 -20
- package/dist/engine/operations/loft.js +9 -16
- package/dist/engine/operations/mechanical.js +4 -15
- package/dist/engine/operations/primitives/anchors.js +23 -19
- package/dist/engine/operations/primitives/construction.js +38 -12
- package/dist/engine/operations/primitives/correspondence.js +2 -2
- package/dist/engine/operations/primitives/profile-mesh.js +41 -80
- package/dist/engine/operations/primitives/profiles.js +5 -5
- package/dist/engine/operations/sections.js +8 -8
- package/dist/engine/operations/transforms.js +19 -39
- package/dist/engine/placement.js +3 -3
- package/dist/engine/recipe-realization.js +86 -30
- package/dist/engine/session/declarations.js +98 -0
- package/dist/engine/session/dependencies.js +81 -28
- package/dist/engine/session/graph.js +39 -137
- package/dist/engine/session/parameters.js +78 -0
- package/dist/engine/session/session.js +2 -2
- package/dist/engine/session/snapshot-cache.js +2 -2
- package/dist/engine/shape-anchors.js +13 -6
- package/dist/export/3mf.js +9 -2
- package/dist/export/capture.js +10 -6
- package/dist/export/glb.js +7 -2
- package/dist/export/stl.js +21 -6
- package/dist/geometry/{bounds.js → bounds/operations.js} +3 -1
- package/dist/geometry/{bounds-value.js → bounds/value.js} +20 -16
- package/dist/geometry/curves/evaluation.js +5 -6
- package/dist/geometry/curves/sampling.js +30 -6
- package/dist/geometry/{extrusion.js → extrusion/controls.js} +58 -35
- package/dist/geometry/extrusion/mesh.js +92 -0
- package/dist/geometry/extrusion/stations.js +35 -0
- package/dist/geometry/extrusion/twisted-chamfer.js +265 -0
- package/dist/geometry/immutable-buffer.js +7 -1
- package/dist/geometry/index.js +24 -32
- package/dist/geometry/{model-limits.js → limits.js} +1 -1
- package/dist/geometry/loft/{loft-correspondence.js → correspondence.js} +31 -20
- package/dist/geometry/loft/{loft-geometry.js → geometry.js} +15 -17
- package/dist/geometry/loft/mesh.js +53 -0
- package/dist/geometry/loft/{loft-options.js → options.js} +13 -11
- package/dist/geometry/loft/{loft-simple-mesh.js → simple-mesh.js} +26 -17
- package/dist/geometry/math/interpolation.js +9 -0
- package/dist/geometry/math/vector-value.js +12 -3
- package/dist/geometry/math/vector2.js +18 -5
- package/dist/geometry/math/vector3.js +28 -5
- package/dist/geometry/math-api.js +4 -0
- package/dist/geometry/mechanical/gear-motion.js +7 -5
- package/dist/geometry/mechanical/gears.js +21 -4
- package/dist/geometry/mechanical/knuckle-hinge.js +7 -5
- package/dist/geometry/mechanical/threads/fit.js +8 -2
- package/dist/geometry/mechanical/threads/helices.js +4 -2
- package/dist/geometry/mechanical/threads/mesh-plan.js +4 -2
- package/dist/geometry/mechanical/threads/mesh.js +12 -9
- package/dist/geometry/mechanical/threads/profiles.js +18 -4
- package/dist/geometry/mechanical/threads/solids.js +11 -2
- package/dist/geometry/mechanical-api.js +10 -0
- package/dist/geometry/mesh/{mesh-centroid.js → centroid.js} +2 -1
- package/dist/geometry/{heightfield.js → mesh/heightfield.js} +9 -5
- package/dist/geometry/{join-geometry.js → mesh/join-layers.js} +53 -59
- package/dist/geometry/mesh/{mesh.js → operations.js} +11 -18
- package/dist/geometry/mesh/{mesh-planar.js → planar.js} +8 -18
- package/dist/geometry/mesh/{mesh-quality.js → quality.js} +10 -42
- package/dist/geometry/mesh/{mesh-render.js → render-buffers.js} +22 -7
- package/dist/geometry/mesh/{mesh-signature.js → signature.js} +1 -1
- package/dist/geometry/mesh/{mesh-solid-intersections.js → solid-intersections.js} +2 -0
- package/dist/geometry/mesh/{mesh-solid.js → solid.js} +4 -4
- package/dist/geometry/mesh/triangle-quality.js +42 -0
- package/dist/geometry/mesh/winding.js +11 -0
- package/dist/geometry/{numeric.js → mesh/write-vertex.js} +1 -1
- package/dist/geometry/mesh-api.js +12 -11
- package/dist/geometry/paths/distribution.js +43 -0
- package/dist/geometry/paths/editing.js +76 -0
- package/dist/geometry/paths/frames.js +16 -11
- package/dist/geometry/paths/helix.js +1 -1
- package/dist/geometry/paths/resampling.js +46 -61
- package/dist/geometry/paths/{planar.js → rounding.js} +8 -67
- package/dist/geometry/paths/spline.js +116 -0
- package/dist/geometry/paths/traversal.js +107 -0
- package/dist/geometry/paths/{path-value.js → value.js} +97 -18
- package/dist/geometry/patterns/placements.js +20 -29
- package/dist/geometry/{patterns.js → patterns/transforms.js} +11 -7
- package/dist/geometry/primitives/cutters.js +70 -0
- package/dist/geometry/{cylinder.js → primitives/cylinder.js} +4 -4
- package/dist/geometry/{edge-finishing.js → primitives/edges.js} +5 -5
- package/dist/geometry/{primitive-resolvers.js → primitives/resolvers.js} +9 -9
- package/dist/geometry/primitives/sampling.js +41 -0
- package/dist/geometry/profiles/contour.js +19 -7
- package/dist/geometry/profiles/{match-profiles.js → matching.js} +9 -6
- package/dist/geometry/profiles/primitives/circle.js +1 -1
- package/dist/geometry/profiles/primitives/ellipse.js +2 -2
- package/dist/geometry/profiles/primitives/rectangle.js +8 -8
- package/dist/geometry/profiles/primitives/star.js +1 -1
- package/dist/geometry/profiles/side-profile.js +8 -5
- package/dist/geometry/profiles/validation.js +1 -1
- package/dist/geometry/{polygon-clipping.js → regions/clipping.js} +1 -1
- package/dist/geometry/{convex-offset.js → regions/convex-offset.js} +1 -1
- package/dist/geometry/{region-offset.js → regions/offset.js} +7 -5
- package/dist/geometry/{regions.js → regions/operations.js} +59 -22
- package/dist/geometry/{stroke-path.js → regions/stroke.js} +46 -20
- package/dist/geometry/{loft/loft-triangulation.js → regions/triangulation.js} +35 -2
- package/dist/geometry/revolve/{revolve-mesh.js → mesh.js} +9 -10
- package/dist/geometry/{circular-sampling.js → sampling/circular.js} +3 -3
- package/dist/geometry/{sampling-limits.js → sampling/limits.js} +6 -2
- package/dist/geometry/{resolution.js → sampling/resolution.js} +15 -14
- package/dist/geometry/svg/fill.js +4 -3
- package/dist/geometry/svg/import.js +47 -64
- package/dist/geometry/svg/path.js +3 -3
- package/dist/geometry/sweep/closed.js +55 -0
- package/dist/geometry/sweep/mesh.js +30 -0
- package/dist/geometry/{sweeps/sweep-open.js → sweep/open.js} +9 -24
- package/dist/geometry/{sweeps → sweep}/orientation.js +14 -11
- package/dist/geometry/sweep/seam.js +30 -0
- package/dist/geometry/{sweeps → sweep}/stations.js +75 -10
- package/dist/geometry/sweep/transforms.js +30 -0
- package/dist/geometry/{sweeps → sweep}/validation.js +4 -4
- package/dist/geometry/{text-contours.js → text/contours.js} +3 -3
- package/dist/geometry/{text-fitting.js → text/fitting.js} +4 -3
- package/dist/geometry/text/layout.js +1 -0
- package/dist/geometry/{transform3.js → transforms/affine3.js} +31 -46
- package/dist/geometry/{anchors.js → transforms/anchors.js} +43 -24
- package/dist/geometry/{transform-geometry.js → transforms/apply.js} +8 -5
- package/dist/geometry/{transform2.js → transforms/dimensions.js} +23 -19
- package/dist/geometry/transforms/frame.js +64 -0
- package/dist/geometry/{transform-matrix.js → transforms/matrix-input.js} +8 -1
- package/dist/geometry/{transform-value.js → transforms/value.js} +29 -11
- package/dist/index.js +3 -9
- package/dist/model/cutters.js +1 -0
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +2 -0
- package/dist/model/immutable-generation-data.js +2 -0
- package/dist/model/operations.js +130 -94
- package/dist/model/recipe-declaration.js +5 -7
- package/dist/text/index.js +3 -0
- package/dist/text/vector-text-layout.js +1 -0
- package/package.json +15 -17
- package/dist/api/export-3mf.d.ts +0 -2
- package/dist/api/export-glb.d.ts +0 -2
- package/dist/api/export-stl.d.ts +0 -2
- package/dist/docs/reference/geometry/BoxEdge.md +0 -17
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +0 -24
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +0 -25
- package/dist/docs/reference/geometry/CylinderOptions.md +0 -63
- package/dist/docs/reference/geometry/EndTreatments.md +0 -44
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +0 -144
- package/dist/docs/reference/geometry/ExtrudeOptions.md +0 -156
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +0 -25
- package/dist/docs/reference/geometry/LoftMeshStation.md +0 -41
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +0 -39
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +0 -114
- package/dist/docs/reference/geometry/SphereOptions.md +0 -25
- package/dist/docs/reference/geometry/SweepOptions.md +0 -127
- package/dist/docs/reference/geometry/SweepOrientation.md +0 -127
- package/dist/docs/reference/geometry/TubeOptions.md +0 -72
- package/dist/docs/reference/geometry/add2.md +0 -43
- package/dist/docs/reference/geometry/add3.md +0 -49
- package/dist/docs/reference/geometry/applyTransformDirection3.md +0 -52
- package/dist/docs/reference/geometry/applyTransformPoint3.md +0 -50
- package/dist/docs/reference/geometry/categories/meshes.md +0 -68
- package/dist/docs/reference/geometry/composeTransform3.md +0 -51
- package/dist/docs/reference/geometry/cross2.md +0 -43
- package/dist/docs/reference/geometry/cross3.md +0 -49
- package/dist/docs/reference/geometry/distance2.md +0 -43
- package/dist/docs/reference/geometry/distance3.md +0 -43
- package/dist/docs/reference/geometry/dot2.md +0 -43
- package/dist/docs/reference/geometry/dot3.md +0 -49
- package/dist/docs/reference/geometry/eulerTransform3.md +0 -49
- package/dist/docs/reference/geometry/frameTransform3.md +0 -55
- package/dist/docs/reference/geometry/inverseTransform3.md +0 -41
- package/dist/docs/reference/geometry/length2.md +0 -37
- package/dist/docs/reference/geometry/length3.md +0 -37
- package/dist/docs/reference/geometry/lerp2.md +0 -49
- package/dist/docs/reference/geometry/lerp3.md +0 -49
- package/dist/docs/reference/geometry/normalize2.md +0 -46
- package/dist/docs/reference/geometry/normalize3.md +0 -46
- package/dist/docs/reference/geometry/projectOntoPlane3.md +0 -43
- package/dist/docs/reference/geometry/rotate2.md +0 -43
- package/dist/docs/reference/geometry/rotationTransform3.md +0 -60
- package/dist/docs/reference/geometry/scale2.md +0 -43
- package/dist/docs/reference/geometry/scale3.md +0 -49
- package/dist/docs/reference/geometry/scaleTransform3.md +0 -45
- package/dist/docs/reference/geometry/subtract2.md +0 -43
- package/dist/docs/reference/geometry/subtract3.md +0 -49
- package/dist/docs/reference/geometry/transformDeterminant3.md +0 -43
- package/dist/docs/reference/geometry/translationTransform3.md +0 -42
- package/dist/docs/reference/geometry/validateRigidTransform3.md +0 -41
- package/dist/docs/reference/geometry/validateTransform3.md +0 -54
- package/dist/docs/reference/model/Profile.md +0 -30
- package/dist/docs/reference/model/categories/explicit-profiles.md +0 -21
- package/dist/docs/reference/model/matchProfiles.md +0 -48
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +0 -93
- package/dist/docs/reference/model/preflightThreadedNut.md +0 -109
- package/dist/docs/reference/model/preflightThreadedRod.md +0 -93
- package/dist/engine/operations/patterns.js +0 -47
- package/dist/geometry/loft/loft.js +0 -105
- package/dist/geometry/mechanical/index.js +0 -14
- package/dist/geometry/primitive-resolution.js +0 -20
- package/dist/geometry/svg/index.js +0 -1
- package/dist/geometry/sweeps/options.js +0 -29
- package/dist/geometry/sweeps/sweep-closed.js +0 -96
- package/dist/geometry/sweeps/sweep-mesh.js +0 -32
- /package/dist/geometry/mechanical/{standards.js → fastener-standards.js} +0 -0
- /package/dist/geometry/mesh/{mesh-edge-table.js → edge-table.js} +0 -0
- /package/dist/geometry/mesh/{mesh-types.js → types.js} +0 -0
- /package/dist/geometry/mesh/{mesh-view-cache.js → view-cache.js} +0 -0
- /package/dist/geometry/{primitive-options.js → primitives/options.js} +0 -0
- /package/dist/geometry/{text-layout.js → sweep/options.js} +0 -0
package/dist/api/text.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
1
|
+
import type {
|
|
2
|
+
Bounds2Data,
|
|
3
|
+
Vector2Data,
|
|
4
|
+
VectorTextLayout,
|
|
5
|
+
VectorTextMetrics,
|
|
6
|
+
} from "@metamesh/modeling/geometry";
|
|
8
7
|
|
|
9
8
|
/** Maximum input font size in bytes, checked before parsing or shaping untrusted font data. */
|
|
10
9
|
export declare const MAX_VECTOR_FONT_BYTES: number;
|
|
@@ -13,6 +12,8 @@ export declare const MAX_VECTOR_FONT_BYTES: number;
|
|
|
13
12
|
* Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here.
|
|
14
13
|
* Argument and resource failures use GeometryError; parser and decoder exceptions propagate unchanged.
|
|
15
14
|
*
|
|
15
|
+
* @param bytes - Non-empty font bytes, at most 16 MiB; copied before parsing.
|
|
16
|
+
*
|
|
16
17
|
* @example Prepare a label before building geometry
|
|
17
18
|
* ```ts
|
|
18
19
|
* async function prepareLabel(fontBytes: Uint8Array) {
|
|
@@ -26,25 +27,34 @@ export declare function prepareVectorFont(
|
|
|
26
27
|
options?: VectorFontOptions,
|
|
27
28
|
): Promise<VectorFont>;
|
|
28
29
|
|
|
29
|
-
/** A two-dimensional Cartesian vector or point. */
|
|
30
|
-
export declare type Vector2Data = readonly [x: number, y: number];
|
|
31
|
-
|
|
32
30
|
/**
|
|
33
31
|
* A prepared font owns its parsed bytes; keep handles local to their Worker or invocation.
|
|
34
32
|
* Invalid arguments and bounded-work failures use GeometryError; unexpected dependency errors propagate.
|
|
35
33
|
*/
|
|
36
34
|
export declare interface VectorFont {
|
|
37
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Shape horizontal lines or one circular line, including blank text.
|
|
37
|
+
*
|
|
38
|
+
* @param text - Up to 512 UTF-16 code units, across at most 16 lines.
|
|
39
|
+
*/
|
|
38
40
|
readonly layout: (
|
|
39
41
|
text: string,
|
|
40
42
|
options: VectorTextLayoutOptions,
|
|
41
43
|
) => VectorTextLayout;
|
|
42
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
46
|
+
*
|
|
47
|
+
* @param text - Same limits as {@link VectorFont.layout}.
|
|
48
|
+
*/
|
|
43
49
|
readonly measure: (
|
|
44
50
|
text: string,
|
|
45
51
|
options: VectorTextLayoutOptions,
|
|
46
52
|
) => VectorTextMetrics;
|
|
47
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Serialize visible horizontal or circular outlines as path-only SVG in millimetres, bounded to 256 KiB.
|
|
55
|
+
*
|
|
56
|
+
* @param text - Same limits as {@link VectorFont.layout}; blank outlines are rejected.
|
|
57
|
+
*/
|
|
48
58
|
readonly toSvg: (text: string, options: VectorTextLayoutOptions) => string;
|
|
49
59
|
}
|
|
50
60
|
|
|
@@ -66,19 +76,7 @@ export declare interface VectorTextArcBaseline {
|
|
|
66
76
|
readonly direction?: "clockwise" | "counterclockwise";
|
|
67
77
|
}
|
|
68
78
|
|
|
69
|
-
/**
|
|
70
|
-
* Immutable vector layout with no browser, font parser, or kernel ownership.
|
|
71
|
-
*/
|
|
72
|
-
export declare interface VectorTextLayout {
|
|
73
|
-
/** Nonzero-filled path data in millimetres, positive Y upward; empty for text with no ink. */
|
|
74
|
-
readonly paths: readonly string[];
|
|
75
|
-
/** Exact measurements of these paths and their logical text layout. */
|
|
76
|
-
readonly metrics: VectorTextMetrics;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping.
|
|
81
|
-
*/
|
|
79
|
+
/** Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping. */
|
|
82
80
|
export declare interface VectorTextLayoutOptions extends VectorTextOptions {
|
|
83
81
|
/** Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left. */
|
|
84
82
|
readonly align?: "left" | "center" | "right";
|
|
@@ -90,24 +88,6 @@ export declare interface VectorTextLayoutOptions extends VectorTextOptions {
|
|
|
90
88
|
readonly verticalAlign?: "baseline" | "top" | "center" | "bottom";
|
|
91
89
|
}
|
|
92
90
|
|
|
93
|
-
/** Text measurements from the same immutable layout that supplies geometry and SVG outlines. */
|
|
94
|
-
export declare interface VectorTextMetrics {
|
|
95
|
-
/** Visible curve bounds after alignment, or null when the text has no ink. */
|
|
96
|
-
readonly bounds: Bounds2Data | null;
|
|
97
|
-
/** Unaligned logical advance and negative baseline displacement in mm; arcs retain [arc length, 0]. */
|
|
98
|
-
readonly advance: readonly [number, number];
|
|
99
|
-
/** Maximum logical line advance in millimetres, including spaces; arc length on circular baselines. */
|
|
100
|
-
readonly logicalWidth: number;
|
|
101
|
-
/** Selected font's ascender distance above a baseline in millimetres, independent of the text. */
|
|
102
|
-
readonly ascent: number;
|
|
103
|
-
/** Selected font's descender distance below a baseline in millimetres, a non-negative value. */
|
|
104
|
-
readonly descent: number;
|
|
105
|
-
/** Actual distance between baselines in millimetres. */
|
|
106
|
-
readonly lineHeight: number;
|
|
107
|
-
/** Number of lines, including empty and trailing lines; empty text occupies one line. */
|
|
108
|
-
readonly lineCount: number;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
91
|
/** Shaping controls for a prepared exact font face; all lengths are in millimetres. */
|
|
112
92
|
export declare interface VectorTextOptions {
|
|
113
93
|
/** Em size in millimetres, greater than zero and at most 10000; not the visible glyph height. */
|
|
@@ -1,44 +1,78 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Choose imports and execution
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Find the right Modeling module and understand which operations need a host engine.
|
|
4
4
|
|
|
5
|
-
Modeling
|
|
6
|
-
|
|
7
|
-
your standalone engine produce the finished result.
|
|
5
|
+
Use the root Modeling module to build shapes, then reach for a focused geometry module when you
|
|
6
|
+
need calculations, custom boundaries, or mesh buffers.
|
|
8
7
|
|
|
9
|
-
## Choose the representation
|
|
10
8
|
|
|
11
|
-
| You need | Use |
|
|
12
|
-
| ------------------------------------------------------ | -------------------------------- |
|
|
13
|
-
| Filled material for Booleans, extrusion, or revolution | A `Section` or `Solid` |
|
|
14
|
-
| Sampled coordinates and traversal queries | A `Path2`, `Path3`, or `Contour` |
|
|
15
|
-
| Matching landmarks across cross sections | An identified `Profile` family |
|
|
16
|
-
| Triangle buffers for a renderer or mesh algorithm | A `TriangleMesh` |
|
|
17
9
|
|
|
18
|
-
|
|
19
|
-
plain interchange data, and conversion between them. [Placement](transforms-and-placement.md)
|
|
20
|
-
covers vectors, transforms, anchors, patterns, and bounds. [Resolution and inspection](resolution-and-inspection.md)
|
|
21
|
-
explains sampling, preflight guarantees, and evaluated measurements.
|
|
10
|
+
**Build a recipe, then choose its host**
|
|
22
11
|
|
|
23
|
-
|
|
12
|
+
The same shapes work in Studio, the CLI, and your application. Modeling describes the material;
|
|
13
|
+
the host evaluates it and delivers the result.
|
|
24
14
|
|
|
25
|
-
- [`@metamesh/modeling`](../reference/model.md): shapes, Booleans, construction, and generation programs.
|
|
26
|
-
- [`@metamesh/modeling/geometry`](../reference/geometry.md): pure paths, profiles, transforms, and calculations.
|
|
27
|
-
- [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md): triangle mesh construction, processing, and inspection.
|
|
28
|
-
- [`@metamesh/modeling/engine`](../reference/engine.md): standalone execution and finalization.
|
|
29
|
-
- [`@metamesh/modeling/export`](../reference/export.md): renderer-independent STL, 3MF, and GLB export.
|
|
30
|
-
- [`@metamesh/modeling/text`](../reference/text.md): exact font preparation and vector layouts.
|
|
31
15
|
|
|
32
|
-
Constructing and combining ordinary recipes doesn't need an engine. Geometry observations run
|
|
33
|
-
inside synchronous generation. The host owns evaluation, prepared services, and native resources;
|
|
34
|
-
[inspect the result](resolution-and-inspection.md#lifecycle-and-inspection) before relying
|
|
35
|
-
on its dimensions.
|
|
36
16
|
|
|
37
|
-
##
|
|
17
|
+
## Import by the work you are doing
|
|
38
18
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
19
|
+
| Your task | Import | What it provides |
|
|
20
|
+
| ------------------------------------------------ | ---------------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
21
|
+
| Build a part | [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, construction, Booleans, and generation |
|
|
22
|
+
| Calculate geometry or placement | [`@metamesh/modeling/geometry`](../reference/geometry.md) | Fluent vectors, bounds, transforms, frames, paths, profiles, and layout |
|
|
23
|
+
| Work directly with coordinate tuples or matrices | [`@metamesh/modeling/geometry/math`](../reference/math.md) | Numerical kernels for data processing and interoperability |
|
|
24
|
+
| Design a mechanical feature | [`@metamesh/modeling/geometry/mechanical`](../reference/mechanical.md) | Gear and thread calculations, fit, standards, and mechanical preflight |
|
|
25
|
+
| Construct or inspect triangle buffers | [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md) | Pure mesh construction, processing, and analysis |
|
|
43
26
|
|
|
44
|
-
|
|
27
|
+
Start with shapes and fluent values for ordinary model authoring. Import tuple arithmetic only
|
|
28
|
+
when your calculation needs it; there is no need to turn every coordinate into a fluent value.
|
|
29
|
+
Mechanical helpers resolve dimensions and geometry; root factories such as `threadedRod` create
|
|
30
|
+
Solid recipes from mechanical options.
|
|
31
|
+
|
|
32
|
+
The [values guide](geometry-values.md) explains how these representations fit together.
|
|
33
|
+
Each public function and type has one import home, shown on its API reference page. Shared
|
|
34
|
+
options can belong to a different module from the operation that consumes them: `BoxOptions`
|
|
35
|
+
comes from the root, `GridPatternOptions` from `/geometry`, and `ThreadedRodOptions` from
|
|
36
|
+
`/geometry/mechanical`. Recipe constructors and pure helpers reuse those shared contracts.
|
|
37
|
+
|
|
38
|
+
## Describing a shape does not evaluate it
|
|
39
|
+
|
|
40
|
+
Factories such as `box` and `rectangle`, Boolean methods, and transforms create immutable recipes.
|
|
41
|
+
You can declare them before an engine exists and reuse ordinary recipes across runs. Changing a
|
|
42
|
+
recipe produces a new value; it leaves the original available for reuse.
|
|
43
|
+
|
|
44
|
+
Pure geometry calculations also run without an engine. This includes vector arithmetic, path
|
|
45
|
+
queries, profile matching, mechanical calculations, and functions in the mesh module.
|
|
46
|
+
`mesh.extrude(...)` creates triangle buffers directly; `section.extrude(...)` describes a Solid
|
|
47
|
+
that the host will evaluate.
|
|
48
|
+
|
|
49
|
+
Operations that **observe a shape** need active synchronous generation:
|
|
50
|
+
|
|
51
|
+
- `shape.inspect()` measures evaluated material.
|
|
52
|
+
- `shape.anchor(name)` and `shape.components()` resolve evaluated placement or topology.
|
|
53
|
+
- `solid.toMesh()` and `section.toRegionData()` extract evaluated geometry.
|
|
54
|
+
|
|
55
|
+
The host owns native resources and cleanup. Don't initialize a kernel or delete individual shapes
|
|
56
|
+
inside a model. Read [resolution and inspection](resolution-and-inspection.md) for
|
|
57
|
+
measurement, session ownership, and preflight guarantees.
|
|
58
|
+
|
|
59
|
+
## Choose the host once
|
|
60
|
+
|
|
61
|
+
| You are building | Start here | Who runs the model? |
|
|
62
|
+
| ---------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
63
|
+
| A model with editable controls in Studio | [First code Project](https://metamesh.studio/docs/develop/code-projects) | Studio supplies `@metamesh/project`, controls, services, preview, and export |
|
|
64
|
+
| A local TypeScript model | [Standalone model](standalone-model.md) | The CLI checks, runs, and inspects your model |
|
|
65
|
+
| An application that hosts models | [Engine hosting](hosting.md) | Your application initializes the engine and owns sessions and delivery |
|
|
66
|
+
|
|
67
|
+
The geometry operations stay the same across hosts. Setup and generation imports differ, so use
|
|
68
|
+
the entry point shown by the workflow you chose. Projects in Studio do not install npm packages.
|
|
69
|
+
|
|
70
|
+
Standalone hosts use [`@metamesh/modeling/engine`](../reference/engine.md) for execution,
|
|
71
|
+
[`@metamesh/modeling/export`](../reference/export.md) for STL, 3MF, or GLB serialization, and
|
|
72
|
+
optionally [`@metamesh/modeling/text`](../reference/text.md) to prepare exact fonts. The
|
|
73
|
+
[hosting guide](hosting.md) owns installation and lifecycle setup.
|
|
74
|
+
|
|
75
|
+
## Build a visible result
|
|
76
|
+
|
|
77
|
+
Continue with [modeling fundamentals](fundamentals.md) to combine your first
|
|
78
|
+
solids, or choose a [worked technique](recipes.md) for the part you want to make.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Export completed parts
|
|
2
|
+
|
|
3
|
+
Serialize one completed result as 3MF, STL, or GLB, preserving its placement and reporting format limitations.
|
|
4
|
+
|
|
5
|
+
Use `@metamesh/modeling/export` when your application has completed part geometry to save or deliver.
|
|
6
|
+
Start with [a working host](hosting.md#build-and-export-a-plate) if you have not generated
|
|
7
|
+
a result yet. For Studio's download interface, use [Export a model](https://metamesh.studio/docs/use/export-3mf).
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
**Export works from the completed result**
|
|
12
|
+
|
|
13
|
+
No running engine or renderer is needed. Serialize `model.parts`, including after its session
|
|
14
|
+
closes, without evaluating the source again.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Serialize completed parts
|
|
19
|
+
|
|
20
|
+
Import `export3mf`, `exportStl`, or `exportGlb` from `@metamesh/modeling/export`. Every exporter accepts completed parts with local
|
|
21
|
+
`geometry`, an optional placement transform, and optional display color and material identity.
|
|
22
|
+
|
|
23
|
+
This helper accepts a completed engine result and requests solid-mesh validation before writing 3MF:
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
import type { ModelResult } from "@metamesh/modeling/engine";
|
|
29
|
+
import { export3mf, type ExportedFile } from "@metamesh/modeling/export";
|
|
30
|
+
|
|
31
|
+
export function exportAssembly(model: ModelResult): Promise<ExportedFile> {
|
|
32
|
+
return export3mf(model.parts, { name: "Assembly", meshValidation: "solid" });
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
Call `await exportAssembly(model)` and save or download its returned `bytes`. Review `diagnostics`
|
|
39
|
+
for expected format losses; invalid inputs and failed delivery reject.
|
|
40
|
+
|
|
41
|
+
The result contains `bytes: Uint8Array`, `mediaType`, `extension`, `byteLength`, and structured
|
|
42
|
+
`diagnostics`. The host chooses the filename and saves or downloads the bytes. Resolve selected
|
|
43
|
+
parts and appearance overrides before exporting so the file belongs to one captured revision.
|
|
44
|
+
|
|
45
|
+
## Choose a format
|
|
46
|
+
|
|
47
|
+
Inputs use millimetres and Z-up coordinates. Every writer preserves the supplied physical sampling.
|
|
48
|
+
|
|
49
|
+
| Format | Coordinates | What it preserves |
|
|
50
|
+
| ------- | ------------------------------- | -------------------------------------------------------------------------------------- |
|
|
51
|
+
| **3MF** | Millimetres, Z-up | Named manufacturing parts, placement, colors, and explicit material identities |
|
|
52
|
+
| **STL** | Placed triangles in millimetres | Triangle geometry; diagnostics report lost names, appearance, and material assignments |
|
|
53
|
+
| **GLB** | Metres, Y-up | Named display parts, shared geometry, placement, colors, and crease-aware shading |
|
|
54
|
+
|
|
55
|
+
## Keep color and material identity separate
|
|
56
|
+
|
|
57
|
+
Use explicit `materialId` values with `options.materials` when material identity matters. Two
|
|
58
|
+
materials may share the same RGB value and remain distinct. Per-part display color overrides do
|
|
59
|
+
not change the selected material identity. 3MF carries portable material names and standard
|
|
60
|
+
Materials-extension color groups separately; assigned parts combine those properties with
|
|
61
|
+
`multiproperties`. Slicer support for those properties varies. Full slicer projects and device-specific
|
|
62
|
+
configuration require a separate application adapter.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
**Portable materials describe intent**
|
|
67
|
+
|
|
68
|
+
A material ID and display color travel with supported output. Your downstream application still
|
|
69
|
+
chooses printer profiles, filament slots, and device settings.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## Set validation and output limits
|
|
74
|
+
|
|
75
|
+
Exports have their own input and output ceilings through `options.limits`; they do not inherit an
|
|
76
|
+
engine's policy. `meshValidation: "solid"` requests the bounded geometric checks in addition to
|
|
77
|
+
the format's structural requirements. Pass an `AbortSignal` to cancel bounded work.
|
|
78
|
+
|
|
79
|
+
## Stream large output
|
|
80
|
+
|
|
81
|
+
For large output, `write3mf(parts, sink, options)`, `writeStl`, and `writeGlb` await each sink write
|
|
82
|
+
before continuing and return metadata and diagnostics without collecting the complete output.
|
|
83
|
+
Browser applications own Worker execution; an async function alone does not move CPU work off
|
|
84
|
+
the UI thread.
|
|
85
|
+
|
|
86
|
+
Use the [Export API reference](../reference/export.md) for serialization options,
|
|
87
|
+
the [Engine API reference](../reference/engine.md) for execution, and
|
|
88
|
+
[Modeling guides](https://metamesh.studio/docs/modeling) to choose geometry operations.
|
|
@@ -27,7 +27,8 @@ another weight.
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
```ts
|
|
30
|
-
import {
|
|
30
|
+
import { type VectorTextLayout } from "@metamesh/modeling/geometry";
|
|
31
|
+
import { prepareVectorFont } from "@metamesh/modeling/text";
|
|
31
32
|
|
|
32
33
|
export async function makeLabelLayout(fontBytes: Uint8Array): Promise<{
|
|
33
34
|
readonly layout: VectorTextLayout;
|
|
@@ -53,9 +54,10 @@ extrude the filled section. Prepare layouts ahead of time, or supply a determini
|
|
|
53
54
|
and cache layouts with `memo`.
|
|
54
55
|
|
|
55
56
|
The same layout options support horizontal lines or one circular line through
|
|
56
|
-
[`VectorTextArcBaseline`](../reference/
|
|
57
|
+
[`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). The
|
|
57
58
|
[text recipe](svg-and-text.md#text-from-a-font-parameter) explains units, alignment,
|
|
58
59
|
metrics, and circular-text constraints.
|
|
59
60
|
|
|
60
61
|
Use the [Font preparation reference](../reference/text.md) for font and layout options, or
|
|
61
|
-
[Run Modeling in your application](hosting.md) for
|
|
62
|
+
[Run Modeling in your application](hosting.md) for execution and cleanup, and
|
|
63
|
+
[Export completed parts](exporting.md) for file delivery.
|
|
@@ -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
|
|
36
|
+
return part("model", plate.subtract(hole));
|
|
37
37
|
});
|
|
38
38
|
```
|
|
39
39
|
|
|
@@ -65,7 +65,8 @@ the final translations separate the results for comparison.
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
```ts
|
|
68
|
-
import { box, cylinder
|
|
68
|
+
import { box, cylinder } from "@metamesh/modeling";
|
|
69
|
+
import { transform3 } from "@metamesh/modeling/geometry";
|
|
69
70
|
import { generate } from "@metamesh/project";
|
|
70
71
|
|
|
71
72
|
export default generate(({ part }) => {
|
|
@@ -103,35 +104,22 @@ Use intentional overlap for joined features and overtravel for through-cutters.
|
|
|
103
104
|
that only touches another feature is not a reliable connection for a manufacturing part. Inspect
|
|
104
105
|
the result when thin walls, tangencies, or disconnected components are possible.
|
|
105
106
|
|
|
106
|
-
## Valid solid does not mean manufacturable part
|
|
107
|
-
|
|
108
|
-
The kernel can enforce solid topology, but it doesn't know your printer, material, load case,
|
|
109
|
-
tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
|
|
110
|
-
cross-field errors in the Project, then verify the exported file in its downstream tool.
|
|
111
|
-
|
|
112
|
-
Empty or zero-volume output is invalid; non-empty output still needs engineering checks.
|
|
113
|
-
|
|
114
|
-
## Geometry ownership
|
|
115
|
-
|
|
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`.
|
|
118
|
-
|
|
119
|
-
Use `shape.inspect()` for measurements such as bounds, area, volume, and
|
|
120
|
-
`componentCount`. `shape.components()` returns disconnected material pieces, preserving holes and
|
|
121
|
-
enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
|
|
122
|
-
makes two. Recombining the pieces preserves the original material.
|
|
123
107
|
|
|
124
|
-
Snapshot `stats.partCount` counts named `part(...)` declarations; one part may contain several
|
|
125
|
-
material components. Return one declaration or an array for Studio to preview and export.
|
|
126
108
|
|
|
109
|
+
**A valid solid still needs engineering checks**
|
|
127
110
|
|
|
111
|
+
Closed geometry does not establish fit, wall thickness, strength, or printability. Validate your
|
|
112
|
+
supported dimensions and check the result with your intended material and manufacturing process.
|
|
128
113
|
|
|
129
|
-
**Use the MetaMesh reference for authored code**
|
|
130
114
|
|
|
131
|
-
The upstream Manifold documentation is useful background on the underlying mathematics. Exact code
|
|
132
|
-
Project symbols and guarantees come from the [Model API reference](../reference/model.md).
|
|
133
115
|
|
|
116
|
+
## Let the host manage geometry
|
|
134
117
|
|
|
118
|
+
Studio and standalone hosts evaluate the recipes and clean up native resources. Keep kernel
|
|
119
|
+
initialization and manual deletion out of your model. Use
|
|
120
|
+
[inspection](resolution-and-inspection.md#lifecycle-and-inspection) to check evaluated
|
|
121
|
+
dimensions and components; use the [Model API reference](../reference/model.md) for exact symbols.
|
|
122
|
+
The upstream Manifold documentation provides background on the underlying mathematics.
|
|
135
123
|
|
|
136
124
|
- [Try geometry recipes](recipes.md)
|
|
137
125
|
- [Read the Project contract](generation.md)
|
|
@@ -7,10 +7,13 @@ Studio compiles it, prepares services, runs the modeling engine, saves the Proje
|
|
|
7
7
|
|
|
8
8
|
## Source boundary
|
|
9
9
|
|
|
10
|
-
Keep helpers in the single editable `model.ts` file. Import modeling
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
Keep helpers in the single editable `model.ts` file. Import shapes from `@metamesh/modeling` and
|
|
11
|
+
the typed `generate` helper from `@metamesh/project`. The Geometry, Math, Mechanical, and Mesh
|
|
12
|
+
modules in the [import map](concepts.md#import-by-the-work-you-are-doing) are
|
|
13
|
+
also available.
|
|
14
|
+
|
|
15
|
+
For font-selection metadata, import `isFontSelection` and `type FontSelection` from
|
|
16
|
+
`@metamesh/generator-sdk/fonts`. These approved modules and declarations work offline.
|
|
14
17
|
Source can't install packages, fetch modules, or initialize another kernel.
|
|
15
18
|
|
|
16
19
|
## Start with generate
|
|
@@ -23,8 +26,8 @@ Default-export one synchronous program:
|
|
|
23
26
|
import { box } from "@metamesh/modeling";
|
|
24
27
|
import { generate } from "@metamesh/project";
|
|
25
28
|
|
|
26
|
-
export default generate(({ params
|
|
27
|
-
return part("model", box({ size: [
|
|
29
|
+
export default generate(({ params, part }) => {
|
|
30
|
+
return part("model", box({ size: [params.width, params.depth, params.height] }));
|
|
28
31
|
});
|
|
29
32
|
```
|
|
30
33
|
|
|
@@ -68,7 +71,7 @@ evaluates. Pass the full generation context to a helper that needs `assert` or f
|
|
|
68
71
|
|
|
69
72
|
|
|
70
73
|
|
|
71
|
-
**
|
|
74
|
+
**Start without caching**
|
|
72
75
|
|
|
73
76
|
Start with ordinary generation code. If parameter edits become slow, add `memo` around expensive
|
|
74
77
|
work that can stay unchanged across edits. Cheap arithmetic and part placement usually do not need
|
|
@@ -153,9 +156,14 @@ Raw typed arrays in memo results or arguments reject with guidance to use these
|
|
|
153
156
|
|
|
154
157
|
## Text services
|
|
155
158
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
**Studio prepares the selected font for you**
|
|
162
|
+
|
|
163
|
+
The exact font bytes are ready before `generate` runs. Lay out text synchronously through
|
|
164
|
+
`services.text.layout()`, check its metrics, and pass the layout to `textSection`.
|
|
165
|
+
|
|
166
|
+
|
|
159
167
|
|
|
160
168
|
|
|
161
169
|
|
|
@@ -171,7 +179,7 @@ export default generate(({ params, services, part }) => {
|
|
|
171
179
|
letterSpacing: 0.15,
|
|
172
180
|
});
|
|
173
181
|
// textSection preserves counters, such as the enclosed hole in the letter a.
|
|
174
|
-
return
|
|
182
|
+
return part("label", textSection(layout).extrude({ height: 1.2 }));
|
|
175
183
|
});
|
|
176
184
|
```
|
|
177
185
|
|
|
@@ -186,14 +194,14 @@ Geometry and placement accept values. Give each part a stable ID:
|
|
|
186
194
|
|
|
187
195
|
|
|
188
196
|
```ts
|
|
189
|
-
export default generate(({ params
|
|
190
|
-
const base = box({ size: [
|
|
191
|
-
const lid = box({ size: [
|
|
197
|
+
export default generate(({ params, part }) => {
|
|
198
|
+
const base = box({ size: [params.width, params.depth, params.height] });
|
|
199
|
+
const lid = box({ size: [params.width, params.depth, 2] });
|
|
192
200
|
return [
|
|
193
201
|
part("base", { geometry: base, color: "#3b82f6" }),
|
|
194
202
|
part("lid", {
|
|
195
203
|
geometry: lid,
|
|
196
|
-
transform: transform3().translate([0,
|
|
204
|
+
transform: transform3().translate([0, params.depth + 4, 0]),
|
|
197
205
|
color: "#f59e0b",
|
|
198
206
|
}),
|
|
199
207
|
];
|
|
@@ -202,7 +210,7 @@ export default generate(({ params: parameters, part }) => {
|
|
|
202
210
|
|
|
203
211
|
|
|
204
212
|
|
|
205
|
-
Use a `transform3()` value or
|
|
213
|
+
Use a plain `Frame3`, `transform3()` value, or row-major 16-number matrix for translation and rotation;
|
|
206
214
|
omitting it means identity placement. Scale, shear, reflection and perspective are rejected.
|
|
207
215
|
Pattern and attachment transforms pass directly to this option.
|
|
208
216
|
Lengths use millimetres and fluent rotations use degrees. Coordinates are right-handed with **+Z up**.
|