@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
|
@@ -1,547 +1,78 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Choose imports and execution
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Find the right Modeling module and understand which operations need a host engine.
|
|
4
4
|
|
|
5
|
-
Use
|
|
6
|
-
|
|
7
|
-
the package root:
|
|
5
|
+
Use the root Modeling module to build shapes, then reach for a focused geometry module when you
|
|
6
|
+
need calculations, custom boundaries, or mesh buffers.
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
import { box, cylinder } from "@metamesh/modeling";
|
|
13
|
-
import { generate } from "@metamesh/project";
|
|
14
|
-
```
|
|
10
|
+
**Build a recipe, then choose its host**
|
|
15
11
|
|
|
12
|
+
The same shapes work in Studio, the CLI, and your application. Modeling describes the material;
|
|
13
|
+
the host evaluates it and delivers the result.
|
|
16
14
|
|
|
17
15
|
|
|
18
|
-
Studio supplies the API and runtime in code Projects. You can use the same values in a standalone
|
|
19
|
-
generation program. Use the [Model API reference](../reference/model.md) for exact
|
|
20
|
-
signatures.
|
|
21
16
|
|
|
22
|
-
##
|
|
17
|
+
## Import by the work you are doing
|
|
23
18
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
| Repeated holes or features | [Patterns and placement](recipes.md#primitive-booleans-and-repeated-placement) | Position one feature before repeating it |
|
|
32
|
-
| Separate mating parts | [Explicit anchors](recipes.md#named-anchors-and-custom-frames) and [shared thread settings](https://metamesh.studio/docs/develop/printable-threads) | Share a mating datum and clearance decisions |
|
|
19
|
+
| Your task | Import | What it provides |
|
|
20
|
+
| ------------------------------------------------ | ---------------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
21
|
+
| Build a part | [`@metamesh/modeling`](../reference/model.md) | Sections, Solids, construction, Booleans, and generation |
|
|
22
|
+
| Calculate geometry or placement | [`@metamesh/modeling/geometry`](../reference/geometry.md) | Fluent vectors, bounds, transforms, frames, paths, profiles, and layout |
|
|
23
|
+
| Work directly with coordinate tuples or matrices | [`@metamesh/modeling/geometry/math`](../reference/math.md) | Numerical kernels for data processing and interoperability |
|
|
24
|
+
| Design a mechanical feature | [`@metamesh/modeling/geometry/mechanical`](../reference/mechanical.md) | Gear and thread calculations, fit, standards, and mechanical preflight |
|
|
25
|
+
| Construct or inspect triangle buffers | [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md) | Pure mesh construction, processing, and analysis |
|
|
33
26
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
Start with shapes and fluent values for ordinary model authoring. Import tuple arithmetic only
|
|
28
|
+
when your calculation needs it; there is no need to turn every coordinate into a fluent value.
|
|
29
|
+
Mechanical helpers resolve dimensions and geometry; root factories such as `threadedRod` create
|
|
30
|
+
Solid recipes from mechanical options.
|
|
37
31
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
The [values guide](geometry-values.md) explains how these representations fit together.
|
|
33
|
+
Each public function and type has one import home, shown on its API reference page. Shared
|
|
34
|
+
options can belong to a different module from the operation that consumes them: `BoxOptions`
|
|
35
|
+
comes from the root, `GridPatternOptions` from `/geometry`, and `ThreadedRodOptions` from
|
|
36
|
+
`/geometry/mechanical`. Recipe constructors and pure helpers reuse those shared contracts.
|
|
43
37
|
|
|
44
|
-
##
|
|
38
|
+
## Describing a shape does not evaluate it
|
|
45
39
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
| [`@metamesh/modeling/geometry`](../reference/geometry.md) | Pure paths, profiles, calculations, and indexed meshes | Your ordinary TypeScript code |
|
|
50
|
-
| [`@metamesh/modeling/geometry/mesh`](../reference/mesh.md) | Triangle mesh construction, processing, and inspection | Your ordinary TypeScript code |
|
|
51
|
-
| [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
|
|
52
|
-
| [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
|
|
40
|
+
Factories such as `box` and `rectangle`, Boolean methods, and transforms create immutable recipes.
|
|
41
|
+
You can declare them before an engine exists and reuse ordinary recipes across runs. Changing a
|
|
42
|
+
recipe produces a new value; it leaves the original available for reuse.
|
|
53
43
|
|
|
54
|
-
|
|
55
|
-
|
|
44
|
+
Pure geometry calculations also run without an engine. This includes vector arithmetic, path
|
|
45
|
+
queries, profile matching, mechanical calculations, and functions in the mesh module.
|
|
46
|
+
`mesh.extrude(...)` creates triangle buffers directly; `section.extrude(...)` describes a Solid
|
|
47
|
+
that the host will evaluate.
|
|
56
48
|
|
|
57
|
-
|
|
49
|
+
Operations that **observe a shape** need active synchronous generation:
|
|
58
50
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
For lettering, [prepare exact font bytes](fonts.md) before building.
|
|
51
|
+
- `shape.inspect()` measures evaluated material.
|
|
52
|
+
- `shape.anchor(name)` and `shape.components()` resolve evaluated placement or topology.
|
|
53
|
+
- `solid.toMesh()` and `section.toRegionData()` extract evaluated geometry.
|
|
63
54
|
|
|
64
|
-
|
|
55
|
+
The host owns native resources and cleanup. Don't initialize a kernel or delete individual shapes
|
|
56
|
+
inside a model. Read [resolution and inspection](resolution-and-inspection.md) for
|
|
57
|
+
measurement, session ownership, and preflight guarantees.
|
|
65
58
|
|
|
66
|
-
Choose the
|
|
59
|
+
## Choose the host once
|
|
67
60
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
| `PolygonData` / `RegionData` | One exterior plus holes / a collection of filled polygons | Serialized filled topology |
|
|
74
|
-
| `Profile` / `ProfileContour2` | Identified family topology / one closed boundary of identified spans | Correspondence across related shapes |
|
|
75
|
-
| `CorrespondingProfile` | Shared sampled landmarks from `matchProfiles` | Loft or sweep stations |
|
|
76
|
-
| `Section` / `Solid` | Immutable filled 2D / 3D recipes | Booleans and model construction |
|
|
77
|
-
| `Vector2Data` / `Vector3Data`, `Path2Data` / `Path3Data` | Vector tuples and complete path records | Interchange and numerical kernels |
|
|
78
|
-
| `Bounds2` / `Bounds3` | Immutable axis-aligned extents and measurement methods | Containment and placement queries |
|
|
79
|
-
| `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
|
|
80
|
-
| `Anchor3` | An attachment frame | Relative placement |
|
|
61
|
+
| You are building | Start here | Who runs the model? |
|
|
62
|
+
| ---------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
63
|
+
| A model with editable controls in Studio | [First code Project](https://metamesh.studio/docs/develop/code-projects) | Studio supplies `@metamesh/project`, controls, services, preview, and export |
|
|
64
|
+
| A local TypeScript model | [Standalone model](standalone-model.md) | The CLI checks, runs, and inspects your model |
|
|
65
|
+
| An application that hosts models | [Engine hosting](hosting.md) | Your application initializes the engine and owns sessions and delivery |
|
|
81
66
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
stay with the recipe; omitted settings use the evaluating host's defaults. The host manages
|
|
85
|
-
evaluation caches and native kernel values.
|
|
67
|
+
The geometry operations stay the same across hosts. Setup and generation imports differ, so use
|
|
68
|
+
the entry point shown by the workflow you chose. Projects in Studio do not install npm packages.
|
|
86
69
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
Standalone hosts use [`@metamesh/modeling/engine`](../reference/engine.md) for execution,
|
|
71
|
+
[`@metamesh/modeling/export`](../reference/export.md) for STL, 3MF, or GLB serialization, and
|
|
72
|
+
optionally [`@metamesh/modeling/text`](../reference/text.md) to prepare exact fonts. The
|
|
73
|
+
[hosting guide](hosting.md) owns installation and lifecycle setup.
|
|
90
74
|
|
|
91
|
-
|
|
92
|
-
contour factories such as `circleContour` and `rectangleContour` when custom calculations or
|
|
93
|
-
meshing need point data. These rectangle factories share size, center, corner treatment, and
|
|
94
|
-
sampling options:
|
|
75
|
+
## Build a visible result
|
|
95
76
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
| Filled material for Booleans or extrusion | [`rectangle`](../reference/model/rectangle.md) | `Section` |
|
|
99
|
-
| Sampled boundary coordinates | [`rectangleContour`](../reference/geometry/rectangleContour.md) | `Contour` |
|
|
100
|
-
| Stable edge and corner identities across stations | [`rectangleProfile`](../reference/geometry/rectangleProfile.md) | `Profile` |
|
|
101
|
-
|
|
102
|
-
[`polygon`](../reference/model/polygon.md) fills boundaries in four forms:
|
|
103
|
-
|
|
104
|
-
- `polygon(points)` fills one contour.
|
|
105
|
-
- `polygon({ outer, holes })` validates exterior/hole topology and normalizes winding.
|
|
106
|
-
- `polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
|
|
107
|
-
explicit `"evenodd"` fill.
|
|
108
|
-
- `polygon({ polygons: data })` accepts existing `RegionData`.
|
|
109
|
-
|
|
110
|
-
Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
|
|
111
|
-
disconnected components. Use `section.toRegionData()` inside synchronous generation to read
|
|
112
|
-
the evaluated shape; keep serialized point data for interchange or calculations outside generation.
|
|
113
|
-
|
|
114
|
-
`rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
|
|
115
|
-
identified spans for custom geometry. Use `matchProfiles` to prepare a complete family when loft
|
|
116
|
-
stations or a sweep need holes, seams, or landmarks beyond ordinary primitives.
|
|
117
|
-
|
|
118
|
-
Identified spans also accept cubic Béziers with the same endpoints and controls as
|
|
119
|
-
[`CubicBezierCurve2`](../reference/geometry/CubicBezierCurve2.md). Paired spans share one parameter
|
|
120
|
-
grid; physical sampling refines every member before choosing the family count. Collapsed spans
|
|
121
|
-
retain repeated logical slots, while the completed loft removes degenerate faces.
|
|
122
|
-
|
|
123
|
-
## Choose fluent values or standalone algorithms
|
|
124
|
-
|
|
125
|
-
### Convert representations deliberately
|
|
126
|
-
|
|
127
|
-
| From | Conversion | Evaluation and ownership |
|
|
128
|
-
| -------------------------- | ---------------------------------------------- | -------------------------------------------------------------- |
|
|
129
|
-
| `Contour` / `RegionData` | `polygon(...)` to `Section` | Captures a recipe without an engine |
|
|
130
|
-
| `Section` | `section.toRegionData()` | Observes evaluated geometry inside a host execution |
|
|
131
|
-
| `Profile` | `matchProfiles(...)` | Pure matching retains identified boundaries and landmarks |
|
|
132
|
-
| Closed `Path2` / `Contour` | `mesh.extrude(...)` to `TriangleMesh` | Pure mesh construction; no `ends` treatments |
|
|
133
|
-
| `TriangleMesh` | `solidFromMesh(...)` to `Solid` | Captures a recipe; native validation happens during evaluation |
|
|
134
|
-
| `Solid` / `TriangleMesh` | `part(...)`, then an engine run to `ModelPart` | Host finalizes durable immutable manufacturing buffers |
|
|
135
|
-
| `ModelPart` | Pass directly to mesh analysis or `export3mf` | No live session needed; use buffer `copy()` before mutation |
|
|
136
|
-
|
|
137
|
-
Pure extrusion uses `ExtrudeMeshOptions` for height, centering, twist, top scale, and sampling.
|
|
138
|
-
Native `Section.extrude` also supports `ends` through `ExtrudeOptions`; requesting them from
|
|
139
|
-
`mesh.extrude` throws instead of silently returning unfinished geometry.
|
|
140
|
-
|
|
141
|
-
Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
|
|
142
|
-
`path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
|
|
143
|
-
outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
|
|
144
|
-
[`mesh.sweep`](../reference/mesh/sweep.md), or
|
|
145
|
-
[`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
|
|
146
|
-
|
|
147
|
-
### Fluent vector and tuple arithmetic
|
|
148
|
-
|
|
149
|
-
Tuple kernels remain useful in numerical loops. The same arithmetic can be written in either form:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
import { vector3 } from "@metamesh/modeling";
|
|
155
|
-
import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry";
|
|
156
|
-
|
|
157
|
-
export const fluentDirection = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
158
|
-
export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10);
|
|
159
|
-
// fluentDirection.toData() and tupleDirection contain the same coordinates.
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
Fluent vectors validate finite inputs and results and allocate immutable values. Basic tuple
|
|
165
|
-
arithmetic such as `add3` avoids those wrappers and assumes valid inputs; overflow can produce
|
|
166
|
-
nonfinite results. Individual kernels document additional checks, such as zero-length rejection
|
|
167
|
-
in `normalize3`.
|
|
168
|
-
|
|
169
|
-
## Value and data naming
|
|
170
|
-
|
|
171
|
-
Modeling values use domain names such as `Vector2`, `Transform2`, `Path2`, and `Bounds2`.
|
|
172
|
-
Their plain representations consistently use `Data`: `Vector2Data`, `Transform2Data`,
|
|
173
|
-
`Path2Data`, and `Bounds2Data`. Each value exposes `toData()` for a stable, deeply frozen
|
|
174
|
-
representation, and its factory accepts that data again. `Input` types describe accepted values,
|
|
175
|
-
data, and any supported construction shorthand.
|
|
176
|
-
|
|
177
|
-
Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
|
|
178
|
-
and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
|
|
179
|
-
when a numerical algorithm needs only coordinates; keep the full record when closure matters too.
|
|
180
|
-
Options, reports, geometry descriptors, and recipes keep their own descriptive names. Use
|
|
181
|
-
`toMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a triangle mesh
|
|
182
|
-
or a Section as a region.
|
|
183
|
-
|
|
184
|
-
## Query paths and preserve closure
|
|
185
|
-
|
|
186
|
-
Use `path2(points, { closed: true })` or `path3(points, { closed: true })` for a reusable boundary.
|
|
187
|
-
`length()` includes the closing edge. [`closestPoint`](../reference/geometry/Path3-type.md#closestpoint)
|
|
188
|
-
returns a [`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
|
|
189
|
-
millimetres, `edgeIndex`, and clamped `fraction` within that edge. Equal-distance ties select the
|
|
190
|
-
first edge in traversal order. The fraction is local to an edge; it is not a whole-path or analytic
|
|
191
|
-
curve parameter.
|
|
192
|
-
|
|
193
|
-
### Path coordinate round trip
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
```ts
|
|
198
|
-
import { path3 } from "@metamesh/modeling";
|
|
199
|
-
|
|
200
|
-
export const boundary = path3(
|
|
201
|
-
[
|
|
202
|
-
[0, 0, 0],
|
|
203
|
-
[10, 0, 0],
|
|
204
|
-
[10, 10, 0],
|
|
205
|
-
[0, 10, 0],
|
|
206
|
-
],
|
|
207
|
-
{ closed: true }
|
|
208
|
-
);
|
|
209
|
-
export const nearest = boundary.closestPoint([-2, 5, 0]);
|
|
210
|
-
// point: [0, 5, 0], distance: 2, edgeIndex: 3, fraction: 0.5
|
|
211
|
-
export const restoredPath = path3(boundary.toData());
|
|
212
|
-
// Both paths include the closing edge and have length 40 mm.
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
`toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
|
|
218
|
-
value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
|
|
219
|
-
Don't repeat the endpoint of a closed path. Open paths may be empty; their bounds are `undefined`,
|
|
220
|
-
and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
|
|
221
|
-
not a filled interior or underlying analytic curve.
|
|
222
|
-
|
|
223
|
-
Chain `transform`, `reverse`, and equal-distance `resample` to create new paths. Transforming a path
|
|
224
|
-
preserves traversal even after reflection. `polygon(path)` requires a closed planar value and
|
|
225
|
-
establishes exterior/hole winding; `stroke`, sweeps, and path patterns accept paths in the matching
|
|
226
|
-
dimension. Authored point collections accept fluent vectors or tuples; serialized data uses tuples.
|
|
227
|
-
|
|
228
|
-
## Compose modeling operations
|
|
229
|
-
|
|
230
|
-
Give intermediate shapes meaningful names and choose a curve tolerance that preserves the detail
|
|
231
|
-
you need. Many high-resolution Boolean operands take longer to build.
|
|
232
|
-
|
|
233
|
-
Dimension inputs accept matching fluent vectors or plain coordinate tuples, such as
|
|
234
|
-
`box({ size: vector3([30, 20, 6]) })`. Use `section.extrude(options)`, `section.revolve(options)`,
|
|
235
|
-
and `section.sweep(path, options)` in fluent modeling sequences. Imported `extrude`, `revolve`, and
|
|
236
|
-
`sweep` accept `Section | CorrespondingProfile`, so reusable profile functions can use either input
|
|
237
|
-
without branching. Both forms use the same operation contracts. Use `mesh.extrude(contour, options)`
|
|
238
|
-
when constructing triangle buffers directly.
|
|
239
|
-
|
|
240
|
-
Primitive factories take one options object. For example, `rectangle({ size: [24, 16] })` creates a
|
|
241
|
-
filled Section and `box({ size: [24, 16, 6] })` creates a Solid. The `union`, `subtract`, and `intersect`
|
|
242
|
-
methods accept one same-dimensional shape or a readonly array; an empty array preserves the receiver.
|
|
243
|
-
Collection `union(shapes)` and `intersect(shapes)` combine peers and require at least one shape.
|
|
244
|
-
`section.offset(distance, options)` stays in the filled XY plane.
|
|
245
|
-
|
|
246
|
-
- `section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
|
|
247
|
-
`center: true` is requested.
|
|
248
|
-
- `section.revolve({ degrees })` rotates radial/Z geometry around +Z.
|
|
249
|
-
- `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
|
|
250
|
-
rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. Invertible
|
|
251
|
-
XY transforms must keep consistent handedness. Use corresponding Profile stations for custom
|
|
252
|
-
topology. Boolean Sections and point contours default to `correspondence: "direct"`, preserving
|
|
253
|
-
their supplied seams. Select `"reindex"`, `"fast-distance"`, or `"distance"` to change the
|
|
254
|
-
association strategy. Contour order alone does not establish semantic correspondence.
|
|
255
|
-
- `section.sweep(path, options)` supports open or closed paths, degree twist, uniform/XY/per-station
|
|
256
|
-
scales, and an explicit compatible closed seam.
|
|
257
|
-
|
|
258
|
-
## Coordinates, units, and resolution
|
|
259
|
-
|
|
260
|
-
MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
|
|
261
|
-
tolerances are millimetres; angular arguments such as `rotate` use degrees.
|
|
262
|
-
Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-value rotations also take degrees.
|
|
263
|
-
The low-level [`rotationTransform3`](../reference/geometry/rotationTransform3.md) constructor
|
|
264
|
-
requires an explicit `{ degrees }` or `{ radians }` angle.
|
|
265
|
-
|
|
266
|
-
`GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
|
|
267
|
-
chord error, 16–512 segments per complete circle, and no maximum segment length. Settings apply
|
|
268
|
-
in this order:
|
|
269
|
-
|
|
270
|
-
1. An operation-specific `segments` or `circularSegments` count.
|
|
271
|
-
2. The operation's local `resolution`.
|
|
272
|
-
3. Host session defaults.
|
|
273
|
-
|
|
274
|
-
A shape doesn't carry its sampling policy into later operations; pass it explicitly where needed.
|
|
275
|
-
|
|
276
|
-
Use an exact segment count for intentionally faceted geometry or when two sampled contours must
|
|
277
|
-
match point for point. Use physical chord and segment limits for ordinary printable curves. If a
|
|
278
|
-
requested tolerance can't fit within the safety cap, the operation fails instead of silently
|
|
279
|
-
returning a coarser shape.
|
|
280
|
-
|
|
281
|
-
`regularPolygon({ radius, sides, rotation, sizing })` makes a filled regular polygon.
|
|
282
|
-
`sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
|
|
283
|
-
meet the nominal radius. `circle` and `cylinder` support the same radial convention.
|
|
284
|
-
`tube` accepts a complete pair of inner/outer radii or diameters, with independent `innerSizing`
|
|
285
|
-
and `outerSizing`. For example, `tube({ innerDiameter: 8, outerDiameter: 12, height: 10,
|
|
286
|
-
innerSizing: "face" })` preserves an 8 mm clear bore between the sampled faces. Both defaults are
|
|
287
|
-
`"vertex"`; compensation that removes the wall rejects. Sampling and sizing do not establish a
|
|
288
|
-
manufacturing fit allowance.
|
|
289
|
-
|
|
290
|
-
Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
|
|
291
|
-
`profile` points:
|
|
292
|
-
|
|
293
|
-
- Boxes select disjoint named edges or groups; rectangles select individual corners.
|
|
294
|
-
- Cylinder/frustum and straight convex extrusion rims use independent `ends.bottom` and `ends.top`.
|
|
295
|
-
- Zero radius, zero chamfer/smooth distance, or an all-zero distance pair leaves a feature untreated.
|
|
296
|
-
Other setback pairs require two positive values; negative and nonfinite amounts reject.
|
|
297
|
-
- Disabled extrusion end treatments retain ordinary support, including holes and twist.
|
|
298
|
-
|
|
299
|
-
`attachment` maps a shape-local anchor to a world anchor after construction, using alignment,
|
|
300
|
-
millimetre gap, and degree spin. It accepts named or explicit anchors; Sections must stay in XY.
|
|
301
|
-
|
|
302
|
-
## Reuse a transform across shapes and coordinates
|
|
303
|
-
|
|
304
|
-
Use [`transform2`](../reference/geometry/transform2.md) and
|
|
305
|
-
[`transform3`](../reference/geometry/transform3.md) chains for reusable placements. They are immutable
|
|
306
|
-
and pure, so you don't need an engine to build them. Calls apply in written order. A rotation
|
|
307
|
-
followed by a translation rotates around the origin, then moves the result:
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
```ts
|
|
312
|
-
import { transform3, vector3 } from "@metamesh/modeling";
|
|
313
|
-
|
|
314
|
-
// Calls apply in written order: rotate, then translate.
|
|
315
|
-
const placement = transform3().rotate([0, 0, 90]).translate([20, 0, 5]);
|
|
316
|
-
export const placedPoint = placement.applyPoint([10, 0, 0]); // approximately [20, 10, 5]
|
|
317
|
-
export const placedDirection = placement.applyDirection([10, 0, 0]); // approximately [0, 10, 0]
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
|
|
323
|
-
matching path helpers. Finished parts accept rigid transforms through `part(id, { geometry, transform })`;
|
|
324
|
-
pattern and attachment matrices work directly. Part placement rejects scale, shear and reflection.
|
|
325
|
-
`toData()` supplies a canonical matrix when another system needs it.
|
|
326
|
-
Construct the placement once and reuse it across point collections.
|
|
327
|
-
|
|
328
|
-
`current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
|
|
329
|
-
same-dimensional matrix. `inverse()` returns the reverse placement. Each operation returns a new
|
|
330
|
-
chain, so you can derive different placements from a shared starting point.
|
|
331
|
-
|
|
332
|
-
Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
|
|
333
|
-
the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
|
|
334
|
-
Z; `rotateAxis(axis, degrees, { pivot })` normalizes its nonzero axis. Omitted pivots use the
|
|
335
|
-
coordinate origin. Uniform and per-axis scales must be finite and nonzero; negative factors reflect.
|
|
336
|
-
Nonfinite inputs, invalid axes, and singular matrices throw `GeometryError`.
|
|
337
|
-
|
|
338
|
-
`applyPoint` includes translation. `applyDirection` excludes translation and preserves scale;
|
|
339
|
-
its result is not normalized. `applyNormal` applies the inverse transpose and returns a unit normal,
|
|
340
|
-
including under nonuniform scaling; it rejects zero normals. All three return fluent vectors.
|
|
341
|
-
|
|
342
|
-
`Transform2` works directly with Sections and pure XY helpers; its `Transform2Data` is the same
|
|
343
|
-
canonical 3x3 representation throughout. Use `to3D()` when that XY placement
|
|
344
|
-
also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
|
|
345
|
-
that move the XY plane or collapse its dimensions; it doesn't project 3D points.
|
|
346
|
-
See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
|
|
347
|
-
|
|
348
|
-
### Transform composition order
|
|
349
|
-
|
|
350
|
-
For low-level matrix interoperability, the factories accept existing canonical matrices. Use
|
|
351
|
-
`transform3(frameTransform3(frame))` for an orthonormal frame. The raw constructors and
|
|
352
|
-
`composeTransform3(after, before)` remain available; composition applies `before` first:
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
```ts
|
|
357
|
-
import { transform3 } from "@metamesh/modeling";
|
|
358
|
-
import { applyTransformPoint3, composeTransform3 } from "@metamesh/modeling/geometry";
|
|
359
|
-
|
|
360
|
-
const current = transform3().rotate([0, 0, 90]);
|
|
361
|
-
const next = transform3().translate([20, 0, 5]);
|
|
362
|
-
export const chainedPoint = current.andThen(next).applyPoint([10, 0, 0]);
|
|
363
|
-
export const composedPoint = applyTransformPoint3(
|
|
364
|
-
composeTransform3(next.toData(), current.toData()),
|
|
365
|
-
[10, 0, 0]
|
|
366
|
-
); // Both results are approximately [20, 10, 5].
|
|
367
|
-
export const reversedPoint = next.andThen(current).applyPoint([10, 0, 0]);
|
|
368
|
-
// approximately [0, 30, 5]
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
## Calculate with vectors
|
|
374
|
-
|
|
375
|
-
Use [`vector2`](../reference/geometry/vector2.md) and [`vector3`](../reference/geometry/vector3.md)
|
|
376
|
-
for readable arithmetic chains. Operands accept tuples or vectors; `dot`, `length` and `distance`
|
|
377
|
-
return numbers. `cross` returns a signed scalar in 2D and a right-handed vector in 3D.
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
```ts
|
|
382
|
-
export const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
383
|
-
export const alignment = direction.dot([0, 0, 1]); // number
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
Values snapshot their input and operations return new values. `toData()` returns the value's
|
|
389
|
-
frozen coordinate tuple without allocating another copy. Normalization rejects zero-length vectors;
|
|
390
|
-
nonfinite coordinates, scalar parameters and overflowing results throw `GeometryError`.
|
|
391
|
-
|
|
392
|
-
For rotations and nonuniform scaling, use a reusable transform's `applyDirection`. Use
|
|
393
|
-
`applyNormal` for surface normals:
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
```ts
|
|
398
|
-
const stretched = transform3().scale([2, 1, 1]);
|
|
399
|
-
export const normal = stretched.applyNormal([1, 1, 0]);
|
|
400
|
-
export const tangent = stretched.applyDirection([1, -1, 0]);
|
|
401
|
-
export const perpendicular = normal.dot(tangent); // approximately 0
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
Fluent math and shape transforms accept vector values directly; compose a transform for part placement. Serialized
|
|
407
|
-
geometry and low-level kernels use tuples. Keep model-specific equations beside the model.
|
|
408
|
-
|
|
409
|
-
## Measure and compare bounds
|
|
410
|
-
|
|
411
|
-
Use [`bounds2`](../reference/geometry/bounds2.md) and
|
|
412
|
-
[`bounds3`](../reference/geometry/bounds3.md) for immutable axis-aligned bounds. `size()` and
|
|
413
|
-
`center()` return fluent vectors. `containsBounds(other)` tests positioned containment in the
|
|
414
|
-
same coordinate frame, including touching boundaries. It doesn't establish a manufacturing fit.
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
```ts
|
|
419
|
-
import { bounds3 } from "@metamesh/modeling";
|
|
420
|
-
import { fitBounds, layoutRow, rectangleContour } from "@metamesh/modeling/geometry";
|
|
421
|
-
import * as mesh from "@metamesh/modeling/geometry/mesh";
|
|
422
|
-
|
|
423
|
-
export const envelope = bounds3({ min: [-10, -5, 0], max: [10, 5, 8] });
|
|
424
|
-
export const size = envelope.size(); // Vector3: [20, 10, 8] mm
|
|
425
|
-
export const center = envelope.center(); // Vector3: [0, 0, 4] mm
|
|
426
|
-
|
|
427
|
-
const triangleMesh = mesh.extrude(rectangleContour({ size: [12, 6] }), { height: 4 });
|
|
428
|
-
// Mesh measurements are plain data. Wrap once for fluent queries.
|
|
429
|
-
export const measured = bounds3(mesh.bounds(triangleMesh));
|
|
430
|
-
export const fits = envelope.containsBounds(measured); // true
|
|
431
|
-
export const data = measured.toData(); // Frozen { min, max } record for interchange.
|
|
432
|
-
|
|
433
|
-
// Collection and placement algorithms accept bounds values directly.
|
|
434
|
-
export const fitting = fitBounds(measured, envelope, { maxScale: 1 });
|
|
435
|
-
export const positions = layoutRow([measured, envelope], { gap: 2 });
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
Factories snapshot finite, ordered coordinates with finite extents; zero extents are valid.
|
|
441
|
-
Alternatively construct from nonnegative dimensions with `bounds2({ size: [30, 18] })` or
|
|
442
|
-
`bounds3({ size: [30, 18, 8], center: false })`. Size construction centers on the origin by default;
|
|
443
|
-
size and min/max construction are mutually exclusive.
|
|
444
|
-
`min` and `max` are frozen tuples, and `toData()` returns the value's stable frozen plain record.
|
|
445
|
-
Path `bounds()` queries return matching fluent bounds, or `undefined` for an empty path.
|
|
446
|
-
Mesh and region measurements, inspection results, and engine snapshots retain plain
|
|
447
|
-
`Bounds2Data` or `Bounds3Data`; wrap a measurement when you need fluent queries.
|
|
448
|
-
Compiled Generator packages passing bounds values to host recipes or computed data require
|
|
449
|
-
runtime `9.0.0` or newer in major 9.
|
|
450
|
-
|
|
451
|
-
Use [`fitBounds`](../reference/geometry/fitBounds.md) to calculate a placement and
|
|
452
|
-
[`layoutRow`](../reference/geometry/layoutRow.md) to arrange a collection. These standalone
|
|
453
|
-
algorithms accept values or plain records. Supply bounds after any intended rotation; an
|
|
454
|
-
axis-aligned box alone doesn't describe the underlying shape.
|
|
455
|
-
|
|
456
|
-
## SVG sections: fills and strokes are different inputs
|
|
457
|
-
|
|
458
|
-
[`svgSection`](../reference/model/svgSection.md) converts a bounded complete SVG document into one
|
|
459
|
-
painted `Section`. Supported visible **fills and bounded strokes both contribute geometry**. It
|
|
460
|
-
handles supported shapes, paths, affine transforms, physical root units, `viewBox` scaling, and
|
|
461
|
-
allowlisted inline fill and stroke presentation.
|
|
462
|
-
|
|
463
|
-
[`svgPathSection`](../reference/model/svgPathSection.md) accepts SVG path-data text rather than a
|
|
464
|
-
document. It is a **fill-only** path operation: it doesn't apply stroke styling. Path
|
|
465
|
-
units default to millimetres and can be converted with its scale option.
|
|
466
|
-
|
|
467
|
-
Both functions convert SVG's Y-down plane to MetaMesh's Y-up plane and center the final painted
|
|
468
|
-
bounds by default. Use `origin: "document"` with `svgSection` when the converted document viewport
|
|
469
|
-
origin must remain meaningful. Adaptive flattening happens after supported transforms and unit
|
|
470
|
-
conversion, so tolerances apply in final millimetre space.
|
|
471
|
-
|
|
472
|
-
Unsupported layout or external content fails rather than disappearing silently. These helpers
|
|
473
|
-
don't support nested SVG viewports, `<use>`, images, live text, external stylesheets,
|
|
474
|
-
clipping, masks, filters, scripts, animation, gradients, patterns, uploaded project assets, or
|
|
475
|
-
custom font files. Use the [SVG extrusion recipe](recipes.md#svg-parameter-and-extrusion)
|
|
476
|
-
for a complete authored example.
|
|
477
|
-
|
|
478
|
-
## Text and font variability
|
|
479
|
-
|
|
480
|
-
`services.text.layout()` shapes text inside generation. Cache an expensive shared layout with
|
|
481
|
-
`computed`, measure its `metrics`, and pass it to `textSection(layout())`. There is no
|
|
482
|
-
ambient font provider, and exporting doesn't shape the text again. Declare a Text control for
|
|
483
|
-
the wording and a Font control for the face and weight.
|
|
484
|
-
|
|
485
|
-
Font size is the em size in millimetres, not the height of a particular letter. Layout supports
|
|
486
|
-
horizontal lines, spacing, and alignment, or a single circular baseline through
|
|
487
|
-
[`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). Follow the
|
|
488
|
-
[text recipe](recipes.md#text-from-a-font-parameter) for the control setup,
|
|
489
|
-
layout conventions, and font availability limits.
|
|
490
|
-
|
|
491
|
-
## Printable threads
|
|
492
|
-
|
|
493
|
-
The public API provides coordinated external threads, internal cutters, and threaded nuts. Reuse
|
|
494
|
-
one profile and fit policy across mating parts, then prove them with a short calibration print.
|
|
495
|
-
|
|
496
|
-
Follow [Build printable threads](https://metamesh.studio/docs/develop/printable-threads) for the illustrated workflow,
|
|
497
|
-
complete source, profile and fit choices, end treatments, and links into the exact API contracts.
|
|
498
|
-
|
|
499
|
-
## Check preflight guarantees
|
|
500
|
-
|
|
501
|
-
Use a preflight to check inputs and see what an operation will require. Each preflight checks
|
|
502
|
-
different things, so read what its report covers:
|
|
503
|
-
|
|
504
|
-
- [`mesh.preflightHeightfield`](../reference/mesh/preflightHeightfield.md) checks grid dimensions,
|
|
505
|
-
coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
|
|
506
|
-
and byte counts without evaluating heights.
|
|
507
|
-
- [`mesh.preflightThreadSolid`](../reference/mesh/preflightThreadSolid.md)
|
|
508
|
-
and related thread preflights check dimensions, sampling, and conservative allocation estimates.
|
|
509
|
-
They return the sampling plan without constructing the final mesh or native solid.
|
|
510
|
-
- [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
|
|
511
|
-
SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
|
|
512
|
-
at the selected resolution; they do not predict later mesh allocation.
|
|
513
|
-
|
|
514
|
-
The `/geometry` and `mesh` preflights run without an engine and use explicit options or package defaults.
|
|
515
|
-
The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
|
|
516
|
-
[`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
|
|
517
|
-
[`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
|
|
518
|
-
model execution and use the host's resolution and limits.
|
|
519
|
-
|
|
520
|
-
Passing a preflight covers only its documented checks. Construction can still fail while running
|
|
521
|
-
callbacks, meshing, or evaluating native geometry. Constructors enforce their limits even when
|
|
522
|
-
you skip a preflight; use one when its plan or diagnostics help you make a decision.
|
|
523
|
-
|
|
524
|
-
## Lifecycle and inspection
|
|
525
|
-
|
|
526
|
-
Studio or your standalone host handles initialization, cleanup, finalization, Worker recovery,
|
|
527
|
-
preview, and file delivery. Don't manually delete `Section` or `Solid` values. Use
|
|
528
|
-
`shape.inspect()` for bounds, topology counts, area, and volume.
|
|
529
|
-
Its immutable extrema are nested under `facts.bounds.min` and `facts.bounds.max`.
|
|
530
|
-
Native `componentCount` counts disconnected material components. Mesh analysis and signatures use
|
|
531
|
-
`shellCount` for surfaces connected by shared indexed edges: one sealed hollow body has one material
|
|
532
|
-
component and two shells. Open mesh analysis can also count open shells; this count does not certify
|
|
533
|
-
closed topology or geometric validity.
|
|
534
|
-
|
|
535
|
-
Queries such as `shape.inspect()`, `shape.isEmpty()`, `shape.components()`, `shape.anchor(name)`,
|
|
536
|
-
`solid.distance(other)`, and `solid.castSegment(origin, endpoint)` read evaluated geometry.
|
|
537
|
-
These queries and interchange with `solid.toMesh()` or `section.toRegionData()` require the host's
|
|
538
|
-
active synchronous generation. `solid.split(cutter)` returns the intersection and remainder;
|
|
539
|
-
`solid.splitByPlane(plane)` returns the positive and negative sides of the plane.
|
|
540
|
-
Constructing or combining a recipe outside generation doesn't evaluate it.
|
|
541
|
-
|
|
542
|
-
An inspection result describes the generated geometry; it doesn't certify wall thickness,
|
|
543
|
-
overhangs, fits, loads, or manufacturability. Express those requirements in your parameters and
|
|
544
|
-
validation, then check them in your manufacturing workflow.
|
|
545
|
-
|
|
546
|
-
- [Use geometry recipes](recipes.md)
|
|
547
|
-
- [Browse exact signatures](../reference/model.md)
|
|
77
|
+
Continue with [modeling fundamentals](fundamentals.md) to combine your first
|
|
78
|
+
solids, or choose a [worked technique](recipes.md) for the part you want to make.
|