@metamesh/modeling 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/README.md +34 -18
- package/dist/api/engine.d.ts +217 -121
- package/dist/api/export.d.ts +123 -79
- package/dist/api/geometry.d.ts +406 -2102
- package/dist/api/index.d.ts +472 -1798
- package/dist/api/math.d.ts +315 -0
- package/dist/api/mechanical.d.ts +1041 -0
- package/dist/api/mesh.d.ts +360 -88
- package/dist/api/text.d.ts +24 -44
- package/dist/docs/guides/concepts.md +67 -33
- package/dist/docs/guides/exporting.md +88 -0
- package/dist/docs/guides/fonts.md +5 -3
- package/dist/docs/guides/fundamentals.md +12 -24
- package/dist/docs/guides/generation.md +24 -16
- package/dist/docs/guides/geometry-values.md +192 -134
- package/dist/docs/guides/hosting.md +51 -96
- package/dist/docs/guides/profiles-and-extrusion.md +159 -11
- package/dist/docs/guides/recipes.md +121 -28
- package/dist/docs/guides/resolution-and-inspection.md +43 -23
- package/dist/docs/guides/solid-joins.md +12 -2
- package/dist/docs/guides/standalone-model.md +4 -2
- package/dist/docs/guides/svg-and-text.md +76 -39
- package/dist/docs/guides/sweeps-and-lofts.md +88 -44
- package/dist/docs/guides/transforms-and-placement.md +113 -103
- package/dist/docs/guides/workers.md +166 -0
- package/dist/docs/manifest.json +4133 -4153
- package/dist/docs/reference/engine/GenerationOptions.md +2 -3
- package/dist/docs/reference/engine/GeometryResource.md +6 -6
- package/dist/docs/reference/engine/ModelDependencies.md +2 -2
- package/dist/docs/reference/engine/ModelEngine.md +2 -3
- package/dist/docs/reference/engine/ModelEngineOptions.md +2 -7
- package/dist/docs/reference/engine/ModelPart.md +6 -6
- package/dist/docs/reference/engine/ModelResult.md +2 -2
- package/dist/docs/reference/engine/ModelRunArguments.md +2 -2
- package/dist/docs/reference/engine/ModelRunOptions.md +2 -3
- package/dist/docs/reference/engine/ModelSession.md +2 -2
- package/dist/docs/reference/engine/SessionOptions.md +2 -3
- package/dist/docs/reference/engine/categories/host-lifecycle.md +9 -3
- package/dist/docs/reference/engine/checkModel.md +6 -2
- package/dist/docs/reference/engine/createModelEngine.md +5 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +4 -11
- package/dist/docs/reference/engine/modelingWasmUrl.md +2 -2
- package/dist/docs/reference/engine.md +7 -1
- package/dist/docs/reference/export/Export3mfOptions.md +2 -6
- package/dist/docs/reference/export/ExportDiagnostic.md +2 -14
- package/dist/docs/reference/export/ExportFormat.md +2 -14
- package/dist/docs/reference/export/ExportGeometry.md +3 -15
- package/dist/docs/reference/export/ExportGlbOptions.md +14 -18
- package/dist/docs/reference/export/ExportLimits.md +2 -14
- package/dist/docs/reference/export/ExportMaterial.md +2 -14
- package/dist/docs/reference/export/ExportOptions.md +2 -14
- package/dist/docs/reference/export/ExportPart.md +2 -14
- package/dist/docs/reference/export/ExportReport.md +2 -14
- package/dist/docs/reference/export/ExportSink.md +5 -15
- package/dist/docs/reference/export/ExportStlOptions.md +2 -6
- package/dist/docs/reference/export/ExportedFile.md +14 -26
- package/dist/docs/reference/export/categories/mesh-serialization.md +9 -3
- package/dist/docs/reference/export/defaultExportLimits.md +2 -2
- package/dist/docs/reference/export/export3mf.md +4 -6
- package/dist/docs/reference/export/exportGlb.md +8 -10
- package/dist/docs/reference/export/exportStl.md +4 -6
- package/dist/docs/reference/export/write3mf.md +6 -6
- package/dist/docs/reference/export/writeGlb.md +10 -10
- package/dist/docs/reference/export/writeStl.md +6 -6
- package/dist/docs/reference/export.md +9 -3
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
- package/dist/docs/reference/geometry/Anchor3-type.md +3 -7
- package/dist/docs/reference/geometry/Anchor3Options.md +70 -0
- package/dist/docs/reference/geometry/ArcCurve2.md +3 -3
- package/dist/docs/reference/geometry/ArcCurve3.md +3 -3
- package/dist/docs/reference/geometry/AttachOptions.md +4 -9
- package/dist/docs/reference/geometry/Bounds2-type.md +9 -30
- package/dist/docs/reference/geometry/Bounds2Data.md +2 -19
- package/dist/docs/reference/geometry/Bounds2Input.md +2 -10
- package/dist/docs/reference/geometry/Bounds2Options.md +2 -6
- package/dist/docs/reference/geometry/Bounds3-type.md +9 -30
- package/dist/docs/reference/geometry/Bounds3Data.md +2 -15
- package/dist/docs/reference/geometry/Bounds3Input.md +2 -10
- package/dist/docs/reference/geometry/Bounds3Options.md +2 -6
- package/dist/docs/reference/geometry/BoundsFit2.md +2 -2
- package/dist/docs/reference/geometry/BoundsFit3.md +2 -2
- package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -2
- package/dist/docs/reference/geometry/BoxAnchorFace.md +3 -3
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +3 -3
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +3 -7
- package/dist/docs/reference/geometry/CircleContourOptions.md +3 -7
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +3 -12
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +2 -2
- package/dist/docs/reference/geometry/CircularSampling.md +2 -2
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +2 -2
- package/dist/docs/reference/geometry/Contour.md +4 -9
- package/dist/docs/reference/geometry/ContourCurve.md +3 -3
- package/dist/docs/reference/geometry/ContourPoint.md +3 -3
- package/dist/docs/reference/geometry/ContourSegment.md +3 -3
- package/dist/docs/reference/geometry/CorrespondingComponent.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingContour.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingProfile.md +3 -7
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +4 -8
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +3 -3
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +3 -3
- package/dist/docs/reference/geometry/Curve2.md +3 -3
- package/dist/docs/reference/geometry/Curve3.md +3 -3
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +3 -11
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +3 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -4
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +2 -2
- package/dist/docs/reference/geometry/EdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -7
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -18
- package/dist/docs/reference/geometry/FittedTextLayout.md +2 -2
- package/dist/docs/reference/geometry/{Frame3.md → Frame3-type.md} +4 -11
- package/dist/docs/reference/geometry/Frame3Options.md +69 -0
- package/dist/docs/reference/geometry/GeometryError.md +2 -6
- package/dist/docs/reference/geometry/GeometryErrorCode.md +2 -6
- package/dist/docs/reference/geometry/GeometryErrorContext.md +2 -6
- package/dist/docs/reference/geometry/GeometryResolution.md +2 -10
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +3 -11
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +3 -11
- package/dist/docs/reference/geometry/GridPatternOptions.md +7 -9
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +2 -10
- package/dist/docs/reference/geometry/LineCurve2.md +3 -3
- package/dist/docs/reference/geometry/LineCurve3.md +3 -3
- package/dist/docs/reference/geometry/LinearPatternOptions.md +2 -6
- package/dist/docs/reference/geometry/LoftPlacement.md +13 -21
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +3 -7
- package/dist/docs/reference/geometry/ModelingLimits.md +2 -14
- package/dist/docs/reference/geometry/NumericArray.md +2 -10
- package/dist/docs/reference/geometry/Path2-type.md +153 -12
- package/dist/docs/reference/geometry/Path2Data.md +3 -11
- package/dist/docs/reference/geometry/Path2Input.md +3 -11
- package/dist/docs/reference/geometry/Path3-type.md +153 -12
- package/dist/docs/reference/geometry/Path3Data.md +3 -11
- package/dist/docs/reference/geometry/Path3Input.md +3 -11
- package/dist/docs/reference/geometry/PathFrame.md +3 -3
- package/dist/docs/reference/geometry/PathLocation.md +3 -11
- package/dist/docs/reference/geometry/PathNormalGuide.md +4 -12
- package/dist/docs/reference/geometry/PathOptions.md +3 -7
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -7
- package/dist/docs/reference/geometry/PathPlacement.md +5 -5
- package/dist/docs/reference/geometry/PathResamplingOptions.md +3 -11
- package/dist/docs/reference/geometry/PathStation.md +87 -0
- package/dist/docs/reference/geometry/PathSubdivisionOptions.md +44 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +3 -11
- package/dist/docs/reference/geometry/Pivot3Options.md +3 -11
- package/dist/docs/reference/geometry/PolygonData.md +4 -8
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +3 -3
- package/dist/docs/reference/geometry/Profile.md +3 -4
- package/dist/docs/reference/geometry/ProfileComponent2.md +3 -7
- package/dist/docs/reference/geometry/ProfileContour2.md +3 -7
- package/dist/docs/reference/geometry/ProfileSpan2.md +3 -7
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +5 -8
- package/dist/docs/reference/geometry/RadialPatternOptions.md +2 -6
- package/dist/docs/reference/geometry/RadialSizing.md +2 -6
- package/dist/docs/reference/geometry/RadialSizingOptions.md +2 -6
- package/dist/docs/reference/geometry/RectangleContourOptions.md +4 -7
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +3 -7
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +3 -7
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/RegionData.md +3 -7
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +3 -3
- package/dist/docs/reference/geometry/ResolvedGeometryResolution.md +71 -0
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +2 -2
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -2
- package/dist/docs/reference/geometry/SampleContourOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve3.md +3 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +3 -3
- package/dist/docs/reference/geometry/SideProfilePoint.md +3 -3
- package/dist/docs/reference/geometry/SideProfileSegment.md +3 -3
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +2 -6
- package/dist/docs/reference/geometry/SplineOptions.md +69 -0
- package/dist/docs/reference/geometry/StarContourOptions.md +7 -7
- package/dist/docs/reference/geometry/StrokeCap.md +2 -6
- package/dist/docs/reference/geometry/StrokeJoin.md +2 -6
- package/dist/docs/reference/geometry/StrokeOptions.md +3 -7
- package/dist/docs/reference/geometry/SvgImportOptions.md +4 -4
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +2 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +2 -2
- package/dist/docs/reference/geometry/Transform2-type.md +3 -11
- package/dist/docs/reference/geometry/Transform2Data.md +3 -11
- package/dist/docs/reference/geometry/Transform2Input.md +3 -11
- package/dist/docs/reference/geometry/Transform3-type.md +4 -12
- package/dist/docs/reference/geometry/Transform3Data.md +3 -11
- package/dist/docs/reference/geometry/Transform3Input.md +6 -13
- package/dist/docs/reference/geometry/Vector2-type.md +3 -11
- package/dist/docs/reference/geometry/Vector2Data.md +3 -15
- package/dist/docs/reference/geometry/Vector2Input.md +3 -11
- package/dist/docs/reference/geometry/Vector3-type.md +27 -11
- package/dist/docs/reference/geometry/Vector3Data.md +3 -11
- package/dist/docs/reference/geometry/Vector3Input.md +3 -11
- package/dist/docs/reference/geometry/VectorTextLayout.md +2 -10
- package/dist/docs/reference/geometry/VectorTextMetrics.md +3 -11
- package/dist/docs/reference/geometry/anchor3.md +17 -26
- package/dist/docs/reference/geometry/anchorFrame3.md +6 -6
- package/dist/docs/reference/geometry/attachmentTransform3.md +8 -8
- package/dist/docs/reference/geometry/bounds2.md +6 -8
- package/dist/docs/reference/geometry/bounds3.md +4 -6
- package/dist/docs/reference/geometry/boundsCenter.md +2 -2
- package/dist/docs/reference/geometry/boundsSize.md +2 -2
- package/dist/docs/reference/geometry/boxAnchor3.md +3 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +9 -3
- package/dist/docs/reference/geometry/categories/curves-paths.md +24 -13
- package/dist/docs/reference/geometry/categories/immutable-data.md +40 -0
- package/dist/docs/reference/geometry/categories/pattern-placement.md +10 -4
- package/dist/docs/reference/geometry/categories/primitive-options.md +8 -13
- package/dist/docs/reference/geometry/categories/profiles-regions.md +11 -5
- package/dist/docs/reference/geometry/categories/resolution-errors.md +8 -1
- package/dist/docs/reference/geometry/categories/transforms-math.md +20 -51
- package/dist/docs/reference/geometry/categories/vector-import.md +7 -4
- package/dist/docs/reference/geometry/circleContour.md +3 -3
- package/dist/docs/reference/geometry/closeToAxis.md +7 -3
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +9 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +13 -6
- package/dist/docs/reference/geometry/contourContainsPoint.md +7 -3
- package/dist/docs/reference/geometry/cylinderAnchor3.md +5 -5
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +3 -3
- package/dist/docs/reference/geometry/distributeAlongPath.md +16 -11
- package/dist/docs/reference/geometry/ellipseContour.md +3 -3
- package/dist/docs/reference/geometry/fitBounds.md +10 -2
- package/dist/docs/reference/geometry/fitTextLayout.md +5 -5
- package/dist/docs/reference/geometry/frame3.md +66 -0
- package/dist/docs/reference/geometry/gridPatternTransforms.md +6 -6
- package/dist/docs/reference/geometry/immutableBuffer.md +5 -7
- package/dist/docs/reference/geometry/isGeometryError.md +2 -6
- package/dist/docs/reference/geometry/layoutRow.md +4 -2
- package/dist/docs/reference/geometry/linearPatternTransforms.md +6 -6
- package/dist/docs/reference/geometry/matchProfiles.md +5 -3
- package/dist/docs/reference/geometry/normalizeContour.md +8 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -3
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -3
- package/dist/docs/reference/geometry/path2.md +7 -7
- package/dist/docs/reference/geometry/path3.md +7 -7
- package/dist/docs/reference/geometry/pathPatternTransforms.md +12 -8
- package/dist/docs/reference/geometry/preflightSvgRegion.md +5 -5
- package/dist/docs/reference/geometry/radialPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/rectangleContour.md +3 -3
- package/dist/docs/reference/geometry/rectangleProfile.md +3 -4
- package/dist/docs/reference/geometry/regionArea.md +3 -3
- package/dist/docs/reference/geometry/regionBounds.md +6 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +3 -3
- package/dist/docs/reference/geometry/resamplePolyline2.md +7 -3
- package/dist/docs/reference/geometry/resamplePolyline3.md +7 -3
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +5 -5
- package/dist/docs/reference/geometry/resolveArcSegments.md +8 -6
- package/dist/docs/reference/geometry/resolveCircularSampling.md +2 -2
- package/dist/docs/reference/geometry/resolveCircularSegments.md +5 -3
- package/dist/docs/reference/geometry/{resolveExtrusionDivisions.md → resolveExtrusionSlices.md} +16 -15
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -3
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +3 -3
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -5
- package/dist/docs/reference/geometry/sampleContour.md +5 -5
- package/dist/docs/reference/geometry/sampleCurve2.md +7 -3
- package/dist/docs/reference/geometry/sampleCurve3.md +7 -3
- package/dist/docs/reference/geometry/sampleHelix.md +3 -3
- package/dist/docs/reference/geometry/sampleSideProfile.md +5 -5
- package/dist/docs/reference/geometry/sampleTextContours.md +3 -3
- package/dist/docs/reference/geometry/signedContourArea.md +5 -3
- package/dist/docs/reference/geometry/spline2.md +68 -0
- package/dist/docs/reference/geometry/spline3.md +62 -0
- package/dist/docs/reference/geometry/starContour.md +3 -3
- package/dist/docs/reference/geometry/strokeRegionData.md +8 -5
- package/dist/docs/reference/geometry/transform2.md +5 -7
- package/dist/docs/reference/geometry/transform3.md +23 -10
- package/dist/docs/reference/geometry/transformRegionData.md +7 -3
- package/dist/docs/reference/geometry/triangulateContour.md +6 -4
- package/dist/docs/reference/geometry/vector2.md +6 -8
- package/dist/docs/reference/geometry/vector3.md +8 -8
- package/dist/docs/reference/geometry.md +13 -18
- package/dist/docs/reference/{geometry → math}/AxisAngleRotation3.md +4 -5
- package/dist/docs/reference/math/IDENTITY_TRANSFORM3.md +20 -0
- package/dist/docs/reference/math/add2.md +38 -0
- package/dist/docs/reference/math/add3.md +46 -0
- package/dist/docs/reference/math/applyTransformDirection3.md +46 -0
- package/dist/docs/reference/math/applyTransformPoint3.md +44 -0
- package/dist/docs/reference/math/categories/tuple-matrix.md +67 -0
- package/dist/docs/reference/math/cross2.md +38 -0
- package/dist/docs/reference/math/cross3.md +44 -0
- package/dist/docs/reference/math/distance2.md +38 -0
- package/dist/docs/reference/math/distance3.md +38 -0
- package/dist/docs/reference/math/dot2.md +38 -0
- package/dist/docs/reference/math/dot3.md +44 -0
- package/dist/docs/reference/math/eulerTransform3.md +43 -0
- package/dist/docs/reference/math/inverseTransform3.md +36 -0
- package/dist/docs/reference/math/length2.md +32 -0
- package/dist/docs/reference/math/length3.md +32 -0
- package/dist/docs/reference/math/lerp2.md +46 -0
- package/dist/docs/reference/math/lerp3.md +46 -0
- package/dist/docs/reference/math/multiplyTransform3.md +46 -0
- package/dist/docs/reference/math/normalize2.md +45 -0
- package/dist/docs/reference/math/normalize3.md +45 -0
- package/dist/docs/reference/math/projectOntoPlane3.md +40 -0
- package/dist/docs/reference/math/rotate2.md +40 -0
- package/dist/docs/reference/math/rotationTransform3.md +56 -0
- package/dist/docs/reference/math/scale2.md +38 -0
- package/dist/docs/reference/math/scale3.md +44 -0
- package/dist/docs/reference/math/scaleTransform3.md +39 -0
- package/dist/docs/reference/math/subtract2.md +38 -0
- package/dist/docs/reference/math/subtract3.md +44 -0
- package/dist/docs/reference/math/transformDeterminant3.md +38 -0
- package/dist/docs/reference/math/translationTransform3.md +36 -0
- package/dist/docs/reference/math/validateRigidTransform3.md +38 -0
- package/dist/docs/reference/math/validateTransform3.md +48 -0
- package/dist/docs/reference/math.md +22 -0
- package/dist/docs/reference/{geometry → mechanical}/AcmeThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/Bevel.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/BevelSize.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ButtressPressureFlankSide.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ButtressThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/ClearanceHoleFit.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CompensatedThreadDiameters.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CustomThreadProfileSpec.md +5 -15
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearMeshKind.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearOutlineOptions.md +5 -10
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionOptions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairMotionReport.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearPairSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/CylindricalGearSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/InternalThreadCutterOptions.md +6 -13
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeBaseSpec.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeDimensions.md +4 -5
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeInterval.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSamplingOptions.md +5 -14
- package/dist/docs/reference/{geometry → mechanical}/KnuckleHingeSpec.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/METRIC_FASTENER_STANDARDS.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerSize.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricFastenerStandard.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricHexNutDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/MetricSocketCapHeadDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/PRINTABLE_THREAD_FIT_POLICIES.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFit.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/PrintableThreadFitPolicy.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/RackPitchDimensions.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/RackPitchSpec.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/SampledThreadHelices.md +4 -8
- package/dist/docs/reference/{geometry → mechanical}/SquareThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ThreadBevelOptions.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadCircularSegmentsOptions.md +5 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadCompensationOptions.md +4 -5
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndStyle.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadEndTreatmentOptions.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadHandedness.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadHelixOptions.md +5 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInEnvelope.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadLeadInShape.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfile-type.md +5 -17
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileBaseSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/ThreadProfileSpec.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadRidgeOptions.md +7 -18
- package/dist/docs/reference/{geometry → mechanical}/ThreadRole.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidOptions.md +8 -15
- package/dist/docs/reference/{geometry → mechanical}/ThreadSolidPreflight.md +3 -11
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutOptions.md +7 -14
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutPreflight.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadedNutShape.md +3 -7
- package/dist/docs/reference/{geometry → mechanical}/ThreadedRodOptions.md +6 -13
- package/dist/docs/reference/{geometry → mechanical}/TrapezoidalThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/TriangularThreadProfileSpec.md +4 -13
- package/dist/docs/reference/{geometry → mechanical}/categories/mechanical.md +8 -2
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadDiameters.md +4 -4
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileAxially.md +12 -6
- package/dist/docs/reference/{geometry → mechanical}/compensateThreadProfileForFaceting.md +13 -3
- package/dist/docs/reference/{geometry → mechanical}/getMetricClearanceHoleDiameter.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/getMetricFastenerStandard.md +3 -3
- package/dist/docs/reference/{geometry → mechanical}/measureInternalCylindricalGearPairMotion.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/minimumCylindricalGearToothCountWithoutUndercut.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/preflightInternalThreadCutter.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedNut.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/preflightThreadedRod.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGear.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveCylindricalGearPair.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveKnuckleHinge.md +9 -7
- package/dist/docs/reference/{geometry → mechanical}/resolvePrintableThreadFitPolicy.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveRackPitch.md +5 -3
- package/dist/docs/reference/{geometry → mechanical}/resolveThreadCircularSegments.md +7 -5
- package/dist/docs/reference/{geometry → mechanical}/sampleCylindricalGearOutline.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleInternalCylindricalGearSpaceOutline.md +9 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleRackToothPath.md +10 -8
- package/dist/docs/reference/{geometry → mechanical}/sampleThreadHelices.md +8 -6
- package/dist/docs/reference/{geometry → mechanical}/threadProfile.md +7 -3
- package/dist/docs/reference/mechanical.md +19 -0
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +128 -0
- package/dist/docs/reference/{geometry → mesh}/HeightfieldMeshLimits.md +5 -13
- package/dist/docs/reference/{geometry → mesh}/HeightfieldPreflight.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/ImmutableTriangleMesh.md +5 -17
- package/dist/docs/reference/mesh/LoftMeshStation.md +32 -0
- package/dist/docs/reference/mesh/MeshRenderOptions.md +3 -3
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationFallbackReason.md +4 -8
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/PlanarMeshOptimizationResult.md +4 -8
- package/dist/docs/reference/{geometry → mesh}/PlanarPatchQuality.md +4 -12
- package/dist/docs/reference/mesh/RenderMesh.md +19 -19
- package/dist/docs/reference/{geometry → mesh}/SolidMeshValidationOptions.md +4 -12
- package/dist/docs/reference/{geometry → mesh}/TriangleMesh.md +8 -12
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysis.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshAnalysisOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshInput.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshMeasurements.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityOptions.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshQualityReport.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignature.md +4 -9
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureOptions.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshSignatureTolerances.md +3 -7
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshTopologyAnalysis.md +5 -14
- package/dist/docs/reference/{geometry → mesh}/TriangleMeshValidationOptions.md +4 -9
- package/dist/docs/reference/mesh/analyze.md +26 -18
- package/dist/docs/reference/mesh/analyzeQuality.md +12 -12
- package/dist/docs/reference/mesh/bounds.md +5 -6
- package/dist/docs/reference/mesh/categories/operations.md +37 -4
- package/dist/docs/reference/mesh/centroid.md +5 -6
- package/dist/docs/reference/mesh/extrude.md +21 -20
- package/dist/docs/reference/mesh/heightfield.md +8 -8
- package/dist/docs/reference/mesh/immutable.md +7 -5
- package/dist/docs/reference/mesh/join.md +7 -7
- package/dist/docs/reference/mesh/loft.md +19 -18
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +21 -21
- package/dist/docs/reference/mesh/preflightHeightfield.md +8 -8
- package/dist/docs/reference/mesh/preflightThreadSolid.md +22 -25
- package/dist/docs/reference/mesh/render.md +7 -5
- package/dist/docs/reference/mesh/reverse.md +7 -7
- package/dist/docs/reference/mesh/revolve.md +12 -14
- package/dist/docs/reference/mesh/signature.md +12 -12
- package/dist/docs/reference/mesh/sweep.md +96 -25
- package/dist/docs/reference/mesh/threadRidge.md +19 -18
- package/dist/docs/reference/mesh/threadSolid.md +23 -22
- package/dist/docs/reference/mesh/transform.md +8 -9
- package/dist/docs/reference/mesh/validate.md +11 -11
- package/dist/docs/reference/mesh/validateSolid.md +10 -10
- package/dist/docs/reference/mesh.md +8 -2
- package/dist/docs/reference/model/BoxEdge.md +23 -0
- package/dist/docs/reference/model/BoxEdgeSelection.md +27 -0
- package/dist/docs/reference/model/BoxEdgeTreatments.md +27 -0
- package/dist/docs/reference/{geometry → model}/BoxOptions.md +12 -12
- package/dist/docs/reference/model/CircleOptions.md +4 -5
- package/dist/docs/reference/model/CornerCutterOptions.md +93 -0
- package/dist/docs/reference/model/CornerCutterTreatment.md +53 -0
- package/dist/docs/reference/model/{HoleCutterOverrun.md → CutterOverrun.md} +8 -7
- package/dist/docs/reference/model/CylinderOptions.md +64 -0
- package/dist/docs/reference/model/DiagnosticOptions.md +2 -2
- package/dist/docs/reference/model/EdgeCutterOptions.md +129 -0
- package/dist/docs/reference/model/EllipseOptions.md +4 -5
- package/dist/docs/reference/model/EndTreatments.md +43 -0
- package/dist/docs/reference/model/ExtrudeOptions.md +153 -0
- package/dist/docs/reference/model/GenerateCallback.md +2 -2
- package/dist/docs/reference/model/GenerateContext.md +27 -3
- package/dist/docs/reference/model/GenerationDiagnostic.md +2 -2
- package/dist/docs/reference/model/GenerationError.md +2 -2
- package/dist/docs/reference/{geometry → model}/HeightfieldOptions.md +5 -23
- package/dist/docs/reference/model/HoleCutterOpening.md +27 -0
- package/dist/docs/reference/model/HoleCutterOptions.md +9 -22
- package/dist/docs/reference/model/HoleCutterRecess.md +5 -4
- package/dist/docs/reference/model/HullOptions.md +2 -3
- package/dist/docs/reference/model/ImmutableValue.md +2 -2
- package/dist/docs/reference/model/ImplicitOptions.md +3 -9
- package/dist/docs/reference/model/JoinOptions.md +2 -5
- package/dist/docs/reference/model/JoinTransition.md +2 -2
- package/dist/docs/reference/model/KnuckleHinge-type.md +2 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +2 -2
- package/dist/docs/reference/model/KnuckleHingeOptions.md +3 -5
- package/dist/docs/reference/model/KnuckleHingeWeb.md +2 -2
- package/dist/docs/reference/{geometry → model}/LoftCorrespondence.md +8 -11
- package/dist/docs/reference/{geometry → model}/LoftOptions.md +11 -16
- package/dist/docs/reference/model/LoftStation.md +4 -5
- package/dist/docs/reference/model/Memo.md +2 -2
- package/dist/docs/reference/model/ModelProgram.md +2 -2
- package/dist/docs/reference/model/PartDeclaration.md +4 -5
- package/dist/docs/reference/model/PartGeometry.md +3 -5
- package/dist/docs/reference/model/PartOptions.md +4 -5
- package/dist/docs/reference/model/PatternSource.md +4 -4
- package/dist/docs/reference/model/PlaneOptions.md +3 -7
- package/dist/docs/reference/model/PolygonOptions.md +2 -7
- package/dist/docs/reference/model/PrimitiveAttachment.md +50 -0
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +111 -0
- package/dist/docs/reference/model/RectangleOptions.md +21 -26
- package/dist/docs/reference/model/RegularPolygonOptions.md +4 -37
- package/dist/docs/reference/{geometry → model}/RevolveOptions.md +15 -24
- package/dist/docs/reference/model/Section.md +115 -53
- package/dist/docs/reference/model/SectionHullOptions.md +2 -3
- package/dist/docs/reference/model/SectionInspection.md +2 -6
- package/dist/docs/reference/model/SectionOffsetJoin.md +2 -2
- package/dist/docs/reference/model/SectionOffsetOptions.md +2 -3
- package/dist/docs/reference/model/Solid.md +24 -12
- package/dist/docs/reference/model/SolidInspection.md +2 -6
- package/dist/docs/reference/model/SolidSegmentHit.md +2 -6
- package/dist/docs/reference/model/SphereOptions.md +27 -0
- package/dist/docs/reference/model/StarOptions.md +21 -23
- package/dist/docs/reference/model/SvgOrigin.md +2 -2
- package/dist/docs/reference/model/SvgPathSectionOptions.md +3 -5
- package/dist/docs/reference/model/SvgSectionOptions.md +3 -6
- package/dist/docs/reference/model/SweepOptions.md +109 -0
- package/dist/docs/reference/model/SweepOrientation.md +119 -0
- package/dist/docs/reference/model/SweepTransformOptions.md +105 -0
- package/dist/docs/reference/model/TextSectionOptions.md +2 -7
- package/dist/docs/reference/{geometry → model}/TorusOptions.md +11 -10
- package/dist/docs/reference/model/TubeOptions.md +84 -0
- package/dist/docs/reference/model/box.md +11 -10
- package/dist/docs/reference/model/categories/boolean-operations.md +9 -3
- package/dist/docs/reference/model/categories/bounded-surfaces.md +13 -1
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +26 -7
- package/dist/docs/reference/model/categories/generation.md +11 -3
- package/dist/docs/reference/model/categories/hinges.md +7 -1
- package/dist/docs/reference/model/categories/mesh-inspection.md +7 -1
- package/dist/docs/reference/model/categories/primitives.md +34 -6
- package/dist/docs/reference/model/categories/sections.md +8 -2
- package/dist/docs/reference/model/categories/threads.md +8 -5
- package/dist/docs/reference/model/categories/transforms-placement.md +15 -10
- package/dist/docs/reference/model/circle.md +7 -3
- package/dist/docs/reference/model/cornerCutter.md +88 -0
- package/dist/docs/reference/model/cylinder.md +6 -5
- package/dist/docs/reference/model/edgeCutter.md +91 -0
- package/dist/docs/reference/model/ellipse.md +7 -3
- package/dist/docs/reference/model/extrude.md +29 -23
- package/dist/docs/reference/model/generate.md +4 -2
- package/dist/docs/reference/model/gridPattern.md +11 -4
- package/dist/docs/reference/model/heightfield.md +5 -5
- package/dist/docs/reference/model/holeCutter.md +26 -12
- package/dist/docs/reference/model/hull.md +2 -2
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/internalThreadCutter.md +32 -21
- package/dist/docs/reference/model/intersect.md +7 -3
- package/dist/docs/reference/model/join.md +6 -2
- package/dist/docs/reference/model/knuckleHinge.md +2 -3
- package/dist/docs/reference/model/linearPattern.md +11 -4
- package/dist/docs/reference/model/loft.md +28 -24
- package/dist/docs/reference/model/minkowskiSum.md +3 -3
- package/dist/docs/reference/model/pathPattern.md +17 -8
- package/dist/docs/reference/model/polygon.md +8 -3
- package/dist/docs/reference/model/radialPattern.md +11 -4
- package/dist/docs/reference/model/rectangle.md +11 -7
- package/dist/docs/reference/model/regularPolygon.md +7 -3
- package/dist/docs/reference/model/revolve.md +18 -12
- package/dist/docs/reference/model/solidFromMesh.md +10 -6
- package/dist/docs/reference/model/sphere.md +7 -6
- package/dist/docs/reference/model/star.md +11 -7
- package/dist/docs/reference/model/stroke.md +12 -8
- package/dist/docs/reference/model/svgPathSection.md +10 -4
- package/dist/docs/reference/model/svgSection.md +10 -4
- package/dist/docs/reference/model/sweep.md +102 -25
- package/dist/docs/reference/model/textSection.md +7 -3
- package/dist/docs/reference/model/threadRidge.md +16 -17
- package/dist/docs/reference/model/threadedNut.md +25 -22
- package/dist/docs/reference/model/threadedRod.md +21 -18
- package/dist/docs/reference/model/torus.md +13 -12
- package/dist/docs/reference/model/tube.md +6 -5
- package/dist/docs/reference/model/union.md +7 -3
- package/dist/docs/reference/model.md +10 -5
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +2 -2
- package/dist/docs/reference/text/VectorFont.md +38 -34
- package/dist/docs/reference/text/VectorFontOptions.md +2 -2
- package/dist/docs/reference/{geometry → text}/VectorTextArcBaseline.md +2 -11
- package/dist/docs/reference/{geometry → text}/VectorTextLayoutOptions.md +3 -11
- package/dist/docs/reference/{geometry → text}/VectorTextOptions.md +2 -10
- package/dist/docs/reference/text/categories/font-preparation.md +10 -1
- package/dist/docs/reference/text/prepareVectorFont.md +4 -2
- package/dist/docs/reference/text.md +7 -1
- package/dist/engine/execution.js +5 -3
- package/dist/engine/finalization.js +5 -5
- package/dist/engine/index.js +9 -4
- package/dist/engine/native/adapter.js +1 -1
- package/dist/engine/native/construction-mesh.js +15 -5
- package/dist/engine/native/context.js +10 -7
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +2 -2
- package/dist/engine/native/mesh-observation.js +1 -1
- package/dist/engine/native/regions.js +44 -24
- package/dist/engine/native/scoped-primitives.js +3 -3
- package/dist/engine/native/scoped-threads.js +1 -13
- package/dist/engine/native/threads.js +2 -2
- package/dist/engine/native/transforms.js +2 -2
- package/dist/engine/operations/construction.js +77 -27
- package/dist/engine/operations/context.js +13 -6
- package/dist/engine/operations/cutters.js +112 -0
- package/dist/engine/operations/environment.js +2 -2
- package/dist/engine/operations/extrusion-finishing.js +42 -16
- package/dist/engine/operations/hole-cutter.js +125 -114
- package/dist/engine/operations/join-collar-profile.js +19 -19
- package/dist/engine/operations/join.js +86 -73
- package/dist/engine/operations/knuckle-hinge.js +25 -20
- package/dist/engine/operations/loft.js +9 -16
- package/dist/engine/operations/mechanical.js +4 -15
- package/dist/engine/operations/primitives/anchors.js +23 -19
- package/dist/engine/operations/primitives/construction.js +38 -12
- package/dist/engine/operations/primitives/correspondence.js +2 -2
- package/dist/engine/operations/primitives/profile-mesh.js +41 -80
- package/dist/engine/operations/primitives/profiles.js +5 -5
- package/dist/engine/operations/sections.js +8 -8
- package/dist/engine/operations/transforms.js +19 -39
- package/dist/engine/placement.js +3 -3
- package/dist/engine/recipe-realization.js +86 -30
- package/dist/engine/session/declarations.js +98 -0
- package/dist/engine/session/dependencies.js +81 -28
- package/dist/engine/session/graph.js +39 -137
- package/dist/engine/session/parameters.js +78 -0
- package/dist/engine/session/session.js +2 -2
- package/dist/engine/session/snapshot-cache.js +2 -2
- package/dist/engine/shape-anchors.js +13 -6
- package/dist/export/3mf.js +9 -2
- package/dist/export/capture.js +10 -6
- package/dist/export/glb.js +7 -2
- package/dist/export/stl.js +21 -6
- package/dist/geometry/{bounds.js → bounds/operations.js} +3 -1
- package/dist/geometry/{bounds-value.js → bounds/value.js} +20 -16
- package/dist/geometry/curves/evaluation.js +5 -6
- package/dist/geometry/curves/sampling.js +30 -6
- package/dist/geometry/{extrusion.js → extrusion/controls.js} +58 -35
- package/dist/geometry/extrusion/mesh.js +92 -0
- package/dist/geometry/extrusion/stations.js +35 -0
- package/dist/geometry/extrusion/twisted-chamfer.js +265 -0
- package/dist/geometry/immutable-buffer.js +7 -1
- package/dist/geometry/index.js +24 -32
- package/dist/geometry/{model-limits.js → limits.js} +1 -1
- package/dist/geometry/loft/{loft-correspondence.js → correspondence.js} +31 -20
- package/dist/geometry/loft/{loft-geometry.js → geometry.js} +15 -17
- package/dist/geometry/loft/mesh.js +53 -0
- package/dist/geometry/loft/{loft-options.js → options.js} +13 -11
- package/dist/geometry/loft/{loft-simple-mesh.js → simple-mesh.js} +26 -17
- package/dist/geometry/math/interpolation.js +9 -0
- package/dist/geometry/math/vector-value.js +12 -3
- package/dist/geometry/math/vector2.js +18 -5
- package/dist/geometry/math/vector3.js +28 -5
- package/dist/geometry/math-api.js +4 -0
- package/dist/geometry/mechanical/gear-motion.js +7 -5
- package/dist/geometry/mechanical/gears.js +21 -4
- package/dist/geometry/mechanical/knuckle-hinge.js +7 -5
- package/dist/geometry/mechanical/threads/fit.js +8 -2
- package/dist/geometry/mechanical/threads/helices.js +4 -2
- package/dist/geometry/mechanical/threads/mesh-plan.js +4 -2
- package/dist/geometry/mechanical/threads/mesh.js +12 -9
- package/dist/geometry/mechanical/threads/profiles.js +18 -4
- package/dist/geometry/mechanical/threads/solids.js +11 -2
- package/dist/geometry/mechanical-api.js +10 -0
- package/dist/geometry/mesh/{mesh-centroid.js → centroid.js} +2 -1
- package/dist/geometry/{heightfield.js → mesh/heightfield.js} +9 -5
- package/dist/geometry/{join-geometry.js → mesh/join-layers.js} +53 -59
- package/dist/geometry/mesh/{mesh.js → operations.js} +11 -18
- package/dist/geometry/mesh/{mesh-planar.js → planar.js} +8 -18
- package/dist/geometry/mesh/{mesh-quality.js → quality.js} +10 -42
- package/dist/geometry/mesh/{mesh-render.js → render-buffers.js} +22 -7
- package/dist/geometry/mesh/{mesh-signature.js → signature.js} +1 -1
- package/dist/geometry/mesh/{mesh-solid-intersections.js → solid-intersections.js} +2 -0
- package/dist/geometry/mesh/{mesh-solid.js → solid.js} +4 -4
- package/dist/geometry/mesh/triangle-quality.js +42 -0
- package/dist/geometry/mesh/winding.js +11 -0
- package/dist/geometry/{numeric.js → mesh/write-vertex.js} +1 -1
- package/dist/geometry/mesh-api.js +12 -11
- package/dist/geometry/paths/distribution.js +43 -0
- package/dist/geometry/paths/editing.js +76 -0
- package/dist/geometry/paths/frames.js +16 -11
- package/dist/geometry/paths/helix.js +1 -1
- package/dist/geometry/paths/resampling.js +46 -61
- package/dist/geometry/paths/{planar.js → rounding.js} +8 -67
- package/dist/geometry/paths/spline.js +116 -0
- package/dist/geometry/paths/traversal.js +107 -0
- package/dist/geometry/paths/{path-value.js → value.js} +97 -18
- package/dist/geometry/patterns/placements.js +20 -29
- package/dist/geometry/{patterns.js → patterns/transforms.js} +11 -7
- package/dist/geometry/primitives/cutters.js +70 -0
- package/dist/geometry/{cylinder.js → primitives/cylinder.js} +4 -4
- package/dist/geometry/{edge-finishing.js → primitives/edges.js} +5 -5
- package/dist/geometry/{primitive-resolvers.js → primitives/resolvers.js} +9 -9
- package/dist/geometry/primitives/sampling.js +41 -0
- package/dist/geometry/profiles/contour.js +19 -7
- package/dist/geometry/profiles/{match-profiles.js → matching.js} +9 -6
- package/dist/geometry/profiles/primitives/circle.js +1 -1
- package/dist/geometry/profiles/primitives/ellipse.js +2 -2
- package/dist/geometry/profiles/primitives/rectangle.js +8 -8
- package/dist/geometry/profiles/primitives/star.js +1 -1
- package/dist/geometry/profiles/side-profile.js +8 -5
- package/dist/geometry/profiles/validation.js +1 -1
- package/dist/geometry/{polygon-clipping.js → regions/clipping.js} +1 -1
- package/dist/geometry/{convex-offset.js → regions/convex-offset.js} +1 -1
- package/dist/geometry/{region-offset.js → regions/offset.js} +7 -5
- package/dist/geometry/{regions.js → regions/operations.js} +59 -22
- package/dist/geometry/{stroke-path.js → regions/stroke.js} +46 -20
- package/dist/geometry/{loft/loft-triangulation.js → regions/triangulation.js} +35 -2
- package/dist/geometry/revolve/{revolve-mesh.js → mesh.js} +9 -10
- package/dist/geometry/{circular-sampling.js → sampling/circular.js} +3 -3
- package/dist/geometry/{sampling-limits.js → sampling/limits.js} +6 -2
- package/dist/geometry/{resolution.js → sampling/resolution.js} +15 -14
- package/dist/geometry/svg/fill.js +4 -3
- package/dist/geometry/svg/import.js +47 -64
- package/dist/geometry/svg/path.js +3 -3
- package/dist/geometry/sweep/closed.js +55 -0
- package/dist/geometry/sweep/mesh.js +30 -0
- package/dist/geometry/{sweeps/sweep-open.js → sweep/open.js} +9 -24
- package/dist/geometry/{sweeps → sweep}/orientation.js +14 -11
- package/dist/geometry/sweep/seam.js +30 -0
- package/dist/geometry/{sweeps → sweep}/stations.js +75 -10
- package/dist/geometry/sweep/transforms.js +30 -0
- package/dist/geometry/{sweeps → sweep}/validation.js +4 -4
- package/dist/geometry/{text-contours.js → text/contours.js} +3 -3
- package/dist/geometry/{text-fitting.js → text/fitting.js} +4 -3
- package/dist/geometry/text/layout.js +1 -0
- package/dist/geometry/{transform3.js → transforms/affine3.js} +31 -46
- package/dist/geometry/{anchors.js → transforms/anchors.js} +43 -24
- package/dist/geometry/{transform-geometry.js → transforms/apply.js} +8 -5
- package/dist/geometry/{transform2.js → transforms/dimensions.js} +23 -19
- package/dist/geometry/transforms/frame.js +64 -0
- package/dist/geometry/{transform-matrix.js → transforms/matrix-input.js} +8 -1
- package/dist/geometry/{transform-value.js → transforms/value.js} +29 -11
- package/dist/index.js +3 -9
- package/dist/model/cutters.js +1 -0
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +2 -0
- package/dist/model/immutable-generation-data.js +2 -0
- package/dist/model/operations.js +130 -94
- package/dist/model/recipe-declaration.js +5 -7
- package/dist/text/index.js +3 -0
- package/dist/text/vector-text-layout.js +1 -0
- package/package.json +15 -17
- package/dist/api/export-3mf.d.ts +0 -2
- package/dist/api/export-glb.d.ts +0 -2
- package/dist/api/export-stl.d.ts +0 -2
- package/dist/docs/reference/geometry/BoxEdge.md +0 -17
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +0 -24
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +0 -25
- package/dist/docs/reference/geometry/CylinderOptions.md +0 -63
- package/dist/docs/reference/geometry/EndTreatments.md +0 -44
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +0 -144
- package/dist/docs/reference/geometry/ExtrudeOptions.md +0 -156
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +0 -25
- package/dist/docs/reference/geometry/LoftMeshStation.md +0 -41
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +0 -39
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +0 -114
- package/dist/docs/reference/geometry/SphereOptions.md +0 -25
- package/dist/docs/reference/geometry/SweepOptions.md +0 -127
- package/dist/docs/reference/geometry/SweepOrientation.md +0 -127
- package/dist/docs/reference/geometry/TubeOptions.md +0 -72
- package/dist/docs/reference/geometry/add2.md +0 -43
- package/dist/docs/reference/geometry/add3.md +0 -49
- package/dist/docs/reference/geometry/applyTransformDirection3.md +0 -52
- package/dist/docs/reference/geometry/applyTransformPoint3.md +0 -50
- package/dist/docs/reference/geometry/categories/meshes.md +0 -68
- package/dist/docs/reference/geometry/composeTransform3.md +0 -51
- package/dist/docs/reference/geometry/cross2.md +0 -43
- package/dist/docs/reference/geometry/cross3.md +0 -49
- package/dist/docs/reference/geometry/distance2.md +0 -43
- package/dist/docs/reference/geometry/distance3.md +0 -43
- package/dist/docs/reference/geometry/dot2.md +0 -43
- package/dist/docs/reference/geometry/dot3.md +0 -49
- package/dist/docs/reference/geometry/eulerTransform3.md +0 -49
- package/dist/docs/reference/geometry/frameTransform3.md +0 -55
- package/dist/docs/reference/geometry/inverseTransform3.md +0 -41
- package/dist/docs/reference/geometry/length2.md +0 -37
- package/dist/docs/reference/geometry/length3.md +0 -37
- package/dist/docs/reference/geometry/lerp2.md +0 -49
- package/dist/docs/reference/geometry/lerp3.md +0 -49
- package/dist/docs/reference/geometry/normalize2.md +0 -46
- package/dist/docs/reference/geometry/normalize3.md +0 -46
- package/dist/docs/reference/geometry/projectOntoPlane3.md +0 -43
- package/dist/docs/reference/geometry/rotate2.md +0 -43
- package/dist/docs/reference/geometry/rotationTransform3.md +0 -60
- package/dist/docs/reference/geometry/scale2.md +0 -43
- package/dist/docs/reference/geometry/scale3.md +0 -49
- package/dist/docs/reference/geometry/scaleTransform3.md +0 -45
- package/dist/docs/reference/geometry/subtract2.md +0 -43
- package/dist/docs/reference/geometry/subtract3.md +0 -49
- package/dist/docs/reference/geometry/transformDeterminant3.md +0 -43
- package/dist/docs/reference/geometry/translationTransform3.md +0 -42
- package/dist/docs/reference/geometry/validateRigidTransform3.md +0 -41
- package/dist/docs/reference/geometry/validateTransform3.md +0 -54
- package/dist/docs/reference/model/Profile.md +0 -30
- package/dist/docs/reference/model/categories/explicit-profiles.md +0 -21
- package/dist/docs/reference/model/matchProfiles.md +0 -48
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +0 -93
- package/dist/docs/reference/model/preflightThreadedNut.md +0 -109
- package/dist/docs/reference/model/preflightThreadedRod.md +0 -93
- package/dist/engine/operations/patterns.js +0 -47
- package/dist/geometry/loft/loft.js +0 -105
- package/dist/geometry/mechanical/index.js +0 -14
- package/dist/geometry/primitive-resolution.js +0 -20
- package/dist/geometry/svg/index.js +0 -1
- package/dist/geometry/sweeps/options.js +0 -29
- package/dist/geometry/sweeps/sweep-closed.js +0 -96
- package/dist/geometry/sweeps/sweep-mesh.js +0 -32
- /package/dist/geometry/mechanical/{standards.js → fastener-standards.js} +0 -0
- /package/dist/geometry/mesh/{mesh-edge-table.js → edge-table.js} +0 -0
- /package/dist/geometry/mesh/{mesh-types.js → types.js} +0 -0
- /package/dist/geometry/mesh/{mesh-view-cache.js → view-cache.js} +0 -0
- /package/dist/geometry/{primitive-options.js → primitives/options.js} +0 -0
- /package/dist/geometry/{text-layout.js → sweep/options.js} +0 -0
|
@@ -2,8 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Choose primitives, extrude filled outlines, revolve radial profiles, and finish their rims.
|
|
4
4
|
|
|
5
|
-
Start with a primitive when it already describes the material.
|
|
6
|
-
|
|
5
|
+
Start with a primitive when it already describes the material.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
**Solve the cross section first**
|
|
10
|
+
|
|
11
|
+
For a plate or gasket, make the filled outline and add depth. For a cup or knob, describe its
|
|
12
|
+
radial section and revolve it. Keep the simplest representation until you need the next dimension.
|
|
13
|
+
|
|
14
|
+
|
|
7
15
|
|
|
8
16
|
Run the examples in a [Studio code Project](https://metamesh.studio/docs/develop/code-projects), where Studio supplies
|
|
9
17
|
typed controls and prepared services. For a local model, follow the
|
|
@@ -18,7 +26,8 @@ separate named part so you can inspect it in the interactive preview.
|
|
|
18
26
|
|
|
19
27
|
|
|
20
28
|
```ts
|
|
21
|
-
import { ellipse, regularPolygon, sphere, star, torus,
|
|
29
|
+
import { ellipse, regularPolygon, sphere, star, torus, tube } from "@metamesh/modeling";
|
|
30
|
+
import { transform3 } from "@metamesh/modeling/geometry";
|
|
22
31
|
import { generate } from "@metamesh/project";
|
|
23
32
|
|
|
24
33
|
export default generate(({ part }) => {
|
|
@@ -90,7 +99,7 @@ export default generate(({ part }) => {
|
|
|
90
99
|
// Positive offset expands material: the outer edge grows and the hole shrinks.
|
|
91
100
|
const rimmedPlate = plate.subtract(hole).offset(1.2);
|
|
92
101
|
// Keep the plate centered about Z = 0 for later symmetric placement.
|
|
93
|
-
return
|
|
102
|
+
return part("model", rimmedPlate.extrude({ height: 5, center: true }));
|
|
94
103
|
});
|
|
95
104
|
```
|
|
96
105
|
|
|
@@ -104,8 +113,15 @@ must have the same dimension. Use collection `union(shapes)` or `intersect(shape
|
|
|
104
113
|
`section.offset(distance)` offsets the filled material. `section.extrude({ height })` preserves
|
|
105
114
|
holes and places the bottom at zero unless `center: true` is requested.
|
|
106
115
|
|
|
107
|
-
|
|
108
|
-
|
|
116
|
+
`twist` rotates the top around +Z in degrees. `scale` sets its final scale factor: `0.5` finishes at half
|
|
117
|
+
size, while `[0.5, 1]` halves profile-local X and preserves Y. Scale factors interpolate from one
|
|
118
|
+
with height and apply before twist. Uniform `scale: 0` closes a single simple outline at an apex; holes
|
|
119
|
+
and disconnected islands cannot share that apex. Negative scales and a pair with only one zero
|
|
120
|
+
component reject.
|
|
121
|
+
|
|
122
|
+
Use physical `resolution` for ordinary quality control. Explicit `slices: 20` selects 20 longitudinal
|
|
123
|
+
intervals and 21 layers before end treatments. Chamfered ends can follow a twist; enabled end
|
|
124
|
+
treatments require unit `scale` and insert additional rings where needed.
|
|
109
125
|
|
|
110
126
|
Positive offset grows material on every boundary: this example grows the outside by `1.2 mm` and
|
|
111
127
|
reduces the hole radius from `4 mm` to `2.8 mm`. If the final bore must remain `8 mm` in diameter,
|
|
@@ -138,7 +154,7 @@ export default generate(({ part }) => {
|
|
|
138
154
|
[0, 4],
|
|
139
155
|
]);
|
|
140
156
|
// A full revolution creates the floor, tapered wall, and open top together.
|
|
141
|
-
return
|
|
157
|
+
return part("model", wall.revolve());
|
|
142
158
|
});
|
|
143
159
|
```
|
|
144
160
|
|
|
@@ -183,7 +199,7 @@ export default generate(({ part }) => {
|
|
|
183
199
|
spacing: [13, 12],
|
|
184
200
|
});
|
|
185
201
|
// Mirror the completed housing across the plane with normal +X.
|
|
186
|
-
return
|
|
202
|
+
return part("model", housing.subtract(perforations).mirror([1, 0, 0]));
|
|
187
203
|
});
|
|
188
204
|
```
|
|
189
205
|
|
|
@@ -202,7 +218,87 @@ feature can remain in the options object when switched off.
|
|
|
202
218
|
The bores use `diameter: [8, 6]` and `13 × 12 mm` spacing to leave material between them. Check
|
|
203
219
|
the widest cutter diameter and the outer wall when changing either value. In this example the
|
|
204
220
|
tool's top chamfer lies above the housing; it shapes the cutter end, not the finished hole's rim.
|
|
205
|
-
Use
|
|
221
|
+
Use `holeCutter.openings` when the finished mouth needs a roundover, chamfer, or screw seat.
|
|
222
|
+
|
|
223
|
+
## Shape openings and local edges
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
```ts
|
|
228
|
+
import { box, cornerCutter, edgeCutter, holeCutter, tube } from "@metamesh/modeling";
|
|
229
|
+
import { transform3 } from "@metamesh/modeling/geometry";
|
|
230
|
+
import { generate } from "@metamesh/project";
|
|
231
|
+
|
|
232
|
+
const treatment = { kind: "round", radius: 2 } as const;
|
|
233
|
+
const edge = (length: number) => edgeCutter({ length, treatment });
|
|
234
|
+
|
|
235
|
+
// Three matching edges and their corner share the positive XYZ material octant.
|
|
236
|
+
const plate = box({ size: [40, 24, 8], center: false }).subtract([
|
|
237
|
+
edge(8),
|
|
238
|
+
edge(40).rotate([0, -90, 0]).translate([40, 0, 0]),
|
|
239
|
+
edge(24).rotate([90, 0, 0]).translate([0, 24, 0]),
|
|
240
|
+
cornerCutter({ treatment }),
|
|
241
|
+
holeCutter({
|
|
242
|
+
diameter: 10,
|
|
243
|
+
height: 8,
|
|
244
|
+
sizing: "face",
|
|
245
|
+
openings: {
|
|
246
|
+
top: { kind: "round", radius: 1 },
|
|
247
|
+
bottom: { kind: "smooth", distance: 0.5 },
|
|
248
|
+
},
|
|
249
|
+
// Numerical overlap is independent of the nominal bore and mouth dimensions.
|
|
250
|
+
overrun: { top: 0.05, bottom: 0.05 },
|
|
251
|
+
}).translate([24, 12, 0]),
|
|
252
|
+
]);
|
|
253
|
+
|
|
254
|
+
const sleeve = tube({
|
|
255
|
+
outerDiameter: 20,
|
|
256
|
+
innerDiameter: 12,
|
|
257
|
+
height: 8,
|
|
258
|
+
center: false,
|
|
259
|
+
ends: {
|
|
260
|
+
top: { kind: "round", radius: 0.75 },
|
|
261
|
+
bottom: { kind: "chamfer", distance: 0.4 },
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
export default generate(({ part }) => [
|
|
266
|
+
part("plate", { geometry: plate, transform: transform3().translate([-20, -12, 0]) }),
|
|
267
|
+
part("sleeve", { geometry: sleeve, transform: transform3().translate([32, 0, 0]) }),
|
|
268
|
+
]);
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Opening treatments widen the mouth while preserving the bore. Explicit edge and corner cutters remove local material; tube ends finish both rims.
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
`holeCutter` accepts a circular `diameter` or an existing Section `profile`. Its nominal interval
|
|
276
|
+
is Z=0 to `height`. Set `openings.top` and `openings.bottom` independently with the shared
|
|
277
|
+
`round`, `chamfer`, `smooth`, or sampled `profile` treatments. Circular openings also accept
|
|
278
|
+
`counterbore` and `countersink`, using explicit seat dimensions. Each end accepts one treatment.
|
|
279
|
+
For blind pockets, leave the floor end plain and extend only the open end.
|
|
280
|
+
|
|
281
|
+
The first treatment setback widens the mouth; the second reaches into the hole along its axis.
|
|
282
|
+
Both opening depths must leave a positive untreated throat. Circular roundovers use a radius
|
|
283
|
+
in the radial/axial section. Treated Section pockets require one strictly convex contour without
|
|
284
|
+
holes; plain and zero-treated pockets accept arbitrary Section topology.
|
|
285
|
+
|
|
286
|
+
`overrun` extends the terminal cross section beyond the nominal end without changing the
|
|
287
|
+
opening dimensions. Both extensions default to zero. Set overrun independently from the
|
|
288
|
+
clearance already included in the bore or pocket dimensions.
|
|
289
|
+
|
|
290
|
+
`edgeCutter` places the sharp reference edge at XY=0 and runs along +Z from zero to `length`.
|
|
291
|
+
The material wedge runs counterclockwise from +X through `angle` degrees (default 90).
|
|
292
|
+
Use existing transforms, anchors, and patterns to position the cutter, then subtract it.
|
|
293
|
+
`cornerCutter` complements matching cuts where three perpendicular material faces meet in the
|
|
294
|
+
positive XYZ octant. It accepts a spherical `round` or equal-setback `chamfer`; arbitrary edge
|
|
295
|
+
profiles do not define a unique three-face corner surface. Numerical `excess` extends outside
|
|
296
|
+
the reference faces and defaults to 0.05 mm, independently of the finished treatment.
|
|
297
|
+
Perpendicular round edges and spherical corners use a common native sampling lattice. Matching
|
|
298
|
+
treatments meet on the same vertices; full-circle facet requests round up to a multiple of four.
|
|
299
|
+
|
|
300
|
+
These cutters use explicit construction datums. They do not select edges in an existing mesh or
|
|
301
|
+
infer the mating surface. Keep each complete treatment inside the intended local material.
|
|
206
302
|
|
|
207
303
|
## Finish a profile with a hole
|
|
208
304
|
|
|
@@ -240,13 +336,65 @@ Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic
|
|
|
240
336
|
`profile` points:
|
|
241
337
|
|
|
242
338
|
- Boxes select disjoint named edges or groups; rectangles select individual corners.
|
|
243
|
-
- Cylinder/frustum and straight extrusion rims use independent `ends.bottom` and `ends.top`.
|
|
339
|
+
- Cylinder/frustum, tube, and straight extrusion rims use independent `ends.bottom` and `ends.top`.
|
|
340
|
+
Tube end treatments finish both the outer rim and bore mouth and must retain a positive wall.
|
|
244
341
|
- Straight extrusions admit concave outlines, holes, and disconnected material components when
|
|
245
342
|
every source boundary survives the treatment without contact, collapse, or topology changes.
|
|
246
343
|
One treatment applies to every material boundary at that end; inward material trimming expands
|
|
247
|
-
hole mouths. Enabled treatments
|
|
344
|
+
hole mouths. Enabled treatments require unit `scale`. Explicit `slices` controls the base
|
|
345
|
+
longitudinal grid; treatment and refinement rings may increase the final layer count.
|
|
248
346
|
- Zero radius, zero chamfer/smooth distance, or an all-zero distance pair leaves a feature untreated.
|
|
249
347
|
Other setback pairs require two positive values; negative and nonfinite amounts reject.
|
|
250
348
|
- Disabled extrusion end treatments retain ordinary support, including holes and twist.
|
|
251
349
|
|
|
252
350
|
For a local connection between completed solids, use [solid joins](solid-joins.md).
|
|
351
|
+
|
|
352
|
+
## Chamfer a twisted extrusion
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
```ts
|
|
357
|
+
import { rectangle } from "@metamesh/modeling";
|
|
358
|
+
import { transform3 } from "@metamesh/modeling/geometry";
|
|
359
|
+
import { generate } from "@metamesh/project";
|
|
360
|
+
|
|
361
|
+
const core = rectangle({ size: 20 });
|
|
362
|
+
const sleeve = rectangle({ size: 27 }).subtract(rectangle({ size: 20.7 }));
|
|
363
|
+
const chamfer = { kind: "chamfer", distance: 0.7 } as const;
|
|
364
|
+
const options = {
|
|
365
|
+
height: 70,
|
|
366
|
+
twist: 180,
|
|
367
|
+
slices: 20,
|
|
368
|
+
ends: { bottom: chamfer, top: chamfer },
|
|
369
|
+
resolution: { maxChordError: 0.025 },
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
export default generate(({ part }) => [
|
|
373
|
+
part("core", { geometry: core.extrude(options), color: "#E9B45D" }),
|
|
374
|
+
part("sleeve", {
|
|
375
|
+
geometry: sleeve.extrude(options),
|
|
376
|
+
color: "#2D8490",
|
|
377
|
+
transform: transform3().translate([40, 0, 0]),
|
|
378
|
+
}),
|
|
379
|
+
]);
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
Chamfer the finished twisted rims, including the sleeve bore, through the same extrusion options.
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
Build the sleeve's complete filled section before extrusion. The same `ends` options finish its
|
|
387
|
+
outside and bore, preserving matching corners without separate cutters or independently offset lofts.
|
|
388
|
+
|
|
389
|
+
For a chamfer, `distance: 0.7` sets equal setbacks on the cap and the finished wall. A pair sets
|
|
390
|
+
`[cap, wall]`. The wall distance is measured from the rim in a normal section through the helical
|
|
391
|
+
wall; it is a straight-line distance, rather than axial depth or surface arc length. Equal distances
|
|
392
|
+
give 45° on perpendicular walls; a twisted wall can give a different angle around the rim.
|
|
393
|
+
|
|
394
|
+
Twisted ends support `chamfer`. Rounded, smooth, and custom-profile ends require zero twist.
|
|
395
|
+
Use `maxChordError` and optional `maxSegmentLength` for physical sampling. `slices` selects the
|
|
396
|
+
base longitudinal intervals; additional treatment rings and physical refinement resolve the rim.
|
|
397
|
+
Without explicit `slices`, extrusion resolution chooses the base schedule. This example requests
|
|
398
|
+
20 intervals and lets the chamfer add the rings it needs.
|
|
399
|
+
Keep enough material between the two ends and between neighboring boundaries. Large twists over
|
|
400
|
+
a short chamfer collar can fold normal sections and reject; reduce the twist or the setback.
|
|
@@ -1,35 +1,128 @@
|
|
|
1
1
|
# Modeling recipes
|
|
2
2
|
|
|
3
|
-
Choose
|
|
3
|
+
Choose an illustrated construction technique by the part you want to make.
|
|
4
4
|
|
|
5
|
-
Choose the
|
|
6
|
-
|
|
5
|
+
Choose the shape or feature you need. Each guide pairs rendered geometry with the checked source
|
|
6
|
+
that creates it, explains the important constraints, and links to the exact API.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
[standalone workflow](standalone-model.md) and use its host entry point.
|
|
8
|
+
New to Modeling? [Start with a complete part](https://metamesh.studio/docs/modeling#start-with-one-part), then return here
|
|
9
|
+
when you want to build a different shape.
|
|
11
10
|
|
|
12
11
|
## Choose a technique
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### [Profiles and extrusion](profiles-and-extrusion.md)
|
|
17
|
+
|
|
18
|
+
Outline → solid
|
|
19
|
+
|
|
20
|
+
Extrude plates and gaskets, revolve cups, and finish housings and rims.
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### [Sweeps, lofts, and reliefs](sweeps-and-lofts.md)
|
|
29
|
+
|
|
30
|
+
Path or stations → solid
|
|
31
|
+
|
|
32
|
+
Route a ribbon, blend changing profiles, or sample a surface over an XY grid.
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### [Transforms and placement](transforms-and-placement.md)
|
|
41
|
+
|
|
42
|
+
One feature → coordinated parts
|
|
43
|
+
|
|
44
|
+
Repeat features, share placements, and align parts by their anchors.
|
|
45
|
+
|
|
46
|
+

|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### [Solid joins](solid-joins.md)
|
|
53
|
+
|
|
54
|
+
Base + feature → connection
|
|
55
|
+
|
|
56
|
+
Connect a separately modeled boss or rib with a smooth or straight transition.
|
|
57
|
+
|
|
58
|
+

|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### [SVG and lettering](svg-and-text.md)
|
|
65
|
+
|
|
66
|
+
Artwork → material
|
|
67
|
+
|
|
68
|
+
Extrude painted SVG shapes or exact-font lettering and fit the visible outlines.
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
### [Printable threads](https://metamesh.studio/docs/develop/printable-threads)
|
|
77
|
+
|
|
78
|
+
Shared dimensions → mating parts
|
|
79
|
+
|
|
80
|
+
Make a threaded rod and nut with shared profiles, end treatments, and fit allowances.
|
|
81
|
+
|
|
82
|
+

|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
### [Gear geometry](https://metamesh.studio/docs/develop/gear-geometry)
|
|
89
|
+
|
|
90
|
+
Pitch + tooth count → gear pair
|
|
91
|
+
|
|
92
|
+
Resolve dimensions, sample tooth outlines, and place a pinion, wheel, or rack.
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
### [Resolution and inspection](resolution-and-inspection.md)
|
|
101
|
+
|
|
102
|
+
Model → checked result
|
|
103
|
+
|
|
104
|
+
Choose physical curve detail, understand preflight guarantees, and inspect completed geometry.
|
|
105
|
+
|
|
106
|
+

|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
For vectors, sampled
|
|
112
|
+
boundaries, and profile correspondence, read [geometry values](geometry-values.md).
|
|
113
|
+
|
|
114
|
+
## Run and adapt an example
|
|
115
|
+
|
|
116
|
+
The guides identify their execution host. Most use a [Studio code Project](https://metamesh.studio/docs/develop/code-projects),
|
|
117
|
+
where Studio supplies typed controls and prepared services. A [standalone model](standalone-model.md)
|
|
118
|
+
uses the same shape operations with generation imported from `@metamesh/modeling`.
|
|
119
|
+
|
|
120
|
+
1. Read the model beside its source, then inspect its optional interactive preview when orientation
|
|
121
|
+
or separate parts matter.
|
|
122
|
+
2. Adapt the dimensions and connect them to [controls and validation](https://metamesh.studio/docs/develop/parameters-and-validation).
|
|
123
|
+
3. Check the defaults, supported extremes, and optional features with
|
|
124
|
+
[resolution and inspection](resolution-and-inspection.md) before [exporting](https://metamesh.studio/docs/use/export-3mf).
|
|
125
|
+
|
|
126
|
+
Keep expensive unchanged work in [memoized helpers](generation.md#reuse-unchanged-work)
|
|
127
|
+
once the basic construction works. Mechanical fit needs a representative physical test as well as
|
|
128
|
+
valid generated geometry.
|
|
@@ -10,8 +10,8 @@ does not establish a suitable manufacturing fit.
|
|
|
10
10
|
|
|
11
11
|
MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
|
|
12
12
|
tolerances are millimetres; angular arguments such as `rotate` use degrees.
|
|
13
|
-
Pure [`rotate2`](../reference/
|
|
14
|
-
The low-level [`rotationTransform3`](../reference/
|
|
13
|
+
Pure [`rotate2`](../reference/math/rotate2.md) and transform-value rotations also take degrees.
|
|
14
|
+
The low-level [`rotationTransform3`](../reference/math/rotationTransform3.md) constructor
|
|
15
15
|
requires an explicit `{ degrees }` or `{ radians }` angle.
|
|
16
16
|
|
|
17
17
|
`GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
|
|
@@ -44,21 +44,31 @@ different things, so read what its report covers:
|
|
|
44
44
|
SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
|
|
45
45
|
at the selected resolution; they do not predict later mesh allocation.
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
[`
|
|
50
|
-
[`
|
|
51
|
-
|
|
47
|
+
Preflights are pure calculations: they run without an engine and use explicit options or package
|
|
48
|
+
defaults. Threaded-part preflights live in `/geometry/mechanical`, including
|
|
49
|
+
[`preflightThreadedRod`](../reference/mechanical/preflightThreadedRod.md),
|
|
50
|
+
[`preflightInternalThreadCutter`](../reference/mechanical/preflightInternalThreadCutter.md), and
|
|
51
|
+
[`preflightThreadedNut`](../reference/mechanical/preflightThreadedNut.md).
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
Inside generation, pass the callback's effective `resolution` and `limits` to a preflight or
|
|
54
|
+
[`matchProfiles`](../reference/geometry/matchProfiles.md) when its sampling and work budget must
|
|
55
|
+
agree with the host. A pure helper never reads an ambient session.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
**Preflight is a plan, not a finished part**
|
|
60
|
+
|
|
61
|
+
Passing covers only the report's documented checks. Callbacks, meshing, or native evaluation can
|
|
62
|
+
still fail. Run representative inputs and inspect the completed geometry.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
Constructors enforce their limits even when you skip preflight. Use a report when its sampling
|
|
67
|
+
plan or diagnostics help you make a decision.
|
|
56
68
|
|
|
57
69
|
## Lifecycle and inspection
|
|
58
70
|
|
|
59
|
-
|
|
60
|
-
preview, and file delivery. Don't manually delete `Section` or `Solid` values. Use
|
|
61
|
-
`shape.inspect()` for bounds, topology counts, area, and volume.
|
|
71
|
+
Use `shape.inspect()` for bounds, topology counts, area, and volume.
|
|
62
72
|
Its immutable extrema are nested under `facts.bounds.min` and `facts.bounds.max`.
|
|
63
73
|
Native `componentCount` counts disconnected material components. Mesh analysis and signatures use
|
|
64
74
|
`shellCount` for surfaces connected by shared indexed edges: one sealed hollow body has one material
|
|
@@ -88,21 +98,25 @@ same queries inside its synchronous generation callback:
|
|
|
88
98
|
|
|
89
99
|
|
|
90
100
|
```ts
|
|
91
|
-
import { box } from "@metamesh/modeling";
|
|
101
|
+
import { box, cylinder } from "@metamesh/modeling";
|
|
92
102
|
import { generate } from "@metamesh/project";
|
|
93
103
|
|
|
94
104
|
export default generate(({ part }) => {
|
|
95
|
-
const
|
|
96
|
-
const
|
|
105
|
+
const plate = box({ size: [40, 30, 5] });
|
|
106
|
+
const bore = cylinder({ diameter: 10, height: 7 });
|
|
107
|
+
const result = plate.subtract(bore);
|
|
108
|
+
const facts = result.inspect();
|
|
97
109
|
|
|
98
|
-
if (
|
|
99
|
-
throw new Error("
|
|
110
|
+
if (facts.bounds.min[2] !== -2.5 || facts.componentCount !== 1) {
|
|
111
|
+
throw new Error("Expected one connected plate centered on Z.");
|
|
100
112
|
}
|
|
101
113
|
|
|
102
|
-
return
|
|
114
|
+
return part("plate", result);
|
|
103
115
|
});
|
|
104
116
|
```
|
|
105
117
|
|
|
118
|
+
Inspect the cut block during generation, then return the same checked geometry as a part.
|
|
119
|
+
|
|
106
120
|
|
|
107
121
|
|
|
108
122
|
Use [`layoutRow`](../reference/geometry/layoutRow.md) to arrange pieces along +X with an explicit
|
|
@@ -112,21 +126,27 @@ returned translations in `part` placement options so you can reuse the geometry.
|
|
|
112
126
|
|
|
113
127
|
|
|
114
128
|
```ts
|
|
115
|
-
import { box, generate
|
|
116
|
-
import { layoutRow } from "@metamesh/modeling/geometry";
|
|
129
|
+
import { box, generate } from "@metamesh/modeling";
|
|
130
|
+
import { layoutRow, transform3 } from "@metamesh/modeling/geometry";
|
|
117
131
|
|
|
118
|
-
export
|
|
132
|
+
export default generate<Record<never, never>>(({ part }) => {
|
|
119
133
|
const pieces = [box({ size: [20, 10, 6] }), box({ size: [12, 16, 8] })];
|
|
120
134
|
const positions = layoutRow(
|
|
121
135
|
pieces.map((piece) => piece.inspect().bounds),
|
|
122
136
|
{ gap: 4 }
|
|
123
137
|
);
|
|
124
138
|
return pieces.map((geometry, index) =>
|
|
125
|
-
part(`piece-${index}`, {
|
|
139
|
+
part(`piece-${index}`, {
|
|
140
|
+
geometry,
|
|
141
|
+
transform: transform3().translate(positions[index]!),
|
|
142
|
+
color: index === 0 ? "#f6ad55" : "#60a5fa",
|
|
143
|
+
})
|
|
126
144
|
);
|
|
127
145
|
});
|
|
128
146
|
```
|
|
129
147
|
|
|
148
|
+
Use each part’s evaluated bounds to place its geometry along +X with a deliberate gap.
|
|
149
|
+
|
|
130
150
|
|
|
131
151
|
|
|
132
152
|
Check the default, smallest and largest supported dimensions, and every optional feature after
|
|
@@ -31,7 +31,7 @@ const feature = cylinder({
|
|
|
31
31
|
cylinder({ diameter: 4, height: 16, center: false }).rotate([90, 0, 0]).translate([0, 8, 12])
|
|
32
32
|
)
|
|
33
33
|
// Boolean geometry defines its own datum; the collar below the cross-bore stays straight.
|
|
34
|
-
.withAnchors({ mount: anchor3([0, 0, 2], [0, 0, -1]) });
|
|
34
|
+
.withAnchors({ mount: anchor3({ position: [0, 0, 2], direction: [0, 0, -1] }) });
|
|
35
35
|
|
|
36
36
|
const mount = base.join(feature, {
|
|
37
37
|
source: "mount",
|
|
@@ -50,6 +50,15 @@ and a straight collar remains below the cross-bore. The Boolean-composed feature
|
|
|
50
50
|
`mount` datum with its outward normal pointing toward the base. `source: "mount"` resolves that
|
|
51
51
|
datum when the join evaluates, so the completed recipe can be declared before an engine exists.
|
|
52
52
|
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
**Place the feature before joining**
|
|
56
|
+
|
|
57
|
+
A join adds the root transition to an already positioned feature. Check the collar and support
|
|
58
|
+
requirements below; joining does not close a gap or move the feature into place.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
53
62
|
The result has no inherited anchors. Define result datums with `withAnchors` when later work needs them.
|
|
54
63
|
|
|
55
64
|
## Define the connection
|
|
@@ -83,7 +92,8 @@ must be positive, or both zero to disable added blending while still validating
|
|
|
83
92
|
|
|
84
93
|
|
|
85
94
|
```ts
|
|
86
|
-
import { box
|
|
95
|
+
import { box } from "@metamesh/modeling";
|
|
96
|
+
import { transform3 } from "@metamesh/modeling/geometry";
|
|
87
97
|
import { generate } from "@metamesh/project";
|
|
88
98
|
|
|
89
99
|
const base = box({ size: [24, 20, 4] });
|
|
@@ -22,6 +22,8 @@ export default generate<Record<never, never>>(({ part }) => {
|
|
|
22
22
|
});
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
The centered 6 mm plate is cut by an 8 mm tall cylinder so the hole crosses both faces.
|
|
26
|
+
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
The cutter extends beyond both faces of the centered plate. `part("plate", ...)` gives the output
|
|
@@ -29,7 +31,7 @@ a stable ID so you can identify the plate in the result. This model takes an emp
|
|
|
29
31
|
|
|
30
32
|
## Check and run
|
|
31
33
|
|
|
32
|
-
With [Modeling and the CLI installed](https://metamesh.studio/docs/develop/
|
|
34
|
+
With [Modeling and the CLI installed](https://metamesh.studio/docs/develop/cli#install-and-discover-the-environment),
|
|
33
35
|
check the source and generate a captured result:
|
|
34
36
|
|
|
35
37
|
```bash
|
|
@@ -37,7 +39,7 @@ pnpm exec metamesh typecheck model.ts --kind model
|
|
|
37
39
|
pnpm exec metamesh run model.ts --kind model
|
|
38
40
|
```
|
|
39
41
|
|
|
40
|
-
Continue with [inspection and rendering](https://metamesh.studio/docs/develop/
|
|
42
|
+
Continue with [inspection and rendering](https://metamesh.studio/docs/develop/cli#inspect-the-captured-result),
|
|
41
43
|
or [host the program in your application](hosting.md).
|
|
42
44
|
When you're ready for a different shape, the
|
|
43
45
|
[construction chooser](recipes.md#choose-a-technique) helps you pick an approach.
|