@metamesh/modeling 0.12.0 → 0.13.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 +27 -0
- package/README.md +60 -72
- package/dist/api/engine.d.ts +123 -97
- package/dist/api/geometry.d.ts +3896 -3307
- package/dist/api/index.d.ts +2489 -2268
- package/dist/api/text.d.ts +119 -107
- package/dist/docs/guides/concepts.md +197 -0
- package/dist/docs/guides/fonts.md +51 -0
- package/dist/docs/guides/fundamentals.md +135 -0
- package/dist/docs/guides/generation.md +221 -0
- package/dist/docs/guides/hosting.md +88 -0
- package/dist/docs/guides/recipes.md +668 -0
- package/dist/docs/manifest.json +9851 -0
- package/dist/docs/reference/engine/Export3mfOptions.md +29 -0
- package/dist/docs/reference/engine/ExportMeshPart.md +65 -0
- package/dist/docs/reference/engine/GenerationOptions.md +62 -0
- package/dist/docs/reference/engine/GeometryResource.md +77 -0
- package/dist/docs/reference/engine/ModelDependencies.md +41 -0
- package/dist/docs/reference/engine/ModelEngine.md +103 -0
- package/dist/docs/reference/engine/ModelEngineOptions.md +33 -0
- package/dist/docs/reference/engine/ModelSession.md +96 -0
- package/dist/docs/reference/engine/ModelSnapshot.md +173 -0
- package/dist/docs/reference/engine/SessionOptions.md +123 -0
- package/dist/docs/reference/engine/SnapshotPart.md +130 -0
- package/dist/docs/reference/engine/categories/host-lifecycle.md +37 -0
- package/dist/docs/reference/engine/createModelEngine.md +56 -0
- package/dist/docs/reference/engine/defaultModelingLimits.md +7 -0
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -0
- package/dist/docs/reference/engine/validateModel.md +48 -0
- package/dist/docs/reference/engine.md +25 -0
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +75 -0
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +79 -0
- package/dist/docs/reference/geometry/Anchor3.md +49 -0
- package/dist/docs/reference/geometry/ArcCurve2.md +70 -0
- package/dist/docs/reference/geometry/ArcCurve3.md +94 -0
- package/dist/docs/reference/geometry/AttachTransformOptions.md +58 -0
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +61 -0
- package/dist/docs/reference/geometry/Bounds2.md +39 -0
- package/dist/docs/reference/geometry/Bounds3.md +39 -0
- package/dist/docs/reference/geometry/BoundsFit2.md +52 -0
- package/dist/docs/reference/geometry/BoundsFit3.md +52 -0
- package/dist/docs/reference/geometry/BoundsFitOptions.md +23 -0
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +23 -0
- package/dist/docs/reference/geometry/BoxAnchorFace.md +7 -0
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +59 -0
- package/dist/docs/reference/geometry/BoxEdge.md +7 -0
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +14 -0
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +15 -0
- package/dist/docs/reference/geometry/BoxOptions.md +87 -0
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +7 -0
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +93 -0
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +29 -0
- package/dist/docs/reference/geometry/CircleContourOptions.md +15 -0
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +59 -0
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +41 -0
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +7 -0
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +53 -0
- package/dist/docs/reference/geometry/Contour.md +17 -0
- package/dist/docs/reference/geometry/ContourCurve.md +35 -0
- package/dist/docs/reference/geometry/ContourPoint.md +29 -0
- package/dist/docs/reference/geometry/ContourSegment.md +86 -0
- package/dist/docs/reference/geometry/CorrespondingComponent.md +46 -0
- package/dist/docs/reference/geometry/CorrespondingContour.md +46 -0
- package/dist/docs/reference/geometry/CorrespondingProfile.md +22 -0
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +27 -0
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +70 -0
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +70 -0
- package/dist/docs/reference/geometry/Curve2.md +16 -0
- package/dist/docs/reference/geometry/Curve3.md +16 -0
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +64 -0
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +73 -0
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +7 -0
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +83 -0
- package/dist/docs/reference/geometry/CylinderOptions.md +53 -0
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +209 -0
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +7 -0
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +71 -0
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +82 -0
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +34 -0
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +41 -0
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +47 -0
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +82 -0
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -0
- package/dist/docs/reference/geometry/EdgeTreatment.md +17 -0
- package/dist/docs/reference/geometry/EllipseContourOptions.md +15 -0
- package/dist/docs/reference/geometry/EndTreatments.md +34 -0
- package/dist/docs/reference/geometry/ExtrudeOptions.md +134 -0
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +77 -0
- package/dist/docs/reference/geometry/FittedTextLayout.md +60 -0
- package/dist/docs/reference/geometry/Frame3.md +58 -0
- package/dist/docs/reference/geometry/GeometryError.md +97 -0
- package/dist/docs/reference/geometry/GeometryErrorCode.md +7 -0
- package/dist/docs/reference/geometry/GeometryErrorContext.md +29 -0
- package/dist/docs/reference/geometry/GeometryResolution.md +65 -0
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +62 -0
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +41 -0
- package/dist/docs/reference/geometry/GridPatternOptions.md +42 -0
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +14 -0
- package/dist/docs/reference/geometry/HeightfieldOptions.md +67 -0
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +53 -0
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +141 -0
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +265 -0
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +53 -0
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +14 -0
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +242 -0
- package/dist/docs/reference/geometry/LineCurve2.md +46 -0
- package/dist/docs/reference/geometry/LineCurve3.md +46 -0
- package/dist/docs/reference/geometry/LinearPatternOptions.md +30 -0
- package/dist/docs/reference/geometry/LoftCorrespondence.md +19 -0
- package/dist/docs/reference/geometry/LoftMeshStation.md +27 -0
- package/dist/docs/reference/geometry/LoftOptions.md +84 -0
- package/dist/docs/reference/geometry/LoftPlacement.md +66 -0
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +18 -0
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +35 -0
- package/dist/docs/reference/geometry/MetricFastenerSize.md +7 -0
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +72 -0
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +29 -0
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +41 -0
- package/dist/docs/reference/geometry/ModelingLimits.md +126 -0
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +17 -0
- package/dist/docs/reference/geometry/Path2.md +14 -0
- package/dist/docs/reference/geometry/Path3.md +14 -0
- package/dist/docs/reference/geometry/PathFrame.md +46 -0
- package/dist/docs/reference/geometry/PathNormalGuide.md +38 -0
- package/dist/docs/reference/geometry/PathPatternOptions.md +46 -0
- package/dist/docs/reference/geometry/PathPlacement.md +34 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +7 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +156 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +120 -0
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +190 -0
- package/dist/docs/reference/geometry/Polygon.md +38 -0
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +92 -0
- package/dist/docs/reference/geometry/PrimitivePlacement.md +31 -0
- package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +83 -0
- package/dist/docs/reference/geometry/PrintableThreadFit.md +7 -0
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +45 -0
- package/dist/docs/reference/geometry/Profile.md +22 -0
- package/dist/docs/reference/geometry/ProfileComponent2.md +46 -0
- package/dist/docs/reference/geometry/ProfileContour2.md +34 -0
- package/dist/docs/reference/geometry/ProfileSpan2.md +47 -0
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +36 -0
- package/dist/docs/reference/geometry/RackPitchDimensions.md +113 -0
- package/dist/docs/reference/geometry/RackPitchSpec.md +77 -0
- package/dist/docs/reference/geometry/RadialPatternOptions.md +62 -0
- package/dist/docs/reference/geometry/RadialSizing.md +7 -0
- package/dist/docs/reference/geometry/RadialSizingOptions.md +40 -0
- package/dist/docs/reference/geometry/RectangleContourOptions.md +66 -0
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +34 -0
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +14 -0
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +94 -0
- package/dist/docs/reference/geometry/Region.md +14 -0
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +84 -0
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +65 -0
- package/dist/docs/reference/geometry/RevolveOptions.md +82 -0
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +91 -0
- package/dist/docs/reference/geometry/RowLayoutOptions.md +23 -0
- package/dist/docs/reference/geometry/SampleContourOptions.md +71 -0
- package/dist/docs/reference/geometry/SampleHelixOptions.md +95 -0
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +71 -0
- package/dist/docs/reference/geometry/SampledCurve2.md +34 -0
- package/dist/docs/reference/geometry/SampledCurve3.md +34 -0
- package/dist/docs/reference/geometry/SampledThreadHelices.md +58 -0
- package/dist/docs/reference/geometry/SideProfileCurve.md +35 -0
- package/dist/docs/reference/geometry/SideProfilePoint.md +29 -0
- package/dist/docs/reference/geometry/SideProfileSegment.md +86 -0
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +71 -0
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +34 -0
- package/dist/docs/reference/geometry/SphereOptions.md +15 -0
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +75 -0
- package/dist/docs/reference/geometry/StrokePathCap.md +7 -0
- package/dist/docs/reference/geometry/StrokePathJoin.md +7 -0
- package/dist/docs/reference/geometry/StrokePathRegionOptions.md +85 -0
- package/dist/docs/reference/geometry/SvgImportOptions.md +60 -0
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +61 -0
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +118 -0
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +65 -0
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +53 -0
- package/dist/docs/reference/geometry/SweepOptions.md +109 -0
- package/dist/docs/reference/geometry/SweepOrientation.md +109 -0
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +53 -0
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +100 -0
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +73 -0
- package/dist/docs/reference/geometry/ThreadEndStyle.md +7 -0
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +113 -0
- package/dist/docs/reference/geometry/ThreadHandedness.md +7 -0
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +120 -0
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +7 -0
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +7 -0
- package/dist/docs/reference/geometry/ThreadProfile.md +82 -0
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +49 -0
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +19 -0
- package/dist/docs/reference/geometry/ThreadRole.md +7 -0
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +7 -0
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +269 -0
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +94 -0
- package/dist/docs/reference/geometry/ThreadedNutShape.md +7 -0
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +242 -0
- package/dist/docs/reference/geometry/TorusOptions.md +105 -0
- package/dist/docs/reference/geometry/Transform3.md +12 -0
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +91 -0
- package/dist/docs/reference/geometry/TriangleMesh.md +34 -0
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +119 -0
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +75 -0
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +75 -0
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +39 -0
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +190 -0
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +107 -0
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +41 -0
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +29 -0
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +51 -0
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +91 -0
- package/dist/docs/reference/geometry/TubeOptions.md +138 -0
- package/dist/docs/reference/geometry/Vector2.md +7 -0
- package/dist/docs/reference/geometry/Vector3.md +7 -0
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +53 -0
- package/dist/docs/reference/geometry/VectorTextLayout.md +39 -0
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +111 -0
- package/dist/docs/reference/geometry/VectorTextMetrics.md +94 -0
- package/dist/docs/reference/geometry/VectorTextOptions.md +50 -0
- package/dist/docs/reference/geometry/add3.md +38 -0
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +57 -0
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +52 -0
- package/dist/docs/reference/geometry/anchorFrame3.md +40 -0
- package/dist/docs/reference/geometry/applyTransformDirection3.md +41 -0
- package/dist/docs/reference/geometry/applyTransformPoint3.md +39 -0
- package/dist/docs/reference/geometry/attachTransform.md +73 -0
- package/dist/docs/reference/geometry/boundsCenter.md +62 -0
- package/dist/docs/reference/geometry/boundsFromSize.md +83 -0
- package/dist/docs/reference/geometry/boundsSize.md +62 -0
- package/dist/docs/reference/geometry/boxAnchor3.md +48 -0
- package/dist/docs/reference/geometry/buildHelicalThreadRidgeMesh.md +68 -0
- package/dist/docs/reference/geometry/buildHelicalThreadSolidMesh.md +102 -0
- package/dist/docs/reference/geometry/categories/bounds-layout.md +35 -0
- package/dist/docs/reference/geometry/categories/curves-paths.md +63 -0
- package/dist/docs/reference/geometry/categories/mechanical.md +101 -0
- package/dist/docs/reference/geometry/categories/meshes.md +73 -0
- package/dist/docs/reference/geometry/categories/pattern-placement.md +34 -0
- package/dist/docs/reference/geometry/categories/primitive-options.md +36 -0
- package/dist/docs/reference/geometry/categories/profiles-regions.md +74 -0
- package/dist/docs/reference/geometry/categories/resolution-errors.md +46 -0
- package/dist/docs/reference/geometry/categories/transforms-math.md +63 -0
- package/dist/docs/reference/geometry/categories/vector-import.md +40 -0
- package/dist/docs/reference/geometry/circleContour.md +33 -0
- package/dist/docs/reference/geometry/closeToAxis.md +34 -0
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +51 -0
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +42 -0
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +56 -0
- package/dist/docs/reference/geometry/composeTransform3.md +40 -0
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +45 -0
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +47 -0
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +31 -0
- package/dist/docs/reference/geometry/containsBounds.md +72 -0
- package/dist/docs/reference/geometry/contourContainsPoint.md +33 -0
- package/dist/docs/reference/geometry/createAnchor3.md +63 -0
- package/dist/docs/reference/geometry/createThreadProfile.md +37 -0
- package/dist/docs/reference/geometry/createTriangleMeshSignature.md +60 -0
- package/dist/docs/reference/geometry/cross3.md +38 -0
- package/dist/docs/reference/geometry/cumulativePathLengths.md +33 -0
- package/dist/docs/reference/geometry/cylinderAnchor3.md +56 -0
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +14 -0
- package/dist/docs/reference/geometry/distributeAlongPath.md +51 -0
- package/dist/docs/reference/geometry/dot3.md +38 -0
- package/dist/docs/reference/geometry/ellipseContour.md +33 -0
- package/dist/docs/reference/geometry/eulerTransform3.md +38 -0
- package/dist/docs/reference/geometry/extrudeMesh.md +73 -0
- package/dist/docs/reference/geometry/fitBounds.md +95 -0
- package/dist/docs/reference/geometry/fitTextLayout.md +57 -0
- package/dist/docs/reference/geometry/frameTransform3.md +44 -0
- package/dist/docs/reference/geometry/getMetricClearanceHole.md +33 -0
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +27 -0
- package/dist/docs/reference/geometry/gridPatternTransforms.md +31 -0
- package/dist/docs/reference/geometry/heightfieldMesh.md +43 -0
- package/dist/docs/reference/geometry/inverseTransform3.md +30 -0
- package/dist/docs/reference/geometry/isGeometryError.md +26 -0
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +36 -0
- package/dist/docs/reference/geometry/layoutRow.md +43 -0
- package/dist/docs/reference/geometry/length3.md +26 -0
- package/dist/docs/reference/geometry/lerp3.md +38 -0
- package/dist/docs/reference/geometry/linearPatternTransforms.md +31 -0
- package/dist/docs/reference/geometry/loftMesh.md +72 -0
- package/dist/docs/reference/geometry/matchProfiles.md +51 -0
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +47 -0
- package/dist/docs/reference/geometry/measureTriangleMesh.md +55 -0
- package/dist/docs/reference/geometry/meshBounds.md +35 -0
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +29 -0
- package/dist/docs/reference/geometry/normalize3.md +32 -0
- package/dist/docs/reference/geometry/normalizeContour.md +45 -0
- package/dist/docs/reference/geometry/normalizePolygon.md +37 -0
- package/dist/docs/reference/geometry/normalizeRegion.md +33 -0
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +91 -0
- package/dist/docs/reference/geometry/pathLength.md +33 -0
- package/dist/docs/reference/geometry/pathPatternTransforms.md +57 -0
- package/dist/docs/reference/geometry/preflightHeightfield.md +34 -0
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +96 -0
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +85 -0
- package/dist/docs/reference/geometry/preflightSvgRegion.md +56 -0
- package/dist/docs/reference/geometry/preflightThreadedNut.md +96 -0
- package/dist/docs/reference/geometry/preflightThreadedRod.md +85 -0
- package/dist/docs/reference/geometry/projectOntoPlane3.md +32 -0
- package/dist/docs/reference/geometry/radialPatternTransforms.md +47 -0
- package/dist/docs/reference/geometry/rectangleContour.md +49 -0
- package/dist/docs/reference/geometry/rectangleProfile.md +53 -0
- package/dist/docs/reference/geometry/regionArea.md +34 -0
- package/dist/docs/reference/geometry/regionBounds.md +27 -0
- package/dist/docs/reference/geometry/regularPolygonContour.md +53 -0
- package/dist/docs/reference/geometry/resamplePolyline2.md +64 -0
- package/dist/docs/reference/geometry/resamplePolyline3.md +67 -0
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +79 -0
- package/dist/docs/reference/geometry/resolveArcSegments.md +67 -0
- package/dist/docs/reference/geometry/resolveCircularSegments.md +61 -0
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +31 -0
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +31 -0
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +74 -0
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +26 -0
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +59 -0
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +27 -0
- package/dist/docs/reference/geometry/resolveRackPitch.md +27 -0
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +59 -0
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +30 -0
- package/dist/docs/reference/geometry/revolveMesh.md +76 -0
- package/dist/docs/reference/geometry/rotateAroundAxis3.md +38 -0
- package/dist/docs/reference/geometry/rotationTransform3.md +49 -0
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +50 -0
- package/dist/docs/reference/geometry/sampleContour.md +77 -0
- package/dist/docs/reference/geometry/sampleCurve2.md +61 -0
- package/dist/docs/reference/geometry/sampleCurve3.md +61 -0
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +58 -0
- package/dist/docs/reference/geometry/sampleHelix.md +41 -0
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +59 -0
- package/dist/docs/reference/geometry/sampleRackToothPath.md +39 -0
- package/dist/docs/reference/geometry/sampleSideProfile.md +73 -0
- package/dist/docs/reference/geometry/sampleTextContours.md +53 -0
- package/dist/docs/reference/geometry/sampleThreadHelices.md +63 -0
- package/dist/docs/reference/geometry/scale3.md +38 -0
- package/dist/docs/reference/geometry/scaleTransform3.md +34 -0
- package/dist/docs/reference/geometry/signedContourArea.md +26 -0
- package/dist/docs/reference/geometry/starContour.md +51 -0
- package/dist/docs/reference/geometry/strokePathRegion.md +63 -0
- package/dist/docs/reference/geometry/subtract3.md +38 -0
- package/dist/docs/reference/geometry/sweepMesh.md +82 -0
- package/dist/docs/reference/geometry/transformContour.md +42 -0
- package/dist/docs/reference/geometry/transformDeterminant3.md +32 -0
- package/dist/docs/reference/geometry/transformPath2.md +40 -0
- package/dist/docs/reference/geometry/transformPath3.md +33 -0
- package/dist/docs/reference/geometry/transformRegion.md +40 -0
- package/dist/docs/reference/geometry/transformTriangleMesh.md +42 -0
- package/dist/docs/reference/geometry/translationTransform3.md +31 -0
- package/dist/docs/reference/geometry/triangulateContour.md +26 -0
- package/dist/docs/reference/geometry/validateSolidMesh.md +52 -0
- package/dist/docs/reference/geometry/validateTransform3.md +43 -0
- package/dist/docs/reference/geometry/validateTriangleMesh.md +59 -0
- package/dist/docs/reference/geometry.md +30 -0
- package/dist/docs/reference/model/Anchor3.md +54 -0
- package/dist/docs/reference/model/AttachOptions.md +63 -0
- package/dist/docs/reference/model/Bounds2.md +39 -0
- package/dist/docs/reference/model/Bounds3.md +39 -0
- package/dist/docs/reference/model/BoxEdge.md +15 -0
- package/dist/docs/reference/model/BoxEdgeSelection.md +19 -0
- package/dist/docs/reference/model/BoxEdgeTreatments.md +20 -0
- package/dist/docs/reference/model/BoxOptions.md +92 -0
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +35 -0
- package/dist/docs/reference/model/CircleContourOptions.md +21 -0
- package/dist/docs/reference/model/CircleOptions.md +21 -0
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +64 -0
- package/dist/docs/reference/model/Computed.md +35 -0
- package/dist/docs/reference/model/ComputedValue.md +20 -0
- package/dist/docs/reference/model/Contour.md +22 -0
- package/dist/docs/reference/model/CorrespondingComponent.md +46 -0
- package/dist/docs/reference/model/CorrespondingContour.md +46 -0
- package/dist/docs/reference/model/CorrespondingProfile.md +22 -0
- package/dist/docs/reference/model/CorrespondingProfileStation.md +27 -0
- package/dist/docs/reference/model/CylinderOptions.md +58 -0
- package/dist/docs/reference/model/DiagnosticOptions.md +23 -0
- package/dist/docs/reference/model/EdgeTreatment.md +22 -0
- package/dist/docs/reference/model/EllipseContourOptions.md +21 -0
- package/dist/docs/reference/model/EllipseOptions.md +21 -0
- package/dist/docs/reference/model/EndTreatments.md +39 -0
- package/dist/docs/reference/model/ExtrudeOptions.md +140 -0
- package/dist/docs/reference/model/FinalizedModel.md +121 -0
- package/dist/docs/reference/model/FinalizedPart.md +87 -0
- package/dist/docs/reference/model/Frame3.md +63 -0
- package/dist/docs/reference/model/GenerateCallback.md +37 -0
- package/dist/docs/reference/model/GenerateContext.md +277 -0
- package/dist/docs/reference/model/GeneratedPart.md +93 -0
- package/dist/docs/reference/model/GenerationDiagnostic.md +41 -0
- package/dist/docs/reference/model/GenerationError.md +54 -0
- package/dist/docs/reference/model/GeometryResolution.md +70 -0
- package/dist/docs/reference/model/GeometrySamplingLimits.md +62 -0
- package/dist/docs/reference/model/GeometryToleranceOptions.md +46 -0
- package/dist/docs/reference/model/GridPatternOptions.md +43 -0
- package/dist/docs/reference/model/HeightfieldOptions.md +67 -0
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +140 -0
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +58 -0
- package/dist/docs/reference/model/HullOptions.md +72 -0
- package/dist/docs/reference/model/ImmutableBuffer-type.md +80 -0
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +34 -0
- package/dist/docs/reference/model/ImplicitOptions.md +83 -0
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +245 -0
- package/dist/docs/reference/model/LinearPatternOptions.md +31 -0
- package/dist/docs/reference/model/LoftCorrespondence.md +27 -0
- package/dist/docs/reference/model/LoftOptions.md +91 -0
- package/dist/docs/reference/model/LoftPlacement.md +73 -0
- package/dist/docs/reference/model/LoftStation.md +35 -0
- package/dist/docs/reference/model/MatchProfilesOptions.md +35 -0
- package/dist/docs/reference/model/ModelProgram.md +44 -0
- package/dist/docs/reference/model/ModelingLimits.md +126 -0
- package/dist/docs/reference/model/NumericArray.md +7 -0
- package/dist/docs/reference/model/PartGeometry.md +16 -0
- package/dist/docs/reference/model/PartOptions.md +65 -0
- package/dist/docs/reference/model/PathNormalGuide.md +45 -0
- package/dist/docs/reference/model/PathPatternOptions.md +47 -0
- package/dist/docs/reference/model/PatternSource.md +26 -0
- package/dist/docs/reference/model/PlaneOptions.md +39 -0
- package/dist/docs/reference/model/Polygon-type.md +43 -0
- package/dist/docs/reference/model/PolygonOptions.md +112 -0
- package/dist/docs/reference/model/PrimitivePlacement.md +40 -0
- package/dist/docs/reference/model/PrimitivePlacementOptions.md +88 -0
- package/dist/docs/reference/model/PrintableThreadFit.md +14 -0
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +50 -0
- package/dist/docs/reference/model/Profile.md +22 -0
- package/dist/docs/reference/model/ProfileComponent2.md +46 -0
- package/dist/docs/reference/model/ProfileContour2.md +34 -0
- package/dist/docs/reference/model/ProfileSpan2.md +47 -0
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +41 -0
- package/dist/docs/reference/model/RadialPatternOptions.md +63 -0
- package/dist/docs/reference/model/RadialSizing.md +15 -0
- package/dist/docs/reference/model/RadialSizingOptions.md +40 -0
- package/dist/docs/reference/model/RectangleContourOptions.md +72 -0
- package/dist/docs/reference/model/RectangleCornerTreatment.md +40 -0
- package/dist/docs/reference/model/RectangleCornerTreatments.md +20 -0
- package/dist/docs/reference/model/RectangleOptions.md +107 -0
- package/dist/docs/reference/model/Region.md +19 -0
- package/dist/docs/reference/model/RegionOffsetJoin.md +16 -0
- package/dist/docs/reference/model/RegionOffsetOptions.md +65 -0
- package/dist/docs/reference/model/RegularPolygonOptions.md +53 -0
- package/dist/docs/reference/model/RevolveOptions.md +89 -0
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +96 -0
- package/dist/docs/reference/model/Section.md +450 -0
- package/dist/docs/reference/model/SectionHullOptions.md +72 -0
- package/dist/docs/reference/model/SectionInspection.md +98 -0
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +76 -0
- package/dist/docs/reference/model/Solid.md +350 -0
- package/dist/docs/reference/model/SolidInspection.md +98 -0
- package/dist/docs/reference/model/SolidRayHit.md +58 -0
- package/dist/docs/reference/model/SphereOptions.md +20 -0
- package/dist/docs/reference/model/StarOptions.md +98 -0
- package/dist/docs/reference/model/SvgOrigin.md +16 -0
- package/dist/docs/reference/model/SvgPathSectionOptions.md +78 -0
- package/dist/docs/reference/model/SvgSectionOptions.md +66 -0
- package/dist/docs/reference/model/SweepOptions.md +116 -0
- package/dist/docs/reference/model/SweepOrientation.md +116 -0
- package/dist/docs/reference/model/TextSectionOptions.md +41 -0
- package/dist/docs/reference/model/ThreadEndStyle.md +14 -0
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +117 -0
- package/dist/docs/reference/model/ThreadHandedness.md +14 -0
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +14 -0
- package/dist/docs/reference/model/ThreadLeadInShape.md +14 -0
- package/dist/docs/reference/model/ThreadProfile.md +86 -0
- package/dist/docs/reference/model/ThreadRidgeOptions.md +18 -0
- package/dist/docs/reference/model/ThreadedNutBevel.md +14 -0
- package/dist/docs/reference/model/ThreadedNutOptions.md +273 -0
- package/dist/docs/reference/model/ThreadedNutPreflight.md +98 -0
- package/dist/docs/reference/model/ThreadedNutShape.md +14 -0
- package/dist/docs/reference/model/ThreadedRodOptions.md +245 -0
- package/dist/docs/reference/model/TorusOptions.md +110 -0
- package/dist/docs/reference/model/Transform2.md +15 -0
- package/dist/docs/reference/model/Transform3.md +18 -0
- package/dist/docs/reference/model/TriangleMesh.md +42 -0
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +123 -0
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +79 -0
- package/dist/docs/reference/model/TubeOptions.md +143 -0
- package/dist/docs/reference/model/Vector2.md +15 -0
- package/dist/docs/reference/model/Vector3.md +15 -0
- package/dist/docs/reference/model/VectorTextLayout.md +40 -0
- package/dist/docs/reference/model/VectorTextMetrics.md +100 -0
- package/dist/docs/reference/model/anchor.md +46 -0
- package/dist/docs/reference/model/box.md +62 -0
- package/dist/docs/reference/model/categories/boolean-operations.md +37 -0
- package/dist/docs/reference/model/categories/bounded-surfaces.md +26 -0
- package/dist/docs/reference/model/categories/contracts.md +16 -0
- package/dist/docs/reference/model/categories/core-values-errors.md +30 -0
- package/dist/docs/reference/model/categories/explicit-profiles.md +32 -0
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +42 -0
- package/dist/docs/reference/model/categories/generation.md +44 -0
- package/dist/docs/reference/model/categories/inspection.md +23 -0
- package/dist/docs/reference/model/categories/mesh-inspection.md +29 -0
- package/dist/docs/reference/model/categories/primitives.md +61 -0
- package/dist/docs/reference/model/categories/resolution.md +18 -0
- package/dist/docs/reference/model/categories/sections.md +59 -0
- package/dist/docs/reference/model/categories/threads.md +50 -0
- package/dist/docs/reference/model/categories/transforms-placement.md +43 -0
- package/dist/docs/reference/model/circle.md +39 -0
- package/dist/docs/reference/model/components.md +68 -0
- package/dist/docs/reference/model/compose.md +31 -0
- package/dist/docs/reference/model/cylinder.md +52 -0
- package/dist/docs/reference/model/distance.md +45 -0
- package/dist/docs/reference/model/ellipse.md +39 -0
- package/dist/docs/reference/model/extrude.md +83 -0
- package/dist/docs/reference/model/fromRegion.md +33 -0
- package/dist/docs/reference/model/generate.md +46 -0
- package/dist/docs/reference/model/gridPattern.md +80 -0
- package/dist/docs/reference/model/heightfield.md +40 -0
- package/dist/docs/reference/model/hull.md +74 -0
- package/dist/docs/reference/model/immutableBuffer.md +44 -0
- package/dist/docs/reference/model/immutableMesh.md +40 -0
- package/dist/docs/reference/model/implicit.md +47 -0
- package/dist/docs/reference/model/inspectSection.md +38 -0
- package/dist/docs/reference/model/inspectSolid.md +38 -0
- package/dist/docs/reference/model/internalThreadCutter.md +100 -0
- package/dist/docs/reference/model/intersect.md +70 -0
- package/dist/docs/reference/model/isEmpty.md +39 -0
- package/dist/docs/reference/model/linearPattern.md +80 -0
- package/dist/docs/reference/model/loft.md +137 -0
- package/dist/docs/reference/model/matchProfiles.md +42 -0
- package/dist/docs/reference/model/minkowskiSum.md +37 -0
- package/dist/docs/reference/model/pathPattern.md +118 -0
- package/dist/docs/reference/model/polygon.md +40 -0
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +89 -0
- package/dist/docs/reference/model/preflightThreadedNut.md +100 -0
- package/dist/docs/reference/model/preflightThreadedRod.md +89 -0
- package/dist/docs/reference/model/radialPattern.md +113 -0
- package/dist/docs/reference/model/rayCast.md +40 -0
- package/dist/docs/reference/model/rectangle.md +59 -0
- package/dist/docs/reference/model/regularPolygon.md +39 -0
- package/dist/docs/reference/model/revolve.md +74 -0
- package/dist/docs/reference/model/solidFromMesh.md +42 -0
- package/dist/docs/reference/model/sphere.md +42 -0
- package/dist/docs/reference/model/split.md +54 -0
- package/dist/docs/reference/model/splitByPlane.md +66 -0
- package/dist/docs/reference/model/star.md +63 -0
- package/dist/docs/reference/model/svgPathSection.md +65 -0
- package/dist/docs/reference/model/svgSection.md +64 -0
- package/dist/docs/reference/model/sweep.md +92 -0
- package/dist/docs/reference/model/textSection.md +57 -0
- package/dist/docs/reference/model/threadRidge.md +72 -0
- package/dist/docs/reference/model/threadedNut.md +110 -0
- package/dist/docs/reference/model/threadedRod.md +99 -0
- package/dist/docs/reference/model/toRegion.md +33 -0
- package/dist/docs/reference/model/toTriangleMesh.md +27 -0
- package/dist/docs/reference/model/torus.md +70 -0
- package/dist/docs/reference/model/tube.md +77 -0
- package/dist/docs/reference/model/union.md +72 -0
- package/dist/docs/reference/model.md +39 -0
- package/dist/docs/reference/text/Bounds2.md +34 -0
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -0
- package/dist/docs/reference/text/Vector2.md +7 -0
- package/dist/docs/reference/text/VectorFont.md +186 -0
- package/dist/docs/reference/text/VectorFontOptions.md +17 -0
- package/dist/docs/reference/text/VectorTextArcBaseline.md +53 -0
- package/dist/docs/reference/text/VectorTextLayout.md +34 -0
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +111 -0
- package/dist/docs/reference/text/VectorTextMetrics.md +94 -0
- package/dist/docs/reference/text/VectorTextOptions.md +50 -0
- package/dist/docs/reference/text/categories/font-preparation.md +38 -0
- package/dist/docs/reference/text/prepareVectorFont.md +46 -0
- package/dist/docs/reference/text.md +21 -0
- package/dist/engine/construction-operations.js +10 -3
- package/dist/engine/deferred-context.js +12 -3
- package/dist/engine/execution.js +1 -1
- package/dist/engine/export-3mf.js +2 -2
- package/dist/engine/finalization.js +3 -3
- package/dist/engine/loft-operations.js +4 -4
- package/dist/engine/native/adapter.js +1 -1
- package/dist/engine/native/regions.js +9 -9
- package/dist/engine/pattern-operations.js +24 -13
- package/dist/engine/pattern-transform.js +9 -0
- package/dist/engine/placement.js +2 -2
- package/dist/engine/primitive-operations.js +10 -10
- package/dist/engine/profile-mesh.js +7 -7
- package/dist/engine/section-operations.js +25 -14
- package/dist/engine/session-graph.js +5 -3
- package/dist/engine/session.js +1 -2
- package/dist/geometry/bounds.js +117 -0
- package/dist/geometry/cylinder.js +5 -1
- package/dist/geometry/edge-finishing.js +2 -2
- package/dist/geometry/heightfield.js +1 -1
- package/dist/geometry/index.js +15 -12
- package/dist/geometry/{loft-correspondence.js → loft/loft-correspondence.js} +3 -3
- package/dist/geometry/{loft-geometry.js → loft/loft-geometry.js} +8 -8
- package/dist/geometry/{loft-options.js → loft/loft-options.js} +2 -2
- package/dist/geometry/{loft-simple-mesh.js → loft/loft-simple-mesh.js} +6 -6
- package/dist/geometry/{loft-triangulation.js → loft/loft-triangulation.js} +6 -6
- package/dist/geometry/{loft.js → loft/loft.js} +8 -8
- package/dist/geometry/math/vector3.js +5 -1
- package/dist/geometry/mechanical/gears.js +2 -2
- package/dist/geometry/mechanical/thread-mesh.js +3 -3
- package/dist/geometry/mechanical/thread-profiles.js +2 -2
- package/dist/geometry/mechanical/thread-surface.js +14 -5
- package/dist/geometry/{mesh-centroid.js → mesh/mesh-centroid.js} +1 -1
- package/dist/geometry/{mesh-planar.js → mesh/mesh-planar.js} +1 -1
- package/dist/geometry/{mesh-quality.js → mesh/mesh-quality.js} +2 -2
- package/dist/geometry/{mesh-signature.js → mesh/mesh-signature.js} +2 -2
- package/dist/geometry/{mesh-solid.js → mesh/mesh-solid.js} +2 -2
- package/dist/geometry/{mesh.js → mesh/mesh.js} +7 -8
- package/dist/geometry/paths/frames.js +4 -5
- package/dist/geometry/patterns/options.js +1 -0
- package/dist/{engine/pattern-placements.js → geometry/patterns/placements.js} +22 -8
- package/dist/geometry/patterns.js +25 -0
- package/dist/geometry/primitive-resolvers.js +9 -9
- package/dist/geometry/profiles/contour.js +3 -3
- package/dist/geometry/profiles/matched.js +3 -3
- package/dist/geometry/profiles/profiles.js +10 -10
- package/dist/geometry/profiles/rectangle.js +7 -7
- package/dist/geometry/profiles/shapes.js +9 -9
- package/dist/geometry/profiles/side-profile.js +37 -0
- package/dist/geometry/regions.js +15 -15
- package/dist/geometry/revolve/revolve-mesh.js +5 -5
- package/dist/geometry/stroke-path.js +2 -2
- package/dist/geometry/svg/errors.js +0 -3
- package/dist/geometry/svg/fill.js +7 -7
- package/dist/geometry/svg/index.js +1 -1
- package/dist/geometry/svg/matrix.js +0 -114
- package/dist/geometry/svg/parser.js +1 -439
- package/dist/geometry/svg-import.js +3 -3
- package/dist/geometry/sweeps/sweep-closed.js +1 -1
- package/dist/geometry/sweeps/sweep-mesh.js +1 -1
- package/dist/geometry/sweeps/sweep-open.js +3 -3
- package/dist/geometry/sweeps/validation.js +2 -2
- package/dist/geometry/text-fitting.js +85 -0
- package/dist/geometry/tolerance.js +2 -2
- package/dist/geometry/transform-geometry.js +9 -9
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +1 -1
- package/dist/model/operation-contracts.js +1 -0
- package/dist/model/operation-dispatch.js +6 -0
- package/dist/model/operations.js +19 -49
- package/package.json +10 -8
- /package/dist/geometry/{mesh-edge-table.js → mesh/mesh-edge-table.js} +0 -0
- /package/dist/geometry/{mesh-solid-intersections.js → mesh/mesh-solid-intersections.js} +0 -0
package/dist/api/index.d.ts
CHANGED
|
@@ -1,2268 +1,2489 @@
|
|
|
1
|
-
/** Imported modeling operations and opaque host-owned contracts. @packageDocumentation */
|
|
2
|
-
|
|
3
|
-
/** ACME 29-degree included-angle profile. */
|
|
4
|
-
declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Reads a copied, immutable named anchor from this exact active generation.
|
|
16
|
-
*
|
|
17
|
-
* @example Read the top datum
|
|
18
|
-
* ```ts
|
|
19
|
-
* const plate = box({ size: [30, 20, 6] });
|
|
20
|
-
* anchor(plate, "top"); // position [0, 0, 3], direction [0, 0, 1]
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export declare function anchor(shape: Solid | Section, name: string): Anchor3;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* An attachment pose on a solid or assembly.
|
|
27
|
-
*
|
|
28
|
-
* `direction` is the outward attachment normal. `up` controls roll and must not
|
|
29
|
-
* be parallel to `direction`; anchor construction projects and normalizes it.
|
|
30
|
-
*/
|
|
31
|
-
export declare interface Anchor3 {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Degree-based anchor attachment controls for a scoped solid.
|
|
42
|
-
*/
|
|
43
|
-
export declare interface AttachOptions {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
*
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
*
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
export declare
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
declare
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
*/
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
300
|
-
*
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
*
|
|
306
|
-
*/
|
|
307
|
-
export declare
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
*/
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
*
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
*
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
*
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
/**
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
*/
|
|
456
|
-
export declare
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
/**
|
|
462
|
-
|
|
463
|
-
/**
|
|
464
|
-
readonly
|
|
465
|
-
/**
|
|
466
|
-
readonly
|
|
467
|
-
/**
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
readonly
|
|
473
|
-
/**
|
|
474
|
-
readonly
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
*
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
/**
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
*/
|
|
562
|
-
export declare
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
/**
|
|
580
|
-
*
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
*/
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
/**
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
/**
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
*/
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
/**
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
/**
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
*
|
|
808
|
-
*
|
|
809
|
-
*
|
|
810
|
-
*
|
|
811
|
-
*
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
*
|
|
826
|
-
* @example
|
|
827
|
-
* ```ts
|
|
828
|
-
*
|
|
829
|
-
*
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
*/
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
*
|
|
893
|
-
*
|
|
894
|
-
* @
|
|
895
|
-
*
|
|
896
|
-
*
|
|
897
|
-
*
|
|
898
|
-
*
|
|
899
|
-
* ]);
|
|
900
|
-
* ```
|
|
901
|
-
*/
|
|
902
|
-
export declare function
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
*
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
*
|
|
924
|
-
*/
|
|
925
|
-
export declare
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
}
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
*
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
*
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
*
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
/**
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
/**
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
/**
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
/**
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
/**
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
/**
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
/**
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
/**
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
*/
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
export declare
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
/**
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
/**
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
*
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
*/
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
/**
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
/**
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
/**
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
*/
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
*/
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
/**
|
|
1375
|
-
|
|
1376
|
-
*/
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
*
|
|
1386
|
-
*
|
|
1387
|
-
*
|
|
1388
|
-
*
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
}
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
/**
|
|
1452
|
-
|
|
1453
|
-
*/
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
/**
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
*
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
*/
|
|
1519
|
-
|
|
1520
|
-
/**
|
|
1521
|
-
readonly
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
*
|
|
1571
|
-
*
|
|
1572
|
-
*
|
|
1573
|
-
*
|
|
1574
|
-
*
|
|
1575
|
-
*
|
|
1576
|
-
*
|
|
1577
|
-
*
|
|
1578
|
-
*
|
|
1579
|
-
*
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
/**
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
*
|
|
1654
|
-
*
|
|
1655
|
-
*/
|
|
1656
|
-
export declare
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
/**
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
*
|
|
1694
|
-
*
|
|
1695
|
-
*
|
|
1696
|
-
*
|
|
1697
|
-
*
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
/**
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
/**
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
/**
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
*
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
*/
|
|
1792
|
-
export declare interface
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
}
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
*
|
|
1836
|
-
*
|
|
1837
|
-
*
|
|
1838
|
-
*
|
|
1839
|
-
*
|
|
1840
|
-
*
|
|
1841
|
-
*
|
|
1842
|
-
* }
|
|
1843
|
-
*
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
*
|
|
1872
|
-
*
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
*/
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
export declare
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
/**
|
|
2006
|
-
|
|
2007
|
-
*/
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
/**
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
/**
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
*
|
|
2048
|
-
*
|
|
2049
|
-
*
|
|
2050
|
-
*
|
|
2051
|
-
*
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
/**
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
*
|
|
2091
|
-
*
|
|
2092
|
-
*
|
|
2093
|
-
*
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
/**
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
/**
|
|
2131
|
-
|
|
2132
|
-
*/
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
/**
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
*
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
*
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
export declare
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
export
|
|
1
|
+
/** Imported modeling operations and opaque host-owned contracts. @packageDocumentation */
|
|
2
|
+
|
|
3
|
+
/** ACME 29-degree included-angle profile. */
|
|
4
|
+
declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
5
|
+
/** Selects the 29-degree ACME profile family. */
|
|
6
|
+
readonly kind: "acme";
|
|
7
|
+
/**
|
|
8
|
+
* Radial depth in millimetres.
|
|
9
|
+
* @defaultValue `pitch / 2`
|
|
10
|
+
*/
|
|
11
|
+
readonly depth?: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Reads a copied, immutable named anchor from this exact active generation.
|
|
16
|
+
*
|
|
17
|
+
* @example Read the top datum
|
|
18
|
+
* ```ts
|
|
19
|
+
* const plate = box({ size: [30, 20, 6] });
|
|
20
|
+
* anchor(plate, "top"); // position [0, 0, 3], direction [0, 0, 1]
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function anchor(shape: Solid | Section, name: string): Anchor3;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* An attachment pose on a solid or assembly.
|
|
27
|
+
*
|
|
28
|
+
* `direction` is the outward attachment normal. `up` controls roll and must not
|
|
29
|
+
* be parallel to `direction`; anchor construction projects and normalizes it.
|
|
30
|
+
*/
|
|
31
|
+
export declare interface Anchor3 {
|
|
32
|
+
/** Unit outward normal used as the anchor's local +Z direction. */
|
|
33
|
+
readonly direction: Vector3;
|
|
34
|
+
/** World-space attachment position. */
|
|
35
|
+
readonly position: Vector3;
|
|
36
|
+
/** Roll guide projected into the plane perpendicular to `direction`. */
|
|
37
|
+
readonly up: Vector3;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Degree-based anchor attachment controls for a scoped solid.
|
|
42
|
+
*/
|
|
43
|
+
export declare interface AttachOptions {
|
|
44
|
+
/** Align outward directions face-to-face (`opposed`) or in parallel (`same`). */
|
|
45
|
+
readonly alignment?: "opposed" | "same";
|
|
46
|
+
/** Separation along the target anchor's outward direction in millimetres. */
|
|
47
|
+
readonly gap?: number;
|
|
48
|
+
/** Additional right-handed roll about the attached direction, in degrees. */
|
|
49
|
+
readonly spinDegrees?: number;
|
|
50
|
+
/** Optional numeric comparison overrides. */
|
|
51
|
+
readonly tolerance?: GeometryToleranceOptions;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Axis-aligned bounds in two-dimensional model space. */
|
|
55
|
+
export declare interface Bounds2 {
|
|
56
|
+
/** Inclusive maximum X/Y coordinates. */
|
|
57
|
+
readonly max: Vector2;
|
|
58
|
+
/** Inclusive minimum X/Y coordinates. */
|
|
59
|
+
readonly min: Vector2;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Axis-aligned bounds in three-dimensional model space. */
|
|
63
|
+
export declare interface Bounds3 {
|
|
64
|
+
/** Inclusive maximum X/Y/Z coordinates. */
|
|
65
|
+
readonly max: Vector3;
|
|
66
|
+
/** Inclusive minimum X/Y/Z coordinates. */
|
|
67
|
+
readonly min: Vector3;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Axis-aligned box with uniform or disjoint named edge/group treatments.
|
|
72
|
+
*
|
|
73
|
+
* @example Rounded box
|
|
74
|
+
* ```ts
|
|
75
|
+
* box({ size: [30, 20, 8], treatment: { kind: "round", radius: 2 } });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function box(options: BoxOptions): Solid;
|
|
79
|
+
|
|
80
|
+
/** Box edges use +Z top, +Y front and +X right; vertical names list front/back first. */
|
|
81
|
+
export declare type BoxEdge =
|
|
82
|
+
| "top-front"
|
|
83
|
+
| "top-back"
|
|
84
|
+
| "top-left"
|
|
85
|
+
| "top-right"
|
|
86
|
+
| "bottom-front"
|
|
87
|
+
| "bottom-back"
|
|
88
|
+
| "bottom-left"
|
|
89
|
+
| "bottom-right"
|
|
90
|
+
| "front-left"
|
|
91
|
+
| "front-right"
|
|
92
|
+
| "back-left"
|
|
93
|
+
| "back-right";
|
|
94
|
+
|
|
95
|
+
/** Named individual edges or top/bottom rims and all four vertical edges. */
|
|
96
|
+
export declare type BoxEdgeSelection = BoxEdge | "top" | "bottom" | "vertical";
|
|
97
|
+
|
|
98
|
+
/** Independent treatments for disjoint named edge selections; overlapping selections fail. */
|
|
99
|
+
export declare type BoxEdgeTreatments = Readonly<
|
|
100
|
+
Partial<Record<BoxEdgeSelection, EdgeTreatment>>
|
|
101
|
+
>;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Dimensions, placement, and uniform or independently selected finishing for an axis-aligned box.
|
|
105
|
+
*/
|
|
106
|
+
export declare interface BoxOptions extends PrimitivePlacement {
|
|
107
|
+
/** Explicit sampling ceilings for edge treatments, bounded by the host policy. */
|
|
108
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
109
|
+
/**
|
|
110
|
+
* Centers the box on the XYZ origin when `true`; otherwise its minimum corner is at the origin.
|
|
111
|
+
* @defaultValue `true`
|
|
112
|
+
*/
|
|
113
|
+
readonly center?: boolean;
|
|
114
|
+
/** Positive uniform size or explicit `[X, Y, Z]` extents in millimetres. */
|
|
115
|
+
readonly size: number | Vector3;
|
|
116
|
+
/** Uniform treatment or independent disjoint nominal edge/group treatments. */
|
|
117
|
+
readonly treatment?: EdgeTreatment | BoxEdgeTreatments;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Axial side carrying the near-normal pressure flank of a buttress thread. */
|
|
121
|
+
declare type ButtressPressureFlankSide = "negative" | "positive";
|
|
122
|
+
|
|
123
|
+
/** Asymmetric printable buttress profile with 7/45-degree flanks. */
|
|
124
|
+
declare interface ButtressThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
125
|
+
/** Selects the asymmetric printable buttress profile family. */
|
|
126
|
+
readonly kind: "buttress";
|
|
127
|
+
/**
|
|
128
|
+
* Radial depth in millimetres.
|
|
129
|
+
* @defaultValue `0.66271 * pitch`
|
|
130
|
+
*/
|
|
131
|
+
readonly depth?: number;
|
|
132
|
+
/**
|
|
133
|
+
* Axial side of each tooth carrying the 7-degree pressure flank. The opposite side uses the
|
|
134
|
+
* 45-degree clearance flank.
|
|
135
|
+
* @defaultValue `"positive"`
|
|
136
|
+
*/
|
|
137
|
+
readonly pressureFlankSide?: ButtressPressureFlankSide;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* A planar edge or corner chamfer with equal or independent surface setbacks.
|
|
142
|
+
*/
|
|
143
|
+
export declare interface ChamferedEdgeTreatment {
|
|
144
|
+
/** Selects a straight bevel between adjoining surfaces. */
|
|
145
|
+
readonly kind: "chamfer";
|
|
146
|
+
/** Millimetre setbacks, equal or [first surface, second surface]. Zero or [0, 0] leaves the edge untreated; otherwise both must be positive and fit without overlap. */
|
|
147
|
+
readonly distance: number | readonly [first: number, second: number];
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Centered circular section.
|
|
152
|
+
*
|
|
153
|
+
* @example Size to polygon faces
|
|
154
|
+
* ```ts
|
|
155
|
+
* circle({ diameter: 12, sizing: "face" });
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export declare function circle(options: CircleOptions): Section;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Circular profile dimensions with exactly one radius or diameter and explicit sampling.
|
|
162
|
+
*/
|
|
163
|
+
export declare type CircleContourOptions = CircularPrimitiveOptions &
|
|
164
|
+
RadialSizingOptions &
|
|
165
|
+
(
|
|
166
|
+
| {
|
|
167
|
+
/** Positive nominal radius in millimetres; mutually exclusive with diameter. */
|
|
168
|
+
readonly radius: number;
|
|
169
|
+
/** Full diameter is unavailable when radius is supplied. */
|
|
170
|
+
readonly diameter?: never;
|
|
171
|
+
}
|
|
172
|
+
| {
|
|
173
|
+
/** Positive full diameter in millimetres; mutually exclusive with radius. */
|
|
174
|
+
readonly diameter: number;
|
|
175
|
+
/** Radius is unavailable when diameter is supplied. */
|
|
176
|
+
readonly radius?: never;
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Circular dimensions with exactly one nominal radius or diameter.
|
|
182
|
+
*/
|
|
183
|
+
export declare type CircleOptions = CircleContourOptions & PrimitivePlacement;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Tessellation controls shared by circular primitives across Geometry entry points.
|
|
187
|
+
*/
|
|
188
|
+
export declare interface CircularPrimitiveOptions {
|
|
189
|
+
/** Explicit sampling ceilings; bound modeling operations may only lower the host policy. */
|
|
190
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
191
|
+
/**
|
|
192
|
+
* Exact circumferential segment count from three through the configured safety limit.
|
|
193
|
+
*
|
|
194
|
+
* This local topology override takes precedence over {@link CircularPrimitiveOptions.resolution}
|
|
195
|
+
* and any active model-wide resolution policy.
|
|
196
|
+
*/
|
|
197
|
+
readonly segments?: number;
|
|
198
|
+
/** Operation-level physical tessellation policy over the active model-wide policy. */
|
|
199
|
+
readonly resolution?: GeometryResolution;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Separates a solid's disconnected surface shells into same-session solid handles.
|
|
204
|
+
*
|
|
205
|
+
* For solids without enclosed cavities, these shells are the disconnected material islands.
|
|
206
|
+
* Enclosed cavities produce separate inward shells with negative signed volume; these cannot
|
|
207
|
+
* be finalized alone as manufacturing parts. This does not cut connected geometry.
|
|
208
|
+
*
|
|
209
|
+
* @example Move disconnected pieces independently
|
|
210
|
+
* ```ts
|
|
211
|
+
* const islands = union([box({ size: 8 }), box({ size: 8 }).translate([12, 0, 0])]);
|
|
212
|
+
* const pieces = components(islands);
|
|
213
|
+
* // Component order is unspecified; the index only sets a display height here.
|
|
214
|
+
* union(pieces.map((piece, index) => piece.translate([0, 0, index * 6])));
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
export declare function components(solid: Solid): readonly Solid[];
|
|
218
|
+
|
|
219
|
+
/** Separates filled 2D islands into sections, retaining each island's holes; empty gives []. */
|
|
220
|
+
export declare function components(section: Section): readonly Section[];
|
|
221
|
+
|
|
222
|
+
/** Combines disjoint components without resolving overlap. */
|
|
223
|
+
export declare function compose(solids: readonly Solid[]): Solid;
|
|
224
|
+
|
|
225
|
+
/** A lazy session-owned reader. Calling it tracks its output in the current computation. */
|
|
226
|
+
export declare interface Computed<T> {
|
|
227
|
+
/** Compile-time ownership brand; readers are created by the engine's context helper. */
|
|
228
|
+
readonly [computedBrand]: "Computed";
|
|
229
|
+
/** Reads immutable data or a deferred recipe; evaluation is synchronous and cached. */
|
|
230
|
+
(): T;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
declare const computedBrand: unique symbol;
|
|
234
|
+
|
|
235
|
+
/** A value supplied immediately or by a lazy computed reader. */
|
|
236
|
+
export declare type ComputedValue<T> = T | Computed<T>;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* A closed two-dimensional boundary whose first point is not repeated at the end.
|
|
240
|
+
*
|
|
241
|
+
* Polygon exteriors are counter-clockwise and holes are clockwise. Algorithms
|
|
242
|
+
* may reject duplicate adjacent points or fewer than three effective vertices.
|
|
243
|
+
*/
|
|
244
|
+
export declare type Contour = readonly Vector2[];
|
|
245
|
+
|
|
246
|
+
/** One sampled component retaining contour identities and logical point correspondence. */
|
|
247
|
+
export declare interface CorrespondingComponent {
|
|
248
|
+
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
249
|
+
readonly id: string;
|
|
250
|
+
/** Counterclockwise outer contour. */
|
|
251
|
+
readonly outer: CorrespondingContour;
|
|
252
|
+
/** Clockwise hole contours belonging to this component. */
|
|
253
|
+
readonly holes: readonly CorrespondingContour[];
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/** A sampled contour retaining logical slots, including intentionally collapsed spans. */
|
|
257
|
+
export declare interface CorrespondingContour {
|
|
258
|
+
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
259
|
+
readonly id: string;
|
|
260
|
+
/** Ordered sampled points in millimetres; closing vertices are implicit. */
|
|
261
|
+
readonly points: Contour;
|
|
262
|
+
/** One span identity per point; indices correspond between every matched family member. */
|
|
263
|
+
readonly spans: readonly string[];
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/** Shared logical contour sampling suitable for a loft or hollow sweep. */
|
|
267
|
+
export declare interface CorrespondingProfile {
|
|
268
|
+
/** Ordered components with explicit contour identities. */
|
|
269
|
+
readonly components: readonly CorrespondingComponent[];
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** One already matched profile at an explicit height or right-handed spatial frame. */
|
|
273
|
+
export declare type CorrespondingProfileStation = LoftPlacement & {
|
|
274
|
+
/** Already corresponding filled contours with authoritative landmark slots. */
|
|
275
|
+
readonly profile: CorrespondingProfile;
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
/** Caller-defined periodic axial/radial profile in millimetres. */
|
|
279
|
+
declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
280
|
+
/** Selects a caller-defined periodic profile. */
|
|
281
|
+
readonly kind: "custom";
|
|
282
|
+
/**
|
|
283
|
+
* Open path spanning exactly `[-pitch/2, pitch/2]`, with both endpoints on the minor envelope,
|
|
284
|
+
* one connected ridge, one contiguous crest, and radial zero at the major envelope.
|
|
285
|
+
*/
|
|
286
|
+
readonly points: readonly Vector2[];
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* +Z cylinder or frustum. Face sizing compensates polygon faceting.
|
|
291
|
+
*
|
|
292
|
+
* @example Cylinder
|
|
293
|
+
* ```ts
|
|
294
|
+
* cylinder({ height: 20, radius: 10 });
|
|
295
|
+
* ```
|
|
296
|
+
*
|
|
297
|
+
* @example Cone
|
|
298
|
+
* ```ts
|
|
299
|
+
* cylinder({ height: 20, radius: [10, 0] });
|
|
300
|
+
* ```
|
|
301
|
+
*/
|
|
302
|
+
export declare function cylinder(options: CylinderOptions): Solid;
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Dimensions, placement, independent end finishing, and tessellation for a Z-axis cylinder or frustum.
|
|
306
|
+
*/
|
|
307
|
+
export declare type CylinderOptions = CircularPrimitiveOptions &
|
|
308
|
+
RadialSizingOptions &
|
|
309
|
+
PrimitivePlacement & {
|
|
310
|
+
/**
|
|
311
|
+
* Centers the solid on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
312
|
+
* @defaultValue `true`
|
|
313
|
+
*/
|
|
314
|
+
readonly center?: boolean;
|
|
315
|
+
/** Independent end treatments; first setback is cap inset and second follows the sloped side. */
|
|
316
|
+
readonly ends?: EndTreatments;
|
|
317
|
+
/** Total height along +Z in millimetres. */
|
|
318
|
+
readonly height: number;
|
|
319
|
+
} & (
|
|
320
|
+
| {
|
|
321
|
+
/** Positive uniform radius or nonnegative `[bottom, top]` radii in millimetres; one must be positive. */
|
|
322
|
+
readonly radius: number | readonly [bottom: number, top: number];
|
|
323
|
+
/** Full diameter is unavailable when radius is supplied. */
|
|
324
|
+
readonly diameter?: never;
|
|
325
|
+
}
|
|
326
|
+
| {
|
|
327
|
+
/** Positive uniform diameter or nonnegative `[bottom, top]` diameters in millimetres; one must be positive. */
|
|
328
|
+
readonly diameter: number | readonly [bottom: number, top: number];
|
|
329
|
+
/** Radius is unavailable when diameter is supplied. */
|
|
330
|
+
readonly radius?: never;
|
|
331
|
+
}
|
|
332
|
+
);
|
|
333
|
+
|
|
334
|
+
/** Typed parameter association for an assertion or warning. */
|
|
335
|
+
export declare interface DiagnosticOptions<P> {
|
|
336
|
+
/** Existing top-level parameter key. */
|
|
337
|
+
readonly parameterId?: Extract<keyof P, string> | undefined;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Measures the minimum separation between two nonempty solids in millimetres.
|
|
342
|
+
*
|
|
343
|
+
* Uses actual geometry, not bounding-box separation or distance between object origins.
|
|
344
|
+
* Contact or overlapping material returns zero, including one solid inside another.
|
|
345
|
+
* The kernel's search range is managed internally; the result is not capped at a caller limit.
|
|
346
|
+
* Empty, expired or foreign-build handles reject. Results follow native numeric precision.
|
|
347
|
+
*
|
|
348
|
+
* @example Measure the gap between two blocks
|
|
349
|
+
* ```ts
|
|
350
|
+
* const left = box({ size: 10 });
|
|
351
|
+
* const right = box({ size: 10 }).translate([13, 0, 0]);
|
|
352
|
+
* const gap = distance(left, right); // 3 mm
|
|
353
|
+
* ```
|
|
354
|
+
*/
|
|
355
|
+
export declare function distance(solid: Solid, other: Solid): number;
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Uniform finishing vocabulary shared by applicable solid edges and profile corners.
|
|
359
|
+
*/
|
|
360
|
+
export declare type EdgeTreatment =
|
|
361
|
+
| ChamferedEdgeTreatment
|
|
362
|
+
| RoundedEdgeTreatment
|
|
363
|
+
| SmoothEdgeTreatment
|
|
364
|
+
| ProfiledEdgeTreatment;
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Centered elliptical section.
|
|
368
|
+
*
|
|
369
|
+
* @example Ellipse by full dimensions
|
|
370
|
+
* ```ts
|
|
371
|
+
* ellipse({ size: [30, 20] });
|
|
372
|
+
* ```
|
|
373
|
+
*/
|
|
374
|
+
export declare function ellipse(options: EllipseOptions): Section;
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Ellipse dimensions with exactly one XY radii or full-size tuple and explicit sampling.
|
|
378
|
+
*/
|
|
379
|
+
export declare type EllipseContourOptions = CircularPrimitiveOptions &
|
|
380
|
+
(
|
|
381
|
+
| {
|
|
382
|
+
/** Positive XY radii in millimetres; mutually exclusive with size. */
|
|
383
|
+
readonly radius: Vector2;
|
|
384
|
+
/** Full XY extents are unavailable when radius is supplied. */
|
|
385
|
+
readonly size?: never;
|
|
386
|
+
}
|
|
387
|
+
| {
|
|
388
|
+
/** Positive full XY extents in millimetres; mutually exclusive with radius. */
|
|
389
|
+
readonly size: Vector2;
|
|
390
|
+
/** XY radii are unavailable when size is supplied. */
|
|
391
|
+
readonly radius?: never;
|
|
392
|
+
}
|
|
393
|
+
);
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Ellipse dimensions in local XY, with exactly one radii or full-size tuple.
|
|
397
|
+
*/
|
|
398
|
+
export declare type EllipseOptions = EllipseContourOptions & PrimitivePlacement;
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Independent inward finishing on primitive or straight convex extrusion ends.
|
|
402
|
+
* Zero amounts leave the end untreated, including when all ends are disabled.
|
|
403
|
+
*/
|
|
404
|
+
export declare interface EndTreatments {
|
|
405
|
+
/** Bottom cap and adjoining side; omitted leaves the end untreated. */
|
|
406
|
+
readonly bottom?: EdgeTreatment;
|
|
407
|
+
/** Top cap and adjoining side; omitted leaves the end untreated. */
|
|
408
|
+
readonly top?: EdgeTreatment;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Extrudes explicit corresponding contours along +Z with degree twist and top scaling.
|
|
413
|
+
* Filled Sections use `section.extrude(options)`.
|
|
414
|
+
*
|
|
415
|
+
* @example Extrude
|
|
416
|
+
* ```ts
|
|
417
|
+
* import { extrude, matchProfiles } from "@metamesh/modeling";
|
|
418
|
+
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
419
|
+
*
|
|
420
|
+
* const [profile] = matchProfiles([rectangleProfile({ size: [30, 20] })]);
|
|
421
|
+
* extrude(profile!, { height: 8 });
|
|
422
|
+
* ```
|
|
423
|
+
*/
|
|
424
|
+
export declare function extrude(
|
|
425
|
+
shape: CorrespondingProfile,
|
|
426
|
+
options: ExtrudeOptions,
|
|
427
|
+
): Solid;
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Dimensions and sampling shared by native and pure +Z extrusion.
|
|
431
|
+
*/
|
|
432
|
+
export declare interface ExtrudeOptions extends ExtrusionSamplingOptions {
|
|
433
|
+
/** Positive extrusion height in millimetres. */
|
|
434
|
+
readonly height: number;
|
|
435
|
+
/** Center the extrusion on Z; otherwise its bottom is at zero. Defaults to false. */
|
|
436
|
+
readonly center?: boolean;
|
|
437
|
+
/** Independent inward end treatments on straight convex single-contour extrusions. */
|
|
438
|
+
readonly ends?: EndTreatments;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/** Shared sampling controls for a twisted or scaled linear extrusion. */
|
|
442
|
+
declare interface ExtrusionSamplingOptions {
|
|
443
|
+
/** Exact number of intermediate profiles, nonnegative; overrides physical sampling. */
|
|
444
|
+
readonly divisions?: number;
|
|
445
|
+
/** Explicit output and sampling allocation ceilings. */
|
|
446
|
+
readonly limits?: Partial<ModelingLimits>;
|
|
447
|
+
/** Operation-level physical policy over the nearest model scope. */
|
|
448
|
+
readonly resolution?: GeometryResolution;
|
|
449
|
+
/** Finite uniform or XY scale of the top profile; defaults to one. */
|
|
450
|
+
readonly scaleTop?: number | Vector2;
|
|
451
|
+
/** Finite rotation of the top profile about +Z, in degrees; defaults to zero. */
|
|
452
|
+
readonly twistDegrees?: number;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/** Finalized manufacturing snapshot. Its arrays are independent of all native values. */
|
|
456
|
+
export declare interface FinalizedModel {
|
|
457
|
+
/** Ordered finalized manufacturing parts with copied transferable arrays. */
|
|
458
|
+
readonly parts: readonly FinalizedPart[];
|
|
459
|
+
/** Axis-aligned XYZ bounds in millimetres. */
|
|
460
|
+
readonly bounds: Bounds3;
|
|
461
|
+
/** Aggregate counts, unique backing storage, volume, and execution timings. */
|
|
462
|
+
readonly stats: {
|
|
463
|
+
/** Aggregate position-buffer vertex count. */
|
|
464
|
+
readonly vertices: number;
|
|
465
|
+
/** Aggregate indexed triangle count. */
|
|
466
|
+
readonly triangles: number;
|
|
467
|
+
/** Signed enclosed volume of all selected parts in cubic millimetres. */
|
|
468
|
+
readonly volumeMm3: number;
|
|
469
|
+
/** Unique transferable backing-buffer bytes, counted once across all parts. */
|
|
470
|
+
readonly bytes: number;
|
|
471
|
+
/** Synchronous callback duration in milliseconds. */
|
|
472
|
+
readonly buildMs: number;
|
|
473
|
+
/** Manufacturing validation and buffer finalization duration in milliseconds. */
|
|
474
|
+
readonly finalizationMs: number;
|
|
475
|
+
/** Total callback and finalization duration in milliseconds. */
|
|
476
|
+
readonly generationMs: number;
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/** Copied manufacturing part with facts computed from the finalized mesh. */
|
|
481
|
+
export declare interface FinalizedPart extends TriangleMesh {
|
|
482
|
+
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
483
|
+
readonly id: string;
|
|
484
|
+
/** Optional six-digit hex RGB display color. */
|
|
485
|
+
readonly color?: string;
|
|
486
|
+
/** Fresh validated facts for these exact finalized buffers. */
|
|
487
|
+
readonly measurements: TriangleMeshAnalysis;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/** A right-handed orthonormal coordinate frame expressed in world coordinates. */
|
|
491
|
+
export declare interface Frame3 {
|
|
492
|
+
/** World-space origin of the local frame. */
|
|
493
|
+
readonly origin: Vector3;
|
|
494
|
+
/** Unit vector defining the local +X axis. */
|
|
495
|
+
readonly xAxis: Vector3;
|
|
496
|
+
/** Unit vector defining the local +Y axis. */
|
|
497
|
+
readonly yAxis: Vector3;
|
|
498
|
+
/** Unit vector defining the local +Z axis. */
|
|
499
|
+
readonly zAxis: Vector3;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/** Imports explicit region topology once. */
|
|
503
|
+
export declare function fromRegion(region: Region): Section;
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Defines a typed model without executing it. Use `computed` only for work worth reusing.
|
|
507
|
+
*
|
|
508
|
+
* @example A simple model
|
|
509
|
+
* ```ts
|
|
510
|
+
* const model = generate<{ height: number }>(({ params, part, assert }) => {
|
|
511
|
+
* assert(params.height > 0, "Height must be positive.");
|
|
512
|
+
* return part("body", box({ size: [10, 10, params.height] }));
|
|
513
|
+
* });
|
|
514
|
+
* ```
|
|
515
|
+
*/
|
|
516
|
+
export declare function generate<P, S = Record<never, never>>(
|
|
517
|
+
callback: GenerateCallback<P, S>,
|
|
518
|
+
): ModelProgram<P, S>;
|
|
519
|
+
|
|
520
|
+
/** Pure synchronous callback returning one declared part or an array; caches are optional. */
|
|
521
|
+
export declare type GenerateCallback<P, S = Record<never, never>> = (
|
|
522
|
+
context: GenerateContext<P, S>,
|
|
523
|
+
) => GeneratedPart | readonly GeneratedPart[];
|
|
524
|
+
|
|
525
|
+
/** The sole synchronous authoring context, supplied independently of Studio. */
|
|
526
|
+
export declare interface GenerateContext<P, S = Record<never, never>> {
|
|
527
|
+
/** Frozen ordinary parameter values; synchronous top-level reads are tracked. */
|
|
528
|
+
readonly params: Readonly<P>;
|
|
529
|
+
/** Host-prepared readonly synchronous capabilities, fixed for the session. */
|
|
530
|
+
readonly services: Readonly<S>;
|
|
531
|
+
/**
|
|
532
|
+
* Registers a lazy pure calculation and automatically tracks parameter and computed-reader reads.
|
|
533
|
+
* Optional dependencies add changing outer captures; entries compare with Object.is. Objects and
|
|
534
|
+
* arrays must be deeply immutable. An empty list still tracks reads inside the callback.
|
|
535
|
+
*/
|
|
536
|
+
readonly computed: <T>(
|
|
537
|
+
id: string,
|
|
538
|
+
callback: () => T,
|
|
539
|
+
dependencies?: readonly unknown[],
|
|
540
|
+
) => Computed<T>;
|
|
541
|
+
/** Declares a semantic part with identity placement, or explicit placement and appearance. */
|
|
542
|
+
readonly part: {
|
|
543
|
+
(id: string, geometry: ComputedValue<PartGeometry>): GeneratedPart;
|
|
544
|
+
(id: string, options: PartOptions): GeneratedPart;
|
|
545
|
+
};
|
|
546
|
+
/** Immediately aborts on false; geometry observations in the condition run first. */
|
|
547
|
+
readonly assert: {
|
|
548
|
+
(condition: false, message: string, options?: DiagnosticOptions<P>): never;
|
|
549
|
+
(condition: boolean, message: string, options?: DiagnosticOptions<P>): void;
|
|
550
|
+
};
|
|
551
|
+
/** Records a nonblocking issue; call only in the outer generation callback. */
|
|
552
|
+
readonly warn: (message: string, options?: DiagnosticOptions<P>) => void;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/** One declared output part. Construct with the context's `part` helper. */
|
|
556
|
+
export declare interface GeneratedPart extends PartOptions {
|
|
557
|
+
/** Unique canonical lowercase hyphen-separated identity, at most 64 characters. */
|
|
558
|
+
readonly id: string;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/** Structured user-facing issue associated with the attempted revision. */
|
|
562
|
+
export declare interface GenerationDiagnostic {
|
|
563
|
+
/** An error aborts generation; a warning allows generation to continue. */
|
|
564
|
+
readonly severity: "error" | "warning";
|
|
565
|
+
/** Human-readable corrective guidance. */
|
|
566
|
+
readonly message: string;
|
|
567
|
+
/** Optional control identity, validated against the supplied parameters. */
|
|
568
|
+
readonly parameterId?: string | undefined;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/** A user-correctable assertion failure. Successful computation caches never retain failures. */
|
|
572
|
+
export declare class GenerationError extends Error {
|
|
573
|
+
/** Issues reached in normal JavaScript order, ending with the first failed assertion. */
|
|
574
|
+
readonly diagnostics: readonly GenerationDiagnostic[];
|
|
575
|
+
/** Captures immutable diagnostics; unexpected author errors retain their original type. */
|
|
576
|
+
constructor(diagnostics: readonly GenerationDiagnostic[]);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* Tessellation policy for sampled geometry measured in millimetres.
|
|
581
|
+
*/
|
|
582
|
+
export declare interface GeometryResolution {
|
|
583
|
+
/** Optional exact full-circle segment count, of at least three, bounded by the selected circular ceiling. */
|
|
584
|
+
readonly circularSegments?: number;
|
|
585
|
+
/** Maximum radial chord error in millimetres; defaults to 0.05. */
|
|
586
|
+
readonly maxChordError?: number;
|
|
587
|
+
/** Optional maximum sampled edge length in millimetres. */
|
|
588
|
+
readonly maxSegmentLength?: number;
|
|
589
|
+
/** Upper safety bound for a full circle; defaults to the selected maxCircularSegments (512 by default). */
|
|
590
|
+
readonly maximumSegments?: number;
|
|
591
|
+
/** Lower full-circle segment count; defaults to 16 or a lower selected circular ceiling. */
|
|
592
|
+
readonly minimumSegments?: number;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/** Explicit allocation ceilings for pure sampling and host-owned modeling operations. */
|
|
596
|
+
export declare interface GeometrySamplingLimits {
|
|
597
|
+
/** Maximum points in one sampled path or placement/frame result. */
|
|
598
|
+
readonly maxPathPoints: number;
|
|
599
|
+
/** Maximum aggregate points in one sampled profile or Section. */
|
|
600
|
+
readonly maxProfilePoints: number;
|
|
601
|
+
/** Maximum points in one profile swept along a path. */
|
|
602
|
+
readonly maxSweepProfilePoints: number;
|
|
603
|
+
/** Maximum segments around one complete circle. */
|
|
604
|
+
readonly maxCircularSegments: number;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/** Optional overrides for MetaMesh's geometry comparison policy. */
|
|
608
|
+
export declare interface GeometryToleranceOptions {
|
|
609
|
+
/** Absolute distance floor in model units. Must be finite and greater than zero. */
|
|
610
|
+
readonly absolute?: number;
|
|
611
|
+
/** Angular comparison threshold in radians. Must be finite and greater than zero. */
|
|
612
|
+
readonly angular?: number;
|
|
613
|
+
/** Dimensionless scale multiplier. Must be finite and non-negative. */
|
|
614
|
+
readonly relative?: number;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
/**
|
|
618
|
+
* XY or XYZ copies, optionally centered or placed in an explicit frame.
|
|
619
|
+
*
|
|
620
|
+
* @example Centered XY grid
|
|
621
|
+
* ```ts
|
|
622
|
+
* gridPattern(box({ size: 4 }), { count: [3, 2], spacing: [10, 10], center: true });
|
|
623
|
+
* ```
|
|
624
|
+
*/
|
|
625
|
+
export declare function gridPattern(
|
|
626
|
+
source: PatternSource,
|
|
627
|
+
options: GridPatternOptions,
|
|
628
|
+
): readonly Solid[];
|
|
629
|
+
|
|
630
|
+
/** Repeats a filled Section on a grid; placements must preserve its XY plane. */
|
|
631
|
+
export declare function gridPattern(
|
|
632
|
+
source: PatternSource<Section>,
|
|
633
|
+
options: GridPatternOptions,
|
|
634
|
+
): readonly Section[];
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* XY or XYZ grid with X varying fastest. The first item starts at the local origin.
|
|
638
|
+
*/
|
|
639
|
+
export declare type GridPatternOptions = {
|
|
640
|
+
/** Center the complete distribution around its local origin; defaults to false. */
|
|
641
|
+
readonly center?: boolean;
|
|
642
|
+
/** Optional right-handed local axes and origin for the grid. */
|
|
643
|
+
readonly frame?: Frame3;
|
|
644
|
+
} & (
|
|
645
|
+
| {
|
|
646
|
+
/** Positive integer counts on X and Y. */
|
|
647
|
+
readonly count: Vector2;
|
|
648
|
+
/** Signed millimetres between adjacent copies on X and Y. */
|
|
649
|
+
readonly spacing: Vector2;
|
|
650
|
+
}
|
|
651
|
+
| {
|
|
652
|
+
/** Positive integer counts on X, Y and Z. */
|
|
653
|
+
readonly count: Vector3;
|
|
654
|
+
/** Signed millimetres between adjacent copies on X, Y and Z. */
|
|
655
|
+
readonly spacing: Vector3;
|
|
656
|
+
}
|
|
657
|
+
);
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* Closed rectilinear top above a flat base, with uniform or explicit XY coordinates.
|
|
661
|
+
* Samples each grid height once; center-error triangulation also samples each cell centre.
|
|
662
|
+
*
|
|
663
|
+
* @example Heightfield
|
|
664
|
+
* ```ts
|
|
665
|
+
* heightfield({
|
|
666
|
+
* size: [30, 20], segments: [24, 16],
|
|
667
|
+
* height: ([x, y]) => 3 + Math.cos(x / 5) * Math.cos(y / 5),
|
|
668
|
+
* });
|
|
669
|
+
* ```
|
|
670
|
+
*/
|
|
671
|
+
export declare function heightfield(options: HeightfieldOptions): Solid;
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* A closed rectilinear heightfield above a flat base, with uniform or explicit XY samples in millimetres.
|
|
675
|
+
*
|
|
676
|
+
* Uniform sampling requires positive `size: [width, depth]` and positive integer `segments: [x, y]`.
|
|
677
|
+
* Optional `origin` sets the lower-left XY corner; omitting it centres the footprint on XY.
|
|
678
|
+
* Alternatively, supply `coordinates: { x, y }` with at least two strictly increasing finite
|
|
679
|
+
* absolute samples per axis, distinct in Float32. This infers the footprint and interval counts;
|
|
680
|
+
* `size`, `segments`, and `origin` cannot be combined with explicit coordinates.
|
|
681
|
+
*/
|
|
682
|
+
export declare type HeightfieldOptions = {
|
|
683
|
+
/** Absolute top Z at the supplied XY point. Every sample must be above baseZ. */
|
|
684
|
+
readonly height: (point: Vector2) => number;
|
|
685
|
+
/** Flat bottom Z. Defaults to zero. */
|
|
686
|
+
readonly baseZ?: number;
|
|
687
|
+
/**
|
|
688
|
+
* Top-cell diagonal policy. Defaults to fixed (lower-left to upper-right).
|
|
689
|
+
* min-edge selects the shorter 3D diagonal; center-error selects the diagonal whose endpoint
|
|
690
|
+
* average is closest to one extra height sample at the physical cell centre. Ties use fixed.
|
|
691
|
+
* All policies retain two triangles per cell; neither estimates error elsewhere in the cell.
|
|
692
|
+
*/
|
|
693
|
+
readonly triangulation?: "fixed" | "min-edge" | "center-error";
|
|
694
|
+
} & (
|
|
695
|
+
| {
|
|
696
|
+
/** Positive XY footprint for uniform sampling. */
|
|
697
|
+
readonly size: Vector2;
|
|
698
|
+
/** Exact positive integer X/Y interval counts. */
|
|
699
|
+
readonly segments: readonly [x: number, y: number];
|
|
700
|
+
/** Lower-left footprint XY. Omitted centers the footprint on XY. */
|
|
701
|
+
readonly origin?: Vector2;
|
|
702
|
+
/** Explicit coordinates cannot be combined with uniform sampling. */
|
|
703
|
+
readonly coordinates?: never;
|
|
704
|
+
}
|
|
705
|
+
| {
|
|
706
|
+
/**
|
|
707
|
+
* Absolute XY coordinates, each with at least two strictly increasing finite values that
|
|
708
|
+
* remain distinct in Float32. Uneven spacing permits caller-owned local refinement.
|
|
709
|
+
*/
|
|
710
|
+
readonly coordinates: {
|
|
711
|
+
/** Absolute X samples in ascending order. */
|
|
712
|
+
readonly x: readonly number[];
|
|
713
|
+
/** Absolute Y samples in ascending order. */
|
|
714
|
+
readonly y: readonly number[];
|
|
715
|
+
};
|
|
716
|
+
/** The footprint is inferred from explicit coordinates. */
|
|
717
|
+
readonly size?: never;
|
|
718
|
+
/** Interval counts are inferred from explicit coordinates. */
|
|
719
|
+
readonly segments?: never;
|
|
720
|
+
/** Explicit coordinates already include their origin. */
|
|
721
|
+
readonly origin?: never;
|
|
722
|
+
}
|
|
723
|
+
);
|
|
724
|
+
|
|
725
|
+
/** Runtime-neutral options for the dedicated helical ridge mesher. */
|
|
726
|
+
export declare interface HelicalThreadRidgeMeshOptions {
|
|
727
|
+
/**
|
|
728
|
+
* Optional bottom/top ridge-end treatments. Standalone ridges honor the requested boundaries;
|
|
729
|
+
* BOSL2-style non-cut lead-in scaling is available on complete thread solids.
|
|
730
|
+
*/
|
|
731
|
+
readonly ends?: ThreadEndTreatmentOptions;
|
|
732
|
+
/** Helix direction. Default: `right`. */
|
|
733
|
+
readonly handedness?: ThreadHandedness;
|
|
734
|
+
/** Total threaded axial length in millimetres. */
|
|
735
|
+
readonly length: number;
|
|
736
|
+
/** Explicit output and circular allocation ceilings. */
|
|
737
|
+
readonly limits?: Partial<ModelingLimits>;
|
|
738
|
+
/** Nominal major diameter before any caller-owned fit compensation. */
|
|
739
|
+
readonly majorDiameter: number;
|
|
740
|
+
/** Angular offset of the first start in degrees. Default: `0`. */
|
|
741
|
+
readonly phaseDegrees?: number;
|
|
742
|
+
/** Validated periodic profile repeated around the shaft. */
|
|
743
|
+
readonly profile: ThreadProfile;
|
|
744
|
+
/** Optional circular-resolution policy. */
|
|
745
|
+
readonly resolution?: GeometryResolution;
|
|
746
|
+
/** Number of evenly phased starts. Default: `1`. */
|
|
747
|
+
readonly starts?: number;
|
|
748
|
+
/** Optional numerical tolerance overrides. */
|
|
749
|
+
readonly tolerance?: GeometryToleranceOptions;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/** Conservative allocation facts resolved before constructing a direct thread solid mesh. */
|
|
753
|
+
export declare interface HelicalThreadSolidMeshPreflight {
|
|
754
|
+
/** Uniform axial intervals required only by a requested physical segment-length limit. */
|
|
755
|
+
readonly axialIntervals: number;
|
|
756
|
+
/** Start-aligned full-circle segment count used by the surface mesh. */
|
|
757
|
+
readonly circularSegments: number;
|
|
758
|
+
/** Conservative surface-row count across profile breaks, ends, and bevel stations. */
|
|
759
|
+
readonly estimatedRows: number;
|
|
760
|
+
/** Conservative triangle count used by the selected output allocation policy. */
|
|
761
|
+
readonly estimatedTriangles: number;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
/**
|
|
765
|
+
* Convex hull of points or solids.
|
|
766
|
+
*
|
|
767
|
+
* @example Hull
|
|
768
|
+
* ```ts
|
|
769
|
+
* const left = sphere({ radius: 5 }).translate([-10, 0, 0]);
|
|
770
|
+
* const right = sphere({ radius: 5 }).translate([10, 0, 0]);
|
|
771
|
+
* hull({ solids: [left, right] });
|
|
772
|
+
* ```
|
|
773
|
+
*/
|
|
774
|
+
export declare function hull(options: HullOptions): Solid;
|
|
775
|
+
|
|
776
|
+
/** Convex filled XY hull of finite points or same-session sections. */
|
|
777
|
+
export declare function hull(options: SectionHullOptions): Section;
|
|
778
|
+
|
|
779
|
+
/** Hull inputs are either finite points or same-session solids. */
|
|
780
|
+
export declare type HullOptions =
|
|
781
|
+
| {
|
|
782
|
+
/** Finite millimetre XYZ points to include in the convex hull. */
|
|
783
|
+
readonly points: readonly Vector3[];
|
|
784
|
+
/** Point input excludes solid input. */
|
|
785
|
+
readonly solids?: never;
|
|
786
|
+
}
|
|
787
|
+
| {
|
|
788
|
+
/** Same-build solids to include in the convex hull. */
|
|
789
|
+
readonly solids: readonly Solid[];
|
|
790
|
+
/** Solid input excludes point input. */
|
|
791
|
+
readonly points?: never;
|
|
792
|
+
};
|
|
793
|
+
|
|
794
|
+
/** Owned immutable numeric data. Use copy() to obtain mutable storage for numerical work. */
|
|
795
|
+
export declare interface ImmutableBuffer<T extends NumericArray> {
|
|
796
|
+
/** Opaque element-storage brand; construct buffers with immutableBuffer(). */
|
|
797
|
+
readonly [immutableBufferBrand]: T;
|
|
798
|
+
/** Number of numeric elements, independent of their byte width. */
|
|
799
|
+
readonly length: number;
|
|
800
|
+
/** Reads an integer offset; negative offsets count from the end. Invalid offsets return undefined. */
|
|
801
|
+
at(this: void, index: number): number | undefined;
|
|
802
|
+
/** Returns a fresh mutable array of the original numeric type; never exposes cached storage. */
|
|
803
|
+
copy(this: void): T;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* Copies numeric data once into private storage. This pure helper needs no active generation.
|
|
808
|
+
* @example
|
|
809
|
+
* ```ts
|
|
810
|
+
* import { immutableBuffer } from "@metamesh/modeling";
|
|
811
|
+
* const heights = immutableBuffer(new Float32Array([2, 4, 6]));
|
|
812
|
+
* const count = heights.length;
|
|
813
|
+
* const first = heights.at(0);
|
|
814
|
+
* const editable = heights.copy();
|
|
815
|
+
* editable[0] = 8; // heights still contains 2, 4, 6.
|
|
816
|
+
* ```
|
|
817
|
+
*/
|
|
818
|
+
export declare function immutableBuffer<T extends NumericArray>(
|
|
819
|
+
source: T,
|
|
820
|
+
): ImmutableBuffer<T>;
|
|
821
|
+
|
|
822
|
+
declare const immutableBufferBrand: unique symbol;
|
|
823
|
+
|
|
824
|
+
/**
|
|
825
|
+
* Copies mesh buffers into immutable data; geometric validation still occurs when modeling or finalizing.
|
|
826
|
+
* @example
|
|
827
|
+
* ```ts
|
|
828
|
+
* import { generate, immutableMesh } from "@metamesh/modeling";
|
|
829
|
+
* import { heightfieldMesh } from "@metamesh/modeling/geometry";
|
|
830
|
+
* const model = generate(({ computed, part }) => {
|
|
831
|
+
* const surface = computed("surface", () => immutableMesh(heightfieldMesh({
|
|
832
|
+
* size: [10, 10], segments: [8, 8], height: () => 2,
|
|
833
|
+
* })));
|
|
834
|
+
* return [part("surface", surface)];
|
|
835
|
+
* });
|
|
836
|
+
* ```
|
|
837
|
+
*/
|
|
838
|
+
export declare function immutableMesh(
|
|
839
|
+
mesh: TriangleMesh,
|
|
840
|
+
): ImmutableTriangleMesh;
|
|
841
|
+
|
|
842
|
+
/** Immutable local XYZ positions and triangle indices, suitable for a computed value or part. */
|
|
843
|
+
export declare interface ImmutableTriangleMesh {
|
|
844
|
+
/** Packed XYZ coordinates in millimetres. */
|
|
845
|
+
readonly positions: ImmutableBuffer<Float32Array>;
|
|
846
|
+
/** Zero-based vertex indices, three per triangle. */
|
|
847
|
+
readonly indices: ImmutableBuffer<Uint32Array>;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
/** Bounded positive-inside implicit field constructor. */
|
|
851
|
+
export declare function implicit(options: ImplicitOptions): Solid;
|
|
852
|
+
|
|
853
|
+
/** Positive-inside sampling, bounded to 4M native BCC grid slots and 8M field calls. */
|
|
854
|
+
export declare interface ImplicitOptions {
|
|
855
|
+
/** Positive-inside scalar field evaluated at finite XYZ points. */
|
|
856
|
+
readonly field: (point: Vector3) => number;
|
|
857
|
+
/** Axis-aligned XYZ bounds in millimetres. */
|
|
858
|
+
readonly bounds: Bounds3;
|
|
859
|
+
/** Positive sampling edge length in millimetres. */
|
|
860
|
+
readonly edgeLength: number;
|
|
861
|
+
/** Field isosurface value; defaults to zero. */
|
|
862
|
+
readonly level?: number;
|
|
863
|
+
/** Positive native geometric tolerance in millimetres; omitted uses interpolated grid crossings. */
|
|
864
|
+
readonly tolerance?: number;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
/**
|
|
868
|
+
* Copies lightweight section measurements.
|
|
869
|
+
*
|
|
870
|
+
* @example Check filled area
|
|
871
|
+
* ```ts
|
|
872
|
+
* const facts = inspectSection(rectangle({ size: [20, 10] }));
|
|
873
|
+
* facts.area; // 200 mm²
|
|
874
|
+
* ```
|
|
875
|
+
*/
|
|
876
|
+
export declare function inspectSection(section: Section): SectionInspection;
|
|
877
|
+
|
|
878
|
+
/**
|
|
879
|
+
* Reads immutable native facts once per solid; temporary components are owned by the build.
|
|
880
|
+
*
|
|
881
|
+
* @example Check dimensions and volume
|
|
882
|
+
* ```ts
|
|
883
|
+
* const facts = inspectSolid(box({ size: [30, 20, 6] }));
|
|
884
|
+
* facts.volume; // 3600 mm³
|
|
885
|
+
* ```
|
|
886
|
+
*/
|
|
887
|
+
export declare function inspectSolid(solid: Solid): SolidInspection;
|
|
888
|
+
|
|
889
|
+
/**
|
|
890
|
+
* Compensated internal threaded cutter.
|
|
891
|
+
*
|
|
892
|
+
* @example Internal thread
|
|
893
|
+
* ```ts
|
|
894
|
+
* import { cylinder, internalThreadCutter } from "@metamesh/modeling";
|
|
895
|
+
* import { createThreadProfile } from "@metamesh/modeling/geometry";
|
|
896
|
+
* const profile = createThreadProfile({ kind: "triangular", pitch: 1.75 });
|
|
897
|
+
* const body = cylinder({ diameter: 20, height: 12, center: false });
|
|
898
|
+
* const cutter = internalThreadCutter({ nominalMajorDiameter: 12, length: 12, profile });
|
|
899
|
+
* body.subtract([cutter]);
|
|
900
|
+
* ```
|
|
901
|
+
*/
|
|
902
|
+
export declare function internalThreadCutter(
|
|
903
|
+
options: InternalThreadCutterOptions,
|
|
904
|
+
): Solid;
|
|
905
|
+
|
|
906
|
+
/** Options for a compensated internal-thread subtraction tool along +Z. */
|
|
907
|
+
export declare interface InternalThreadCutterOptions
|
|
908
|
+
extends
|
|
909
|
+
Omit<HelicalThreadRidgeMeshOptions, "majorDiameter">,
|
|
910
|
+
ThreadBevelOptions {
|
|
911
|
+
/** Printable fit or caller-calibrated allowances. Default: `normal`. */
|
|
912
|
+
readonly fit?: PrintableThreadFit | PrintableThreadFitPolicy;
|
|
913
|
+
/** Nominal major diameter before female compensation and faceting correction. */
|
|
914
|
+
readonly nominalMajorDiameter: number;
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* Robust intersection.
|
|
919
|
+
*
|
|
920
|
+
* @example Intersect
|
|
921
|
+
* ```ts
|
|
922
|
+
* intersect([box({ size: 20 }), sphere({ radius: 12 })]);
|
|
923
|
+
* ```
|
|
924
|
+
*/
|
|
925
|
+
export declare function intersect(solids: readonly Solid[]): Solid;
|
|
926
|
+
|
|
927
|
+
/** Native filled section intersection; dimensions cannot be mixed. */
|
|
928
|
+
export declare function intersect(sections: readonly Section[]): Section;
|
|
929
|
+
|
|
930
|
+
/**
|
|
931
|
+
* Checks whether a same-session solid or filled section contains no geometry.
|
|
932
|
+
*
|
|
933
|
+
* Accepts a 3D Solid or 2D Section handle, not a finalized model or raw triangle mesh.
|
|
934
|
+
* Useful after a Boolean operation whose inputs may not overlap; no mesh is extracted.
|
|
935
|
+
*
|
|
936
|
+
* @example Check a missed intersection
|
|
937
|
+
* ```ts
|
|
938
|
+
* const body = box({ size: 10 });
|
|
939
|
+
* const distant = box({ size: 10 }).translate([30, 0, 0]);
|
|
940
|
+
* const empty = intersect([body, distant]);
|
|
941
|
+
* const missed = isEmpty(empty); // true
|
|
942
|
+
* ```
|
|
943
|
+
*/
|
|
944
|
+
export declare function isEmpty(shape: Solid | Section): boolean;
|
|
945
|
+
|
|
946
|
+
/**
|
|
947
|
+
* Repeats one solid along a normalized direction.
|
|
948
|
+
*
|
|
949
|
+
* @example Three copies along X
|
|
950
|
+
* ```ts
|
|
951
|
+
* linearPattern(box({ size: 4 }), { count: 3, spacing: 10 });
|
|
952
|
+
* ```
|
|
953
|
+
*/
|
|
954
|
+
export declare function linearPattern(
|
|
955
|
+
source: PatternSource,
|
|
956
|
+
options: LinearPatternOptions,
|
|
957
|
+
): readonly Solid[];
|
|
958
|
+
|
|
959
|
+
/** Repeats a filled Section; every placement must preserve its XY plane. */
|
|
960
|
+
export declare function linearPattern(
|
|
961
|
+
source: PatternSource<Section>,
|
|
962
|
+
options: LinearPatternOptions,
|
|
963
|
+
): readonly Section[];
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* Equal linear intervals determined by exactly two of count, spacing and total length.
|
|
967
|
+
*/
|
|
968
|
+
export declare type LinearPatternOptions = {
|
|
969
|
+
/** Direction of repetition; magnitude is ignored. Defaults to +X. */
|
|
970
|
+
readonly direction?: Vector3;
|
|
971
|
+
} & (
|
|
972
|
+
| {
|
|
973
|
+
/** Positive copy count, including the original. */
|
|
974
|
+
readonly count: number;
|
|
975
|
+
/** Signed nonzero millimetres between adjacent copies. */
|
|
976
|
+
readonly spacing: number;
|
|
977
|
+
/** Determined by count and spacing. */
|
|
978
|
+
readonly length?: never;
|
|
979
|
+
}
|
|
980
|
+
| {
|
|
981
|
+
/** Positive copy count, including the original. */
|
|
982
|
+
readonly count: number;
|
|
983
|
+
/** Signed millimetres from first to last copy; zero only for one copy. */
|
|
984
|
+
readonly length: number;
|
|
985
|
+
/** Determined by count and length. */
|
|
986
|
+
readonly spacing?: never;
|
|
987
|
+
}
|
|
988
|
+
| {
|
|
989
|
+
/** Signed nonzero millimetres between adjacent copies. */
|
|
990
|
+
readonly spacing: number;
|
|
991
|
+
/** Signed first-to-last millimetres; a nonnegative whole multiple of spacing. */
|
|
992
|
+
readonly length: number;
|
|
993
|
+
/** Determined by spacing and length. */
|
|
994
|
+
readonly count?: never;
|
|
995
|
+
}
|
|
996
|
+
);
|
|
997
|
+
|
|
998
|
+
/**
|
|
999
|
+
* Lofts primitive Sections at z heights or frames; arbitrary Sections and loops require an explicit correspondence method.
|
|
1000
|
+
*
|
|
1001
|
+
* @example Loft
|
|
1002
|
+
* ```ts
|
|
1003
|
+
* loft([
|
|
1004
|
+
* { profile: circle({ diameter: 16 }), z: 0 },
|
|
1005
|
+
* { profile: rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } }), z: 30 },
|
|
1006
|
+
* ]);
|
|
1007
|
+
* ```
|
|
1008
|
+
*/
|
|
1009
|
+
export declare function loft(
|
|
1010
|
+
stations: readonly LoftStation[],
|
|
1011
|
+
options?: LoftOptions,
|
|
1012
|
+
): Solid;
|
|
1013
|
+
|
|
1014
|
+
/** Lofts explicit corresponding contours, including holes and collapsed logical slots. */
|
|
1015
|
+
export declare function loft(
|
|
1016
|
+
stations: readonly CorrespondingProfileStation[],
|
|
1017
|
+
options?: LoftOptions,
|
|
1018
|
+
): Solid;
|
|
1019
|
+
|
|
1020
|
+
/**
|
|
1021
|
+
* Associates ordered loft contours without inferring component identities or repairing topology.
|
|
1022
|
+
*
|
|
1023
|
+
* - `direct` preserves seams and subdivides edges to a common count without dropping vertices.
|
|
1024
|
+
* - `reindex` applies direct subdivision, then selects the next contour's cyclic phase with the
|
|
1025
|
+
* least total world-space connection length.
|
|
1026
|
+
* - `fast-distance` preserves supplied seams and minimizes connection length over ordered closed
|
|
1027
|
+
* vertex associations, repeating vertices for triangular fans.
|
|
1028
|
+
* - `distance` runs the same ordered optimization over every cyclic phase of the next contour.
|
|
1029
|
+
*
|
|
1030
|
+
* Components and holes are paired by their existing order. Use identified profiles when semantic
|
|
1031
|
+
* correspondence must remain authoritative.
|
|
1032
|
+
*/
|
|
1033
|
+
export declare type LoftCorrespondence =
|
|
1034
|
+
"direct" | "reindex" | "fast-distance" | "distance";
|
|
1035
|
+
|
|
1036
|
+
/**
|
|
1037
|
+
* Shared controls for native and pure lofts. Point data and arbitrary Sections require explicit correspondence.
|
|
1038
|
+
*/
|
|
1039
|
+
export declare interface LoftOptions {
|
|
1040
|
+
/** One method or one per consecutive station gap. Omitted preserves known landmarks, including circle/ellipse-to-rectangle corners, or maps other unlike primitive seams directly. */
|
|
1041
|
+
readonly correspondence?: LoftCorrespondence | readonly LoftCorrespondence[];
|
|
1042
|
+
/** Extra points follow edge length or distribute equally across existing segments. Defaults to perimeter for direct/reindex, or segments when any distance method is selected; distance methods require segments. */
|
|
1043
|
+
readonly distribution?: "perimeter" | "segments";
|
|
1044
|
+
/** Positive integer point-density multiplier, uniformly or per input profile. Original vertices are retained. Defaults to one. */
|
|
1045
|
+
readonly refine?: number | readonly number[];
|
|
1046
|
+
/** Nonnegative count of world-linearly interpolated profiles, uniformly or per gap. Defaults to zero. */
|
|
1047
|
+
readonly slices?: number | readonly number[];
|
|
1048
|
+
/** Physical curve policy for retained primitives, and maximum edge length for point data. Exact primitive curve counts take precedence. */
|
|
1049
|
+
readonly resolution?: GeometryResolution;
|
|
1050
|
+
/** Explicit output and sampling budgets; native operations may only lower host ceilings. */
|
|
1051
|
+
readonly limits?: Partial<ModelingLimits>;
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
/**
|
|
1055
|
+
* A horizontal XY station height, or an explicit right-handed spatial frame, never both.
|
|
1056
|
+
*/
|
|
1057
|
+
export declare type LoftPlacement =
|
|
1058
|
+
| {
|
|
1059
|
+
/** Horizontal XY station height in millimetres. */
|
|
1060
|
+
readonly z: number;
|
|
1061
|
+
/** Excluded when a horizontal height is supplied. */
|
|
1062
|
+
readonly frame?: never;
|
|
1063
|
+
}
|
|
1064
|
+
| {
|
|
1065
|
+
/** Right-handed orthonormal station frame in world coordinates. */
|
|
1066
|
+
readonly frame: Frame3;
|
|
1067
|
+
/** Excluded when an explicit spatial frame is supplied. */
|
|
1068
|
+
readonly z?: never;
|
|
1069
|
+
};
|
|
1070
|
+
|
|
1071
|
+
/**
|
|
1072
|
+
* A Section or point loop at an explicit height or frame.
|
|
1073
|
+
*/
|
|
1074
|
+
export declare type LoftStation = LoftPlacement & {
|
|
1075
|
+
/** Same-build filled Section or ordered XY boundary point data. */
|
|
1076
|
+
readonly profile: Section | Contour;
|
|
1077
|
+
};
|
|
1078
|
+
|
|
1079
|
+
/** Explicit family matching on a shared physical span grid using session or operation resolution. */
|
|
1080
|
+
export declare function matchProfiles(
|
|
1081
|
+
profiles: readonly Profile[],
|
|
1082
|
+
options?: MatchProfilesOptions,
|
|
1083
|
+
): readonly CorrespondingProfile[];
|
|
1084
|
+
|
|
1085
|
+
/** Explicit family sampling settings; omitted values use physical package defaults. */
|
|
1086
|
+
export declare interface MatchProfilesOptions {
|
|
1087
|
+
/** Local physical sampling policy; exact interval counts take precedence. */
|
|
1088
|
+
readonly resolution?: GeometryResolution;
|
|
1089
|
+
/** Explicit per-profile and circular ceilings; the family also has a one-million-slot work bound. */
|
|
1090
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
/** Three-dimensional Minkowski sum. */
|
|
1094
|
+
export declare function minkowskiSum(a: Solid, b: Solid): Solid;
|
|
1095
|
+
|
|
1096
|
+
/** Aggregate manufacturing output ceilings selected by a trusted host. */
|
|
1097
|
+
export declare interface ModelingLimits extends GeometrySamplingLimits {
|
|
1098
|
+
/** Maximum number of named finalized parts. */
|
|
1099
|
+
readonly maxParts: number;
|
|
1100
|
+
/** Maximum aggregate output vertex count. */
|
|
1101
|
+
readonly maxVertices: number;
|
|
1102
|
+
/** Maximum aggregate output triangle count. */
|
|
1103
|
+
readonly maxTriangles: number;
|
|
1104
|
+
/** Maximum unique transferable output backing-buffer bytes. */
|
|
1105
|
+
readonly maxBytes: number;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
/** Stateless portable program descriptor. Execution and caches belong to an engine session. */
|
|
1109
|
+
export declare interface ModelProgram<P, S = Record<never, never>> {
|
|
1110
|
+
/** Exact generation protocol discriminator. */
|
|
1111
|
+
readonly kind: "metamesh-model";
|
|
1112
|
+
/** Typed synchronous declaration callback. */
|
|
1113
|
+
readonly generate: GenerateCallback<P, S>;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
/** Numeric storage supported by immutable generation buffers. */
|
|
1117
|
+
export declare type NumericArray =
|
|
1118
|
+
Float32Array | Float64Array | Uint32Array | Uint8Array | Int32Array;
|
|
1119
|
+
|
|
1120
|
+
/** Manufacturing geometry; filled sections are intermediate construction values. */
|
|
1121
|
+
export declare type PartGeometry = Solid | TriangleMesh | ImmutableTriangleMesh;
|
|
1122
|
+
|
|
1123
|
+
/** Appearance and rigid placement of a finished local manufacturing part. */
|
|
1124
|
+
export declare interface PartOptions {
|
|
1125
|
+
/** Local geometry or a lazy reader; native objects never cross a revision. */
|
|
1126
|
+
readonly geometry: ComputedValue<PartGeometry>;
|
|
1127
|
+
/** XYZ translation in millimetres, applied after rotation; defaults to zero. */
|
|
1128
|
+
readonly position?: ComputedValue<Vector3>;
|
|
1129
|
+
/** Fixed global X, Y, Z rotations in degrees; defaults to zero. */
|
|
1130
|
+
readonly rotation?: ComputedValue<Vector3>;
|
|
1131
|
+
/** Optional six-digit hexadecimal semantic part color. */
|
|
1132
|
+
readonly color?: string;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
/**
|
|
1136
|
+
* Supplies a profile-X orientation guide for each original normalized sweep station.
|
|
1137
|
+
*
|
|
1138
|
+
* @param point - Current XYZ path point in model units.
|
|
1139
|
+
* @param index - Zero-based index of `point` in the normalized authored sweep path.
|
|
1140
|
+
* @returns A finite guide vector that is not parallel to the local path tangent.
|
|
1141
|
+
*/
|
|
1142
|
+
export declare type PathNormalGuide = (
|
|
1143
|
+
point: Vector3,
|
|
1144
|
+
index: number,
|
|
1145
|
+
) => Vector3;
|
|
1146
|
+
|
|
1147
|
+
/**
|
|
1148
|
+
* Physical arc-length copies along a sampled path, with optional tangent orientation.
|
|
1149
|
+
*
|
|
1150
|
+
* @example Copies along a bent path
|
|
1151
|
+
* ```ts
|
|
1152
|
+
* pathPattern(box({ size: 4 }), [[0, 0, 0], [20, 0, 0], [20, 20, 0]], { count: 5 });
|
|
1153
|
+
* ```
|
|
1154
|
+
*/
|
|
1155
|
+
export declare function pathPattern(
|
|
1156
|
+
source: PatternSource,
|
|
1157
|
+
path: readonly Vector3[],
|
|
1158
|
+
options: PathPatternOptions,
|
|
1159
|
+
): readonly Solid[];
|
|
1160
|
+
|
|
1161
|
+
/**
|
|
1162
|
+
* Repeats a filled Section along a sampled XY path at Z=0. Fixed orientation preserves XY;
|
|
1163
|
+
* tangent orientation maps +Z to the tangent and rejects when that leaves the plane.
|
|
1164
|
+
*/
|
|
1165
|
+
export declare function pathPattern(
|
|
1166
|
+
source: PatternSource<Section>,
|
|
1167
|
+
path: readonly Vector3[],
|
|
1168
|
+
options: PathPatternOptions,
|
|
1169
|
+
): readonly Section[];
|
|
1170
|
+
|
|
1171
|
+
/** Equal physical arc-length placements along an open or implicitly closed sampled path. */
|
|
1172
|
+
export declare interface PathPatternOptions {
|
|
1173
|
+
/** Positive number of copies; open paths include both endpoints when greater than one. */
|
|
1174
|
+
readonly count: number;
|
|
1175
|
+
/** Include the closing edge without duplicating the seam; defaults to false. */
|
|
1176
|
+
readonly closed?: boolean;
|
|
1177
|
+
/** Preserve the source orientation, or align its +Z to the path tangent; defaults to fixed. */
|
|
1178
|
+
readonly orientation?: "fixed" | "tangent";
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
/**
|
|
1182
|
+
* One same-session shape, or a synchronous factory called once per copy in index order.
|
|
1183
|
+
*/
|
|
1184
|
+
export declare type PatternSource<T extends Solid | Section = Solid> =
|
|
1185
|
+
T | ((index: number) => T);
|
|
1186
|
+
|
|
1187
|
+
/** A world-space cutting plane, retaining the half-space in the normal's direction. */
|
|
1188
|
+
export declare interface PlaneOptions {
|
|
1189
|
+
/** Finite nonzero plane normal; magnitude does not affect the plane. */
|
|
1190
|
+
readonly normal: Vector3;
|
|
1191
|
+
/** Signed millimetre distance from the origin along the unit normal. Defaults to zero. */
|
|
1192
|
+
readonly offset?: number;
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
/**
|
|
1196
|
+
* One bounded two-dimensional polygon.
|
|
1197
|
+
*
|
|
1198
|
+
* `outer` is counter-clockwise and each hole is clockwise. Boundary arrays omit
|
|
1199
|
+
* their duplicated closing point. Holes must lie inside `outer` and must not
|
|
1200
|
+
* intersect each other or the exterior.
|
|
1201
|
+
*/
|
|
1202
|
+
export declare interface Polygon {
|
|
1203
|
+
/** Clockwise interior boundaries, each omitting its duplicated closing point. */
|
|
1204
|
+
readonly holes: readonly Contour[];
|
|
1205
|
+
/** Counter-clockwise exterior boundary, omitting its duplicated closing point. */
|
|
1206
|
+
readonly outer: Contour;
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
/**
|
|
1210
|
+
* Fills one closed millimetre XY outline, explicit outer/hole topology, or compound contours.
|
|
1211
|
+
* Closing edges are implicit. Compound contours use nonzero fill unless selected otherwise.
|
|
1212
|
+
* Explicit topology must be simple and disjoint; compound winding may resolve overlaps.
|
|
1213
|
+
*
|
|
1214
|
+
* @example Extrude a triangular plate
|
|
1215
|
+
* ```ts
|
|
1216
|
+
* polygon([[0, 0], [20, 0], [10, 12]]).extrude({ height: 3 });
|
|
1217
|
+
* ```
|
|
1218
|
+
*/
|
|
1219
|
+
export declare function polygon(input: Contour | PolygonOptions): Section;
|
|
1220
|
+
|
|
1221
|
+
/** Explicit polygon topology or compound contours; all closing edges are implicit. */
|
|
1222
|
+
export declare type PolygonOptions =
|
|
1223
|
+
| {
|
|
1224
|
+
/** One simple exterior boundary, normalized to counterclockwise winding. */
|
|
1225
|
+
readonly outer: Contour;
|
|
1226
|
+
/** Disjoint simple holes inside the exterior; normalized to clockwise winding. */
|
|
1227
|
+
readonly holes?: readonly Contour[];
|
|
1228
|
+
/** Explicit topology excludes compound contours. */
|
|
1229
|
+
readonly contours?: never;
|
|
1230
|
+
/** Explicit topology determines fill without a winding rule. */
|
|
1231
|
+
readonly fillRule?: never;
|
|
1232
|
+
}
|
|
1233
|
+
| {
|
|
1234
|
+
/** Compound boundaries; may overlap or contain holes according to the fill rule. */
|
|
1235
|
+
readonly contours: readonly Contour[];
|
|
1236
|
+
/** Winding interpretation; defaults to nonzero. An empty list creates an empty Section. */
|
|
1237
|
+
readonly fillRule?: "nonzero" | "evenodd";
|
|
1238
|
+
/** Compound contours exclude explicit topology. */
|
|
1239
|
+
readonly outer?: never;
|
|
1240
|
+
/** Compound contours determine their own holes. */
|
|
1241
|
+
readonly holes?: never;
|
|
1242
|
+
};
|
|
1243
|
+
|
|
1244
|
+
/** Allocation-free internal-thread facts. */
|
|
1245
|
+
export declare function preflightInternalThreadCutter(
|
|
1246
|
+
options: InternalThreadCutterOptions,
|
|
1247
|
+
): HelicalThreadSolidMeshPreflight;
|
|
1248
|
+
|
|
1249
|
+
/** Allocation-free nut/cutter facts. */
|
|
1250
|
+
export declare function preflightThreadedNut(
|
|
1251
|
+
options: ThreadedNutOptions,
|
|
1252
|
+
): ThreadedNutPreflight;
|
|
1253
|
+
|
|
1254
|
+
/** Allocation-free external-thread facts. */
|
|
1255
|
+
export declare function preflightThreadedRod(
|
|
1256
|
+
options: ThreadedRodOptions,
|
|
1257
|
+
): HelicalThreadSolidMeshPreflight;
|
|
1258
|
+
|
|
1259
|
+
/** Placement shared by solid and filled-section factories. */
|
|
1260
|
+
export declare interface PrimitivePlacement {
|
|
1261
|
+
/** Applied after local construction; Section placement must preserve the XY plane. */
|
|
1262
|
+
readonly placement?: PrimitivePlacementOptions;
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
/** Maps an explicit or named shape-local attachment anchor onto a world-space anchor. */
|
|
1266
|
+
export declare interface PrimitivePlacementOptions {
|
|
1267
|
+
/** Shape-local source frame or a named primitive anchor such as bottom. */
|
|
1268
|
+
readonly source: Anchor3 | string;
|
|
1269
|
+
/** World-space target frame in millimetres. */
|
|
1270
|
+
readonly target: Anchor3;
|
|
1271
|
+
/** Align outward directions face-to-face or in parallel. Defaults to opposed. */
|
|
1272
|
+
readonly alignment?: "opposed" | "same";
|
|
1273
|
+
/** Finite separation along the target direction in millimetres. Defaults to zero. */
|
|
1274
|
+
readonly gap?: number;
|
|
1275
|
+
/** Finite additional roll around the attached direction in degrees. Defaults to zero. */
|
|
1276
|
+
readonly spinDegrees?: number;
|
|
1277
|
+
/** Explicit numeric comparison overrides for anchor normalization. */
|
|
1278
|
+
readonly tolerance?: GeometryToleranceOptions;
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
/**
|
|
1282
|
+
* Named baseline fit policies for calibrated FDM-style printed threads.
|
|
1283
|
+
*/
|
|
1284
|
+
export declare type PrintableThreadFit = "tight" | "normal" | "loose";
|
|
1285
|
+
|
|
1286
|
+
/**
|
|
1287
|
+
* Explicit radial and axial allowances for a mating printed thread pair.
|
|
1288
|
+
*
|
|
1289
|
+
* Male and female radial values are applied independently, so their sum is the
|
|
1290
|
+
* assembled radial clearance. Values are millimetres and intentionally do not
|
|
1291
|
+
* encode printer, material, or process calibration.
|
|
1292
|
+
*/
|
|
1293
|
+
export declare interface PrintableThreadFitPolicy {
|
|
1294
|
+
/** Nominal axial backlash available between opposing flanks. */
|
|
1295
|
+
readonly axialBacklash: number;
|
|
1296
|
+
/** Radial increase applied to an internal thread envelope. */
|
|
1297
|
+
readonly femaleRadialOutset: number;
|
|
1298
|
+
/** Radial reduction applied to an external thread envelope. */
|
|
1299
|
+
readonly maleRadialInset: number;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
/** An explicit component/contour/span topology, before shared family sampling. */
|
|
1303
|
+
export declare interface Profile {
|
|
1304
|
+
/** Ordered components with explicit contour identities. */
|
|
1305
|
+
readonly components: readonly ProfileComponent2[];
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
/** One component and its explicitly identified holes. */
|
|
1309
|
+
export declare interface ProfileComponent2 {
|
|
1310
|
+
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
1311
|
+
readonly id: string;
|
|
1312
|
+
/** Counterclockwise outer contour. */
|
|
1313
|
+
readonly outer: ProfileContour2;
|
|
1314
|
+
/** Clockwise hole contours belonging to this component. */
|
|
1315
|
+
readonly holes: readonly ProfileContour2[];
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
/** Ordered, closed spans. Outer winding is CCW and hole winding is CW. */
|
|
1319
|
+
export declare interface ProfileContour2 {
|
|
1320
|
+
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
1321
|
+
readonly id: string;
|
|
1322
|
+
/** Ordered identified spans; the last endpoint meets the first start. */
|
|
1323
|
+
readonly spans: readonly ProfileSpan2[];
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
/** A deliberately sampled, inward-only corner profile with exact polyline geometry. */
|
|
1327
|
+
export declare interface ProfiledEdgeTreatment {
|
|
1328
|
+
/** Selects an explicit corner profile; no analytic curve is inferred from its samples. */
|
|
1329
|
+
readonly kind: "profile";
|
|
1330
|
+
/**
|
|
1331
|
+
* Millimetre setbacks on adjoining surfaces, from [positive, 0] to [0, positive].
|
|
1332
|
+
* First coordinates decrease and second coordinates increase. Cylinder/extrusion ends use
|
|
1333
|
+
* cap inset first, side setback second; planar corners use incoming then outgoing edges.
|
|
1334
|
+
*/
|
|
1335
|
+
readonly profile: readonly Vector2[];
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
/** An identified line, circular arc, or cubic Bézier between corresponding landmarks. */
|
|
1339
|
+
export declare type ProfileSpan2 = {
|
|
1340
|
+
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
1341
|
+
readonly id: string;
|
|
1342
|
+
/** Optional exact span interval count; the family uses the largest requested count. */
|
|
1343
|
+
readonly segments?: number;
|
|
1344
|
+
/** Optional span-local physical sampling over the family's resolution; exact intervals take precedence. */
|
|
1345
|
+
readonly resolution?: GeometryResolution;
|
|
1346
|
+
} & (
|
|
1347
|
+
| {
|
|
1348
|
+
/** Selects a straight span. */
|
|
1349
|
+
readonly kind: "line";
|
|
1350
|
+
/** Start point in millimetres. */
|
|
1351
|
+
readonly start: Vector2;
|
|
1352
|
+
/** End point in millimetres. */
|
|
1353
|
+
readonly end: Vector2;
|
|
1354
|
+
}
|
|
1355
|
+
| {
|
|
1356
|
+
/** Selects the geometric curve or span family. */
|
|
1357
|
+
readonly kind: "arc";
|
|
1358
|
+
/** Center point in millimetres. */
|
|
1359
|
+
readonly center: Vector2;
|
|
1360
|
+
/** Circular radius in millimetres. */
|
|
1361
|
+
readonly radius: number;
|
|
1362
|
+
/** Initial counterclockwise angle in degrees. */
|
|
1363
|
+
readonly startDegrees: number;
|
|
1364
|
+
/** Signed counterclockwise angular sweep in degrees. */
|
|
1365
|
+
readonly sweepDegrees: number;
|
|
1366
|
+
}
|
|
1367
|
+
| {
|
|
1368
|
+
/** Selects a cubic Bézier span with the same coordinates as CubicBezierCurve2. */
|
|
1369
|
+
readonly kind: "cubic";
|
|
1370
|
+
/** Start point in millimetres. */
|
|
1371
|
+
readonly start: Vector2;
|
|
1372
|
+
/** First control point in millimetres. */
|
|
1373
|
+
readonly control1: Vector2;
|
|
1374
|
+
/** Second control point in millimetres. */
|
|
1375
|
+
readonly control2: Vector2;
|
|
1376
|
+
/** End point in millimetres. */
|
|
1377
|
+
readonly end: Vector2;
|
|
1378
|
+
}
|
|
1379
|
+
);
|
|
1380
|
+
|
|
1381
|
+
/**
|
|
1382
|
+
* Repeats one solid about an axis.
|
|
1383
|
+
*
|
|
1384
|
+
* @example Six copies around Z
|
|
1385
|
+
* ```ts
|
|
1386
|
+
* const pin = cylinder({ height: 6, radius: 2 }).translate([12, 0, 0]);
|
|
1387
|
+
* radialPattern(pin, { count: 6, axis: [0, 0, 1], angleDegrees: 60 });
|
|
1388
|
+
* ```
|
|
1389
|
+
*/
|
|
1390
|
+
export declare function radialPattern(
|
|
1391
|
+
source: PatternSource,
|
|
1392
|
+
options: RadialPatternOptions,
|
|
1393
|
+
): readonly Solid[];
|
|
1394
|
+
|
|
1395
|
+
/** Repeats a filled Section about an axis; placements must preserve its XY plane. */
|
|
1396
|
+
export declare function radialPattern(
|
|
1397
|
+
source: PatternSource<Section>,
|
|
1398
|
+
options: RadialPatternOptions,
|
|
1399
|
+
): readonly Section[];
|
|
1400
|
+
|
|
1401
|
+
/**
|
|
1402
|
+
* Options for repeating one solid around an axis through a center point.
|
|
1403
|
+
*/
|
|
1404
|
+
export declare interface RadialPatternOptions {
|
|
1405
|
+
/** Number of solids to return, including the original. */
|
|
1406
|
+
readonly count: number;
|
|
1407
|
+
/** Axis of the right-handed rotation. Its magnitude is ignored. */
|
|
1408
|
+
readonly axis: Vector3;
|
|
1409
|
+
/** Signed rotation from one copy to the next, in degrees. */
|
|
1410
|
+
readonly angleDegrees: number;
|
|
1411
|
+
/** Rotation center in world coordinates. Defaults to the origin. */
|
|
1412
|
+
readonly center?: Vector3;
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
/**
|
|
1416
|
+
* Radial dimensions refer to polygon vertices or compensate faceting to meet polygon faces.
|
|
1417
|
+
*/
|
|
1418
|
+
export declare type RadialSizing = "vertex" | "face";
|
|
1419
|
+
|
|
1420
|
+
/**
|
|
1421
|
+
* Nominal radial sizing shared by circular and regular polygon construction.
|
|
1422
|
+
*/
|
|
1423
|
+
export declare interface RadialSizingOptions {
|
|
1424
|
+
/** Explicit sampling ceilings; bound modeling operations may only lower the host policy. */
|
|
1425
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1426
|
+
/** Vertex sizing is inscribed; face sizing circumscribes the nominal radius. Defaults to vertex. */
|
|
1427
|
+
readonly sizing?: RadialSizing;
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
/** Copies intersections along the finite directed origin-to-endpoint segment. */
|
|
1431
|
+
export declare function rayCast(
|
|
1432
|
+
solid: Solid,
|
|
1433
|
+
origin: Vector3,
|
|
1434
|
+
endpoint: Vector3,
|
|
1435
|
+
): readonly SolidRayHit[];
|
|
1436
|
+
|
|
1437
|
+
/**
|
|
1438
|
+
* Filled rectangular section with uniform or independently treated corners.
|
|
1439
|
+
*
|
|
1440
|
+
* @example Round the corners
|
|
1441
|
+
* ```ts
|
|
1442
|
+
* rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
|
|
1443
|
+
* ```
|
|
1444
|
+
*/
|
|
1445
|
+
export declare function rectangle(options: RectangleOptions): Section;
|
|
1446
|
+
|
|
1447
|
+
/**
|
|
1448
|
+
* Shared rectangle dimensions, origin and uniform or per-corner treatment.
|
|
1449
|
+
*/
|
|
1450
|
+
export declare interface RectangleContourOptions {
|
|
1451
|
+
/** Positive uniform size or explicit XY extents in millimetres. */
|
|
1452
|
+
readonly size: number | Vector2;
|
|
1453
|
+
/** Center on XY; otherwise the minimum corner is the origin. Defaults to true. */
|
|
1454
|
+
readonly center?: boolean;
|
|
1455
|
+
/** Uniform treatment or four corner treatments. Exact round segments describe a complete circle and must divide by four. */
|
|
1456
|
+
readonly treatment?: EdgeTreatment | RectangleCornerTreatments;
|
|
1457
|
+
/** Explicit sampling ceiling for the complete output profile. */
|
|
1458
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
/** A rectangle corner, including an explicitly untreated corner in a treatment tuple. */
|
|
1462
|
+
export declare type RectangleCornerTreatment =
|
|
1463
|
+
| EdgeTreatment
|
|
1464
|
+
| {
|
|
1465
|
+
/** Leaves this corner untreated. */
|
|
1466
|
+
readonly kind: "square";
|
|
1467
|
+
};
|
|
1468
|
+
|
|
1469
|
+
/** Corner treatments ordered top-right, top-left, bottom-left, bottom-right. */
|
|
1470
|
+
export declare type RectangleCornerTreatments = readonly [
|
|
1471
|
+
topRight: RectangleCornerTreatment,
|
|
1472
|
+
topLeft: RectangleCornerTreatment,
|
|
1473
|
+
bottomLeft: RectangleCornerTreatment,
|
|
1474
|
+
bottomRight: RectangleCornerTreatment,
|
|
1475
|
+
];
|
|
1476
|
+
|
|
1477
|
+
/**
|
|
1478
|
+
* Rectangle dimensions, placement and uniform or per-corner treatment.
|
|
1479
|
+
*/
|
|
1480
|
+
export declare interface RectangleOptions
|
|
1481
|
+
extends RectangleContourOptions, PrimitivePlacement {}
|
|
1482
|
+
|
|
1483
|
+
/** A two-dimensional region represented by disjoint filled polygons. */
|
|
1484
|
+
export declare type Region = readonly Polygon[];
|
|
1485
|
+
|
|
1486
|
+
/** Clipper2 join styles accepted by robust region offsets. */
|
|
1487
|
+
export declare type RegionOffsetJoin = "miter" | "round" | "square";
|
|
1488
|
+
|
|
1489
|
+
/** Options controlling robust Clipper2 region offsets. */
|
|
1490
|
+
export declare interface RegionOffsetOptions {
|
|
1491
|
+
/** Number of segments per full circle for round joins. */
|
|
1492
|
+
readonly circularSegments?: number;
|
|
1493
|
+
/** Corner treatment; defaults to `round`. */
|
|
1494
|
+
readonly join?: RegionOffsetJoin;
|
|
1495
|
+
/** Maximum miter extension in offset-distance multiples; at least two. */
|
|
1496
|
+
readonly miterLimit?: number;
|
|
1497
|
+
/** Operation-level physical tessellation policy over the active model-wide policy. */
|
|
1498
|
+
readonly resolution?: GeometryResolution;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
/**
|
|
1502
|
+
* Regular polygon with a vertex on +X.
|
|
1503
|
+
*
|
|
1504
|
+
* @example Hexagonal section
|
|
1505
|
+
* ```ts
|
|
1506
|
+
* regularPolygon({ radius: 10, sides: 6, sizing: "face" });
|
|
1507
|
+
* ```
|
|
1508
|
+
*/
|
|
1509
|
+
export declare function regularPolygon(options: RegularPolygonOptions): Section;
|
|
1510
|
+
|
|
1511
|
+
/**
|
|
1512
|
+
* Regular polygon dimensions, radial convention and degree rotation.
|
|
1513
|
+
*/
|
|
1514
|
+
export declare type RegularPolygonOptions = RadialSizingOptions &
|
|
1515
|
+
PrimitivePlacement & {
|
|
1516
|
+
/** Positive nominal radius in millimetres, interpreted according to sizing. */
|
|
1517
|
+
readonly radius: number;
|
|
1518
|
+
/** Exact integer side count from three through 100000. */
|
|
1519
|
+
readonly sides: number;
|
|
1520
|
+
/** Counterclockwise rotation in degrees; defaults to zero with a vertex on +X. */
|
|
1521
|
+
readonly rotationDegrees?: number;
|
|
1522
|
+
};
|
|
1523
|
+
|
|
1524
|
+
/**
|
|
1525
|
+
* Revolves explicit corresponding radial/Z contours around +Z, with caps for partial sweeps.
|
|
1526
|
+
* Filled Sections use `section.revolve(options)`.
|
|
1527
|
+
*
|
|
1528
|
+
* @example Revolve
|
|
1529
|
+
* ```ts
|
|
1530
|
+
* import { matchProfiles, revolve } from "@metamesh/modeling";
|
|
1531
|
+
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
1532
|
+
*
|
|
1533
|
+
* // Contour coordinates are [radius, Z].
|
|
1534
|
+
* const [profile] = matchProfiles([rectangleProfile({ size: [4, 16], center: false })]);
|
|
1535
|
+
* revolve(profile!, { revolveDegrees: 270 });
|
|
1536
|
+
* ```
|
|
1537
|
+
*/
|
|
1538
|
+
export declare function revolve(
|
|
1539
|
+
shape: CorrespondingProfile,
|
|
1540
|
+
options?: RevolveOptions,
|
|
1541
|
+
): Solid;
|
|
1542
|
+
|
|
1543
|
+
/**
|
|
1544
|
+
* Circumferential sampling and degree sweep shared by pure and filled revolution.
|
|
1545
|
+
*/
|
|
1546
|
+
export declare interface RevolveOptions extends CircularPrimitiveOptions {
|
|
1547
|
+
/**
|
|
1548
|
+
* Positive angular sweep no greater than 360 degrees; partial revolutions have end caps.
|
|
1549
|
+
* Segment counts describe a complete circle and scale to this angular span. Native filled
|
|
1550
|
+
* revolutions require at least three sweep intervals: adaptive sampling refines to that floor,
|
|
1551
|
+
* while exact counts that imply fewer intervals reject. Pure revolveMesh supports one interval.
|
|
1552
|
+
*/
|
|
1553
|
+
readonly revolveDegrees?: number;
|
|
1554
|
+
/** Explicit output and sampling allocation ceilings. */
|
|
1555
|
+
readonly limits?: Partial<ModelingLimits>;
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
/**
|
|
1559
|
+
* A circular edge or corner roundover with explicit physical sampling.
|
|
1560
|
+
*/
|
|
1561
|
+
export declare interface RoundedEdgeTreatment extends CircularPrimitiveOptions {
|
|
1562
|
+
/** Selects circular corners or spherical all-edge roundovers. */
|
|
1563
|
+
readonly kind: "round";
|
|
1564
|
+
/** Nonnegative millimetre radius; zero leaves the edge or corner untreated. Positive values must fit adjoining dimensions. */
|
|
1565
|
+
readonly radius: number;
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
/**
|
|
1569
|
+
* Immutable deferred filled XY section recipe belonging to exactly one model session.
|
|
1570
|
+
* Methods run during synchronous generation and preserve their receiver.
|
|
1571
|
+
* Distances use millimetres; rotations are counterclockwise degrees about the origin.
|
|
1572
|
+
* Construction uses the session resolution unless the operation supplies explicit options.
|
|
1573
|
+
*
|
|
1574
|
+
* @example Extrude an outline with a border
|
|
1575
|
+
* ```ts
|
|
1576
|
+
* const body = rectangle({ size: [20, 12] })
|
|
1577
|
+
* .subtract([rectangle({ size: [16, 8] })])
|
|
1578
|
+
* .offset(0.5)
|
|
1579
|
+
* .extrude({ height: 4 });
|
|
1580
|
+
* ```
|
|
1581
|
+
*/
|
|
1582
|
+
export declare interface Section {
|
|
1583
|
+
/** Compile-time ownership brand for a same-session section. */
|
|
1584
|
+
readonly [sectionBrand]: "Section";
|
|
1585
|
+
/** Translates XY coordinates in millimetres. */
|
|
1586
|
+
translate(this: Section, offset: Vector2): Section;
|
|
1587
|
+
/** Rotates counterclockwise about the origin by a scalar angle in degrees. */
|
|
1588
|
+
rotate(this: Section, degrees: number): Section;
|
|
1589
|
+
/**
|
|
1590
|
+
* Nonsingular scaling about the origin.
|
|
1591
|
+
*/
|
|
1592
|
+
scale(this: Section, factors: number | Vector2): Section;
|
|
1593
|
+
/** Reflection across an origin line/plane. */
|
|
1594
|
+
mirror(this: Section, normal: Vector2): Section;
|
|
1595
|
+
/** Row-major affine transform preserving dimensionality. */
|
|
1596
|
+
transform(this: Section, matrix: Transform2): Section;
|
|
1597
|
+
/** Native section difference; an empty cutter array preserves the source. */
|
|
1598
|
+
subtract(this: Section, cutters: readonly Section[]): Section;
|
|
1599
|
+
/**
|
|
1600
|
+
* Simplifies filled 2D contours using an explicit positive millimetre tolerance.
|
|
1601
|
+
*
|
|
1602
|
+
* Useful for dense imported outlines before extrusion. This changes the outline rather
|
|
1603
|
+
* than selecting a lower rendering quality; fine features may be removed.
|
|
1604
|
+
*/
|
|
1605
|
+
simplify(this: Section, tolerance: number): Section;
|
|
1606
|
+
/**
|
|
1607
|
+
* Returns a new same-session handle with copied named anchors; existing names may be replaced.
|
|
1608
|
+
*/
|
|
1609
|
+
withAnchors(
|
|
1610
|
+
this: Section,
|
|
1611
|
+
anchors: Readonly<Record<string, Anchor3>>,
|
|
1612
|
+
): Section;
|
|
1613
|
+
/**
|
|
1614
|
+
* Native millimetre offset preserving holes.
|
|
1615
|
+
*/
|
|
1616
|
+
offset(
|
|
1617
|
+
this: Section,
|
|
1618
|
+
distance: number,
|
|
1619
|
+
options?: RegionOffsetOptions,
|
|
1620
|
+
): Section;
|
|
1621
|
+
/**
|
|
1622
|
+
* Extrudes along +Z with degree twist and top scaling.
|
|
1623
|
+
*/
|
|
1624
|
+
extrude(this: Section, options: ExtrudeOptions): Solid;
|
|
1625
|
+
/**
|
|
1626
|
+
* Revolves a filled radial/Z shape around +Z, with caps for partial sweeps.
|
|
1627
|
+
*/
|
|
1628
|
+
revolve(this: Section, options?: RevolveOptions): Solid;
|
|
1629
|
+
/**
|
|
1630
|
+
* Sweeps this filled section using the selected frame policy and degree twist.
|
|
1631
|
+
*/
|
|
1632
|
+
sweep(this: Section, path: readonly Vector3[], options?: SweepOptions): Solid;
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
declare const sectionBrand: unique symbol;
|
|
1636
|
+
|
|
1637
|
+
/** Planar convex hull inputs are finite XY points or same-session filled sections. */
|
|
1638
|
+
export declare type SectionHullOptions =
|
|
1639
|
+
| {
|
|
1640
|
+
/** At least three finite millimetre XY points spanning positive area. */
|
|
1641
|
+
readonly points: readonly Vector2[];
|
|
1642
|
+
/** Point input excludes section input. */
|
|
1643
|
+
readonly sections?: never;
|
|
1644
|
+
}
|
|
1645
|
+
| {
|
|
1646
|
+
/** One through 1000 same-session sections to include in the convex hull. */
|
|
1647
|
+
readonly sections: readonly Section[];
|
|
1648
|
+
/** Section input excludes point input. */
|
|
1649
|
+
readonly points?: never;
|
|
1650
|
+
};
|
|
1651
|
+
|
|
1652
|
+
/**
|
|
1653
|
+
* Immutable native filled section facts in millimetres and square millimetres.
|
|
1654
|
+
* Repeated inspections of the same native shape share these facts within one revision.
|
|
1655
|
+
*/
|
|
1656
|
+
export declare interface SectionInspection {
|
|
1657
|
+
/** Whether this filled section has no area or boundary. */
|
|
1658
|
+
readonly isEmpty: boolean;
|
|
1659
|
+
/** Filled section area in square millimetres. */
|
|
1660
|
+
readonly area: number;
|
|
1661
|
+
/** Number of extracted outer and hole contours. */
|
|
1662
|
+
readonly contours: number;
|
|
1663
|
+
/** Inclusive maximum coordinates in millimetres. */
|
|
1664
|
+
readonly max: Vector2;
|
|
1665
|
+
/** Inclusive minimum coordinates in millimetres. */
|
|
1666
|
+
readonly min: Vector2;
|
|
1667
|
+
/** Number of disconnected filled section components. */
|
|
1668
|
+
readonly parts: number;
|
|
1669
|
+
/** Number of native section vertices. */
|
|
1670
|
+
readonly vertices: number;
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
/** A cubic corner transition with zero curvature at its straight tangent joins. */
|
|
1674
|
+
export declare interface SmoothEdgeTreatment {
|
|
1675
|
+
/** Selects continuous-curvature cubic rounding, rather than a circular radius. */
|
|
1676
|
+
readonly kind: "smooth";
|
|
1677
|
+
/** Millimetre setbacks, equal or [first, second]; zero or [0, 0] leaves the edge untreated, otherwise both must be positive. */
|
|
1678
|
+
readonly distance: number | readonly [first: number, second: number];
|
|
1679
|
+
/** Exact cubic interval count, positive; overrides physical sampling. */
|
|
1680
|
+
readonly segments?: number;
|
|
1681
|
+
/** Physical chord/edge-length sampling; circularSegments does not describe a cubic. */
|
|
1682
|
+
readonly resolution?: GeometryResolution;
|
|
1683
|
+
/** Explicit sampling ceilings, bounded by the host policy. */
|
|
1684
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
/**
|
|
1688
|
+
* Immutable deferred solid recipe belonging to exactly one model session.
|
|
1689
|
+
* Methods run during synchronous generation, preserve their receiver, and use millimetres and degrees.
|
|
1690
|
+
* A no-op may reuse the receiver; final part placement belongs in `part` options.
|
|
1691
|
+
*
|
|
1692
|
+
* @example Shape a body with a through bore
|
|
1693
|
+
* ```ts
|
|
1694
|
+
* const body = box({ size: [30, 20, 6] })
|
|
1695
|
+
* .subtract([cylinder({ height: 8, radius: 3 })])
|
|
1696
|
+
* .rotate([0, 0, 45]);
|
|
1697
|
+
* ```
|
|
1698
|
+
*/
|
|
1699
|
+
export declare interface Solid {
|
|
1700
|
+
/** Compile-time ownership brand for a same-session solid. */
|
|
1701
|
+
readonly [solidBrand]: "Solid";
|
|
1702
|
+
/**
|
|
1703
|
+
* Translates XYZ coordinates in millimetres.
|
|
1704
|
+
*/
|
|
1705
|
+
translate(this: Solid, offset: Vector3): Solid;
|
|
1706
|
+
/**
|
|
1707
|
+
* Rotates about the origin using XYZ Euler angles in degrees.
|
|
1708
|
+
*/
|
|
1709
|
+
rotate(this: Solid, degrees: Vector3): Solid;
|
|
1710
|
+
/**
|
|
1711
|
+
* Nonsingular scaling about the origin.
|
|
1712
|
+
*/
|
|
1713
|
+
scale(this: Solid, factors: number | Vector3): Solid;
|
|
1714
|
+
/**
|
|
1715
|
+
* Reflection across an origin line/plane.
|
|
1716
|
+
*/
|
|
1717
|
+
mirror(this: Solid, normal: Vector3): Solid;
|
|
1718
|
+
/** Row-major affine transform preserving dimensionality. */
|
|
1719
|
+
transform(this: Solid, matrix: Transform3): Solid;
|
|
1720
|
+
/**
|
|
1721
|
+
* Robust difference; an empty cutter array preserves the source.
|
|
1722
|
+
*/
|
|
1723
|
+
subtract(this: Solid, cutters: readonly Solid[]): Solid;
|
|
1724
|
+
/**
|
|
1725
|
+
* Simplifies a solid using an explicit positive millimetre tolerance.
|
|
1726
|
+
*
|
|
1727
|
+
* Removes redundant vertices while keeping surfaces within the greater of this tolerance
|
|
1728
|
+
* and the solid's existing native tolerance. Choose it from the detail you can afford to lose.
|
|
1729
|
+
*/
|
|
1730
|
+
simplify(this: Solid, tolerance: number): Solid;
|
|
1731
|
+
/**
|
|
1732
|
+
* Returns a new same-session handle with copied named anchors; existing names may be replaced.
|
|
1733
|
+
*/
|
|
1734
|
+
withAnchors(this: Solid, anchors: Readonly<Record<string, Anchor3>>): Solid;
|
|
1735
|
+
/**
|
|
1736
|
+
* Places an explicit or named source anchor against an explicit target anchor.
|
|
1737
|
+
*/
|
|
1738
|
+
attach(
|
|
1739
|
+
this: Solid,
|
|
1740
|
+
source: Anchor3 | string,
|
|
1741
|
+
target: Anchor3,
|
|
1742
|
+
options?: AttachOptions,
|
|
1743
|
+
): Solid;
|
|
1744
|
+
/** Replaces native tolerance on an immutable copy; zero selects the kernel minimum. */
|
|
1745
|
+
setTolerance(this: Solid, tolerance: number): Solid;
|
|
1746
|
+
/** Projects this solid into a filled XY section. */
|
|
1747
|
+
projectSection(this: Solid): Section;
|
|
1748
|
+
/** Takes a filled horizontal slice at Z millimetres. */
|
|
1749
|
+
sliceSection(this: Solid, z: number): Section;
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
declare const solidBrand: unique symbol;
|
|
1753
|
+
|
|
1754
|
+
/**
|
|
1755
|
+
* Imports a bounded closed indexed mesh.
|
|
1756
|
+
*
|
|
1757
|
+
* @example Mesh import
|
|
1758
|
+
* ```ts
|
|
1759
|
+
* import { solidFromMesh } from "@metamesh/modeling";
|
|
1760
|
+
* import { extrudeMesh, rectangleContour } from "@metamesh/modeling/geometry";
|
|
1761
|
+
*
|
|
1762
|
+
* const mesh = extrudeMesh(rectangleContour({ size: [20, 12] }), { height: 6 });
|
|
1763
|
+
* solidFromMesh(mesh);
|
|
1764
|
+
* ```
|
|
1765
|
+
*/
|
|
1766
|
+
export declare function solidFromMesh(
|
|
1767
|
+
mesh: TriangleMesh | ImmutableTriangleMesh,
|
|
1768
|
+
): Solid;
|
|
1769
|
+
|
|
1770
|
+
/**
|
|
1771
|
+
* Immutable solid bounds, emptiness, component count, volume, surface area and native tolerance.
|
|
1772
|
+
* Repeated inspections of the same native shape share these facts within one revision.
|
|
1773
|
+
*/
|
|
1774
|
+
export declare interface SolidInspection {
|
|
1775
|
+
/** Whether this native solid contains no material. */
|
|
1776
|
+
readonly isEmpty: boolean;
|
|
1777
|
+
/** Inclusive maximum coordinates in millimetres. */
|
|
1778
|
+
readonly max: Vector3;
|
|
1779
|
+
/** Inclusive minimum coordinates in millimetres. */
|
|
1780
|
+
readonly min: Vector3;
|
|
1781
|
+
/** Number of connected surface shells; inward cavity shells count separately. */
|
|
1782
|
+
readonly parts: number;
|
|
1783
|
+
/** Enclosed native solid volume in cubic millimetres. */
|
|
1784
|
+
readonly volume: number;
|
|
1785
|
+
/** Total native surface area in square millimetres. */
|
|
1786
|
+
readonly surfaceArea: number;
|
|
1787
|
+
/** Effective native geometric tolerance in millimetres. */
|
|
1788
|
+
readonly tolerance: number;
|
|
1789
|
+
}
|
|
1790
|
+
|
|
1791
|
+
/** Copied surface intersection from a finite directed segment. Distance is in millimetres. */
|
|
1792
|
+
export declare interface SolidRayHit {
|
|
1793
|
+
/** Copied numeric native face identity. */
|
|
1794
|
+
readonly faceId: number;
|
|
1795
|
+
/** Distance from the ray origin in millimetres. */
|
|
1796
|
+
readonly distance: number;
|
|
1797
|
+
/** Intersection position in millimetres. */
|
|
1798
|
+
readonly position: Vector3;
|
|
1799
|
+
/** Outward unit surface normal at the intersection. */
|
|
1800
|
+
readonly normal: Vector3;
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
/**
|
|
1804
|
+
* Origin-centered sphere.
|
|
1805
|
+
*
|
|
1806
|
+
* @example Sphere
|
|
1807
|
+
* ```ts
|
|
1808
|
+
* sphere({ diameter: 20 });
|
|
1809
|
+
* ```
|
|
1810
|
+
*/
|
|
1811
|
+
export declare function sphere(options: SphereOptions): Solid;
|
|
1812
|
+
|
|
1813
|
+
/**
|
|
1814
|
+
* Exactly one radius or diameter, placement, and tessellation for an origin-centered sphere.
|
|
1815
|
+
*/
|
|
1816
|
+
export declare type SphereOptions = CircularPrimitiveOptions &
|
|
1817
|
+
PrimitivePlacement &
|
|
1818
|
+
(
|
|
1819
|
+
| {
|
|
1820
|
+
/** Positive radius in millimetres; mutually exclusive with diameter. */
|
|
1821
|
+
readonly radius: number;
|
|
1822
|
+
/** Full diameter is unavailable when radius is supplied. */
|
|
1823
|
+
readonly diameter?: never;
|
|
1824
|
+
}
|
|
1825
|
+
| {
|
|
1826
|
+
/** Positive full diameter in millimetres; mutually exclusive with radius. */
|
|
1827
|
+
readonly diameter: number;
|
|
1828
|
+
/** Radius is unavailable when diameter is supplied. */
|
|
1829
|
+
readonly radius?: never;
|
|
1830
|
+
}
|
|
1831
|
+
);
|
|
1832
|
+
|
|
1833
|
+
/**
|
|
1834
|
+
* Splits a solid into [inside the cutter, outside the cutter].
|
|
1835
|
+
*
|
|
1836
|
+
* The first result is the intersection; the second is the subtraction. The cutter itself
|
|
1837
|
+
* is not returned. Either result may be empty or contain multiple disconnected components.
|
|
1838
|
+
*
|
|
1839
|
+
* @example Keep the plug and the surrounding body
|
|
1840
|
+
* ```ts
|
|
1841
|
+
* const body = box({ size: [30, 20, 8] });
|
|
1842
|
+
* const cutter = cylinder({ height: 10, diameter: 8 });
|
|
1843
|
+
* const [plug, remainder] = split(body, cutter);
|
|
1844
|
+
* // Move the plug beside the body to show both results.
|
|
1845
|
+
* union([plug.translate([0, -20, 0]), remainder]);
|
|
1846
|
+
* ```
|
|
1847
|
+
*/
|
|
1848
|
+
export declare function split(
|
|
1849
|
+
solid: Solid,
|
|
1850
|
+
cutter: Solid,
|
|
1851
|
+
): readonly [Solid, Solid];
|
|
1852
|
+
|
|
1853
|
+
/**
|
|
1854
|
+
* Splits a solid into [positive-normal side, negative side] at a world-space plane.
|
|
1855
|
+
*
|
|
1856
|
+
* The nonzero normal is normalized; offset is the signed distance from the origin in
|
|
1857
|
+
* millimetres, defaulting to zero. Both cut faces are closed. Select either tuple result
|
|
1858
|
+
* to retain one side; either result may be empty.
|
|
1859
|
+
*
|
|
1860
|
+
* @example Separate two halves at X = 0
|
|
1861
|
+
* ```ts
|
|
1862
|
+
* const body = box({ size: [30, 20, 8] });
|
|
1863
|
+
* const [right, left] = splitByPlane(body, { normal: [1, 0, 0] });
|
|
1864
|
+
* // The gap is only for display; the cut itself removes no material.
|
|
1865
|
+
* union([right.translate([4, 0, 0]), left.translate([-4, 0, 0])]);
|
|
1866
|
+
* ```
|
|
1867
|
+
*
|
|
1868
|
+
* @example Keep only the positive half
|
|
1869
|
+
* ```ts
|
|
1870
|
+
* const [right] = splitByPlane(box({ size: [30, 20, 8] }), { normal: [1, 0, 0] });
|
|
1871
|
+
* right;
|
|
1872
|
+
* ```
|
|
1873
|
+
*/
|
|
1874
|
+
export declare function splitByPlane(
|
|
1875
|
+
solid: Solid,
|
|
1876
|
+
plane: PlaneOptions,
|
|
1877
|
+
): readonly [Solid, Solid];
|
|
1878
|
+
|
|
1879
|
+
/** Square profile with equal crest and root widths. */
|
|
1880
|
+
declare interface SquareThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
1881
|
+
/** Selects the square profile family. */
|
|
1882
|
+
readonly kind: "square";
|
|
1883
|
+
/**
|
|
1884
|
+
* Radial depth in millimetres.
|
|
1885
|
+
* @defaultValue `pitch / 2`
|
|
1886
|
+
*/
|
|
1887
|
+
readonly depth?: number;
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1890
|
+
/**
|
|
1891
|
+
* Alternating outer/inner star vertices.
|
|
1892
|
+
*
|
|
1893
|
+
* @example Five-point section
|
|
1894
|
+
* ```ts
|
|
1895
|
+
* star({ outerRadius: 12, innerRadius: 6, points: 5 });
|
|
1896
|
+
* ```
|
|
1897
|
+
*/
|
|
1898
|
+
export declare function star(options: StarOptions): Section;
|
|
1899
|
+
|
|
1900
|
+
/**
|
|
1901
|
+
* Alternating outer and inner vertices, centered on the XY origin.
|
|
1902
|
+
*/
|
|
1903
|
+
export declare interface StarOptions extends PrimitivePlacement {
|
|
1904
|
+
/** Explicit sampling ceilings, bounded by the host policy. */
|
|
1905
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1906
|
+
/** Positive outer vertex radius in millimetres. */
|
|
1907
|
+
readonly outerRadius: number;
|
|
1908
|
+
/** Positive inner vertex radius, smaller than the outer radius. */
|
|
1909
|
+
readonly innerRadius: number;
|
|
1910
|
+
/** Integer outer point count from three through 50000. */
|
|
1911
|
+
readonly points: number;
|
|
1912
|
+
/** Initial counterclockwise rotation in degrees; defaults to zero. */
|
|
1913
|
+
readonly rotationDegrees?: number;
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1916
|
+
/** Placement of painted SVG geometry after SVG Y-axis inversion. */
|
|
1917
|
+
export declare type SvgOrigin = "center" | "document";
|
|
1918
|
+
|
|
1919
|
+
/**
|
|
1920
|
+
* Imports bounded filled SVG path data.
|
|
1921
|
+
*
|
|
1922
|
+
* @example Fill an SVG path in millimetres
|
|
1923
|
+
* ```ts
|
|
1924
|
+
* svgPathSection("M0 0H20V12H0Z", { origin: "center", scale: 1 });
|
|
1925
|
+
* ```
|
|
1926
|
+
*/
|
|
1927
|
+
export declare function svgPathSection(
|
|
1928
|
+
path: string,
|
|
1929
|
+
options?: SvgPathSectionOptions,
|
|
1930
|
+
): Section;
|
|
1931
|
+
|
|
1932
|
+
/** Bounded filled SVG path sampling. Path scale converts user units to millimetres. */
|
|
1933
|
+
export declare interface SvgPathSectionOptions {
|
|
1934
|
+
/** Local allocation ceilings may only lower the configured engine policy. */
|
|
1935
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1936
|
+
/** Nonzero or even-odd filled-contour rule; defaults to nonzero. */
|
|
1937
|
+
readonly fillRule?: "evenodd" | "nonzero";
|
|
1938
|
+
/** Local physical sampling policy; exact interval counts take precedence. */
|
|
1939
|
+
readonly resolution?: GeometryResolution;
|
|
1940
|
+
/** Center the painted bounds or preserve original path coordinates. */
|
|
1941
|
+
readonly origin?: SvgOrigin;
|
|
1942
|
+
/** Positive uniform factor converting SVG user units to millimetres; defaults to one. */
|
|
1943
|
+
readonly scale?: number;
|
|
1944
|
+
}
|
|
1945
|
+
|
|
1946
|
+
/**
|
|
1947
|
+
* Imports bounded painted SVG document geometry.
|
|
1948
|
+
*
|
|
1949
|
+
* @example Import a physical SVG rectangle
|
|
1950
|
+
* ```ts
|
|
1951
|
+
* svgSection(
|
|
1952
|
+
* '<svg xmlns="http://www.w3.org/2000/svg" width="30mm" height="20mm" viewBox="0 0 30 20"><rect width="30" height="20"/></svg>',
|
|
1953
|
+
* { origin: "center" },
|
|
1954
|
+
* );
|
|
1955
|
+
* ```
|
|
1956
|
+
*/
|
|
1957
|
+
export declare function svgSection(
|
|
1958
|
+
svg: string,
|
|
1959
|
+
options?: SvgSectionOptions,
|
|
1960
|
+
): Section;
|
|
1961
|
+
|
|
1962
|
+
/**
|
|
1963
|
+
* Bounded SVG document sampling. Center origin uses the final painted bounds.
|
|
1964
|
+
*/
|
|
1965
|
+
export declare interface SvgSectionOptions {
|
|
1966
|
+
/** Local allocation ceilings may only lower the configured engine policy. */
|
|
1967
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1968
|
+
/** Exact circular tessellation count overriding physical sampling. */
|
|
1969
|
+
readonly circularSegments?: number;
|
|
1970
|
+
/** Local physical sampling policy; exact interval counts take precedence. */
|
|
1971
|
+
readonly resolution?: GeometryResolution;
|
|
1972
|
+
/** Place the painted bounds around the origin or preserve document coordinates. */
|
|
1973
|
+
readonly origin?: SvgOrigin;
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1976
|
+
/**
|
|
1977
|
+
* Sweeps explicit corresponding contours using the selected frame policy.
|
|
1978
|
+
* Filled Sections use `section.sweep(path, options)`.
|
|
1979
|
+
*
|
|
1980
|
+
* @example Sweep
|
|
1981
|
+
* ```ts
|
|
1982
|
+
* import { matchProfiles, sweep } from "@metamesh/modeling";
|
|
1983
|
+
* import { rectangleProfile } from "@metamesh/modeling/geometry";
|
|
1984
|
+
*
|
|
1985
|
+
* const [profile] = matchProfiles([rectangleProfile({ size: [6, 3] })]);
|
|
1986
|
+
* sweep(profile!, [[0, 0, 0], [0, 0, 15], [10, 0, 25]], {
|
|
1987
|
+
* orientation: { kind: "transport", initialNormal: [0, 1, 0] },
|
|
1988
|
+
* });
|
|
1989
|
+
* ```
|
|
1990
|
+
*/
|
|
1991
|
+
export declare function sweep(
|
|
1992
|
+
shape: CorrespondingProfile,
|
|
1993
|
+
path: readonly Vector3[],
|
|
1994
|
+
options?: SweepOptions,
|
|
1995
|
+
): Solid;
|
|
1996
|
+
|
|
1997
|
+
/**
|
|
1998
|
+
* Controls shared by pure mesh construction and filled modeling sweeps.
|
|
1999
|
+
*/
|
|
2000
|
+
export declare interface SweepOptions {
|
|
2001
|
+
/** Join the path's last station to its first. Open paths retain watertight end caps. */
|
|
2002
|
+
readonly closed?: boolean;
|
|
2003
|
+
/** Explicit output and sampling allocation ceilings. */
|
|
2004
|
+
readonly limits?: Partial<ModelingLimits>;
|
|
2005
|
+
/** Explicit frame policy; default transport minimizes rotations, initially projecting +X then +Y then +Z. */
|
|
2006
|
+
readonly orientation?: SweepOrientation;
|
|
2007
|
+
/** Physical sampling of nonzero twist; inserted stations retain authored station controls. */
|
|
2008
|
+
readonly resolution?: GeometryResolution;
|
|
2009
|
+
/** Total additional profile rotation in degrees, with progression selected by twistBy. */
|
|
2010
|
+
readonly twistDegrees?: number;
|
|
2011
|
+
/** Twist advances by physical path length (default), or normalized authored station position, including a closed seam gap. */
|
|
2012
|
+
readonly twistBy?: "length" | "stations";
|
|
2013
|
+
/** Positive uniform/XY scale, or one XY pair per path station. Defaults to one. */
|
|
2014
|
+
readonly scale?: number | Vector2 | readonly Vector2[];
|
|
2015
|
+
/** Corresponding point-index advance at a rotationally equivalent closed seam. */
|
|
2016
|
+
readonly seamProfileOffset?: number;
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
/**
|
|
2020
|
+
* Explicit profile-X frame policy; all normals are directed, and selected singular policies reject.
|
|
2021
|
+
*/
|
|
2022
|
+
export declare type SweepOrientation =
|
|
2023
|
+
| {
|
|
2024
|
+
/** Minimizes frame rotation by parallel transport. */
|
|
2025
|
+
readonly kind: "transport";
|
|
2026
|
+
/** Initial profile +X guide, projected perpendicular to the first tangent. */
|
|
2027
|
+
readonly initialNormal?: Vector3;
|
|
2028
|
+
}
|
|
2029
|
+
| {
|
|
2030
|
+
/** Projects one fixed world-space normal at every path station. */
|
|
2031
|
+
readonly kind: "fixed-normal";
|
|
2032
|
+
/** Directed profile +X guide; must not be parallel to any local tangent. */
|
|
2033
|
+
readonly normal: Vector3;
|
|
2034
|
+
}
|
|
2035
|
+
| {
|
|
2036
|
+
/** Uses an explicitly directed normal callback at each original normalized station. */
|
|
2037
|
+
readonly kind: "guide";
|
|
2038
|
+
/** Finite profile +X guide callback, evaluated once per original path station. */
|
|
2039
|
+
readonly normal: PathNormalGuide;
|
|
2040
|
+
}
|
|
2041
|
+
| {
|
|
2042
|
+
/** Uses sampled curvature normals; zero-curvature stations reject. */
|
|
2043
|
+
readonly kind: "frenet";
|
|
2044
|
+
};
|
|
2045
|
+
|
|
2046
|
+
/**
|
|
2047
|
+
* Consumes a previously prepared layout; never shapes or fetches a font.
|
|
2048
|
+
*
|
|
2049
|
+
* @example Use a prepared text layout
|
|
2050
|
+
* ```ts
|
|
2051
|
+
* // Prepare the exact font and layout before entering build.
|
|
2052
|
+
* function labelSection(layout: VectorTextLayout) {
|
|
2053
|
+
* return textSection(layout);
|
|
2054
|
+
* }
|
|
2055
|
+
* ```
|
|
2056
|
+
*/
|
|
2057
|
+
export declare function textSection(
|
|
2058
|
+
layout: VectorTextLayout,
|
|
2059
|
+
options?: TextSectionOptions,
|
|
2060
|
+
): Section;
|
|
2061
|
+
|
|
2062
|
+
/**
|
|
2063
|
+
* Physical curve sampling applied to already prepared vector text.
|
|
2064
|
+
*/
|
|
2065
|
+
export declare interface TextSectionOptions {
|
|
2066
|
+
/** Local allocation ceilings may only lower the configured engine policy. */
|
|
2067
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2068
|
+
/** Local physical sampling policy; exact interval counts take precedence. */
|
|
2069
|
+
readonly resolution?: GeometryResolution;
|
|
2070
|
+
}
|
|
2071
|
+
|
|
2072
|
+
/** End bevel controls shared by threaded rods and cutters. */
|
|
2073
|
+
declare interface ThreadBevelOptions {
|
|
2074
|
+
/** Apply a 45-degree bevel at Z=0. */
|
|
2075
|
+
readonly bevelBottom?: boolean;
|
|
2076
|
+
/**
|
|
2077
|
+
* Axial bevel extent in millimetres. Active blunt ends default to one sixth of the compensated
|
|
2078
|
+
* male minor radius or female major radius; other ends default to the profile depth.
|
|
2079
|
+
*/
|
|
2080
|
+
readonly bevelSize?: number;
|
|
2081
|
+
/** Apply a 45-degree bevel at Z=length. */
|
|
2082
|
+
readonly bevelTop?: boolean;
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
/**
|
|
2086
|
+
* Compensated threaded nut.
|
|
2087
|
+
*
|
|
2088
|
+
* @example Threaded nut
|
|
2089
|
+
* ```ts
|
|
2090
|
+
* import { threadedNut } from "@metamesh/modeling";
|
|
2091
|
+
* import { createThreadProfile } from "@metamesh/modeling/geometry";
|
|
2092
|
+
*
|
|
2093
|
+
* const profile = createThreadProfile({ kind: "triangular", pitch: 1.75 });
|
|
2094
|
+
* threadedNut({ nominalMajorDiameter: 12, thickness: 8, width: 20, shape: "hex", profile, fit: "normal" });
|
|
2095
|
+
* ```
|
|
2096
|
+
*/
|
|
2097
|
+
export declare function threadedNut(options: ThreadedNutOptions): Solid;
|
|
2098
|
+
|
|
2099
|
+
/** Nut-edge bevel selection. */
|
|
2100
|
+
export declare type ThreadedNutBevel =
|
|
2101
|
+
"automatic" | "both" | "inside" | "none" | "outside";
|
|
2102
|
+
|
|
2103
|
+
/**
|
|
2104
|
+
* Options for a compensated nut with an internal thread.
|
|
2105
|
+
*/
|
|
2106
|
+
export declare interface ThreadedNutOptions extends Omit<
|
|
2107
|
+
InternalThreadCutterOptions,
|
|
2108
|
+
"bevelBottom" | "bevelSize" | "bevelTop" | "length"
|
|
2109
|
+
> {
|
|
2110
|
+
/** Nut body bevel selection. Default: `automatic`. */
|
|
2111
|
+
readonly bevel?: ThreadedNutBevel;
|
|
2112
|
+
/** Optional physical policy for a round body, independent of the thread's matched facet grid. */
|
|
2113
|
+
readonly bodyResolution?: GeometryResolution;
|
|
2114
|
+
/** 45-degree body chamfer extent. Default: `min(profile.depth, thickness/4)`. */
|
|
2115
|
+
readonly chamferSize?: number;
|
|
2116
|
+
/** Leave the bottom outside edge flat for build-plate adhesion. Default: `false`. */
|
|
2117
|
+
readonly flushBuildPlateBottom?: boolean;
|
|
2118
|
+
/** Nut body shape. */
|
|
2119
|
+
readonly shape: ThreadedNutShape;
|
|
2120
|
+
/** Nut thickness along +Z in millimetres. */
|
|
2121
|
+
readonly thickness: number;
|
|
2122
|
+
/** Across-flats width for hex/square or diameter for round, in millimetres. */
|
|
2123
|
+
readonly width: number;
|
|
2124
|
+
}
|
|
2125
|
+
|
|
2126
|
+
/** Allocation-free body, cutter, and end-face facts resolved for a threaded nut. */
|
|
2127
|
+
export declare interface ThreadedNutPreflight {
|
|
2128
|
+
/** Polygon segment count used by the nut body. */
|
|
2129
|
+
readonly bodySegments: number;
|
|
2130
|
+
/** Shared 45-degree chamfer size applied to the selected body and cutter edges. */
|
|
2131
|
+
readonly chamferSize: number;
|
|
2132
|
+
/** Maximum compensated cutter radius at either requested face. */
|
|
2133
|
+
readonly cutterFaceRadius: number;
|
|
2134
|
+
/** Minimum nut-body inradius across the requested top and bottom faces. */
|
|
2135
|
+
readonly minimumBodyFaceInradius: number;
|
|
2136
|
+
/** Smallest radial wall left between the body and cutter at either requested face. */
|
|
2137
|
+
readonly minimumFaceWall: number;
|
|
2138
|
+
/** Conservative allocation facts for the exact extended internal-thread cutter mesh. */
|
|
2139
|
+
readonly thread: HelicalThreadSolidMeshPreflight;
|
|
2140
|
+
/** Start-aligned circular facet count used by the compensated thread cutter. */
|
|
2141
|
+
readonly threadCircularSegments: number;
|
|
2142
|
+
}
|
|
2143
|
+
|
|
2144
|
+
/**
|
|
2145
|
+
* Supported printable nut body shapes.
|
|
2146
|
+
*/
|
|
2147
|
+
export declare type ThreadedNutShape = "hex" | "round" | "square";
|
|
2148
|
+
|
|
2149
|
+
/**
|
|
2150
|
+
* Compensated external threaded rod.
|
|
2151
|
+
*
|
|
2152
|
+
* @example Threaded rod
|
|
2153
|
+
* ```ts
|
|
2154
|
+
* import { threadedRod } from "@metamesh/modeling";
|
|
2155
|
+
* import { createThreadProfile } from "@metamesh/modeling/geometry";
|
|
2156
|
+
*
|
|
2157
|
+
* const profile = createThreadProfile({ kind: "triangular", pitch: 1.75 });
|
|
2158
|
+
* threadedRod({ nominalMajorDiameter: 12, length: 24, profile, fit: "normal" });
|
|
2159
|
+
* ```
|
|
2160
|
+
*/
|
|
2161
|
+
export declare function threadedRod(options: ThreadedRodOptions): Solid;
|
|
2162
|
+
|
|
2163
|
+
/**
|
|
2164
|
+
* Options for a compensated external threaded rod along +Z.
|
|
2165
|
+
*/
|
|
2166
|
+
export declare interface ThreadedRodOptions
|
|
2167
|
+
extends
|
|
2168
|
+
Omit<HelicalThreadRidgeMeshOptions, "majorDiameter">,
|
|
2169
|
+
ThreadBevelOptions {
|
|
2170
|
+
/** Printable fit or caller-calibrated allowances. Default: `normal`. */
|
|
2171
|
+
readonly fit?: PrintableThreadFit | PrintableThreadFitPolicy;
|
|
2172
|
+
/** Nominal major diameter before male compensation. */
|
|
2173
|
+
readonly nominalMajorDiameter: number;
|
|
2174
|
+
}
|
|
2175
|
+
|
|
2176
|
+
/** End shape of a generated helical ridge. */
|
|
2177
|
+
export declare type ThreadEndStyle = "blunt" | "standard" | "tapered";
|
|
2178
|
+
|
|
2179
|
+
/** Axial end controls for a generated ridge. */
|
|
2180
|
+
export declare interface ThreadEndTreatmentOptions {
|
|
2181
|
+
/**
|
|
2182
|
+
* Ridge shape at the lower working boundary. `blunt` ends at full profile height, `standard`
|
|
2183
|
+
* clips the periodic profile at the face, and `tapered` ramps out from the minor envelope.
|
|
2184
|
+
* @defaultValue `"blunt"`
|
|
2185
|
+
*/
|
|
2186
|
+
readonly bottom?: ThreadEndStyle;
|
|
2187
|
+
/**
|
|
2188
|
+
* Non-negative unthreaded envelope length reserved at each non-standard end, in millimetres.
|
|
2189
|
+
* Active blunt bevels may raise this reservation to the effective bevel size.
|
|
2190
|
+
* @defaultValue `0`
|
|
2191
|
+
*/
|
|
2192
|
+
readonly endLength?: number;
|
|
2193
|
+
/**
|
|
2194
|
+
* Radial envelope toward which a blunt lead-in collapses.
|
|
2195
|
+
* @defaultValue `"minor"`
|
|
2196
|
+
*/
|
|
2197
|
+
readonly leadInEnvelope?: ThreadLeadInEnvelope;
|
|
2198
|
+
/**
|
|
2199
|
+
* Physical circumferential lead-in length in millimetres.
|
|
2200
|
+
* @defaultValue The profile depth.
|
|
2201
|
+
*/
|
|
2202
|
+
readonly leadInLength?: number;
|
|
2203
|
+
/**
|
|
2204
|
+
* Cross-section scaling curve used by blunt ends. `cut` switches abruptly to the full profile.
|
|
2205
|
+
* @defaultValue `"cut"`
|
|
2206
|
+
*/
|
|
2207
|
+
readonly leadInShape?: ThreadLeadInShape;
|
|
2208
|
+
/**
|
|
2209
|
+
* Ridge shape at the upper working boundary. `blunt` ends at full profile height, `standard`
|
|
2210
|
+
* clips the periodic profile at the face, and `tapered` ramps into the minor envelope.
|
|
2211
|
+
* @defaultValue `"blunt"`
|
|
2212
|
+
*/
|
|
2213
|
+
readonly top?: ThreadEndStyle;
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
/**
|
|
2217
|
+
* Direction in which a conventional helical thread advances around +Z.
|
|
2218
|
+
*/
|
|
2219
|
+
export declare type ThreadHandedness = "left" | "right";
|
|
2220
|
+
|
|
2221
|
+
/** Radial envelope toward which a blunt lead-in collapses. */
|
|
2222
|
+
export declare type ThreadLeadInEnvelope = "major" | "minor";
|
|
2223
|
+
|
|
2224
|
+
/** BOSL2-compatible cross-section scaling curve for a blunt thread lead-in. */
|
|
2225
|
+
export declare type ThreadLeadInShape = "cut" | "linear" | "smooth" | "sqrt";
|
|
2226
|
+
|
|
2227
|
+
/**
|
|
2228
|
+
* A validated immutable periodic thread profile in `[axial, radial]` millimetres.
|
|
2229
|
+
*/
|
|
2230
|
+
export declare interface ThreadProfile {
|
|
2231
|
+
/** Axial width of the flat at the major envelope. */
|
|
2232
|
+
readonly crestFlatWidth: number;
|
|
2233
|
+
/** Radial distance from the major envelope to the root. */
|
|
2234
|
+
readonly depth: number;
|
|
2235
|
+
/** Profile family that produced this validated profile. */
|
|
2236
|
+
readonly kind: ThreadProfileSpec["kind"];
|
|
2237
|
+
/** Adjacent axial thread spacing in millimetres. */
|
|
2238
|
+
readonly pitch: number;
|
|
2239
|
+
/** Immutable open `[axial, radial]` path spanning one pitch. */
|
|
2240
|
+
readonly points: readonly Vector2[];
|
|
2241
|
+
/** Axial width of the flat at the minor envelope. */
|
|
2242
|
+
readonly rootFlatWidth: number;
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2245
|
+
/** Fields shared by all thread profile specifications. */
|
|
2246
|
+
declare interface ThreadProfileBaseSpec {
|
|
2247
|
+
/** Adjacent axial thread spacing in millimetres. */
|
|
2248
|
+
readonly pitch: number;
|
|
2249
|
+
/** Optional numerical tolerance overrides. */
|
|
2250
|
+
readonly tolerance?: GeometryToleranceOptions;
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
/**
|
|
2254
|
+
* Supported built-in and caller-defined thread profiles.
|
|
2255
|
+
*/
|
|
2256
|
+
declare type ThreadProfileSpec =
|
|
2257
|
+
| AcmeThreadProfileSpec
|
|
2258
|
+
| ButtressThreadProfileSpec
|
|
2259
|
+
| CustomThreadProfileSpec
|
|
2260
|
+
| SquareThreadProfileSpec
|
|
2261
|
+
| TrapezoidalThreadProfileSpec
|
|
2262
|
+
| TriangularThreadProfileSpec;
|
|
2263
|
+
|
|
2264
|
+
/** Helical ridge mesh construction. */
|
|
2265
|
+
export declare function threadRidge(options: ThreadRidgeOptions): Solid;
|
|
2266
|
+
|
|
2267
|
+
/** Parameters for a helical ridge before solid construction. */
|
|
2268
|
+
export declare type ThreadRidgeOptions = HelicalThreadRidgeMeshOptions;
|
|
2269
|
+
|
|
2270
|
+
/** Explicit copied topology inspection; not needed for section operations. */
|
|
2271
|
+
export declare function toRegion(section: Section): Region;
|
|
2272
|
+
|
|
2273
|
+
/**
|
|
2274
|
+
* Torus around +Z.
|
|
2275
|
+
*
|
|
2276
|
+
* @example Torus
|
|
2277
|
+
* ```ts
|
|
2278
|
+
* torus({ majorRadius: 12, minorRadius: 3 });
|
|
2279
|
+
* ```
|
|
2280
|
+
*/
|
|
2281
|
+
export declare function torus(options: TorusOptions): Solid;
|
|
2282
|
+
|
|
2283
|
+
/**
|
|
2284
|
+
* Dimensions and independent ring/profile tessellation for a torus around the Z axis.
|
|
2285
|
+
*/
|
|
2286
|
+
export declare interface TorusOptions extends PrimitivePlacement {
|
|
2287
|
+
/** Explicit sampling ceilings, bounded by the host policy. */
|
|
2288
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2289
|
+
/** Radius from the Z axis to the profile center, in millimetres; greater than `minorRadius`. */
|
|
2290
|
+
readonly majorRadius: number;
|
|
2291
|
+
/** Exact segment count around the Z axis; omitted uses adaptive resolution. */
|
|
2292
|
+
readonly majorSegments?: number;
|
|
2293
|
+
/** Radius of the swept circular profile in millimetres. */
|
|
2294
|
+
readonly minorRadius: number;
|
|
2295
|
+
/** Exact segment count around the swept profile; omitted uses adaptive resolution. */
|
|
2296
|
+
readonly minorSegments?: number;
|
|
2297
|
+
/** Operation-level physical tessellation policy over the active model-wide policy. */
|
|
2298
|
+
readonly resolution?: GeometryResolution;
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
/** Copies a handle to manufacturing mesh buffers. */
|
|
2302
|
+
export declare function toTriangleMesh(solid: Solid): TriangleMesh;
|
|
2303
|
+
|
|
2304
|
+
/** Row-major affine XY matrix. Translation occupies m02/m12; final row is [0, 0, 1]. */
|
|
2305
|
+
export declare type Transform2 = readonly [
|
|
2306
|
+
m00: number,
|
|
2307
|
+
m01: number,
|
|
2308
|
+
m02: number,
|
|
2309
|
+
m10: number,
|
|
2310
|
+
m11: number,
|
|
2311
|
+
m12: number,
|
|
2312
|
+
m20: number,
|
|
2313
|
+
m21: number,
|
|
2314
|
+
m22: number,
|
|
2315
|
+
];
|
|
2316
|
+
|
|
2317
|
+
/**
|
|
2318
|
+
* A row-major affine 4x4 matrix applied to column vectors.
|
|
2319
|
+
*
|
|
2320
|
+
* Translation occupies indices 3, 7, and 11. The final row must be
|
|
2321
|
+
* `[0, 0, 0, 1]` within the active geometry tolerance.
|
|
2322
|
+
*/
|
|
2323
|
+
export declare type Transform3 = readonly [
|
|
2324
|
+
m00: number,
|
|
2325
|
+
m01: number,
|
|
2326
|
+
m02: number,
|
|
2327
|
+
m03: number,
|
|
2328
|
+
m10: number,
|
|
2329
|
+
m11: number,
|
|
2330
|
+
m12: number,
|
|
2331
|
+
m13: number,
|
|
2332
|
+
m20: number,
|
|
2333
|
+
m21: number,
|
|
2334
|
+
m22: number,
|
|
2335
|
+
m23: number,
|
|
2336
|
+
m30: number,
|
|
2337
|
+
m31: number,
|
|
2338
|
+
m32: number,
|
|
2339
|
+
m33: number,
|
|
2340
|
+
];
|
|
2341
|
+
|
|
2342
|
+
/** Trapezoidal thread profile with a configurable included angle. */
|
|
2343
|
+
declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
2344
|
+
/** Selects the trapezoidal profile family. */
|
|
2345
|
+
readonly kind: "trapezoidal";
|
|
2346
|
+
/**
|
|
2347
|
+
* Radial depth in millimetres.
|
|
2348
|
+
* @defaultValue `pitch / 2`
|
|
2349
|
+
*/
|
|
2350
|
+
readonly depth?: number;
|
|
2351
|
+
/**
|
|
2352
|
+
* Included flank angle in degrees. Use `90` for printable 45-degree slopes.
|
|
2353
|
+
* @defaultValue `30`
|
|
2354
|
+
*/
|
|
2355
|
+
readonly threadAngle?: number;
|
|
2356
|
+
}
|
|
2357
|
+
|
|
2358
|
+
/**
|
|
2359
|
+
* A topology-preserving indexed triangle mesh with XYZ vertex positions.
|
|
2360
|
+
*/
|
|
2361
|
+
export declare interface TriangleMesh {
|
|
2362
|
+
/** Three unsigned vertex indices per triangle. */
|
|
2363
|
+
readonly indices: Uint32Array;
|
|
2364
|
+
/** Flat XYZ coordinates, three finite values per vertex. */
|
|
2365
|
+
readonly positions: Float32Array;
|
|
2366
|
+
}
|
|
2367
|
+
|
|
2368
|
+
/**
|
|
2369
|
+
* Measurements and optional edge-connected topology from one validated mesh traversal.
|
|
2370
|
+
*/
|
|
2371
|
+
export declare interface TriangleMeshAnalysis extends TriangleMeshMeasurements {
|
|
2372
|
+
/** Number of referenced edge-connected components when `includeTopology` is requested. */
|
|
2373
|
+
readonly connectedComponentCount?: number;
|
|
2374
|
+
/** Number of distinct indexed undirected edges when `includeTopology` is requested. */
|
|
2375
|
+
readonly edgeCount?: number;
|
|
2376
|
+
}
|
|
2377
|
+
|
|
2378
|
+
/**
|
|
2379
|
+
* Geometric measurements derived from a validated, non-empty triangle mesh.
|
|
2380
|
+
*/
|
|
2381
|
+
export declare interface TriangleMeshMeasurements {
|
|
2382
|
+
/** Axis-aligned bounds. */
|
|
2383
|
+
readonly bounds: Bounds3;
|
|
2384
|
+
/** Signed enclosed volume; positive values correspond to outward winding. */
|
|
2385
|
+
readonly signedVolume: number;
|
|
2386
|
+
/** Sum of all triangle areas in squared model units. */
|
|
2387
|
+
readonly surfaceArea: number;
|
|
2388
|
+
/** Number of indexed triangles. */
|
|
2389
|
+
readonly triangleCount: number;
|
|
2390
|
+
/** Number of distinct entries in the position buffer. */
|
|
2391
|
+
readonly vertexCount: number;
|
|
2392
|
+
}
|
|
2393
|
+
|
|
2394
|
+
/**
|
|
2395
|
+
* ISO/UTS-like 60-degree truncated triangular profile.
|
|
2396
|
+
*/
|
|
2397
|
+
declare interface TriangularThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
2398
|
+
/** Selects the 60-degree triangular profile family. */
|
|
2399
|
+
readonly kind: "triangular";
|
|
2400
|
+
/**
|
|
2401
|
+
* Crest width divided by pitch.
|
|
2402
|
+
* @defaultValue `1 / 8`
|
|
2403
|
+
*/
|
|
2404
|
+
readonly crestFlatRatio?: number;
|
|
2405
|
+
/**
|
|
2406
|
+
* Root width divided by pitch.
|
|
2407
|
+
* @defaultValue `1 / 4`
|
|
2408
|
+
*/
|
|
2409
|
+
readonly rootFlatRatio?: number;
|
|
2410
|
+
}
|
|
2411
|
+
|
|
2412
|
+
/**
|
|
2413
|
+
* Hollow +Z tube.
|
|
2414
|
+
*
|
|
2415
|
+
* @example Tube
|
|
2416
|
+
* ```ts
|
|
2417
|
+
* tube({ height: 20, outerRadius: 10, innerRadius: 6 });
|
|
2418
|
+
* ```
|
|
2419
|
+
*/
|
|
2420
|
+
export declare function tube(options: TubeOptions): Solid;
|
|
2421
|
+
|
|
2422
|
+
/**
|
|
2423
|
+
* Dimensions, placement, and tessellation for a hollow Z-axis tube.
|
|
2424
|
+
*/
|
|
2425
|
+
export declare interface TubeOptions
|
|
2426
|
+
extends CircularPrimitiveOptions, PrimitivePlacement {
|
|
2427
|
+
/**
|
|
2428
|
+
* Centers the tube on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
2429
|
+
* @defaultValue `true`
|
|
2430
|
+
*/
|
|
2431
|
+
readonly center?: boolean;
|
|
2432
|
+
/** Total height along Z in millimetres. */
|
|
2433
|
+
readonly height: number;
|
|
2434
|
+
/** Positive inner radius in millimetres. */
|
|
2435
|
+
readonly innerRadius: number;
|
|
2436
|
+
/** Outer radius in millimetres; greater than {@link TubeOptions.innerRadius}. */
|
|
2437
|
+
readonly outerRadius: number;
|
|
2438
|
+
}
|
|
2439
|
+
|
|
2440
|
+
/**
|
|
2441
|
+
* Robust union.
|
|
2442
|
+
*
|
|
2443
|
+
* @example Union
|
|
2444
|
+
* ```ts
|
|
2445
|
+
* const block = box({ size: 20 });
|
|
2446
|
+
* const cap = sphere({ radius: 10 }).translate([0, 0, 10]);
|
|
2447
|
+
* union([block, cap]);
|
|
2448
|
+
* ```
|
|
2449
|
+
*/
|
|
2450
|
+
export declare function union(solids: readonly Solid[]): Solid;
|
|
2451
|
+
|
|
2452
|
+
/** Native filled section union; dimensions cannot be mixed. */
|
|
2453
|
+
export declare function union(sections: readonly Section[]): Section;
|
|
2454
|
+
|
|
2455
|
+
/** A two-dimensional Cartesian vector or point. */
|
|
2456
|
+
export declare type Vector2 = readonly [x: number, y: number];
|
|
2457
|
+
|
|
2458
|
+
/** A three-dimensional Cartesian vector or point. */
|
|
2459
|
+
export declare type Vector3 = readonly [x: number, y: number, z: number];
|
|
2460
|
+
|
|
2461
|
+
/**
|
|
2462
|
+
* Immutable vector layout with no browser, font parser, or kernel ownership.
|
|
2463
|
+
*/
|
|
2464
|
+
export declare interface VectorTextLayout {
|
|
2465
|
+
/** Nonzero-filled path data in millimetres, positive Y upward; empty for text with no ink. */
|
|
2466
|
+
readonly paths: readonly string[];
|
|
2467
|
+
/** Exact measurements of these paths and their logical text layout. */
|
|
2468
|
+
readonly metrics: VectorTextMetrics;
|
|
2469
|
+
}
|
|
2470
|
+
|
|
2471
|
+
/** Text measurements from the same immutable layout that supplies geometry and SVG outlines. */
|
|
2472
|
+
export declare interface VectorTextMetrics {
|
|
2473
|
+
/** Visible curve bounds after alignment, or null when the text has no ink. */
|
|
2474
|
+
readonly bounds: Bounds2 | null;
|
|
2475
|
+
/** Unaligned logical advance and negative baseline displacement in mm; arcs retain [arc length, 0]. */
|
|
2476
|
+
readonly advance: readonly [number, number];
|
|
2477
|
+
/** Maximum logical line advance in millimetres, including spaces; arc length on circular baselines. */
|
|
2478
|
+
readonly logicalWidth: number;
|
|
2479
|
+
/** Selected font's ascender distance above a baseline in millimetres, independent of the text. */
|
|
2480
|
+
readonly ascent: number;
|
|
2481
|
+
/** Selected font's descender distance below a baseline in millimetres, a non-negative value. */
|
|
2482
|
+
readonly descent: number;
|
|
2483
|
+
/** Actual distance between baselines in millimetres. */
|
|
2484
|
+
readonly lineHeight: number;
|
|
2485
|
+
/** Number of lines, including empty and trailing lines; empty text occupies one line. */
|
|
2486
|
+
readonly lineCount: number;
|
|
2487
|
+
}
|
|
2488
|
+
|
|
2489
|
+
export {};
|