@metamesh/modeling 0.18.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 +82 -0
- package/README.md +96 -64
- package/dist/api/engine.d.ts +216 -160
- package/dist/api/export.d.ts +204 -0
- package/dist/api/geometry.d.ts +410 -2106
- package/dist/api/index.d.ts +545 -1821
- package/dist/api/math.d.ts +315 -0
- package/dist/api/mechanical.d.ts +1041 -0
- package/dist/api/mesh.d.ts +395 -94
- package/dist/api/text.d.ts +24 -44
- package/dist/docs/guides/concepts.md +54 -523
- package/dist/docs/guides/exporting.md +88 -0
- package/dist/docs/guides/fonts.md +7 -5
- package/dist/docs/guides/fundamentals.md +12 -24
- package/dist/docs/guides/generation.md +76 -61
- package/dist/docs/guides/geometry-values.md +251 -0
- package/dist/docs/guides/hosting.md +58 -80
- package/dist/docs/guides/profiles-and-extrusion.md +400 -0
- package/dist/docs/guides/recipes.md +52 -706
- package/dist/docs/guides/resolution-and-inspection.md +153 -0
- package/dist/docs/guides/solid-joins.md +136 -0
- package/dist/docs/guides/standalone-model.md +5 -3
- package/dist/docs/guides/svg-and-text.md +252 -0
- package/dist/docs/guides/sweeps-and-lofts.md +223 -0
- package/dist/docs/guides/transforms-and-placement.md +323 -0
- package/dist/docs/guides/workers.md +166 -0
- package/dist/docs/manifest.json +5539 -8603
- package/dist/docs/reference/engine/GenerationOptions.md +9 -4
- package/dist/docs/reference/engine/GeometryResource.md +11 -5
- package/dist/docs/reference/engine/ModelDependencies.md +9 -3
- package/dist/docs/reference/engine/ModelEngine.md +8 -3
- package/dist/docs/reference/engine/ModelEngineOptions.md +6 -5
- package/dist/docs/reference/engine/ModelPart.md +12 -6
- 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 +9 -4
- package/dist/docs/reference/engine/ModelSession.md +7 -1
- package/dist/docs/reference/engine/SessionOptions.md +9 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +11 -10
- package/dist/docs/reference/engine/checkModel.md +11 -1
- package/dist/docs/reference/engine/createModelEngine.md +13 -4
- package/dist/docs/reference/engine/defaultModelingLimits.md +7 -8
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
- package/dist/docs/reference/engine.md +13 -7
- package/dist/docs/reference/export/Export3mfOptions.md +20 -0
- package/dist/docs/reference/export/ExportDiagnostic.md +47 -0
- package/dist/docs/reference/export/ExportFormat.md +13 -0
- package/dist/docs/reference/export/ExportGeometry.md +27 -0
- package/dist/docs/reference/export/ExportGlbOptions.md +114 -0
- package/dist/docs/reference/export/ExportLimits.md +71 -0
- package/dist/docs/reference/export/ExportMaterial.md +35 -0
- package/dist/docs/reference/export/ExportOptions.md +82 -0
- package/dist/docs/reference/export/ExportPart.md +76 -0
- package/dist/docs/reference/export/ExportReport.md +70 -0
- package/dist/docs/reference/export/ExportSink.md +29 -0
- package/dist/docs/reference/export/ExportStlOptions.md +20 -0
- package/dist/docs/reference/export/ExportedFile.md +98 -0
- package/dist/docs/reference/export/categories/mesh-serialization.md +53 -0
- package/dist/docs/reference/export/defaultExportLimits.md +20 -0
- package/dist/docs/reference/export/export3mf.md +62 -0
- package/dist/docs/reference/export/exportGlb.md +66 -0
- package/dist/docs/reference/export/exportStl.md +62 -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 +27 -0
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +9 -3
- package/dist/docs/reference/geometry/Anchor3-type.md +9 -3
- package/dist/docs/reference/geometry/Anchor3Options.md +70 -0
- 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 +10 -5
- package/dist/docs/reference/geometry/Bounds2-type.md +17 -24
- package/dist/docs/reference/geometry/Bounds2Data.md +10 -9
- package/dist/docs/reference/geometry/Bounds2Input.md +10 -4
- package/dist/docs/reference/geometry/Bounds2Options.md +10 -4
- package/dist/docs/reference/geometry/Bounds3-type.md +17 -24
- package/dist/docs/reference/geometry/Bounds3Data.md +10 -9
- package/dist/docs/reference/geometry/Bounds3Input.md +10 -4
- package/dist/docs/reference/geometry/Bounds3Options.md +10 -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/ChamferedEdgeTreatment.md +8 -2
- package/dist/docs/reference/geometry/CircleContourOptions.md +8 -2
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +8 -3
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
- package/dist/docs/reference/geometry/CircularSampling.md +7 -1
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
- package/dist/docs/reference/geometry/Contour.md +9 -4
- 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 +8 -2
- package/dist/docs/reference/geometry/CorrespondingContour.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingProfile.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +9 -3
- 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 +8 -2
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +10 -4
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +7 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +8 -2
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +15 -10
- package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
- package/dist/docs/reference/geometry/{Frame3.md → Frame3-type.md} +9 -2
- package/dist/docs/reference/geometry/Frame3Options.md +69 -0
- package/dist/docs/reference/geometry/GeometryError.md +7 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +7 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +7 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +7 -1
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +8 -2
- package/dist/docs/reference/geometry/GridPatternOptions.md +13 -5
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +8 -14
- 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 +8 -2
- package/dist/docs/reference/geometry/LoftPlacement.md +19 -13
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +8 -2
- package/dist/docs/reference/geometry/ModelingLimits.md +7 -1
- package/dist/docs/reference/geometry/NumericArray.md +8 -2
- package/dist/docs/reference/geometry/Path2-type.md +158 -3
- package/dist/docs/reference/geometry/Path2Data.md +8 -2
- package/dist/docs/reference/geometry/Path2Input.md +8 -2
- package/dist/docs/reference/geometry/Path3-type.md +158 -3
- package/dist/docs/reference/geometry/Path3Data.md +8 -2
- package/dist/docs/reference/geometry/Path3Input.md +8 -2
- package/dist/docs/reference/geometry/PathFrame.md +8 -2
- package/dist/docs/reference/geometry/PathLocation.md +8 -2
- package/dist/docs/reference/geometry/PathNormalGuide.md +9 -3
- package/dist/docs/reference/geometry/PathOptions.md +8 -2
- package/dist/docs/reference/geometry/PathPatternOptions.md +9 -3
- package/dist/docs/reference/geometry/PathPlacement.md +10 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +8 -2
- 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 +9 -3
- package/dist/docs/reference/geometry/Pivot3Options.md +9 -3
- package/dist/docs/reference/geometry/PolygonData.md +9 -3
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
- package/dist/docs/reference/geometry/Profile.md +8 -3
- package/dist/docs/reference/geometry/ProfileComponent2.md +8 -2
- package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +8 -2
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +10 -3
- package/dist/docs/reference/geometry/RadialPatternOptions.md +8 -2
- package/dist/docs/reference/geometry/RadialSizing.md +7 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +7 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +9 -2
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +8 -2
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +8 -2
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +8 -2
- package/dist/docs/reference/geometry/RegionData.md +8 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
- package/dist/docs/reference/geometry/ResolvedGeometryResolution.md +71 -0
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +7 -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/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 +7 -1
- package/dist/docs/reference/geometry/SplineOptions.md +69 -0
- package/dist/docs/reference/geometry/StarContourOptions.md +12 -2
- package/dist/docs/reference/geometry/StrokeCap.md +8 -2
- package/dist/docs/reference/geometry/StrokeJoin.md +8 -2
- package/dist/docs/reference/geometry/StrokeOptions.md +9 -3
- package/dist/docs/reference/geometry/SvgImportOptions.md +10 -4
- 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/Transform2-type.md +9 -3
- package/dist/docs/reference/geometry/Transform2Data.md +9 -3
- package/dist/docs/reference/geometry/Transform2Input.md +9 -3
- package/dist/docs/reference/geometry/Transform3-type.md +10 -4
- package/dist/docs/reference/geometry/Transform3Data.md +9 -3
- package/dist/docs/reference/geometry/Transform3Input.md +12 -5
- package/dist/docs/reference/geometry/Vector2-type.md +9 -3
- package/dist/docs/reference/geometry/Vector2Data.md +9 -3
- package/dist/docs/reference/geometry/Vector2Input.md +9 -3
- package/dist/docs/reference/geometry/Vector3-type.md +33 -3
- package/dist/docs/reference/geometry/Vector3Data.md +9 -3
- package/dist/docs/reference/geometry/Vector3Input.md +9 -3
- package/dist/docs/reference/geometry/VectorTextLayout.md +8 -2
- package/dist/docs/reference/geometry/VectorTextMetrics.md +9 -3
- package/dist/docs/reference/geometry/anchor3.md +23 -26
- package/dist/docs/reference/geometry/anchorFrame3.md +11 -5
- package/dist/docs/reference/geometry/attachmentTransform3.md +14 -8
- package/dist/docs/reference/geometry/bounds2.md +16 -8
- package/dist/docs/reference/geometry/bounds3.md +14 -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 +12 -6
- 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 +11 -5
- 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 +8 -5
- package/dist/docs/reference/geometry/circleContour.md +8 -2
- package/dist/docs/reference/geometry/closeToAxis.md +12 -2
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +14 -5
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +18 -5
- package/dist/docs/reference/geometry/contourContainsPoint.md +12 -2
- package/dist/docs/reference/geometry/cylinderAnchor3.md +11 -5
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/distributeAlongPath.md +21 -10
- package/dist/docs/reference/geometry/ellipseContour.md +8 -2
- package/dist/docs/reference/geometry/fitBounds.md +18 -4
- package/dist/docs/reference/geometry/fitTextLayout.md +11 -5
- package/dist/docs/reference/geometry/frame3.md +66 -0
- package/dist/docs/reference/geometry/gridPatternTransforms.md +12 -6
- package/dist/docs/reference/geometry/immutableBuffer.md +11 -3
- package/dist/docs/reference/geometry/isGeometryError.md +7 -1
- package/dist/docs/reference/geometry/layoutRow.md +12 -4
- package/dist/docs/reference/geometry/linearPatternTransforms.md +12 -6
- package/dist/docs/reference/geometry/matchProfiles.md +10 -2
- package/dist/docs/reference/geometry/normalizeContour.md +13 -3
- package/dist/docs/reference/geometry/normalizePolygon.md +10 -2
- package/dist/docs/reference/geometry/normalizeRegion.md +10 -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 +18 -8
- package/dist/docs/reference/geometry/preflightSvgRegion.md +11 -5
- package/dist/docs/reference/geometry/radialPatternTransforms.md +11 -5
- package/dist/docs/reference/geometry/rectangleContour.md +8 -2
- package/dist/docs/reference/geometry/rectangleProfile.md +8 -3
- package/dist/docs/reference/geometry/regionArea.md +8 -2
- package/dist/docs/reference/geometry/regionBounds.md +11 -3
- package/dist/docs/reference/geometry/regularPolygonContour.md +8 -2
- package/dist/docs/reference/geometry/resamplePolyline2.md +12 -2
- package/dist/docs/reference/geometry/resamplePolyline3.md +12 -2
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +10 -4
- package/dist/docs/reference/geometry/resolveArcSegments.md +13 -5
- package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSegments.md +10 -2
- package/dist/docs/reference/geometry/resolveExtrusionSlices.md +85 -0
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +10 -2
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +8 -2
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +17 -4
- package/dist/docs/reference/geometry/sampleContour.md +10 -4
- package/dist/docs/reference/geometry/sampleCurve2.md +12 -2
- package/dist/docs/reference/geometry/sampleCurve3.md +12 -2
- package/dist/docs/reference/geometry/sampleHelix.md +8 -2
- package/dist/docs/reference/geometry/sampleSideProfile.md +10 -4
- package/dist/docs/reference/geometry/sampleTextContours.md +9 -3
- package/dist/docs/reference/geometry/signedContourArea.md +10 -2
- 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 +8 -2
- package/dist/docs/reference/geometry/strokeRegionData.md +14 -5
- package/dist/docs/reference/geometry/transform2.md +11 -3
- package/dist/docs/reference/geometry/transform3.md +29 -6
- package/dist/docs/reference/geometry/transformRegionData.md +12 -2
- package/dist/docs/reference/geometry/triangulateContour.md +11 -3
- package/dist/docs/reference/geometry/vector2.md +12 -4
- package/dist/docs/reference/geometry/vector3.md +14 -4
- package/dist/docs/reference/geometry.md +13 -18
- package/dist/docs/reference/{geometry → math}/AxisAngleRotation3.md +8 -3
- 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 +9 -4
- package/dist/docs/reference/{geometry → mechanical}/Bevel.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/BevelSize.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ButtressPressureFlankSide.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ButtressThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleFit.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CompensatedThreadDiameters.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CustomThreadProfileSpec.md +10 -6
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearMeshKind.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearOutlineOptions.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionOptions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionReport.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/InternalThreadCutterOptions.md +11 -8
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeBaseSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeDimensions.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeInterval.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSamplingOptions.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/METRIC_FASTENER_STANDARDS.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerSize.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerStandard.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricHexNutDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/MetricSocketCapHeadDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFit.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFitPolicy.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/RackPitchDimensions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/RackPitchSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/SampledThreadHelices.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/SquareThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ThreadBevelOptions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadCircularSegmentsOptions.md +10 -6
- package/dist/docs/reference/{geometry → mechanical}/ThreadCompensationOptions.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndStyle.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndTreatmentOptions.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadHandedness.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadHelixOptions.md +10 -6
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInEnvelope.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInShape.md +8 -2
- package/dist/docs/reference/{mesh/ThreadProfile.md → mechanical/ThreadProfile-type.md} +8 -6
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileBaseSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileSpec.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadRidgeOptions.md +12 -9
- package/dist/docs/reference/{geometry → mechanical}/ThreadRole.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidOptions.md +13 -10
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidPreflight.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutOptions.md +12 -9
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutPreflight.md +8 -2
- package/dist/docs/reference/mechanical/ThreadedNutShape.md +20 -0
- package/dist/docs/reference/{geometry → mechanical}/ThreadedRodOptions.md +11 -8
- package/dist/docs/reference/{geometry → mechanical}/TrapezoidalThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/TriangularThreadProfileSpec.md +9 -4
- package/dist/docs/reference/{geometry → mechanical}/categories/mechanical.md +9 -3
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadDiameters.md +9 -3
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileAxially.md +17 -5
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileForFaceting.md +18 -2
- package/dist/docs/reference/{geometry → mechanical}/getMetricClearanceHoleDiameter.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/getMetricFastenerStandard.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/measureInternalCylindricalGearPairMotion.md +14 -6
- package/dist/docs/reference/{geometry → mechanical}/minimumCylindricalGearToothCountWithoutUndercut.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/preflightInternalThreadCutter.md +13 -5
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedNut.md +14 -6
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedRod.md +13 -5
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGear.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGearPair.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveKnuckleHinge.md +14 -6
- package/dist/docs/reference/{geometry → mechanical}/resolvePrintableThreadFitPolicy.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveRackPitch.md +10 -2
- package/dist/docs/reference/{geometry → mechanical}/resolveThreadCircularSegments.md +12 -4
- package/dist/docs/reference/{geometry → mechanical}/sampleCylindricalGearOutline.md +14 -7
- package/dist/docs/reference/{geometry → mechanical}/sampleInternalCylindricalGearSpaceOutline.md +14 -7
- package/dist/docs/reference/{geometry → mechanical}/sampleRackToothPath.md +15 -7
- package/dist/docs/reference/{geometry → mechanical}/sampleThreadHelices.md +13 -5
- package/dist/docs/reference/{geometry → mechanical}/threadProfile.md +12 -2
- package/dist/docs/reference/mechanical.md +19 -0
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +39 -40
- package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +8 -6
- package/dist/docs/reference/mesh/HeightfieldPreflight.md +8 -2
- package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +8 -6
- package/dist/docs/reference/mesh/LoftMeshStation.md +8 -7
- package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
- package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +9 -3
- package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +11 -6
- package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +13 -7
- package/dist/docs/reference/mesh/PlanarPatchQuality.md +7 -5
- package/dist/docs/reference/mesh/RenderMesh.md +68 -0
- package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +7 -5
- package/dist/docs/reference/mesh/TriangleMesh.md +16 -2
- package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +16 -11
- package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +12 -7
- package/dist/docs/reference/mesh/TriangleMeshInput.md +9 -3
- package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +10 -5
- package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +9 -4
- package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +9 -3
- package/dist/docs/reference/mesh/TriangleMeshSignature.md +9 -4
- package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +8 -2
- package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +8 -2
- package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +17 -12
- package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +9 -4
- package/dist/docs/reference/mesh/analyze.md +28 -14
- package/dist/docs/reference/mesh/analyzeQuality.md +15 -9
- package/dist/docs/reference/mesh/bounds.md +10 -5
- package/dist/docs/reference/mesh/categories/operations.md +24 -81
- package/dist/docs/reference/mesh/centroid.md +10 -5
- package/dist/docs/reference/mesh/extrude.md +25 -18
- package/dist/docs/reference/mesh/heightfield.md +13 -7
- package/dist/docs/reference/mesh/immutable.md +16 -10
- package/dist/docs/reference/mesh/join.md +11 -5
- package/dist/docs/reference/mesh/loft.md +23 -16
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +24 -18
- package/dist/docs/reference/mesh/preflightHeightfield.md +13 -7
- package/dist/docs/reference/mesh/preflightThreadSolid.md +27 -24
- package/dist/docs/reference/mesh/render.md +59 -0
- package/dist/docs/reference/mesh/reverse.md +11 -5
- package/dist/docs/reference/mesh/revolve.md +17 -13
- package/dist/docs/reference/mesh/signature.md +15 -9
- package/dist/docs/reference/mesh/sweep.md +101 -24
- package/dist/docs/reference/mesh/threadRidge.md +24 -17
- package/dist/docs/reference/mesh/threadSolid.md +28 -21
- package/dist/docs/reference/mesh/transform.md +12 -7
- package/dist/docs/reference/mesh/validate.md +15 -9
- package/dist/docs/reference/mesh/validateSolid.md +14 -8
- package/dist/docs/reference/mesh.md +8 -2
- package/dist/docs/reference/model/BoxEdge.md +11 -3
- package/dist/docs/reference/model/BoxEdgeSelection.md +11 -3
- package/dist/docs/reference/model/BoxEdgeTreatments.md +12 -5
- package/dist/docs/reference/model/BoxOptions.md +14 -9
- package/dist/docs/reference/model/CircleOptions.md +11 -6
- package/dist/docs/reference/model/CornerCutterOptions.md +93 -0
- package/dist/docs/reference/model/CornerCutterTreatment.md +53 -0
- package/dist/docs/reference/model/CutterOverrun.md +43 -0
- package/dist/docs/reference/model/CylinderOptions.md +12 -6
- package/dist/docs/reference/model/DiagnosticOptions.md +7 -1
- package/dist/docs/reference/model/EdgeCutterOptions.md +129 -0
- package/dist/docs/reference/model/EllipseOptions.md +11 -6
- package/dist/docs/reference/model/EndTreatments.md +13 -9
- package/dist/docs/reference/model/ExtrudeOptions.md +48 -44
- package/dist/docs/reference/model/GenerateCallback.md +7 -1
- package/dist/docs/reference/model/GenerateContext.md +23 -24
- package/dist/docs/reference/model/GenerationDiagnostic.md +7 -1
- package/dist/docs/reference/model/GenerationError.md +8 -2
- package/dist/docs/reference/model/HeightfieldOptions.md +8 -8
- package/dist/docs/reference/model/HoleCutterOpening.md +27 -0
- package/dist/docs/reference/model/HoleCutterOptions.md +19 -25
- package/dist/docs/reference/model/HoleCutterRecess.md +13 -5
- package/dist/docs/reference/model/HullOptions.md +12 -6
- package/dist/docs/reference/model/ImmutableValue.md +7 -1
- package/dist/docs/reference/model/ImplicitOptions.md +9 -9
- package/dist/docs/reference/model/JoinOptions.md +73 -0
- package/dist/docs/reference/model/JoinTransition.md +54 -0
- package/dist/docs/reference/model/KnuckleHinge-type.md +8 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
- package/dist/docs/reference/model/KnuckleHingeOptions.md +8 -4
- package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
- package/dist/docs/reference/model/LoftCorrespondence.md +13 -5
- package/dist/docs/reference/model/LoftOptions.md +16 -10
- package/dist/docs/reference/model/LoftStation.md +16 -10
- 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 +12 -8
- package/dist/docs/reference/model/PartGeometry.md +8 -4
- package/dist/docs/reference/model/PartOptions.md +12 -8
- package/dist/docs/reference/model/PatternSource.md +11 -5
- package/dist/docs/reference/model/PlaneOptions.md +11 -8
- package/dist/docs/reference/model/PolygonOptions.md +17 -16
- package/dist/docs/reference/model/PrimitiveAttachment.md +15 -4
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +18 -17
- package/dist/docs/reference/model/RectangleOptions.md +31 -30
- package/dist/docs/reference/model/RegularPolygonOptions.md +11 -38
- package/dist/docs/reference/model/RevolveOptions.md +19 -17
- package/dist/docs/reference/model/Section.md +128 -72
- package/dist/docs/reference/model/SectionHullOptions.md +12 -6
- package/dist/docs/reference/model/SectionInspection.md +8 -6
- package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
- package/dist/docs/reference/model/SectionOffsetOptions.md +11 -6
- package/dist/docs/reference/model/Solid.md +113 -53
- package/dist/docs/reference/model/SolidInspection.md +8 -6
- package/dist/docs/reference/model/SolidSegmentHit.md +9 -7
- package/dist/docs/reference/model/SphereOptions.md +12 -5
- package/dist/docs/reference/model/StarOptions.md +33 -29
- package/dist/docs/reference/model/SvgOrigin.md +10 -4
- package/dist/docs/reference/model/SvgPathSectionOptions.md +13 -9
- package/dist/docs/reference/model/SvgSectionOptions.md +14 -11
- package/dist/docs/reference/model/SweepOptions.md +21 -28
- package/dist/docs/reference/model/SweepOrientation.md +19 -16
- package/dist/docs/reference/model/SweepTransformOptions.md +105 -0
- package/dist/docs/reference/model/TextSectionOptions.md +11 -10
- package/dist/docs/reference/model/TorusOptions.md +13 -7
- package/dist/docs/reference/model/TubeOptions.md +25 -8
- package/dist/docs/reference/model/box.md +14 -6
- package/dist/docs/reference/model/categories/boolean-operations.md +16 -4
- package/dist/docs/reference/model/categories/bounded-surfaces.md +7 -1
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +21 -16
- package/dist/docs/reference/model/categories/generation.md +15 -12
- package/dist/docs/reference/model/categories/hinges.md +7 -4
- package/dist/docs/reference/model/categories/mesh-inspection.md +8 -6
- package/dist/docs/reference/model/categories/primitives.md +32 -20
- package/dist/docs/reference/model/categories/sections.md +11 -16
- package/dist/docs/reference/model/categories/threads.md +9 -43
- package/dist/docs/reference/model/categories/transforms-placement.md +17 -41
- package/dist/docs/reference/model/circle.md +15 -5
- package/dist/docs/reference/model/cornerCutter.md +88 -0
- package/dist/docs/reference/model/cylinder.md +11 -3
- package/dist/docs/reference/model/edgeCutter.md +91 -0
- package/dist/docs/reference/model/ellipse.md +15 -5
- package/dist/docs/reference/model/extrude.md +37 -24
- package/dist/docs/reference/model/generate.md +10 -2
- package/dist/docs/reference/model/gridPattern.md +22 -9
- package/dist/docs/reference/model/heightfield.md +7 -1
- package/dist/docs/reference/model/holeCutter.md +34 -13
- package/dist/docs/reference/model/hull.md +9 -2
- package/dist/docs/reference/model/implicit.md +10 -4
- package/dist/docs/reference/model/internalThreadCutter.md +38 -21
- package/dist/docs/reference/model/intersect.md +14 -3
- package/dist/docs/reference/model/join.md +93 -0
- package/dist/docs/reference/model/knuckleHinge.md +7 -2
- package/dist/docs/reference/model/linearPattern.md +22 -9
- package/dist/docs/reference/model/loft.md +27 -16
- package/dist/docs/reference/model/minkowskiSum.md +10 -3
- package/dist/docs/reference/model/pathPattern.md +36 -21
- package/dist/docs/reference/model/polygon.md +18 -7
- package/dist/docs/reference/model/radialPattern.md +22 -9
- package/dist/docs/reference/model/rectangle.md +22 -12
- package/dist/docs/reference/model/regularPolygon.md +15 -5
- package/dist/docs/reference/model/revolve.md +26 -13
- package/dist/docs/reference/model/solidFromMesh.md +16 -6
- package/dist/docs/reference/model/sphere.md +12 -4
- package/dist/docs/reference/model/star.md +20 -10
- package/dist/docs/reference/model/stroke.md +29 -19
- package/dist/docs/reference/model/svgPathSection.md +20 -8
- package/dist/docs/reference/model/svgSection.md +21 -9
- package/dist/docs/reference/model/sweep.md +108 -24
- package/dist/docs/reference/model/textSection.md +19 -9
- package/dist/docs/reference/model/threadRidge.md +22 -17
- package/dist/docs/reference/model/threadedNut.md +31 -22
- package/dist/docs/reference/model/threadedRod.md +27 -18
- package/dist/docs/reference/model/torus.md +13 -5
- package/dist/docs/reference/model/tube.md +11 -3
- package/dist/docs/reference/model/union.md +14 -3
- package/dist/docs/reference/model.md +11 -11
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -1
- package/dist/docs/reference/text/VectorFont.md +22 -12
- package/dist/docs/reference/text/VectorFontOptions.md +7 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +7 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +8 -2
- package/dist/docs/reference/text/VectorTextOptions.md +7 -1
- package/dist/docs/reference/text/categories/font-preparation.md +7 -10
- package/dist/docs/reference/text/prepareVectorFont.md +9 -1
- package/dist/docs/reference/text.md +7 -1
- package/dist/engine/execution.js +5 -3
- package/dist/engine/finalization.js +6 -78
- package/dist/engine/index.js +11 -6
- package/dist/engine/native/adapter.js +1 -1
- package/dist/engine/native/construction-mesh.js +51 -0
- package/dist/engine/native/context.js +10 -7
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +4 -53
- package/dist/engine/native/mesh-observation.js +55 -0
- package/dist/engine/native/regions.js +44 -23
- 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 +15 -6
- package/dist/engine/operations/cutters.js +112 -0
- package/dist/engine/operations/environment.js +2 -2
- package/dist/engine/operations/extrusion-finishing.js +56 -29
- package/dist/engine/operations/hole-cutter.js +125 -114
- package/dist/engine/operations/join-collar-profile.js +120 -0
- package/dist/engine/operations/join.js +521 -0
- 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 +87 -31
- package/dist/engine/session/declarations.js +98 -0
- package/dist/engine/session/dependencies.js +139 -39
- package/dist/engine/session/graph.js +290 -411
- package/dist/engine/session/native-cache.js +1 -1
- package/dist/engine/session/parameters.js +78 -0
- package/dist/engine/session/session.js +7 -7
- package/dist/engine/session/snapshot-cache.js +4 -4
- package/dist/engine/shape-anchors.js +13 -6
- package/dist/export/3mf.js +197 -0
- package/dist/export/capture.js +182 -0
- package/dist/export/glb.js +214 -0
- package/dist/export/index.js +5 -0
- package/dist/export/limits.js +18 -0
- package/dist/export/stl.js +120 -0
- package/dist/export/writer.js +54 -0
- package/dist/geometry/{bounds.js → bounds/operations.js} +3 -1
- package/dist/geometry/{bounds-value.js → bounds/value.js} +24 -20
- 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 +11 -7
- 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/mesh/join-layers.js +833 -0
- 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/render-buffers.js +220 -0
- package/dist/geometry/mesh/{mesh-signature.js → signature.js} +1 -1
- package/dist/geometry/mesh/{mesh-solid-intersections.js → solid-intersections.js} +45 -17
- package/dist/geometry/mesh/{mesh-solid.js → solid.js} +10 -6
- 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 -10
- 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/regions/offset.js +280 -0
- package/dist/geometry/{regions.js → regions/operations.js} +70 -23
- 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/sweep/options.js +1 -0
- 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 +4 -2
- package/dist/model/immutable-generation-data.js +15 -13
- package/dist/model/join.js +1 -0
- package/dist/model/operations.js +150 -94
- package/dist/model/recipe-declaration.js +6 -7
- package/dist/model/shape-handles.js +1 -0
- package/dist/text/index.js +3 -0
- package/dist/text/vector-text-layout.js +1 -0
- package/package.json +20 -5
- 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/geometry/BoxEdge.md +0 -7
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +0 -14
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +0 -15
- package/dist/docs/reference/geometry/BoxOptions.md +0 -87
- package/dist/docs/reference/geometry/CylinderOptions.md +0 -53
- package/dist/docs/reference/geometry/EndTreatments.md +0 -34
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +0 -130
- package/dist/docs/reference/geometry/ExtrudeOptions.md +0 -146
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +0 -18
- package/dist/docs/reference/geometry/HeightfieldOptions.md +0 -72
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +0 -58
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +0 -19
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +0 -43
- package/dist/docs/reference/geometry/LoftCorrespondence.md +0 -24
- package/dist/docs/reference/geometry/LoftMeshStation.md +0 -31
- package/dist/docs/reference/geometry/LoftOptions.md +0 -88
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +0 -14
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +0 -160
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +0 -124
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +0 -194
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +0 -29
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +0 -104
- package/dist/docs/reference/geometry/RevolveOptions.md +0 -91
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +0 -38
- package/dist/docs/reference/geometry/SphereOptions.md +0 -15
- package/dist/docs/reference/geometry/SweepOptions.md +0 -113
- package/dist/docs/reference/geometry/SweepOrientation.md +0 -113
- package/dist/docs/reference/geometry/ThreadProfile-type.md +0 -86
- package/dist/docs/reference/geometry/ThreadedNutShape.md +0 -14
- package/dist/docs/reference/geometry/TorusOptions.md +0 -105
- package/dist/docs/reference/geometry/TriangleMesh.md +0 -34
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +0 -129
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +0 -79
- package/dist/docs/reference/geometry/TriangleMeshInput.md +0 -19
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +0 -43
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +0 -194
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +0 -111
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +0 -46
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +0 -34
- package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +0 -131
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +0 -55
- package/dist/docs/reference/geometry/TubeOptions.md +0 -62
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +0 -58
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +0 -115
- package/dist/docs/reference/geometry/VectorTextOptions.md +0 -54
- package/dist/docs/reference/geometry/add2.md +0 -37
- package/dist/docs/reference/geometry/add3.md +0 -43
- package/dist/docs/reference/geometry/applyTransformDirection3.md +0 -46
- package/dist/docs/reference/geometry/applyTransformPoint3.md +0 -44
- package/dist/docs/reference/geometry/categories/meshes.md +0 -68
- package/dist/docs/reference/geometry/composeTransform3.md +0 -45
- package/dist/docs/reference/geometry/cross2.md +0 -37
- package/dist/docs/reference/geometry/cross3.md +0 -43
- package/dist/docs/reference/geometry/distance2.md +0 -37
- package/dist/docs/reference/geometry/distance3.md +0 -37
- package/dist/docs/reference/geometry/dot2.md +0 -37
- package/dist/docs/reference/geometry/dot3.md +0 -43
- package/dist/docs/reference/geometry/eulerTransform3.md +0 -43
- package/dist/docs/reference/geometry/frameTransform3.md +0 -49
- package/dist/docs/reference/geometry/inverseTransform3.md +0 -35
- package/dist/docs/reference/geometry/length2.md +0 -31
- package/dist/docs/reference/geometry/length3.md +0 -31
- package/dist/docs/reference/geometry/lerp2.md +0 -43
- package/dist/docs/reference/geometry/lerp3.md +0 -43
- package/dist/docs/reference/geometry/normalize2.md +0 -40
- package/dist/docs/reference/geometry/normalize3.md +0 -40
- package/dist/docs/reference/geometry/projectOntoPlane3.md +0 -37
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +0 -78
- package/dist/docs/reference/geometry/rotate2.md +0 -37
- package/dist/docs/reference/geometry/rotationTransform3.md +0 -54
- package/dist/docs/reference/geometry/scale2.md +0 -37
- package/dist/docs/reference/geometry/scale3.md +0 -43
- package/dist/docs/reference/geometry/scaleTransform3.md +0 -39
- package/dist/docs/reference/geometry/subtract2.md +0 -37
- package/dist/docs/reference/geometry/subtract3.md +0 -43
- package/dist/docs/reference/geometry/transformDeterminant3.md +0 -37
- package/dist/docs/reference/geometry/translationTransform3.md +0 -36
- package/dist/docs/reference/geometry/validateRigidTransform3.md +0 -35
- package/dist/docs/reference/geometry/validateTransform3.md +0 -48
- 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/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/HeightfieldOptions.md +0 -72
- package/dist/docs/reference/mesh/ImmutableBuffer.md +0 -108
- package/dist/docs/reference/mesh/LoftCorrespondence.md +0 -24
- 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/RevolveOptions.md +0 -91
- 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/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/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/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/EdgeTreatment.md +0 -22
- package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
- package/dist/docs/reference/model/ExtrudeMeshOptions.md +0 -133
- 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/HoleCutterOverrun.md +0 -35
- 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/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/PrintableThreadFit.md +0 -15
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
- package/dist/docs/reference/model/Profile.md +0 -24
- 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/RoundedEdgeTreatment.md +0 -96
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
- 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/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/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/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/explicit-profiles.md +0 -34
- 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/matchProfiles.md +0 -42
- package/dist/docs/reference/model/path2.md +0 -54
- package/dist/docs/reference/model/path3.md +0 -49
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +0 -87
- package/dist/docs/reference/model/preflightThreadedNut.md +0 -103
- package/dist/docs/reference/model/preflightThreadedRod.md +0 -87
- 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/VectorTextLayout.md +0 -34
- package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
- package/dist/engine/export-3mf.js +0 -23
- package/dist/engine/operations/patterns.js +0 -47
- package/dist/engine/serialize-3mf.js +0 -116
- 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/mesh/mesh-types.js → export/types.js} +0 -0
- /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/{primitive-options.js → mesh/types.js} +0 -0
- /package/dist/{engine/mesh-view-cache.js → geometry/mesh/view-cache.js} +0 -0
- /package/dist/geometry/{text-layout.js → primitives/options.js} +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Choose resolution and check geometry
|
|
2
|
+
|
|
3
|
+
Set physical sampling, understand preflight limits, and inspect evaluated dimensions and topology.
|
|
4
|
+
|
|
5
|
+
Choose enough geometric detail for the feature you are making, then check the generated result.
|
|
6
|
+
Sampling policy, preflight reports, and inspection answer different questions; a successful check
|
|
7
|
+
does not establish a suitable manufacturing fit.
|
|
8
|
+
|
|
9
|
+
## Coordinates, units, and resolution
|
|
10
|
+
|
|
11
|
+
MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
|
|
12
|
+
tolerances are millimetres; angular arguments such as `rotate` use degrees.
|
|
13
|
+
Pure [`rotate2`](../reference/math/rotate2.md) and transform-value rotations also take degrees.
|
|
14
|
+
The low-level [`rotationTransform3`](../reference/math/rotationTransform3.md) constructor
|
|
15
|
+
requires an explicit `{ degrees }` or `{ radians }` angle.
|
|
16
|
+
|
|
17
|
+
`GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
|
|
18
|
+
chord error, 16–512 segments per complete circle, and no maximum segment length. Settings apply
|
|
19
|
+
in this order:
|
|
20
|
+
|
|
21
|
+
1. An operation-specific `segments` or `circularSegments` count.
|
|
22
|
+
2. The operation's local `resolution`.
|
|
23
|
+
3. Host session defaults.
|
|
24
|
+
|
|
25
|
+
A shape doesn't carry its sampling policy into later operations; pass it explicitly where needed.
|
|
26
|
+
|
|
27
|
+
Use an exact segment count for intentionally faceted geometry or when two sampled contours must
|
|
28
|
+
match point for point. Use physical chord and segment limits for ordinary printable curves. If a
|
|
29
|
+
requested tolerance can't fit within the safety cap, the operation fails instead of silently
|
|
30
|
+
returning a coarser shape.
|
|
31
|
+
|
|
32
|
+
## Check preflight guarantees
|
|
33
|
+
|
|
34
|
+
Use a preflight to check inputs and see what an operation will require. Each preflight checks
|
|
35
|
+
different things, so read what its report covers:
|
|
36
|
+
|
|
37
|
+
- [`mesh.preflightHeightfield`](../reference/mesh/preflightHeightfield.md) checks grid dimensions,
|
|
38
|
+
coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
|
|
39
|
+
and byte counts without evaluating heights.
|
|
40
|
+
- [`mesh.preflightThreadSolid`](../reference/mesh/preflightThreadSolid.md)
|
|
41
|
+
and related thread preflights check dimensions, sampling, and conservative allocation estimates.
|
|
42
|
+
They return the sampling plan without constructing the final mesh or native solid.
|
|
43
|
+
- [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
|
|
44
|
+
SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
|
|
45
|
+
at the selected resolution; they do not predict later mesh allocation.
|
|
46
|
+
|
|
47
|
+
Preflights are pure calculations: they run without an engine and use explicit options or package
|
|
48
|
+
defaults. Threaded-part preflights live in `/geometry/mechanical`, including
|
|
49
|
+
[`preflightThreadedRod`](../reference/mechanical/preflightThreadedRod.md),
|
|
50
|
+
[`preflightInternalThreadCutter`](../reference/mechanical/preflightInternalThreadCutter.md), and
|
|
51
|
+
[`preflightThreadedNut`](../reference/mechanical/preflightThreadedNut.md).
|
|
52
|
+
|
|
53
|
+
Inside generation, pass the callback's effective `resolution` and `limits` to a preflight or
|
|
54
|
+
[`matchProfiles`](../reference/geometry/matchProfiles.md) when its sampling and work budget must
|
|
55
|
+
agree with the host. A pure helper never reads an ambient session.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
**Preflight is a plan, not a finished part**
|
|
60
|
+
|
|
61
|
+
Passing covers only the report's documented checks. Callbacks, meshing, or native evaluation can
|
|
62
|
+
still fail. Run representative inputs and inspect the completed geometry.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
Constructors enforce their limits even when you skip preflight. Use a report when its sampling
|
|
67
|
+
plan or diagnostics help you make a decision.
|
|
68
|
+
|
|
69
|
+
## Lifecycle and inspection
|
|
70
|
+
|
|
71
|
+
Use `shape.inspect()` for bounds, topology counts, area, and volume.
|
|
72
|
+
Its immutable extrema are nested under `facts.bounds.min` and `facts.bounds.max`.
|
|
73
|
+
Native `componentCount` counts disconnected material components. Mesh analysis and signatures use
|
|
74
|
+
`shellCount` for surfaces connected by shared indexed edges: one sealed hollow body has one material
|
|
75
|
+
component and two shells. Open mesh analysis can also count open shells; this count does not certify
|
|
76
|
+
closed topology or geometric validity.
|
|
77
|
+
|
|
78
|
+
Queries such as `shape.inspect()`, `shape.isEmpty()`, `shape.components()`, `shape.anchor(name)`,
|
|
79
|
+
`solid.distance(other)`, and `solid.castSegment(origin, endpoint)` read evaluated geometry.
|
|
80
|
+
These queries and interchange with `solid.toMesh()` or `section.toRegionData()` require the host's
|
|
81
|
+
active synchronous generation. `solid.split(cutter)` returns the intersection and remainder;
|
|
82
|
+
`solid.splitByPlane(plane)` returns the positive and negative sides of the plane.
|
|
83
|
+
Constructing or combining a recipe outside generation doesn't evaluate it.
|
|
84
|
+
|
|
85
|
+
An inspection result describes the generated geometry; it doesn't certify wall thickness,
|
|
86
|
+
overhangs, fits, loads, or manufacturability. Express those requirements in your parameters and
|
|
87
|
+
validation, then check them in your manufacturing workflow.
|
|
88
|
+
|
|
89
|
+
Before preview or export, the host finalizes returned geometry under its configured validation
|
|
90
|
+
and resource policy. Inspecting one shape does not finalize every returned part.
|
|
91
|
+
|
|
92
|
+
## Solid inspection
|
|
93
|
+
|
|
94
|
+
Use `solid.inspect()` during generation to check bounds, volume, and component count. This example
|
|
95
|
+
runs inside a [Studio code Project](https://metamesh.studio/docs/develop/code-projects); a standalone program uses the
|
|
96
|
+
same queries inside its synchronous generation callback:
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
import { box, cylinder } from "@metamesh/modeling";
|
|
102
|
+
import { generate } from "@metamesh/project";
|
|
103
|
+
|
|
104
|
+
export default generate(({ part }) => {
|
|
105
|
+
const plate = box({ size: [40, 30, 5] });
|
|
106
|
+
const bore = cylinder({ diameter: 10, height: 7 });
|
|
107
|
+
const result = plate.subtract(bore);
|
|
108
|
+
const facts = result.inspect();
|
|
109
|
+
|
|
110
|
+
if (facts.bounds.min[2] !== -2.5 || facts.componentCount !== 1) {
|
|
111
|
+
throw new Error("Expected one connected plate centered on Z.");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return part("plate", result);
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Inspect the cut block during generation, then return the same checked geometry as a part.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
Use [`layoutRow`](../reference/geometry/layoutRow.md) to arrange pieces along +X with an explicit
|
|
123
|
+
gap and place their minimum Y/Z at zero. Pass bounds after any intended rotation, then use the
|
|
124
|
+
returned translations in `part` placement options so you can reuse the geometry.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
import { box, generate } from "@metamesh/modeling";
|
|
130
|
+
import { layoutRow, transform3 } from "@metamesh/modeling/geometry";
|
|
131
|
+
|
|
132
|
+
export default generate<Record<never, never>>(({ part }) => {
|
|
133
|
+
const pieces = [box({ size: [20, 10, 6] }), box({ size: [12, 16, 8] })];
|
|
134
|
+
const positions = layoutRow(
|
|
135
|
+
pieces.map((piece) => piece.inspect().bounds),
|
|
136
|
+
{ gap: 4 }
|
|
137
|
+
);
|
|
138
|
+
return pieces.map((geometry, index) =>
|
|
139
|
+
part(`piece-${index}`, {
|
|
140
|
+
geometry,
|
|
141
|
+
transform: transform3().translate(positions[index]!),
|
|
142
|
+
color: index === 0 ? "#f6ad55" : "#60a5fa",
|
|
143
|
+
})
|
|
144
|
+
);
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Use each part’s evaluated bounds to place its geometry along +X with a deliberate gap.
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
Check the default, smallest and largest supported dimensions, and every optional feature after
|
|
153
|
+
adapting a recipe. Inspect the current result before [exporting it](https://metamesh.studio/docs/use/export-3mf).
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Join a feature to a base
|
|
2
|
+
|
|
3
|
+
Add a smooth or straight transition between independently modeled solids while retaining their geometry.
|
|
4
|
+
|
|
5
|
+
Use a solid join to connect a mounting boss, handle root, or similar feature to a base. Model and
|
|
6
|
+
position the complete feature first. Choose a smooth blend or straight transition; both retain
|
|
7
|
+
the supplied solids and their existing details.
|
|
8
|
+
|
|
9
|
+
Run the examples in a [Studio code Project](https://metamesh.studio/docs/develop/code-projects), where Studio supplies
|
|
10
|
+
typed controls and prepared services. For a local model, follow the
|
|
11
|
+
[standalone workflow](standalone-model.md) and use its host entry point.
|
|
12
|
+
|
|
13
|
+
## Join an independently modeled feature
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { box, cylinder } from "@metamesh/modeling";
|
|
19
|
+
import { anchor3 } from "@metamesh/modeling/geometry";
|
|
20
|
+
import { generate } from "@metamesh/project";
|
|
21
|
+
|
|
22
|
+
const base = box({ size: [40, 28, 6] });
|
|
23
|
+
const feature = cylinder({
|
|
24
|
+
diameter: 12,
|
|
25
|
+
height: 14,
|
|
26
|
+
center: false,
|
|
27
|
+
ends: { top: { kind: "chamfer", distance: 0.5 } },
|
|
28
|
+
})
|
|
29
|
+
.translate([0, 0, 2])
|
|
30
|
+
.subtract(
|
|
31
|
+
cylinder({ diameter: 4, height: 16, center: false }).rotate([90, 0, 0]).translate([0, 8, 12])
|
|
32
|
+
)
|
|
33
|
+
// Boolean geometry defines its own datum; the collar below the cross-bore stays straight.
|
|
34
|
+
.withAnchors({ mount: anchor3({ position: [0, 0, 2], direction: [0, 0, -1] }) });
|
|
35
|
+
|
|
36
|
+
const mount = base.join(feature, {
|
|
37
|
+
source: "mount",
|
|
38
|
+
transition: { width: 3, height: 4 },
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export default generate(({ part }) => part("mount", mount));
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The supplied boss keeps its top chamfer and cross-bore; the join adds only the root transition.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
Construct and position the feature independently. Here its lower cap lies inside the plate,
|
|
49
|
+
and a straight collar remains below the cross-bore. The Boolean-composed feature defines a
|
|
50
|
+
`mount` datum with its outward normal pointing toward the base. `source: "mount"` resolves that
|
|
51
|
+
datum when the join evaluates, so the completed recipe can be declared before an engine exists.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
**Place the feature before joining**
|
|
56
|
+
|
|
57
|
+
A join adds the root transition to an already positioned feature. Check the collar and support
|
|
58
|
+
requirements below; joining does not close a gap or move the feature into place.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
The result has no inherited anchors. Define result datums with `withAnchors` when later work needs them.
|
|
63
|
+
|
|
64
|
+
## Define the connection
|
|
65
|
+
|
|
66
|
+
Call [`solid.join(feature, options)`](../reference/model/Solid.md#join) after constructing and
|
|
67
|
+
positioning the feature. Supply `source`, a named feature datum or explicit `Anchor3`, and a
|
|
68
|
+
`transition` with `width`, `height`, and optional `kind`. The named datum resolves lazily;
|
|
69
|
+
recipe declaration needs no engine.
|
|
70
|
+
The source plane may lie in empty space when the existing feature already spans the selected
|
|
71
|
+
support patch; it is a lower datum, not a required contact plane.
|
|
72
|
+
Joining preserves both operands and adds material, while `union` remains ordinary Boolean fusion.
|
|
73
|
+
|
|
74
|
+
The datum selects the complete feature section in its plane. Holes and disconnected roots are
|
|
75
|
+
supported when each satisfies the same connection requirements. Two straight roots sharing a
|
|
76
|
+
datum plane and axis can therefore receive their transitions in one join; the datum is not a
|
|
77
|
+
selector for the nearest root.
|
|
78
|
+
|
|
79
|
+
Only the local feature collar must be straight and constant-section. The rest of the feature may
|
|
80
|
+
contain bores or other geometry. The actual support patch may be planar, tilted, or curved when
|
|
81
|
+
it forms a continuous height chart along that collar's axis. Unsupported or ambiguous contact,
|
|
82
|
+
an incomplete collar, a gap, or exhausted validation rejects. Joining never positions or extends
|
|
83
|
+
the feature. The straight collar must continue by `height` beyond the highest support contact
|
|
84
|
+
anywhere under the expanded footprint, including its outer transition boundary.
|
|
85
|
+
|
|
86
|
+
Join `width` is the projected normal offset from the feature boundary and `height` is reach along
|
|
87
|
+
its collar axis above local contact. Miter corners can extend farther than the width. Both dimensions
|
|
88
|
+
must be positive, or both zero to disable added blending while still validating the connection.
|
|
89
|
+
|
|
90
|
+
## Choose the transition
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
import { box } from "@metamesh/modeling";
|
|
96
|
+
import { transform3 } from "@metamesh/modeling/geometry";
|
|
97
|
+
import { generate } from "@metamesh/project";
|
|
98
|
+
|
|
99
|
+
const base = box({ size: [24, 20, 4] });
|
|
100
|
+
const rib = box({ size: [8, 4, 12] }).translate([0, 0, 7]);
|
|
101
|
+
|
|
102
|
+
const smooth = base.join(rib, {
|
|
103
|
+
source: "bottom",
|
|
104
|
+
transition: { width: 2, height: 3 },
|
|
105
|
+
});
|
|
106
|
+
const straight = base.join(rib, {
|
|
107
|
+
source: "bottom",
|
|
108
|
+
transition: { kind: "straight", width: 2, height: 3 },
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
export default generate(({ part }) => [
|
|
112
|
+
part("smooth", {
|
|
113
|
+
geometry: smooth,
|
|
114
|
+
color: "#6f9eaa",
|
|
115
|
+
transform: transform3().translate([-16, 0, 0]),
|
|
116
|
+
}),
|
|
117
|
+
part("straight", {
|
|
118
|
+
geometry: straight,
|
|
119
|
+
color: "#d6aa58",
|
|
120
|
+
transform: transform3().translate([16, 0, 0]),
|
|
121
|
+
}),
|
|
122
|
+
]);
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
- `"smooth"` is the default and adds a tangent-matching cubic blend.
|
|
128
|
+
- `"straight"` adds a linear planar bevel along each sampled support facet. On curved support,
|
|
129
|
+
this does not imply one constant bevel angle around the connection.
|
|
130
|
+
|
|
131
|
+
These settings describe transition width and height, rather than a circular fillet radius.
|
|
132
|
+
`"chamfer"` and `"round"` are not join kinds, and a `radius` option is rejected. Use the
|
|
133
|
+
[`JoinOptions`](../reference/model/JoinOptions.md) contract for exact fields. Apply independent
|
|
134
|
+
[free-end finishing](profiles-and-extrusion.md#finish-a-profile-with-a-hole) while
|
|
135
|
+
constructing the feature. Sampling follows the physical policy and preserves the operands'
|
|
136
|
+
supplied facets.
|
|
@@ -22,6 +22,8 @@ export default generate<Record<never, never>>(({ part }) => {
|
|
|
22
22
|
});
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
The centered 6 mm plate is cut by an 8 mm tall cylinder so the hole crosses both faces.
|
|
26
|
+
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
The cutter extends beyond both faces of the centered plate. `part("plate", ...)` gives the output
|
|
@@ -29,7 +31,7 @@ a stable ID so you can identify the plate in the result. This model takes an emp
|
|
|
29
31
|
|
|
30
32
|
## Check and run
|
|
31
33
|
|
|
32
|
-
With [Modeling and the CLI installed](https://metamesh.studio/docs/develop/
|
|
34
|
+
With [Modeling and the CLI installed](https://metamesh.studio/docs/develop/cli#install-and-discover-the-environment),
|
|
33
35
|
check the source and generate a captured result:
|
|
34
36
|
|
|
35
37
|
```bash
|
|
@@ -37,7 +39,7 @@ pnpm exec metamesh typecheck model.ts --kind model
|
|
|
37
39
|
pnpm exec metamesh run model.ts --kind model
|
|
38
40
|
```
|
|
39
41
|
|
|
40
|
-
Continue with [inspection and rendering](https://metamesh.studio/docs/develop/
|
|
42
|
+
Continue with [inspection and rendering](https://metamesh.studio/docs/develop/cli#inspect-the-captured-result),
|
|
41
43
|
or [host the program in your application](hosting.md).
|
|
42
44
|
When you're ready for a different shape, the
|
|
43
|
-
[construction chooser](
|
|
45
|
+
[construction chooser](recipes.md#choose-a-technique) helps you pick an approach.
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Make solids from SVG and text
|
|
2
|
+
|
|
3
|
+
Extrude imported SVG artwork or exact-font lettering, and fit its visible outline in millimetres.
|
|
4
|
+
|
|
5
|
+
Build a badge, sign, or label from vector artwork. SVG controls supply painted shapes; Font and
|
|
6
|
+
Text controls supply exact lettering. Both become filled Sections that you can extrude or combine
|
|
7
|
+
with other material.
|
|
8
|
+
|
|
9
|
+
Run the examples in a [Studio code Project](https://metamesh.studio/docs/develop/code-projects), where Studio supplies
|
|
10
|
+
typed controls and prepared services. For a local model, follow the
|
|
11
|
+
[standalone workflow](standalone-model.md) and use its host entry point.
|
|
12
|
+
|
|
13
|
+
## SVG sections: fills and strokes are different inputs
|
|
14
|
+
|
|
15
|
+
Use `svgSection` for a complete SVG document, where supported visible fills and bounded strokes
|
|
16
|
+
contribute material. Use `svgPathSection` for path-data text: it is fill-only and does not apply
|
|
17
|
+
stroke styling. Both convert SVG’s Y-down coordinates to the model’s Y-up plane and center the
|
|
18
|
+
painted bounds by default. `origin: "document"` retains the converted document viewport origin.
|
|
19
|
+
|
|
20
|
+
## SVG parameter and extrusion
|
|
21
|
+
|
|
22
|
+
Add an **SVG** control with ID `artwork` in **Model controls**, then pass its string value directly
|
|
23
|
+
to `svgSection`:
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
import { svgSection } from "@metamesh/modeling";
|
|
29
|
+
import { generate } from "@metamesh/project";
|
|
30
|
+
|
|
31
|
+
export default generate(({ params, part }) => {
|
|
32
|
+
const profile = svgSection(params.artwork);
|
|
33
|
+
return part("model", profile.extrude({ height: 3, center: true }));
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
`svgSection` also accepts a constant SVG document. This single path combines curved scallops
|
|
40
|
+
and a star-shaped opening; the artwork stays outside `generate` because it does not depend on controls:
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import { svgSection } from "@metamesh/modeling";
|
|
46
|
+
import { generate } from "@metamesh/project";
|
|
47
|
+
|
|
48
|
+
// One path combines a curved outer edge with a star-shaped opening.
|
|
49
|
+
const artwork = `
|
|
50
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="48mm" height="32mm" viewBox="0 0 48 32">
|
|
51
|
+
<path
|
|
52
|
+
fill-rule="evenodd"
|
|
53
|
+
d="
|
|
54
|
+
M 24 0
|
|
55
|
+
C 28 0 29 4 33 4 C 37 2 41 4 41 8
|
|
56
|
+
C 45 8 48 12 48 16 C 48 20 45 24 41 24
|
|
57
|
+
C 41 28 37 30 33 28 C 29 28 28 32 24 32
|
|
58
|
+
C 20 32 19 28 15 28 C 11 30 7 28 7 24
|
|
59
|
+
C 3 24 0 20 0 16 C 0 12 3 8 7 8
|
|
60
|
+
C 7 4 11 2 15 4 C 19 4 20 0 24 0 Z
|
|
61
|
+
M 24 7 L 26.5 12.6 L 32.5 13.3 L 28 17.6 L 29.2 24
|
|
62
|
+
L 24 20.8 L 18.8 24 L 20 17.6 L 15.5 13.3 L 21.5 12.6 Z
|
|
63
|
+
"
|
|
64
|
+
/>
|
|
65
|
+
</svg>
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
export default generate(({ part }) => {
|
|
69
|
+
const badge = svgSection(artwork);
|
|
70
|
+
return part("badge", badge.extrude({ height: 4, center: true }));
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
A 48 × 32 × 4 mm badge combines smooth cubic curves and a crisp star-shaped opening in one SVG path.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
The even-odd fill rule makes the second subpath a hole regardless of winding. Complete documents
|
|
79
|
+
honor supported physical root units and `viewBox`. With `svgPathSection`, one user unit defaults
|
|
80
|
+
to 1 mm; its `scale` option chooses another millimetres-per-unit conversion.
|
|
81
|
+
|
|
82
|
+
To choose the finished artwork size, pass `fit` with positioned XY bounds. Fitting preserves
|
|
83
|
+
aspect ratio and centers the painted geometry inside the target; unused SVG canvas margins do
|
|
84
|
+
not reserve space. Adaptive curve tolerance and edge spacing apply at the final millimetre size:
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { rectangle, svgSection } from "@metamesh/modeling";
|
|
90
|
+
import { bounds2 } from "@metamesh/modeling/geometry";
|
|
91
|
+
import { generate } from "@metamesh/project";
|
|
92
|
+
|
|
93
|
+
export default generate(({ part }) => {
|
|
94
|
+
const target = bounds2({ size: [30, 18] });
|
|
95
|
+
const artwork = svgSection('<svg><circle r="1"/></svg>', {
|
|
96
|
+
fit: target,
|
|
97
|
+
resolution: { maxChordError: 0.05 },
|
|
98
|
+
});
|
|
99
|
+
// The outline marks the available 30 × 18 mm rectangle, outside the artwork.
|
|
100
|
+
const outline = rectangle({ size: [31, 19] }).subtract(rectangle({ size: [30, 18] }));
|
|
101
|
+
return [
|
|
102
|
+
part("artwork", { geometry: artwork.extrude({ height: 0.8 }), color: "#f6ad55" }),
|
|
103
|
+
part("target-outline", { geometry: outline.extrude({ height: 0.35 }), color: "#60a5fa" }),
|
|
104
|
+
];
|
|
105
|
+
});
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Fit the painted outline in millimetres before sampling and extrusion, preserving its aspect ratio.
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
To prepare SVG without an engine, `preflightSvgRegion` from `@metamesh/modeling/geometry` accepts
|
|
113
|
+
the same fit target and returns its applied `fit`, final region, and review metrics. The scale
|
|
114
|
+
and translation map the selected origin's SVG millimetres to model millimetres. Reuse them to
|
|
115
|
+
align layers imported with the same document coordinate system and origin.
|
|
116
|
+
Exact circular segment counts retain precedence over adaptive sampling. Empty artwork cannot
|
|
117
|
+
be fitted, and fitting rejects a requested resolution that exceeds the sampling limits.
|
|
118
|
+
|
|
119
|
+
Round stroke caps are outward semicircles aligned with their end segments. Each cap uses
|
|
120
|
+
`ceil(circularSegments / 2)` intervals, following the shared arc-sampling policy; odd counts are
|
|
121
|
+
accepted. This also applies to pure `strokeRegionData` and authored `stroke` Sections.
|
|
122
|
+
|
|
123
|
+
Visible fills and bounded strokes contribute geometry; editor metadata is ignored. Editor text is
|
|
124
|
+
outlined to visible paths on Apply. Live `<text>`, images, `<use>`, external resources, class-based
|
|
125
|
+
stylesheets, nested SVG viewports, clipping, masks, filters, scripts, animation, gradients, patterns,
|
|
126
|
+
and percentage dimensions are rejected. To generate lettering
|
|
127
|
+
directly, use the [text recipe](#text-from-a-font-parameter). These helpers don't support SVG export,
|
|
128
|
+
project assets, custom font uploads, text on paths, or general SVG layout.
|
|
129
|
+
|
|
130
|
+
## Text and font variability
|
|
131
|
+
|
|
132
|
+
Studio prepares the selected font before generation. `services.text.layout()` shapes the text
|
|
133
|
+
synchronously; cache an expensive shared layout with `memo`, then pass it to `textSection`. A
|
|
134
|
+
stable helper that needs parameters and fixed services receives the full generation context.
|
|
135
|
+
There is no ambient font provider, and export uses the captured mesh rather than shaping again.
|
|
136
|
+
|
|
137
|
+
## Text from a Font parameter
|
|
138
|
+
|
|
139
|
+
Use this recipe for a label, plaque, or raised lettering whose font remains adjustable.
|
|
140
|
+
|
|
141
|
+
1. Open **Model controls**, add a **Font** control with ID `font`, and choose its default face and
|
|
142
|
+
weight. Outfit and JetBrains Mono are bundled starter fonts.
|
|
143
|
+
2. Choose **Apply & return** and use the generation program below in `model.ts`.
|
|
144
|
+
Studio prepares the selected font before the program lays out and extrudes its text.
|
|
145
|
+
3. To make the wording adjustable, add a **Text** control with ID `label` and a non-empty default,
|
|
146
|
+
then replace the literal `"MetaMesh"` with `params.label`.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
import { textSection } from "@metamesh/modeling";
|
|
152
|
+
import { generate } from "@metamesh/project";
|
|
153
|
+
|
|
154
|
+
export default generate(({ params, services, part }) => {
|
|
155
|
+
// The host has loaded the exact selected font before generation.
|
|
156
|
+
const layout = services.text.layout("MetaMesh", {
|
|
157
|
+
fontSize: 8,
|
|
158
|
+
font: params.font,
|
|
159
|
+
letterSpacing: 0.15,
|
|
160
|
+
});
|
|
161
|
+
// textSection preserves counters, such as the enclosed hole in the letter a.
|
|
162
|
+
return part("label", textSection(layout).extrude({ height: 1.2 }));
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
The poster uses a pinned bundled Outfit face and preserves the counters inside each letter.
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
`textSection(layout)` converts prepared vector curves into a filled section, preserving holes in
|
|
171
|
+
letters. Extrude that section or combine it with other sections and solids. Use `layout.metrics`
|
|
172
|
+
and its visible `bounds` to size a backing plate or reject text without visible outlines.
|
|
173
|
+
|
|
174
|
+
Check a positioned label with [`bounds.containsBounds()`](../reference/geometry/bounds2.md),
|
|
175
|
+
using [`bounds2({ size })`](../reference/geometry/bounds2.md) for the available rectangle.
|
|
176
|
+
Horizontal `align: "center"` centers advance width; visible ink can remain asymmetric.
|
|
177
|
+
To resize the ink uniformly and center it inside a target, use
|
|
178
|
+
[`fitTextLayout`](../reference/geometry/fitTextLayout.md) before `textSection`. It transforms
|
|
179
|
+
the retained vector paths before sampling, keeping curve tolerance in final millimetres.
|
|
180
|
+
`maxScale: 1` permits shrinking without enlargement. Choose a minimum readable letter height
|
|
181
|
+
and write parameter-specific error messages for your model.
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
import { rectangle, textSection } from "@metamesh/modeling";
|
|
187
|
+
import {
|
|
188
|
+
bounds2,
|
|
189
|
+
fitTextLayout,
|
|
190
|
+
type FittedTextLayout,
|
|
191
|
+
type VectorTextLayout,
|
|
192
|
+
} from "@metamesh/modeling/geometry";
|
|
193
|
+
import { generate } from "@metamesh/project";
|
|
194
|
+
|
|
195
|
+
function labelFits(layout: VectorTextLayout): boolean {
|
|
196
|
+
const ink = layout.metrics.bounds;
|
|
197
|
+
return ink !== null && bounds2({ size: [40, 12] }).containsBounds(ink);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function fitLabel(layout: VectorTextLayout): FittedTextLayout {
|
|
201
|
+
// Fit visible ink while preserving proportions and preventing enlargement.
|
|
202
|
+
return fitTextLayout(layout, bounds2({ size: [40, 12] }), { maxScale: 1 });
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export default generate(({ services, params, part }) => {
|
|
206
|
+
const layout = services.text.layout("MetaMesh", { font: params.font, fontSize: 20 });
|
|
207
|
+
const fitted = fitLabel(layout);
|
|
208
|
+
if (!labelFits(fitted)) throw new Error("Keep the lettering inside the label area.");
|
|
209
|
+
const backing = rectangle({ size: [44, 16], treatment: { kind: "round", radius: 2 } }).extrude({
|
|
210
|
+
height: 2,
|
|
211
|
+
});
|
|
212
|
+
const lettering = textSection(fitted).extrude({ height: 0.8 }).translate([0, 0, 2]);
|
|
213
|
+
return [
|
|
214
|
+
part("backing", { geometry: backing, color: "#60a5fa" }),
|
|
215
|
+
part("lettering", { geometry: lettering, color: "#f6ad55" }),
|
|
216
|
+
];
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Fit the visible letter outlines to the label area before turning them into material.
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
| Setting | Meaning |
|
|
225
|
+
| --------------- | ------------------------------------------------------------------------------ |
|
|
226
|
+
| `font` | The complete Font control value, including the exact face revision and weight |
|
|
227
|
+
| `fontSize` | Em size in millimetres; visible capital height depends on the font |
|
|
228
|
+
| `letterSpacing` | Extra millimetres between shaped glyph clusters |
|
|
229
|
+
| `align` | Left, center, or right alignment using the text's advance |
|
|
230
|
+
| `verticalAlign` | First-line baseline by default, or top, center, or bottom using visible bounds |
|
|
231
|
+
| `lineHeight` | Baseline-spacing multiplier; omitted uses the font's natural line spacing |
|
|
232
|
+
|
|
233
|
+
For a circular label, add a [`baseline`](../reference/text/VectorTextArcBaseline.md) with
|
|
234
|
+
`kind: "arc"` and a positive `radius` in millimetres to the layout options. The baseline is centered
|
|
235
|
+
at the XY origin; `centerAngle` chooses its alignment datum and `direction` chooses the
|
|
236
|
+
reading direction. Each shaped glyph group rotates without bending. Circular text requires one
|
|
237
|
+
line and baseline vertical alignment; its default horizontal alignment is centered. These helpers
|
|
238
|
+
don't support arbitrary path text or automatic wrapping.
|
|
239
|
+
|
|
240
|
+
Text uses positive Y upward and supports line breaks, with at most 512 UTF-16 units and 16 lines.
|
|
241
|
+
Empty or whitespace-only text can be measured but cannot create a section. Return a parameter error
|
|
242
|
+
for that expected input; a missing glyph also requires different wording or a font that supports it.
|
|
243
|
+
See [`TextSectionOptions`](../reference/model/TextSectionOptions.md) for exact options.
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
**Prepare for offline lettering**
|
|
248
|
+
|
|
249
|
+
Saving a Project keeps the exact font selection, not its bytes. Fonts beyond the bundled starters
|
|
250
|
+
can need internet. Check the [font and offline
|
|
251
|
+
rules](https://metamesh.studio/docs/use/projects-and-offline#fonts-while-offline) before relying on a model away from a
|
|
252
|
+
connection.
|