@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
package/dist/model/generation.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { captureDiagnosticPath } from "./diagnostic-path.js";
|
|
2
|
-
/** A user-correctable assertion failure. Successful
|
|
2
|
+
/** A user-correctable assertion failure. Successful memo caches never retain failures. */
|
|
3
3
|
export class GenerationError extends Error {
|
|
4
4
|
/** Issues reached in normal JavaScript order, ending with the first failed assertion. */
|
|
5
5
|
diagnostics;
|
|
@@ -16,7 +16,9 @@ export class GenerationError extends Error {
|
|
|
16
16
|
/**
|
|
17
17
|
* Defines a typed model without executing it. Parameters are an object map of capturable data;
|
|
18
18
|
* runtime capture rejects arrays at the root, ordinary class instances, mutable buffers, and functions.
|
|
19
|
-
* Supply live capabilities through services. Use `
|
|
19
|
+
* Supply live capabilities through services. Use `memo` only for work worth reusing.
|
|
20
|
+
*
|
|
21
|
+
* @param callback - Synchronous callback returning one part or a readonly part array.
|
|
20
22
|
*
|
|
21
23
|
* @example A simple model
|
|
22
24
|
* ```ts
|
|
@@ -2,7 +2,7 @@ import { GeometryError } from "../geometry/errors.js";
|
|
|
2
2
|
import { adoptImmutableBuffer, immutableBuffer, immutableBufferView, isImmutableBuffer, } from "../geometry/immutable-buffer.js";
|
|
3
3
|
import { isImmutableMathValue } from "../geometry/math/immutable-value.js";
|
|
4
4
|
import { geometryRecipe, isGeometryRecipe } from "./geometry-recipes.js";
|
|
5
|
-
const mutableBufferMessage = "Generation data cannot contain mutable typed arrays or raw ArrayBuffers. Use immutableBuffer(array) or mesh.immutable(mesh) before
|
|
5
|
+
const mutableBufferMessage = "Generation data cannot contain mutable typed arrays or raw ArrayBuffers. Use immutableBuffer(array) or mesh.immutable(mesh) before passing them to memo or capturing generation data.";
|
|
6
6
|
const capturedMetadata = new WeakMap();
|
|
7
7
|
const immutableInputs = new WeakSet();
|
|
8
8
|
const noChildren = Object.freeze([]);
|
|
@@ -51,7 +51,7 @@ export function* generationDataEntries(value, captureAccessors = false) {
|
|
|
51
51
|
continue;
|
|
52
52
|
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
53
53
|
if (!captureAccessors && !("value" in descriptor))
|
|
54
|
-
throw new GeometryError("INVALID_ARGUMENT", "Generation data requires own data fields, not accessors.", { operation: "
|
|
54
|
+
throw new GeometryError("INVALID_ARGUMENT", "Generation data requires own data fields, not accessors.", { operation: "memo" });
|
|
55
55
|
if (typeof key !== "string" || !descriptor.enumerable)
|
|
56
56
|
throw new TypeError("Generation data requires enumerable string-keyed fields.");
|
|
57
57
|
yield [
|
|
@@ -221,13 +221,15 @@ function mathValueData(value) {
|
|
|
221
221
|
throw new TypeError("Immutable math values must expose canonical data through toData().");
|
|
222
222
|
return Reflect.apply(method, value, []);
|
|
223
223
|
}
|
|
224
|
-
|
|
224
|
+
// Data and recipe modes copy containers; dependency mode validates them in place for memo identity.
|
|
225
|
+
// Recipe mode also captures accessor values and numeric buffers while retaining deferred callbacks.
|
|
226
|
+
function captureValue(value, mode, validated) {
|
|
225
227
|
const recipeInputs = mode === "recipe";
|
|
226
228
|
const seen = new Map();
|
|
227
229
|
const metadata = new Map();
|
|
228
230
|
const copy = (input) => {
|
|
229
|
-
if (typeof input === "function" && !recipeInputs
|
|
230
|
-
throw new GeometryError("INVALID_ARGUMENT", "
|
|
231
|
+
if (typeof input === "function" && !recipeInputs)
|
|
232
|
+
throw new GeometryError("INVALID_ARGUMENT", "Memo arguments and results cannot contain arbitrary function closures.", { operation: "memo" });
|
|
231
233
|
if (typeof input !== "object" ||
|
|
232
234
|
input === null ||
|
|
233
235
|
isGeometryRecipe(input) ||
|
|
@@ -261,7 +263,7 @@ function captureValue(value, mode, readerAllowed = () => false, validated) {
|
|
|
261
263
|
};
|
|
262
264
|
if (mode === "dependency") {
|
|
263
265
|
if (!Object.isFrozen(input))
|
|
264
|
-
throw new GeometryError("INVALID_ARGUMENT", "
|
|
266
|
+
throw new GeometryError("INVALID_ARGUMENT", "Memo arguments require deeply immutable objects and arrays. Pass params directly, use a memo result, or pass individual scalar values.", { operation: "memo" });
|
|
265
267
|
seen.set(input, input);
|
|
266
268
|
for (const [key, field] of entries) {
|
|
267
269
|
copy(field);
|
|
@@ -297,22 +299,22 @@ function captureValue(value, mode, readerAllowed = () => false, validated) {
|
|
|
297
299
|
capturedMetadata.set(value, entry);
|
|
298
300
|
return result;
|
|
299
301
|
}
|
|
300
|
-
/**
|
|
301
|
-
export function captureGenerationValue(value
|
|
302
|
-
return captureValue(value, "data"
|
|
302
|
+
/** Captures immutable ordinary generation data; arbitrary function closures are invalid. */
|
|
303
|
+
export function captureGenerationValue(value) {
|
|
304
|
+
return captureValue(value, "data");
|
|
303
305
|
}
|
|
304
306
|
/** Snapshots the list, preserving immutable entry identities and validating each object only once. */
|
|
305
|
-
export function
|
|
307
|
+
export function captureGenerationArguments(values, validated) {
|
|
306
308
|
const inputs = [];
|
|
307
309
|
for (const [key, value] of generationDataEntries(values)) {
|
|
308
310
|
if (key !== String(inputs.length))
|
|
309
|
-
throw new TypeError("
|
|
311
|
+
throw new TypeError("Memo arguments must be a dense array without extra fields.");
|
|
310
312
|
inputs.push(value);
|
|
311
313
|
}
|
|
312
314
|
if (inputs.length !== values.length)
|
|
313
|
-
throw new TypeError("
|
|
315
|
+
throw new TypeError("Memo arguments must be a dense array without extra fields.");
|
|
314
316
|
const result = Object.freeze(inputs);
|
|
315
|
-
captureValue(result, "dependency",
|
|
317
|
+
captureValue(result, "dependency", validated);
|
|
316
318
|
return result;
|
|
317
319
|
}
|
|
318
320
|
/** Captures ordinary inputs once, including accessor values and mutable numeric arrays. */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/model/operations.js
CHANGED
|
@@ -10,6 +10,29 @@ import { invokeModelOperation as invoke } from "./operation-dispatch.js";
|
|
|
10
10
|
export function box(options) {
|
|
11
11
|
return invoke("box", [options]);
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Fuses two positioned solids with a dimensioned transition at the feature's source datum.
|
|
15
|
+
*
|
|
16
|
+
* Requires a local straight feature collar and a continuous support patch single-valued along
|
|
17
|
+
* that collar's axis. Angled and curved sampled supports are admitted when those proofs hold.
|
|
18
|
+
* Width is a parallel-edge offset; height is axial rise above local contact, both in millimetres.
|
|
19
|
+
* The default smooth profile matches tangents; kind "straight" gives a linear bevel profile.
|
|
20
|
+
* Neither operand moves, loses material, or changes sampling. The result has no inherited anchors.
|
|
21
|
+
* This operation promises neither a circular radius, a constant bevel angle, nor global curvature continuity.
|
|
22
|
+
*
|
|
23
|
+
* @param base - Support solid in shared modeling coordinates.
|
|
24
|
+
* @param feature - Positioned feature that owns the source datum.
|
|
25
|
+
*
|
|
26
|
+
* @example Join a mounting boss
|
|
27
|
+
* ```ts
|
|
28
|
+
* const base = box({ size: [50, 40, 6] });
|
|
29
|
+
* const feature = cylinder({ diameter: 12, height: 14, center: false }).translate([0, 0, 2]);
|
|
30
|
+
* base.join(feature, { source: "bottom", transition: { width: 2, height: 3 } });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function join(base, feature, options) {
|
|
34
|
+
return invoke("join", [base, feature, options]);
|
|
35
|
+
}
|
|
13
36
|
/**
|
|
14
37
|
* +Z cylinder or frustum. Face sizing compensates polygon faceting.
|
|
15
38
|
*
|
|
@@ -27,28 +50,92 @@ export function cylinder(options) {
|
|
|
27
50
|
return invoke("cylinder", [options]);
|
|
28
51
|
}
|
|
29
52
|
/**
|
|
30
|
-
* Declares a +Z hole or blind-pocket cutter with
|
|
53
|
+
* Declares a +Z hole or blind-pocket cutter with independent opening treatments.
|
|
31
54
|
*
|
|
32
55
|
* @remarks
|
|
33
|
-
* Choose exactly one circular diameter or existing Section.
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
56
|
+
* Choose exactly one circular diameter or existing Section. Finished profiles require one
|
|
57
|
+
* strictly convex contour without holes; plain profiles may have any topology. Opening treatments
|
|
58
|
+
* widen the mouth while retaining a positive nominal throat. Circular openings also admit
|
|
59
|
+
* counterbores and countersinks. An omitted opening leaves that end unchanged.
|
|
60
|
+
* Overrun extends each terminal cross section outside Z=0..height; both ends default to zero,
|
|
61
|
+
* preserving blind-pocket floors. It is independent of manufacturing clearance.
|
|
38
62
|
* Existing Section samples are authoritative; limits and unspecified circular sampling belong
|
|
39
63
|
* to the evaluating host.
|
|
40
64
|
*
|
|
41
|
-
* @example
|
|
65
|
+
* @example Amber cutter · Blue blind hex pocket
|
|
42
66
|
* ```ts
|
|
43
|
-
* holeCutter
|
|
44
|
-
*
|
|
45
|
-
*
|
|
67
|
+
* import { box, generate, holeCutter, regularPolygon } from "@metamesh/modeling";
|
|
68
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
69
|
+
*
|
|
70
|
+
* const cutter = holeCutter({
|
|
71
|
+
* profile: regularPolygon({ sides: 6, radius: 5, sizing: "face", rotation: 30 }),
|
|
72
|
+
* height: 5,
|
|
73
|
+
* openings: { top: { kind: "chamfer", distance: 1.5 } },
|
|
74
|
+
* overrun: { top: 0.05 },
|
|
46
75
|
* });
|
|
76
|
+
* // A 3 mm floor remains beneath the pocket. Display the cutter separately on the left.
|
|
77
|
+
* const stock = box({ size: [22, 20, 8] }).translate([0, 0, 4]);
|
|
78
|
+
* const result = stock.subtract(cutter.translate([0, 0, 3]));
|
|
79
|
+
* export default generate(({ part }) => [
|
|
80
|
+
* part("cutter", { geometry: cutter, color: "#f6ad55", transform: transform3().translate([-12, -12, 0]) }),
|
|
81
|
+
* part("result", { geometry: result, color: "#4f83a6", transform: transform3().translate([12, 12, 0]) }),
|
|
82
|
+
* ]);
|
|
47
83
|
* ```
|
|
48
84
|
*/
|
|
49
85
|
export function holeCutter(options) {
|
|
50
86
|
return invoke("holeCutter", [options]);
|
|
51
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Creates a cutter for one straight convex edge along +Z, with its sharp reference at XY=0.
|
|
90
|
+
* Position it explicitly before subtraction; the included material angle defaults to 90 degrees.
|
|
91
|
+
*
|
|
92
|
+
* @example Amber cutter · Blue rounded edge
|
|
93
|
+
* ```ts
|
|
94
|
+
* import { box, edgeCutter, generate } from "@metamesh/modeling";
|
|
95
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
96
|
+
*
|
|
97
|
+
* const cutter = edgeCutter({ length: 18, treatment: { kind: "round", radius: 6 }, excess: 0 });
|
|
98
|
+
* const result = box({ size: 18, center: false }).subtract(cutter);
|
|
99
|
+
* // Turn the concave mask and convex result toward the viewer independently.
|
|
100
|
+
* export default generate(({ part }) => [
|
|
101
|
+
* part("cutter", { geometry: cutter.translate([-3, -3, 0]).rotate([0, 0, -90]), color: "#f6ad55", transform: transform3().translate([-11, -11, 0]) }),
|
|
102
|
+
* part("result", { geometry: result.translate([-9, -9, 0]).rotate([0, 0, 90]), color: "#4f83a6", transform: transform3().translate([11, 11, 0]) }),
|
|
103
|
+
* ]);
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export function edgeCutter(options) {
|
|
107
|
+
return invoke("edgeCutter", [options]);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Creates a round or chamfer cutter at the origin for three perpendicular positive-axis faces.
|
|
111
|
+
* Complements matching edge cutters; construction, placement, and subtraction remain explicit.
|
|
112
|
+
*
|
|
113
|
+
* @example Amber corner cutter · Blue three-edge junction
|
|
114
|
+
* ```ts
|
|
115
|
+
* import { box, cornerCutter, edgeCutter, generate } from "@metamesh/modeling";
|
|
116
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
117
|
+
*
|
|
118
|
+
* const treatment = { kind: "round", radius: 5 } as const;
|
|
119
|
+
* const cutter = cornerCutter({ treatment, excess: 0 });
|
|
120
|
+
* const edge = edgeCutter({ length: 12, treatment, excess: 0 });
|
|
121
|
+
* const result = box({ size: 12, center: false }).subtract([
|
|
122
|
+
* edge,
|
|
123
|
+
* edge.rotate([0, -90, 0]).translate([12, 0, 0]),
|
|
124
|
+
* edge.rotate([90, 0, 0]).translate([0, 12, 0]),
|
|
125
|
+
* cutter,
|
|
126
|
+
* ]);
|
|
127
|
+
* // Display the concave mask and completed upper junction from opposite sides.
|
|
128
|
+
* const view = (shape: typeof result, center: number, height: number) =>
|
|
129
|
+
* shape.translate([-center, -center, 0]).mirror([0, 0, 1]).translate([0, 0, height]).rotate([0, 0, 90]);
|
|
130
|
+
* export default generate(({ part }) => [
|
|
131
|
+
* part("cutter", { geometry: cutter.translate([-2.5, -2.5, 0]).rotate([0, 0, -90]), color: "#f6ad55", transform: transform3().translate([-8, -8, 0]) }),
|
|
132
|
+
* part("result", { geometry: view(result, 6, 12), color: "#4f83a6", transform: transform3().translate([8, 8, 0]) }),
|
|
133
|
+
* ]);
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export function cornerCutter(options) {
|
|
137
|
+
return invoke("cornerCutter", [options]);
|
|
138
|
+
}
|
|
52
139
|
/**
|
|
53
140
|
* Hollow +Z tube.
|
|
54
141
|
*
|
|
@@ -61,7 +148,8 @@ export function tube(options) {
|
|
|
61
148
|
return invoke("tube", [options]);
|
|
62
149
|
}
|
|
63
150
|
/**
|
|
64
|
-
* Origin-centered sphere.
|
|
151
|
+
* Origin-centered sphere with adaptive sampling that bounds spherical triangle error.
|
|
152
|
+
* Explicit segment requests select octahedral refinement and round up to a multiple of four.
|
|
65
153
|
*
|
|
66
154
|
* @example Sphere
|
|
67
155
|
* ```ts
|
|
@@ -91,13 +179,15 @@ export function intersect(shapes) {
|
|
|
91
179
|
export function hull(options) {
|
|
92
180
|
return invoke("hull", [options]);
|
|
93
181
|
}
|
|
94
|
-
/**
|
|
182
|
+
/** Declares the three-dimensional Minkowski sum of two Solid recipes. */
|
|
95
183
|
export function minkowskiSum(a, b) {
|
|
96
184
|
return invoke("minkowskiSum", [a, b]);
|
|
97
185
|
}
|
|
98
186
|
/**
|
|
99
187
|
* Imports a bounded closed indexed mesh.
|
|
100
188
|
*
|
|
189
|
+
* @param mesh - Closed, oriented mesh in millimetres; ownership stays with the caller.
|
|
190
|
+
*
|
|
101
191
|
* @example Mesh import
|
|
102
192
|
* ```ts
|
|
103
193
|
* import { solidFromMesh } from "@metamesh/modeling";
|
|
@@ -117,6 +207,8 @@ export function solidFromMesh(mesh) {
|
|
|
117
207
|
* Closing edges are implicit. Compound contours use nonzero fill unless selected otherwise.
|
|
118
208
|
* Explicit topology must be simple and disjoint; compound winding may resolve overlaps.
|
|
119
209
|
*
|
|
210
|
+
* @param input - XY outline in millimetres, or explicit or compound topology.
|
|
211
|
+
*
|
|
120
212
|
* @example Extrude a triangular plate
|
|
121
213
|
* ```ts
|
|
122
214
|
* polygon([[0, 0], [20, 0], [10, 12]]).extrude({ height: 3 });
|
|
@@ -126,12 +218,14 @@ export function polygon(input) {
|
|
|
126
218
|
return invoke("polygon", [input]);
|
|
127
219
|
}
|
|
128
220
|
/**
|
|
129
|
-
*
|
|
221
|
+
* Declares a centered-width Section recipe along a sampled XY path.
|
|
130
222
|
*
|
|
131
|
-
* Shares caps, joins and physical sampling with Geometry's strokeRegionData.
|
|
132
|
-
* resolves overlapping stroke primitives. Session resolution and resource ceilings apply;
|
|
223
|
+
* Shares caps, joins and physical sampling with Geometry's strokeRegionData. During evaluation,
|
|
224
|
+
* union resolves overlapping stroke primitives. Session resolution and resource ceilings apply;
|
|
133
225
|
* closed paths omit the duplicated seam. Returns an immutable deferred recipe.
|
|
134
226
|
*
|
|
227
|
+
* @param path - XY path in millimetres.
|
|
228
|
+
*
|
|
135
229
|
* @example Extrude a rounded track
|
|
136
230
|
* ```ts
|
|
137
231
|
* stroke([[0, 0], [20, 0], [20, 10]], { width: 3, join: "round", cap: "round" }).extrude({ height: 2 });
|
|
@@ -148,7 +242,7 @@ export function stroke(path, options) {
|
|
|
148
242
|
*
|
|
149
243
|
* @example Round the corners
|
|
150
244
|
* ```ts
|
|
151
|
-
* rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
|
|
245
|
+
* rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } }).extrude({ height: 3 });
|
|
152
246
|
* ```
|
|
153
247
|
*/
|
|
154
248
|
export function rectangle(options) {
|
|
@@ -159,7 +253,7 @@ export function rectangle(options) {
|
|
|
159
253
|
*
|
|
160
254
|
* @example Size to polygon faces
|
|
161
255
|
* ```ts
|
|
162
|
-
* circle({ diameter: 12, sizing: "face" });
|
|
256
|
+
* circle({ diameter: 12, sizing: "face" }).extrude({ height: 3 });
|
|
163
257
|
* ```
|
|
164
258
|
*/
|
|
165
259
|
export function circle(options) {
|
|
@@ -170,7 +264,7 @@ export function circle(options) {
|
|
|
170
264
|
*
|
|
171
265
|
* @example Ellipse by full dimensions
|
|
172
266
|
* ```ts
|
|
173
|
-
* ellipse({ size: [30, 20] });
|
|
267
|
+
* ellipse({ size: [30, 20] }).extrude({ height: 3 });
|
|
174
268
|
* ```
|
|
175
269
|
*/
|
|
176
270
|
export function ellipse(options) {
|
|
@@ -181,7 +275,7 @@ export function ellipse(options) {
|
|
|
181
275
|
*
|
|
182
276
|
* @example Hexagonal section
|
|
183
277
|
* ```ts
|
|
184
|
-
* regularPolygon({ radius: 10, sides: 6, sizing: "face" });
|
|
278
|
+
* regularPolygon({ radius: 10, sides: 6, sizing: "face" }).extrude({ height: 3 });
|
|
185
279
|
* ```
|
|
186
280
|
*/
|
|
187
281
|
export function regularPolygon(options) {
|
|
@@ -192,7 +286,7 @@ export function regularPolygon(options) {
|
|
|
192
286
|
*
|
|
193
287
|
* @example Five-point section
|
|
194
288
|
* ```ts
|
|
195
|
-
* star({ outerRadius: 12, innerRadius: 6, points: 5 });
|
|
289
|
+
* star({ outerRadius: 12, innerRadius: 6, points: 5 }).extrude({ height: 3 });
|
|
196
290
|
* ```
|
|
197
291
|
*/
|
|
198
292
|
export function star(options) {
|
|
@@ -202,10 +296,12 @@ export function star(options) {
|
|
|
202
296
|
* Extrudes a filled Section or explicit corresponding contours along +Z with degree twist and top scaling.
|
|
203
297
|
* Use `section.extrude(options)` in fluent sequences, or this function for generic profile inputs.
|
|
204
298
|
*
|
|
299
|
+
* @param shape - Filled XY profile in millimetres.
|
|
300
|
+
*
|
|
205
301
|
* @example Extrude
|
|
206
302
|
* ```ts
|
|
207
|
-
* import { extrude
|
|
208
|
-
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
303
|
+
* import { extrude } from "@metamesh/modeling";
|
|
304
|
+
* import { matchProfiles, rectangleProfile } from "@metamesh/modeling/geometry";
|
|
209
305
|
*
|
|
210
306
|
* const [profile] = matchProfiles([rectangleProfile({ size: [30, 20] })]);
|
|
211
307
|
* extrude(profile!, { height: 8 });
|
|
@@ -218,10 +314,12 @@ export function extrude(shape, options) {
|
|
|
218
314
|
* Revolves a filled Section or explicit corresponding radial/Z contours around +Z, with caps for partial sweeps.
|
|
219
315
|
* Use `section.revolve(options)` in fluent sequences, or this function for generic profile inputs.
|
|
220
316
|
*
|
|
317
|
+
* @param shape - Profile coordinates are [radius, Z] in millimetres.
|
|
318
|
+
*
|
|
221
319
|
* @example Revolve
|
|
222
320
|
* ```ts
|
|
223
|
-
* import {
|
|
224
|
-
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
321
|
+
* import { revolve } from "@metamesh/modeling";
|
|
322
|
+
* import { matchProfiles, rectangleProfile } from "@metamesh/modeling/geometry";
|
|
225
323
|
*
|
|
226
324
|
* // Contour coordinates are [radius, Z].
|
|
227
325
|
* const [profile] = matchProfiles([rectangleProfile({ size: [4, 16], center: false })]);
|
|
@@ -234,30 +332,8 @@ export function revolve(shape, options) {
|
|
|
234
332
|
export function loft(stations, options) {
|
|
235
333
|
return invoke("loft", [stations, options]);
|
|
236
334
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
* Requires active synchronous model execution. Use Geometry's matchProfiles for standalone preparation.
|
|
240
|
-
*/
|
|
241
|
-
export function matchProfiles(profiles, options) {
|
|
242
|
-
return invoke("matchProfiles", [profiles, options]);
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Sweeps a filled Section or explicit corresponding contours using the selected frame policy.
|
|
246
|
-
* Use `section.sweep(path, options)` in fluent sequences, or this function for generic profile inputs.
|
|
247
|
-
*
|
|
248
|
-
* @example Sweep
|
|
249
|
-
* ```ts
|
|
250
|
-
* import { matchProfiles, sweep } from "@metamesh/modeling";
|
|
251
|
-
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
252
|
-
*
|
|
253
|
-
* const [profile] = matchProfiles([rectangleProfile({ size: [6, 3] })]);
|
|
254
|
-
* sweep(profile!, [[0, 0, 0], [0, 0, 15], [10, 0, 25]], {
|
|
255
|
-
* orientation: { kind: "transport", initialNormal: [0, 1, 0] },
|
|
256
|
-
* });
|
|
257
|
-
* ```
|
|
258
|
-
*/
|
|
259
|
-
export function sweep(shape, path, options) {
|
|
260
|
-
return invoke("sweep", [shape, path, options]);
|
|
335
|
+
export function sweep(shape, route, options = {}) {
|
|
336
|
+
return invoke("sweep", [shape, route, options]);
|
|
261
337
|
}
|
|
262
338
|
/**
|
|
263
339
|
* Bounded positive-inside implicit field constructor.
|
|
@@ -295,7 +371,7 @@ export function gridPattern(...args) {
|
|
|
295
371
|
export function pathPattern(...args) {
|
|
296
372
|
return invoke("pathPattern", args);
|
|
297
373
|
}
|
|
298
|
-
/**
|
|
374
|
+
/** Declares a helical ridge Solid recipe along +Z, with lengths in millimetres. */
|
|
299
375
|
export function threadRidge(options) {
|
|
300
376
|
return invoke("threadRidge", [options]);
|
|
301
377
|
}
|
|
@@ -309,7 +385,6 @@ export function threadRidge(options) {
|
|
|
309
385
|
* Each half's `chamfer` bevels its barrel outer rims and all web edges. Consumers own plates, screw holes,
|
|
310
386
|
* pin retention, fit policy, and part placement. Added mounting material must preserve the bores.
|
|
311
387
|
* No opening range or collision freedom is implied for arbitrary caller attachments.
|
|
312
|
-
* Compiled Generator packages using this operation require runtime 10.0.0 or newer in major 10.
|
|
313
388
|
*
|
|
314
389
|
* @example Integral-pin hinge with two mounting webs
|
|
315
390
|
* ```ts
|
|
@@ -330,7 +405,7 @@ export function knuckleHinge(options) {
|
|
|
330
405
|
* @example Threaded rod
|
|
331
406
|
* ```ts
|
|
332
407
|
* import { threadedRod } from "@metamesh/modeling";
|
|
333
|
-
* import { threadProfile } from "@metamesh/modeling/geometry";
|
|
408
|
+
* import { threadProfile } from "@metamesh/modeling/geometry/mechanical";
|
|
334
409
|
*
|
|
335
410
|
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
336
411
|
* threadedRod({ nominalMajorDiameter: 12, length: 24, profile, fit: "normal" });
|
|
@@ -342,14 +417,22 @@ export function threadedRod(options) {
|
|
|
342
417
|
/**
|
|
343
418
|
* Compensated internal threaded cutter.
|
|
344
419
|
*
|
|
345
|
-
* @example
|
|
420
|
+
* @example Amber thread cutter · Blue cutaway result
|
|
346
421
|
* ```ts
|
|
347
|
-
* import { cylinder, internalThreadCutter } from "@metamesh/modeling";
|
|
348
|
-
* import {
|
|
422
|
+
* import { box, cylinder, generate, internalThreadCutter } from "@metamesh/modeling";
|
|
423
|
+
* import { transform3 } from "@metamesh/modeling/geometry";
|
|
424
|
+
* import { threadProfile } from "@metamesh/modeling/geometry/mechanical";
|
|
425
|
+
*
|
|
349
426
|
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
350
427
|
* const body = cylinder({ diameter: 20, height: 12, center: false });
|
|
351
428
|
* const cutter = internalThreadCutter({ nominalMajorDiameter: 12, length: 12, profile });
|
|
352
|
-
*
|
|
429
|
+
* // Remove the front quarter of the stock to expose the actual internal thread.
|
|
430
|
+
* const cutaway = box({ size: [11, 11, 14], center: false }).translate([0, -11, -1]);
|
|
431
|
+
* const result = body.subtract([cutter, cutaway]);
|
|
432
|
+
* export default generate(({ part }) => [
|
|
433
|
+
* part("cutter", { geometry: cutter, color: "#f6ad55", transform: transform3().translate([-12, -12, 0]) }),
|
|
434
|
+
* part("result", { geometry: result, color: "#4f83a6", transform: transform3().translate([12, 12, 0]) }),
|
|
435
|
+
* ]);
|
|
353
436
|
* ```
|
|
354
437
|
*/
|
|
355
438
|
export function internalThreadCutter(options) {
|
|
@@ -361,7 +444,7 @@ export function internalThreadCutter(options) {
|
|
|
361
444
|
* @example Threaded nut
|
|
362
445
|
* ```ts
|
|
363
446
|
* import { threadedNut } from "@metamesh/modeling";
|
|
364
|
-
* import { threadProfile } from "@metamesh/modeling/geometry";
|
|
447
|
+
* import { threadProfile } from "@metamesh/modeling/geometry/mechanical";
|
|
365
448
|
*
|
|
366
449
|
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
367
450
|
* threadedNut({ nominalMajorDiameter: 12, thickness: 8, width: 20, shape: "hex", profile, fit: "normal" });
|
|
@@ -370,47 +453,16 @@ export function internalThreadCutter(options) {
|
|
|
370
453
|
export function threadedNut(options) {
|
|
371
454
|
return invoke("threadedNut", [options]);
|
|
372
455
|
}
|
|
373
|
-
/**
|
|
374
|
-
* Checks compensated rod dimensions and conservative mesh estimates against host output limits.
|
|
375
|
-
*
|
|
376
|
-
* Requires active synchronous model execution and uses its resolution and limits. Returns selected
|
|
377
|
-
* sampling and conservative row/triangle estimates without mesh buffers or native objects.
|
|
378
|
-
* Mesh validity, native construction, and aggregate output limits are checked later.
|
|
379
|
-
*
|
|
380
|
-
* @see {@link threadedRod}
|
|
381
|
-
*/
|
|
382
|
-
export function preflightThreadedRod(options) {
|
|
383
|
-
return invoke("preflightThreadedRod", [options]);
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Checks compensated cutter dimensions and conservative mesh estimates against host output limits.
|
|
387
|
-
*
|
|
388
|
-
* Requires active synchronous model execution and uses its resolution and limits. Estimates include
|
|
389
|
-
* the one-pitch extension beyond each requested face, without mesh buffers or native objects.
|
|
390
|
-
* Mesh validity, native construction, and aggregate output limits are checked later.
|
|
391
|
-
*
|
|
392
|
-
* @see {@link internalThreadCutter}
|
|
393
|
-
*/
|
|
394
|
-
export function preflightInternalThreadCutter(options) {
|
|
395
|
-
return invoke("preflightInternalThreadCutter", [options]);
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
|
|
399
|
-
*
|
|
400
|
-
* Requires active synchronous model execution and uses its resolution and limits, without mesh
|
|
401
|
-
* buffers or native objects. Returned thread estimates cover the cutter, excluding the body and
|
|
402
|
-
* Boolean result. Mesh validity, native construction, and aggregate output limits are checked later.
|
|
403
|
-
*
|
|
404
|
-
* @see {@link threadedNut}
|
|
405
|
-
*/
|
|
406
|
-
export function preflightThreadedNut(options) {
|
|
407
|
-
return invoke("preflightThreadedNut", [options]);
|
|
408
|
-
}
|
|
409
456
|
/**
|
|
410
457
|
* Consumes a previously prepared layout; never shapes or fetches a font.
|
|
411
458
|
*
|
|
459
|
+
* @param layout - Prepared millimetre outlines; create the layout before generation.
|
|
460
|
+
*
|
|
412
461
|
* @example Use a prepared text layout
|
|
413
462
|
* ```ts
|
|
463
|
+
* import { textSection } from "@metamesh/modeling";
|
|
464
|
+
* import type { VectorTextLayout } from "@metamesh/modeling/geometry";
|
|
465
|
+
*
|
|
414
466
|
* // Prepare the exact font and layout before entering build.
|
|
415
467
|
* function labelSection(layout: VectorTextLayout) {
|
|
416
468
|
* return textSection(layout);
|
|
@@ -423,12 +475,14 @@ export function textSection(layout, options) {
|
|
|
423
475
|
/**
|
|
424
476
|
* Imports bounded painted SVG document geometry.
|
|
425
477
|
*
|
|
478
|
+
* @param svg - Complete SVG XML, at most 256 KiB of UTF-8.
|
|
479
|
+
*
|
|
426
480
|
* @example Import a physical SVG rectangle
|
|
427
481
|
* ```ts
|
|
428
482
|
* svgSection(
|
|
429
483
|
* '<svg xmlns="http://www.w3.org/2000/svg" width="30mm" height="20mm" viewBox="0 0 30 20"><rect width="30" height="20"/></svg>',
|
|
430
484
|
* { origin: "center" },
|
|
431
|
-
* );
|
|
485
|
+
* ).extrude({ height: 3 });
|
|
432
486
|
* ```
|
|
433
487
|
*/
|
|
434
488
|
export function svgSection(svg, options) {
|
|
@@ -437,9 +491,11 @@ export function svgSection(svg, options) {
|
|
|
437
491
|
/**
|
|
438
492
|
* Imports bounded filled SVG path data.
|
|
439
493
|
*
|
|
494
|
+
* @param path - SVG path data, at most 1 MiB of UTF-8; omit the XML wrapper.
|
|
495
|
+
*
|
|
440
496
|
* @example Fill an SVG path in millimetres
|
|
441
497
|
* ```ts
|
|
442
|
-
* svgPathSection("M0 0H20V12H0Z", { origin: "center", scale: 1 });
|
|
498
|
+
* svgPathSection("M0 0H20V12H0Z", { origin: "center", scale: 1 }).extrude({ height: 3 });
|
|
443
499
|
* ```
|
|
444
500
|
*/
|
|
445
501
|
export function svgPathSection(path, options) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
+
import { defaultModelingLimits } from "../geometry/limits.js";
|
|
2
3
|
import { knuckleHingeAxis } from "../geometry/mechanical/knuckle-hinge.js";
|
|
3
|
-
import { defaultModelingLimits } from "../geometry/model-limits.js";
|
|
4
4
|
import { gridPatternPlan, linearPatternPlan, pathPatternPlan, radialPatternPlan, } from "../geometry/patterns/placements.js";
|
|
5
|
-
import { restrictTransform3 } from "../geometry/
|
|
5
|
+
import { restrictTransform3 } from "../geometry/transforms/dimensions.js";
|
|
6
6
|
import { geometryRecipe, recordGeometryRecipe, } from "./geometry-recipes.js";
|
|
7
7
|
import { captureRecipeInputs } from "./immutable-generation-data.js";
|
|
8
8
|
// Every public operation must explicitly choose its realization and result behavior.
|
|
@@ -11,12 +11,15 @@ const operationBehaviors = {
|
|
|
11
11
|
box: "solid",
|
|
12
12
|
cylinder: "solid",
|
|
13
13
|
holeCutter: "solid",
|
|
14
|
+
edgeCutter: "solid",
|
|
15
|
+
cornerCutter: "solid",
|
|
14
16
|
tube: "solid",
|
|
15
17
|
sphere: "solid",
|
|
16
18
|
torus: "solid",
|
|
17
19
|
heightfield: "solid",
|
|
18
20
|
implicit: "solid",
|
|
19
21
|
extrude: "solid",
|
|
22
|
+
join: "solid",
|
|
20
23
|
revolve: "solid",
|
|
21
24
|
loft: "solid",
|
|
22
25
|
sweep: "solid",
|
|
@@ -61,10 +64,6 @@ const operationBehaviors = {
|
|
|
61
64
|
distance: "observation",
|
|
62
65
|
castSegment: "observation",
|
|
63
66
|
anchor: "observation",
|
|
64
|
-
matchProfiles: "observation",
|
|
65
|
-
preflightThreadedRod: "observation",
|
|
66
|
-
preflightInternalThreadCutter: "observation",
|
|
67
|
-
preflightThreadedNut: "observation",
|
|
68
67
|
split: "split",
|
|
69
68
|
splitByPlane: "split",
|
|
70
69
|
components: "components",
|
|
@@ -84,7 +83,7 @@ export function createRecipeContext(resolution, declaration) {
|
|
|
84
83
|
])));
|
|
85
84
|
}
|
|
86
85
|
/** Captures and validates inputs before deciding whether an operation needs native geometry now. */
|
|
87
|
-
|
|
86
|
+
function declareRecipeOperation(operation, resolution, supplied, declaration) {
|
|
88
87
|
declaration.assertActive?.();
|
|
89
88
|
const behavior = operationBehaviors[operation];
|
|
90
89
|
if (behavior === "observation" || behavior === "components")
|
package/dist/text/index.js
CHANGED
|
@@ -10,6 +10,7 @@ function serializeVectorText({ paths, metrics }) {
|
|
|
10
10
|
const bounds = metrics.bounds;
|
|
11
11
|
if (bounds === null || paths.length === 0)
|
|
12
12
|
throw new GeometryError("DEGENERATE_GEOMETRY", "The selected font produced no visible glyph outlines.", { operation: "VectorFont.toSvg" });
|
|
13
|
+
// Text uses Y-up coordinates; SVG's viewport uses Y-down coordinates.
|
|
13
14
|
const d = paths
|
|
14
15
|
.map((path) => new SVGPathData(path).transform(SVGPathDataTransformer.MATRIX(1, 0, 0, -1, 0, 0)).encode())
|
|
15
16
|
.join(" ");
|
|
@@ -24,6 +25,8 @@ function serializeVectorText({ paths, metrics }) {
|
|
|
24
25
|
* Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here.
|
|
25
26
|
* Argument and resource failures use GeometryError; parser and decoder exceptions propagate unchanged.
|
|
26
27
|
*
|
|
28
|
+
* @param bytes - Non-empty font bytes, at most 16 MiB; copied before parsing.
|
|
29
|
+
*
|
|
27
30
|
* @example Prepare a label before building geometry
|
|
28
31
|
* ```ts
|
|
29
32
|
* async function prepareLabel(fontBytes: Uint8Array) {
|
|
@@ -251,6 +251,7 @@ function buildLayout(font, fontMetrics, lines, controls) {
|
|
|
251
251
|
const clockwise = direction === "clockwise";
|
|
252
252
|
if (clockwise ? radius + bounds.minY <= 0 : radius - bounds.maxY <= 0)
|
|
253
253
|
fail("Arc glyph outlines cross the circle's center axis. Increase the radius or reduce text size.");
|
|
254
|
+
// Convert baseline arc length to an angle, then rotate the intact glyph group onto its tangent.
|
|
254
255
|
const angleRadians = (centerAngle * Math.PI) / 180 + ((clockwise ? -1 : 1) * groupCenter) / radius;
|
|
255
256
|
const rotationRadians = angleRadians + (clockwise ? -Math.PI / 2 : Math.PI / 2);
|
|
256
257
|
const cosine = Math.cos(rotationRadians);
|