@metamesh/modeling 0.14.0 → 0.16.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 +61 -0
- package/README.md +55 -13
- package/dist/api/engine.d.ts +15 -7
- package/dist/api/geometry.d.ts +853 -562
- package/dist/api/index.d.ts +604 -227
- package/dist/api/text.d.ts +9 -7
- package/dist/docs/guides/concepts.md +295 -91
- package/dist/docs/guides/fonts.md +9 -8
- package/dist/docs/guides/fundamentals.md +22 -23
- package/dist/docs/guides/generation.md +24 -23
- package/dist/docs/guides/hosting.md +26 -11
- package/dist/docs/guides/recipes.md +74 -48
- package/dist/docs/guides/standalone-model.md +42 -0
- package/dist/docs/manifest.json +1555 -749
- package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
- package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
- package/dist/docs/reference/engine/GenerationOptions.md +1 -1
- package/dist/docs/reference/engine/GeometryResource.md +1 -1
- package/dist/docs/reference/engine/ModelDependencies.md +1 -1
- package/dist/docs/reference/engine/ModelEngine.md +1 -1
- package/dist/docs/reference/engine/ModelEngineOptions.md +4 -8
- package/dist/docs/reference/engine/ModelSession.md +1 -1
- package/dist/docs/reference/engine/ModelSnapshot.md +21 -10
- package/dist/docs/reference/engine/SessionOptions.md +1 -1
- package/dist/docs/reference/engine/SnapshotPart.md +6 -3
- package/dist/docs/reference/engine/categories/host-lifecycle.md +7 -2
- package/dist/docs/reference/engine/createModelEngine.md +3 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
- package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
- package/dist/docs/reference/engine/validateModel.md +1 -1
- package/dist/docs/reference/engine.md +6 -2
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
- package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +6 -5
- package/dist/docs/reference/geometry/ArcCurve2.md +11 -7
- package/dist/docs/reference/geometry/ArcCurve3.md +13 -9
- package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +11 -5
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +2 -1
- package/dist/docs/reference/geometry/Bounds2-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds2Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds2Input.md +21 -0
- package/dist/docs/reference/geometry/Bounds3-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
- package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
- package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
- package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
- package/dist/docs/reference/geometry/BoxEdge.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/geometry/BoxOptions.md +10 -10
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -7
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
- package/dist/docs/reference/geometry/Contour.md +10 -4
- package/dist/docs/reference/geometry/ContourCurve.md +5 -1
- package/dist/docs/reference/geometry/ContourPoint.md +6 -1
- package/dist/docs/reference/geometry/ContourSegment.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
- package/dist/docs/reference/geometry/Curve2.md +5 -1
- package/dist/docs/reference/geometry/Curve3.md +5 -1
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +9 -3
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +6 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -3
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +7 -3
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +11 -6
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
- package/dist/docs/reference/geometry/EndTreatments.md +1 -1
- package/dist/docs/reference/geometry/ExtrudeOptions.md +10 -6
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -5
- package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
- package/dist/docs/reference/geometry/Frame3.md +10 -6
- package/dist/docs/reference/geometry/GeometryError.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +5 -5
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +11 -5
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
- package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +9 -5
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +10 -6
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +10 -6
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
- package/dist/docs/reference/geometry/LineCurve2.md +8 -4
- package/dist/docs/reference/geometry/LineCurve3.md +8 -4
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
- package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +8 -4
- package/dist/docs/reference/geometry/LoftOptions.md +5 -1
- package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
- package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
- package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
- package/dist/docs/reference/geometry/Path2-type.md +196 -0
- package/dist/docs/reference/geometry/Path2Data.md +50 -0
- package/dist/docs/reference/geometry/Path2Input.md +20 -0
- package/dist/docs/reference/geometry/Path3-type.md +196 -0
- package/dist/docs/reference/geometry/Path3Data.md +50 -0
- package/dist/docs/reference/geometry/Path3Input.md +20 -0
- package/dist/docs/reference/geometry/PathFrame.md +9 -5
- package/dist/docs/reference/geometry/PathLocation.md +69 -0
- package/dist/docs/reference/geometry/PathNormalGuide.md +10 -5
- package/dist/docs/reference/geometry/PathOptions.md +38 -0
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
- package/dist/docs/reference/geometry/PathPlacement.md +8 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +84 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
- package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +26 -22
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
- package/dist/docs/reference/geometry/PolygonData.md +7 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -4
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +31 -0
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +104 -0
- package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
- package/dist/docs/reference/geometry/Profile.md +8 -2
- package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
- package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
- package/dist/docs/reference/geometry/RackPitchSpec.md +10 -5
- package/dist/docs/reference/geometry/RadialPatternOptions.md +17 -22
- package/dist/docs/reference/geometry/RadialSizing.md +1 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
- package/dist/docs/reference/geometry/RegionData.md +6 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +7 -3
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +13 -4
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
- package/dist/docs/reference/geometry/SampleContourOptions.md +7 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +7 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
- package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
- package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
- package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +7 -3
- package/dist/docs/reference/geometry/SphereOptions.md +3 -3
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/StrokeCap.md +14 -0
- package/dist/docs/reference/geometry/StrokeJoin.md +14 -0
- package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +11 -7
- package/dist/docs/reference/geometry/SvgImportOptions.md +5 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +6 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +19 -15
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +16 -11
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +14 -9
- package/dist/docs/reference/geometry/SweepOptions.md +10 -6
- package/dist/docs/reference/geometry/SweepOrientation.md +11 -7
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +9 -5
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +7 -3
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
- package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +7 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadRole.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +10 -6
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
- package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +10 -6
- package/dist/docs/reference/geometry/TorusOptions.md +8 -8
- package/dist/docs/reference/geometry/Transform2-type.md +6 -5
- package/dist/docs/reference/geometry/Transform2Data.md +15 -0
- package/dist/docs/reference/geometry/Transform2Input.md +4 -3
- package/dist/docs/reference/geometry/Transform3-type.md +6 -5
- package/dist/docs/reference/geometry/Transform3Data.md +18 -0
- package/dist/docs/reference/geometry/Transform3Input.md +4 -3
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +9 -4
- package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +8 -4
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +8 -4
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +8 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/TubeOptions.md +8 -8
- package/dist/docs/reference/geometry/Vector2-type.md +6 -5
- package/dist/docs/reference/geometry/Vector2Data.md +15 -0
- package/dist/docs/reference/geometry/Vector2Input.md +4 -3
- package/dist/docs/reference/geometry/Vector3-type.md +6 -5
- package/dist/docs/reference/geometry/Vector3Data.md +15 -0
- package/dist/docs/reference/geometry/Vector3Input.md +4 -3
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +8 -3
- package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +5 -1
- package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
- package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
- package/dist/docs/reference/geometry/add2.md +7 -6
- package/dist/docs/reference/geometry/add3.md +7 -6
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +6 -2
- package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +10 -9
- package/dist/docs/reference/geometry/anchorFrame3.md +9 -5
- package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
- package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
- package/dist/docs/reference/geometry/{attachTransform.md → attachmentTransform3.md} +16 -15
- package/dist/docs/reference/geometry/bounds2.md +38 -0
- package/dist/docs/reference/geometry/bounds3.md +38 -0
- package/dist/docs/reference/geometry/boundsCenter.md +12 -11
- package/dist/docs/reference/geometry/boundsFromSize.md +12 -11
- package/dist/docs/reference/geometry/boundsSize.md +12 -11
- package/dist/docs/reference/geometry/boxAnchor3.md +7 -6
- package/dist/docs/reference/geometry/categories/bounds-layout.md +23 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +27 -13
- package/dist/docs/reference/geometry/categories/mechanical.md +27 -15
- package/dist/docs/reference/geometry/categories/meshes.md +18 -10
- package/dist/docs/reference/geometry/categories/pattern-placement.md +11 -9
- package/dist/docs/reference/geometry/categories/primitive-options.md +10 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -13
- package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +25 -16
- package/dist/docs/reference/geometry/categories/vector-import.md +15 -9
- package/dist/docs/reference/geometry/circleContour.md +5 -1
- package/dist/docs/reference/geometry/closeToAxis.md +14 -5
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +9 -5
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +9 -5
- package/dist/docs/reference/geometry/composeTransform3.md +7 -6
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +14 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +17 -7
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
- package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +8 -4
- package/dist/docs/reference/geometry/containsBounds.md +10 -9
- package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
- package/dist/docs/reference/geometry/cross2.md +6 -5
- package/dist/docs/reference/geometry/cross3.md +7 -6
- package/dist/docs/reference/geometry/cylinderAnchor3.md +7 -6
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/distance2.md +6 -5
- package/dist/docs/reference/geometry/distance3.md +6 -5
- package/dist/docs/reference/geometry/distributeAlongPath.md +12 -6
- package/dist/docs/reference/geometry/dot2.md +6 -5
- package/dist/docs/reference/geometry/dot3.md +6 -5
- package/dist/docs/reference/geometry/ellipseContour.md +5 -1
- package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
- package/dist/docs/reference/geometry/extrudeMesh.md +12 -8
- package/dist/docs/reference/geometry/fitBounds.md +10 -9
- package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
- package/dist/docs/reference/geometry/frameTransform3.md +5 -4
- package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +7 -3
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
- package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +9 -5
- package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +9 -5
- package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
- package/dist/docs/reference/geometry/isGeometryError.md +5 -2
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
- package/dist/docs/reference/geometry/layoutRow.md +11 -7
- package/dist/docs/reference/geometry/length2.md +5 -4
- package/dist/docs/reference/geometry/length3.md +5 -4
- package/dist/docs/reference/geometry/lerp2.md +7 -6
- package/dist/docs/reference/geometry/lerp3.md +7 -6
- package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/loftMesh.md +6 -1
- package/dist/docs/reference/geometry/matchProfiles.md +11 -2
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
- package/dist/docs/reference/geometry/meshBounds.md +8 -4
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +7 -3
- package/dist/docs/reference/geometry/normalize2.md +10 -6
- package/dist/docs/reference/geometry/normalize3.md +10 -6
- package/dist/docs/reference/geometry/normalizeContour.md +8 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +15 -11
- package/dist/docs/reference/geometry/path2.md +54 -0
- package/dist/docs/reference/geometry/path3.md +49 -0
- package/dist/docs/reference/geometry/pathPatternTransforms.md +13 -9
- package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +13 -4
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +15 -4
- package/dist/docs/reference/geometry/preflightSvgRegion.md +15 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +14 -4
- package/dist/docs/reference/geometry/preflightThreadedRod.md +14 -4
- package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
- package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
- package/dist/docs/reference/geometry/rectangleContour.md +10 -3
- package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
- package/dist/docs/reference/geometry/regionArea.md +5 -1
- package/dist/docs/reference/geometry/regionBounds.md +8 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +9 -5
- package/dist/docs/reference/geometry/resamplePolyline2.md +9 -5
- package/dist/docs/reference/geometry/resamplePolyline3.md +9 -5
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +4 -4
- package/dist/docs/reference/geometry/resolveArcSegments.md +4 -4
- package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +7 -3
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
- package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -4
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/revolveMesh.md +14 -10
- package/dist/docs/reference/geometry/rotate2.md +6 -5
- package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -6
- package/dist/docs/reference/geometry/sampleContour.md +14 -4
- package/dist/docs/reference/geometry/sampleCurve2.md +8 -5
- package/dist/docs/reference/geometry/sampleCurve3.md +6 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleHelix.md +13 -5
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
- package/dist/docs/reference/geometry/sampleSideProfile.md +17 -7
- package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +6 -2
- package/dist/docs/reference/geometry/scale2.md +6 -5
- package/dist/docs/reference/geometry/scale3.md +6 -5
- package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
- package/dist/docs/reference/geometry/signedContourArea.md +5 -1
- package/dist/docs/reference/geometry/starContour.md +8 -4
- package/dist/docs/reference/geometry/strokeRegionData.md +67 -0
- package/dist/docs/reference/geometry/subtract2.md +7 -6
- package/dist/docs/reference/geometry/subtract3.md +7 -6
- package/dist/docs/reference/geometry/sweepMesh.md +13 -9
- package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +10 -6
- package/dist/docs/reference/geometry/transform2.md +14 -7
- package/dist/docs/reference/geometry/transform3.md +16 -7
- package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
- package/dist/docs/reference/geometry/transformRegionData.md +5 -1
- package/dist/docs/reference/geometry/transformTriangleMesh.md +10 -6
- package/dist/docs/reference/geometry/translationTransform3.md +7 -6
- package/dist/docs/reference/geometry/triangulateContour.md +5 -1
- package/dist/docs/reference/geometry/validateSolidMesh.md +10 -3
- package/dist/docs/reference/geometry/validateTransform3.md +6 -5
- package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/vector2.md +10 -2
- package/dist/docs/reference/geometry/vector3.md +10 -2
- package/dist/docs/reference/geometry.md +8 -6
- package/dist/docs/reference/model/Anchor3.md +6 -5
- package/dist/docs/reference/model/AttachOptions.md +11 -5
- package/dist/docs/reference/model/Bounds2-type.md +125 -0
- package/dist/docs/reference/model/Bounds2Data.md +44 -0
- package/dist/docs/reference/model/Bounds2Input.md +19 -0
- package/dist/docs/reference/model/Bounds3-type.md +125 -0
- package/dist/docs/reference/model/Bounds3Data.md +44 -0
- package/dist/docs/reference/model/Bounds3Input.md +19 -0
- package/dist/docs/reference/model/BoxEdge.md +1 -1
- package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/model/BoxOptions.md +10 -10
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/CircleContourOptions.md +1 -1
- package/dist/docs/reference/model/CircleOptions.md +3 -3
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/model/Computed.md +6 -1
- package/dist/docs/reference/model/ComputedValue.md +5 -1
- package/dist/docs/reference/model/Contour.md +6 -4
- package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/model/CorrespondingContour.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/model/CylinderOptions.md +3 -3
- package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
- package/dist/docs/reference/model/EdgeTreatment.md +1 -1
- package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
- package/dist/docs/reference/model/EllipseOptions.md +3 -3
- package/dist/docs/reference/model/EndTreatments.md +1 -1
- package/dist/docs/reference/model/ExtrudeOptions.md +6 -6
- package/dist/docs/reference/model/FinalizedModel.md +20 -10
- package/dist/docs/reference/model/FinalizedPart.md +1 -1
- package/dist/docs/reference/model/Frame3.md +6 -6
- package/dist/docs/reference/model/GenerateCallback.md +5 -1
- package/dist/docs/reference/model/GenerateContext.md +5 -1
- package/dist/docs/reference/model/GeneratedPart.md +5 -1
- package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
- package/dist/docs/reference/model/GenerationError.md +5 -1
- package/dist/docs/reference/model/GeometryResolution.md +5 -5
- package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/model/GridPatternOptions.md +12 -5
- package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +4 -3
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
- package/dist/docs/reference/model/HullOptions.md +5 -5
- package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
- package/dist/docs/reference/model/ImplicitOptions.md +6 -6
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +5 -4
- package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +34 -0
- package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
- package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
- package/dist/docs/reference/model/LinearPatternOptions.md +13 -5
- package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/model/LoftOptions.md +1 -1
- package/dist/docs/reference/model/LoftPlacement.md +1 -1
- package/dist/docs/reference/model/LoftStation.md +3 -3
- package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/model/ModelProgram.md +5 -1
- package/dist/docs/reference/model/ModelingLimits.md +1 -1
- package/dist/docs/reference/model/NumericArray.md +8 -1
- package/dist/docs/reference/model/PartGeometry.md +5 -1
- package/dist/docs/reference/model/PartOptions.md +5 -1
- package/dist/docs/reference/model/Path2-type.md +196 -0
- package/dist/docs/reference/model/Path2Data.md +50 -0
- package/dist/docs/reference/model/Path2Input.md +20 -0
- package/dist/docs/reference/model/Path3-type.md +196 -0
- package/dist/docs/reference/model/Path3Data.md +50 -0
- package/dist/docs/reference/model/Path3Input.md +20 -0
- package/dist/docs/reference/model/PathLocation.md +69 -0
- package/dist/docs/reference/model/PathNormalGuide.md +6 -5
- package/dist/docs/reference/model/PathOptions.md +38 -0
- package/dist/docs/reference/model/PathPatternOptions.md +4 -3
- package/dist/docs/reference/model/PathResamplingOptions.md +83 -0
- package/dist/docs/reference/model/PatternSource.md +2 -1
- package/dist/docs/reference/model/Pivot2Options.md +2 -1
- package/dist/docs/reference/model/Pivot3Options.md +2 -1
- package/dist/docs/reference/model/PlaneOptions.md +3 -3
- package/dist/docs/reference/model/PolygonData.md +3 -2
- package/dist/docs/reference/model/PolygonOptions.md +8 -8
- package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +8 -7
- package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +42 -20
- package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
- package/dist/docs/reference/model/Profile.md +4 -2
- package/dist/docs/reference/model/ProfileComponent2.md +1 -1
- package/dist/docs/reference/model/ProfileContour2.md +4 -2
- package/dist/docs/reference/model/ProfileSpan2.md +3 -3
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/model/RadialPatternOptions.md +18 -22
- package/dist/docs/reference/model/RadialSizing.md +1 -1
- package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
- package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/model/RectangleOptions.md +10 -10
- package/dist/docs/reference/model/RegionData.md +2 -2
- package/dist/docs/reference/model/RegularPolygonOptions.md +5 -5
- package/dist/docs/reference/model/RevolveOptions.md +9 -4
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Section.md +20 -12
- package/dist/docs/reference/model/SectionHullOptions.md +5 -5
- package/dist/docs/reference/model/SectionInspection.md +10 -10
- package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
- package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Solid.md +31 -7
- package/dist/docs/reference/model/SolidInspection.md +7 -7
- package/dist/docs/reference/model/{SolidRayHit.md → SolidSegmentHit.md} +6 -6
- package/dist/docs/reference/model/SphereOptions.md +3 -3
- package/dist/docs/reference/model/StarOptions.md +10 -10
- package/dist/docs/reference/model/{StrokePathCap.md → StrokeCap.md} +3 -3
- package/dist/docs/reference/model/{StrokePathJoin.md → StrokeJoin.md} +3 -3
- package/dist/docs/reference/model/StrokeOptions.md +6 -6
- package/dist/docs/reference/model/SvgOrigin.md +1 -1
- package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
- package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
- package/dist/docs/reference/model/SweepOptions.md +6 -6
- package/dist/docs/reference/model/SweepOrientation.md +7 -7
- package/dist/docs/reference/model/TextSectionOptions.md +1 -1
- package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
- package/dist/docs/reference/model/ThreadHandedness.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
- package/dist/docs/reference/model/ThreadProfile.md +4 -3
- package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
- package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
- package/dist/docs/reference/model/ThreadedNutOptions.md +5 -4
- package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
- package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
- package/dist/docs/reference/model/ThreadedRodOptions.md +5 -4
- package/dist/docs/reference/model/TorusOptions.md +8 -8
- package/dist/docs/reference/model/Transform2-type.md +6 -5
- package/dist/docs/reference/model/Transform2Data.md +16 -0
- package/dist/docs/reference/model/Transform2Input.md +4 -3
- package/dist/docs/reference/model/Transform3-type.md +6 -5
- package/dist/docs/reference/model/Transform3Data.md +19 -0
- package/dist/docs/reference/model/Transform3Input.md +4 -3
- package/dist/docs/reference/model/TriangleMesh.md +1 -1
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +4 -4
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
- package/dist/docs/reference/model/TubeOptions.md +8 -8
- package/dist/docs/reference/model/Vector2-type.md +6 -5
- package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
- package/dist/docs/reference/model/Vector2Input.md +4 -3
- package/dist/docs/reference/model/Vector3-type.md +6 -5
- package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
- package/dist/docs/reference/model/Vector3Input.md +4 -3
- package/dist/docs/reference/model/VectorTextLayout.md +1 -1
- package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/model/anchor.md +2 -1
- package/dist/docs/reference/model/bounds2.md +36 -0
- package/dist/docs/reference/model/bounds3.md +36 -0
- package/dist/docs/reference/model/box.md +4 -4
- package/dist/docs/reference/model/castSegment.md +40 -0
- package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
- package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
- package/dist/docs/reference/model/categories/bounds.md +36 -0
- package/dist/docs/reference/model/categories/contracts.md +4 -2
- package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
- package/dist/docs/reference/model/categories/explicit-profiles.md +7 -5
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
- package/dist/docs/reference/model/categories/generation.md +11 -2
- package/dist/docs/reference/model/categories/hinges.md +38 -0
- package/dist/docs/reference/model/categories/inspection.md +12 -6
- package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
- package/dist/docs/reference/model/categories/paths.md +41 -0
- package/dist/docs/reference/model/categories/primitives.md +10 -4
- package/dist/docs/reference/model/categories/resolution.md +4 -2
- package/dist/docs/reference/model/categories/sections.md +12 -8
- package/dist/docs/reference/model/categories/threads.md +11 -8
- package/dist/docs/reference/model/categories/transforms-placement.md +23 -15
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/components.md +6 -6
- package/dist/docs/reference/model/compose.md +1 -1
- package/dist/docs/reference/model/cylinder.md +1 -1
- package/dist/docs/reference/model/distance.md +1 -1
- package/dist/docs/reference/model/ellipse.md +1 -1
- package/dist/docs/reference/model/extrude.md +3 -3
- package/dist/docs/reference/model/generate.md +5 -1
- package/dist/docs/reference/model/gridPattern.md +5 -4
- package/dist/docs/reference/model/heightfield.md +5 -2
- package/dist/docs/reference/model/hull.md +1 -1
- package/dist/docs/reference/model/immutableBuffer.md +5 -1
- package/dist/docs/reference/model/immutableMesh.md +5 -1
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/inspectSection.md +1 -1
- package/dist/docs/reference/model/inspectSolid.md +1 -1
- package/dist/docs/reference/model/internalThreadCutter.md +5 -4
- package/dist/docs/reference/model/intersect.md +1 -1
- package/dist/docs/reference/model/isEmpty.md +1 -1
- package/dist/docs/reference/model/knuckleHinge.md +47 -0
- package/dist/docs/reference/model/linearPattern.md +5 -4
- package/dist/docs/reference/model/loft.md +1 -1
- package/dist/docs/reference/model/matchProfiles.md +2 -2
- package/dist/docs/reference/model/minkowskiSum.md +1 -1
- package/dist/docs/reference/model/path2.md +54 -0
- package/dist/docs/reference/model/path3.md +49 -0
- package/dist/docs/reference/model/pathPattern.md +14 -12
- package/dist/docs/reference/model/polygon.md +8 -5
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +9 -3
- package/dist/docs/reference/model/preflightThreadedNut.md +9 -3
- package/dist/docs/reference/model/preflightThreadedRod.md +9 -3
- package/dist/docs/reference/model/radialPattern.md +6 -37
- package/dist/docs/reference/model/rectangle.md +7 -4
- package/dist/docs/reference/model/regularPolygon.md +1 -1
- package/dist/docs/reference/model/revolve.md +5 -4
- package/dist/docs/reference/model/solidFromMesh.md +1 -1
- package/dist/docs/reference/model/sphere.md +1 -1
- package/dist/docs/reference/model/split.md +1 -1
- package/dist/docs/reference/model/splitByPlane.md +1 -1
- package/dist/docs/reference/model/star.md +4 -4
- package/dist/docs/reference/model/stroke.md +8 -8
- package/dist/docs/reference/model/svgPathSection.md +1 -1
- package/dist/docs/reference/model/svgSection.md +1 -1
- package/dist/docs/reference/model/sweep.md +7 -7
- package/dist/docs/reference/model/textSection.md +1 -1
- package/dist/docs/reference/model/threadRidge.md +3 -2
- package/dist/docs/reference/model/threadedNut.md +5 -4
- package/dist/docs/reference/model/threadedRod.md +5 -4
- package/dist/docs/reference/model/torus.md +3 -3
- package/dist/docs/reference/model/transform2.md +14 -7
- package/dist/docs/reference/model/transform3.md +16 -7
- package/dist/docs/reference/model/tube.md +3 -3
- package/dist/docs/reference/model/union.md +1 -1
- package/dist/docs/reference/model/vector2.md +10 -2
- package/dist/docs/reference/model/vector3.md +10 -2
- package/dist/docs/reference/model.md +17 -9
- package/dist/docs/reference/text/Bounds2Data.md +34 -0
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
- package/dist/docs/reference/text/Vector2Data.md +7 -0
- package/dist/docs/reference/text/VectorFont.md +2 -2
- package/dist/docs/reference/text/VectorFontOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +3 -3
- package/dist/docs/reference/text/VectorTextLayout.md +1 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/text/VectorTextOptions.md +1 -1
- package/dist/docs/reference/text/categories/font-preparation.md +8 -6
- package/dist/docs/reference/text/prepareVectorFont.md +2 -2
- package/dist/docs/reference/text.md +4 -2
- package/dist/engine/construction-operations.js +31 -14
- package/dist/engine/execution.js +39 -8
- package/dist/engine/extrusion-finishing.js +1 -1
- package/dist/engine/index.js +6 -1
- package/dist/engine/inspection-operations.js +13 -11
- package/dist/engine/knuckle-hinge-operation.js +85 -0
- package/dist/engine/loft-operations.js +35 -14
- package/dist/engine/mechanical-operations.js +3 -1
- package/dist/engine/model-summary.js +8 -5
- package/dist/engine/modeling-context.js +8 -1
- package/dist/engine/native/material-components.js +305 -0
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/native/threads.js +3 -3
- package/dist/engine/native/transforms.js +5 -7
- package/dist/engine/operation-environment.js +2 -2
- package/dist/engine/pattern-operations.js +1 -1
- package/dist/engine/placement.js +2 -2
- package/dist/engine/primitive-anchors.js +17 -17
- package/dist/engine/primitive-operations.js +1 -1
- package/dist/engine/primitive-profiles.js +7 -7
- package/dist/engine/profile-mesh.js +7 -7
- package/dist/engine/recipe-realization.js +10 -2
- package/dist/engine/section-operations.js +33 -8
- package/dist/engine/session-snapshot.js +14 -4
- package/dist/engine/session.js +10 -5
- package/dist/engine/shape-anchors.js +3 -3
- package/dist/engine/transform-operations.js +27 -27
- package/dist/geometry/anchors.js +40 -33
- package/dist/geometry/bounds-value.js +93 -0
- package/dist/geometry/bounds.js +10 -8
- package/dist/geometry/curves/sampling.js +15 -16
- package/dist/geometry/edge-finishing.js +1 -1
- package/dist/geometry/errors.js +1 -0
- package/dist/geometry/extrusion.js +13 -16
- package/dist/geometry/heightfield.js +12 -1
- package/dist/geometry/index.js +12 -11
- package/dist/geometry/loft/loft-simple-mesh.js +6 -6
- package/dist/geometry/loft/loft.js +22 -13
- package/dist/geometry/math/immutable-value.js +1 -1
- package/dist/geometry/math/vector-value.js +11 -3
- package/dist/geometry/math/vector2.js +1 -0
- package/dist/geometry/math/vector3.js +1 -0
- package/dist/geometry/mechanical/gear-motion.js +3 -3
- package/dist/geometry/mechanical/gears.js +38 -38
- package/dist/geometry/mechanical/index.js +4 -3
- package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
- package/dist/geometry/mechanical/standards.js +1 -1
- package/dist/geometry/mechanical/thread-helices.js +2 -3
- package/dist/geometry/mechanical/thread-mesh-plan.js +11 -7
- package/dist/geometry/mechanical/thread-mesh.js +7 -7
- package/dist/geometry/mechanical/thread-profiles.js +5 -5
- package/dist/geometry/mechanical/thread-solids.js +31 -6
- package/dist/geometry/mechanical/thread-surface.js +1 -1
- package/dist/geometry/mechanical/threads.js +8 -8
- package/dist/geometry/mesh/mesh-centroid.js +1 -0
- package/dist/geometry/mesh/mesh-planar.js +25 -27
- package/dist/geometry/mesh/mesh-quality.js +5 -5
- package/dist/geometry/mesh/mesh-signature.js +13 -13
- package/dist/geometry/mesh/mesh-solid.js +8 -7
- package/dist/geometry/mesh/mesh.js +4 -15
- package/dist/geometry/paths/closest-point.js +8 -19
- package/dist/geometry/paths/frames.js +42 -11
- package/dist/geometry/paths/helix.js +17 -6
- package/dist/geometry/paths/path-value.js +268 -0
- package/dist/geometry/paths/planar.js +36 -23
- package/dist/geometry/paths/resampling.js +27 -5
- package/dist/geometry/patterns/placements.js +100 -27
- package/dist/geometry/patterns.js +5 -3
- package/dist/geometry/polygon-clipping.js +17 -0
- package/dist/geometry/profiles/contour.js +7 -6
- package/dist/geometry/profiles/matched.js +5 -4
- package/dist/geometry/profiles/profiles.js +4 -4
- package/dist/geometry/profiles/rectangle.js +14 -5
- package/dist/geometry/profiles/side-profile.js +9 -7
- package/dist/geometry/profiles/span-sampling.js +1 -1
- package/dist/geometry/resolution.js +34 -34
- package/dist/geometry/revolve/revolve-mesh.js +12 -7
- package/dist/geometry/stroke-path.js +12 -27
- package/dist/geometry/svg/fill.js +7 -21
- package/dist/geometry/svg-import.js +31 -25
- package/dist/geometry/sweeps/options.js +5 -4
- package/dist/geometry/sweeps/orientation.js +5 -5
- package/dist/geometry/sweeps/stations.js +10 -10
- package/dist/geometry/sweeps/sweep-closed.js +2 -2
- package/dist/geometry/sweeps/sweep-mesh.js +9 -3
- package/dist/geometry/sweeps/sweep-open.js +1 -1
- package/dist/geometry/sweeps/validation.js +4 -7
- package/dist/geometry/text-fitting.js +1 -0
- package/dist/geometry/transform-geometry.js +7 -14
- package/dist/geometry/transform-matrix.js +1 -1
- package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
- package/dist/index.js +3 -1
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +62 -10
- package/dist/model/knuckle-hinge.js +1 -0
- package/dist/model/operations.js +79 -26
- package/dist/model/recipe-declaration.js +21 -7
- package/dist/model/shape-handles.js +2 -1
- package/dist/text/index.js +15 -9
- package/dist/text/vector-text-layout.js +31 -26
- package/package.json +1 -1
- package/dist/docs/reference/geometry/Bounds2.md +0 -39
- package/dist/docs/reference/geometry/Bounds3.md +0 -39
- package/dist/docs/reference/geometry/ClosestPointOnPathOptions.md +0 -34
- package/dist/docs/reference/geometry/ClosestPointOnPathResult.md +0 -65
- package/dist/docs/reference/geometry/Path2.md +0 -14
- package/dist/docs/reference/geometry/Path3.md +0 -14
- package/dist/docs/reference/geometry/PrimitivePlacement.md +0 -31
- package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +0 -83
- package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
- package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
- package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
- package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
- package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
- package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
- package/dist/docs/reference/geometry/closestPointOnPath.md +0 -110
- package/dist/docs/reference/geometry/cumulativePathLengths.md +0 -33
- package/dist/docs/reference/geometry/measureTriangleMesh.md +0 -55
- package/dist/docs/reference/geometry/pathLength.md +0 -33
- package/dist/docs/reference/geometry/strokePathRegion.md +0 -63
- package/dist/docs/reference/geometry/transformContour.md +0 -42
- package/dist/docs/reference/geometry/transformPath2.md +0 -40
- package/dist/docs/reference/geometry/transformPath3.md +0 -33
- package/dist/docs/reference/model/Bounds2.md +0 -39
- package/dist/docs/reference/model/Bounds3.md +0 -39
- package/dist/docs/reference/model/Path2.md +0 -20
- package/dist/docs/reference/model/Transform2Matrix.md +0 -15
- package/dist/docs/reference/model/Transform3Matrix.md +0 -18
- package/dist/docs/reference/model/rayCast.md +0 -40
- package/dist/docs/reference/model/toTriangleMesh.md +0 -27
- package/dist/docs/reference/text/Bounds2.md +0 -34
- package/dist/docs/reference/text/Vector2Tuple.md +0 -7
- package/dist/geometry/paths/path.js +0 -32
package/dist/api/geometry.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/** Adds two finite XY vectors component-wise. */
|
|
15
|
-
export declare const add2: (a:
|
|
15
|
+
export declare const add2: (a: Vector2Data, b: Vector2Data) => Vector2Data;
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Adds two finite XYZ vectors component-wise.
|
|
@@ -21,7 +21,7 @@ export declare const add2: (a: Vector2Tuple, b: Vector2Tuple) => Vector2Tuple;
|
|
|
21
21
|
* add3([1, 2, 3], [4, 5, 6]); // [5, 7, 9]
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
export declare const add3: (a:
|
|
24
|
+
export declare const add3: (a: Vector3Data, b: Vector3Data) => Vector3Data;
|
|
25
25
|
|
|
26
26
|
/** Controls full-circle sampling that must satisfy one or more topology alignments. */
|
|
27
27
|
export declare interface AlignedCircularSegmentsOptions {
|
|
@@ -38,12 +38,12 @@ export declare interface AlignedCircularSegmentsOptions {
|
|
|
38
38
|
* Additional full-circle segment floor, as a safe integer of at least three.
|
|
39
39
|
* @defaultValue `3`
|
|
40
40
|
*/
|
|
41
|
-
readonly
|
|
41
|
+
readonly minSegments?: number;
|
|
42
42
|
/**
|
|
43
43
|
* Exact full-circle segment count.
|
|
44
44
|
*
|
|
45
45
|
* This takes precedence over `resolution.circularSegments` and adaptive sampling, and must
|
|
46
|
-
* already satisfy every alignment factor and `
|
|
46
|
+
* already satisfy every alignment factor and `minSegments`.
|
|
47
47
|
*/
|
|
48
48
|
readonly segments?: number;
|
|
49
49
|
/** Operation-level physical tessellation policy over the active model-wide policy. */
|
|
@@ -89,17 +89,37 @@ export declare function analyzeTriangleMeshQuality(
|
|
|
89
89
|
*/
|
|
90
90
|
export declare interface Anchor3 {
|
|
91
91
|
/** Unit outward normal used as the anchor's local +Z direction. */
|
|
92
|
-
readonly direction:
|
|
92
|
+
readonly direction: Vector3Data;
|
|
93
93
|
/** World-space attachment position. */
|
|
94
|
-
readonly position:
|
|
94
|
+
readonly position: Vector3Data;
|
|
95
95
|
/** Roll guide projected into the plane perpendicular to `direction`. */
|
|
96
|
-
readonly up:
|
|
96
|
+
readonly up: Vector3Data;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Constructs a normalized immutable attachment anchor.
|
|
101
|
+
*
|
|
102
|
+
* `up` is projected onto the plane perpendicular to `direction`, removing small
|
|
103
|
+
* input drift while preserving its roll intent.
|
|
104
|
+
*
|
|
105
|
+
* @param position - Finite anchor point in model coordinates.
|
|
106
|
+
* @param direction - Non-zero outward attachment normal.
|
|
107
|
+
* @param up - Non-parallel roll reference; defaults to +Y.
|
|
108
|
+
* @param tolerance - Optional comparison overrides.
|
|
109
|
+
* @returns A frozen anchor with unit, orthogonal direction and up vectors.
|
|
110
|
+
* @throws {@link GeometryError} For non-finite or degenerate inputs.
|
|
111
|
+
*/
|
|
112
|
+
export declare function anchor3(
|
|
113
|
+
position: Vector3Input,
|
|
114
|
+
direction: Vector3Input,
|
|
115
|
+
up?: Vector3Input,
|
|
116
|
+
tolerance?: GeometryToleranceOptions,
|
|
117
|
+
): Anchor3;
|
|
118
|
+
|
|
99
119
|
/**
|
|
100
120
|
* Converts an anchor into a right-handed frame with direction as local +Z.
|
|
101
121
|
*
|
|
102
|
-
* @param anchor - Anchor created by {@link
|
|
122
|
+
* @param anchor - Anchor created by {@link anchor3} or equivalent valid data.
|
|
103
123
|
* @param tolerance - Optional comparison overrides.
|
|
104
124
|
* @returns A normalized right-handed frame at the anchor position.
|
|
105
125
|
*/
|
|
@@ -118,9 +138,9 @@ export declare function anchorFrame3(
|
|
|
118
138
|
* @returns A fresh transformed direction.
|
|
119
139
|
*/
|
|
120
140
|
export declare function applyTransformDirection3(
|
|
121
|
-
transform:
|
|
122
|
-
direction:
|
|
123
|
-
):
|
|
141
|
+
transform: Transform3Data,
|
|
142
|
+
direction: Vector3Data,
|
|
143
|
+
): Vector3Data;
|
|
124
144
|
|
|
125
145
|
/**
|
|
126
146
|
* Applies an affine transform to a point, including translation.
|
|
@@ -130,22 +150,22 @@ export declare function applyTransformDirection3(
|
|
|
130
150
|
* @returns A fresh transformed point.
|
|
131
151
|
*/
|
|
132
152
|
export declare function applyTransformPoint3(
|
|
133
|
-
transform:
|
|
134
|
-
point:
|
|
135
|
-
):
|
|
153
|
+
transform: Transform3Data,
|
|
154
|
+
point: Vector3Data,
|
|
155
|
+
): Vector3Data;
|
|
136
156
|
|
|
137
157
|
/** Planar circular arc with counterclockwise degree angles. */
|
|
138
158
|
export declare interface ArcCurve2 {
|
|
139
159
|
/** Selects a circular arc in the XY plane. */
|
|
140
160
|
readonly kind: "arc";
|
|
141
161
|
/** Circle center in millimetres. */
|
|
142
|
-
readonly center:
|
|
162
|
+
readonly center: Vector2Data;
|
|
143
163
|
/** Positive circular radius in millimetres. */
|
|
144
164
|
readonly radius: number;
|
|
145
165
|
/** Initial angle in degrees; defaults to zero. */
|
|
146
|
-
readonly
|
|
166
|
+
readonly startAngle?: number;
|
|
147
167
|
/** Nonzero signed sweep in degrees, bounded to one complete turn. */
|
|
148
|
-
readonly
|
|
168
|
+
readonly sweepAngle: number;
|
|
149
169
|
}
|
|
150
170
|
|
|
151
171
|
/** Spatial circular arc in the plane of two orthogonal unit directions. */
|
|
@@ -153,17 +173,17 @@ export declare interface ArcCurve3 {
|
|
|
153
173
|
/** Selects a circular arc in the supplied plane. */
|
|
154
174
|
readonly kind: "arc";
|
|
155
175
|
/** Circle center in millimetres. */
|
|
156
|
-
readonly center:
|
|
176
|
+
readonly center: Vector3Data;
|
|
157
177
|
/** Positive circular radius in millimetres. */
|
|
158
178
|
readonly radius: number;
|
|
159
179
|
/** Orthogonal unit direction at zero degrees. */
|
|
160
|
-
readonly xAxis:
|
|
180
|
+
readonly xAxis: Vector3Data;
|
|
161
181
|
/** Orthogonal unit direction at positive ninety degrees. */
|
|
162
|
-
readonly yAxis:
|
|
182
|
+
readonly yAxis: Vector3Data;
|
|
163
183
|
/** Initial angle in degrees; defaults to zero. */
|
|
164
|
-
readonly
|
|
184
|
+
readonly startAngle?: number;
|
|
165
185
|
/** Nonzero signed sweep in degrees, bounded to one complete turn. */
|
|
166
|
-
readonly
|
|
186
|
+
readonly sweepAngle: number;
|
|
167
187
|
}
|
|
168
188
|
|
|
169
189
|
/**
|
|
@@ -180,20 +200,20 @@ export declare interface ArcCurve3 {
|
|
|
180
200
|
* @returns A frozen affine transform for the moving object.
|
|
181
201
|
* @throws {@link GeometryError} For invalid anchors or non-finite options.
|
|
182
202
|
*/
|
|
183
|
-
export declare function
|
|
203
|
+
export declare function attachmentTransform3(
|
|
184
204
|
source: Anchor3,
|
|
185
205
|
target: Anchor3,
|
|
186
|
-
options?:
|
|
187
|
-
):
|
|
206
|
+
options?: AttachOptions,
|
|
207
|
+
): Transform3Data;
|
|
188
208
|
|
|
189
209
|
/** Options controlling how one anchor is attached to another. */
|
|
190
|
-
export declare interface
|
|
210
|
+
export declare interface AttachOptions {
|
|
191
211
|
/** Align outward directions face-to-face (`opposed`) or in parallel (`same`). */
|
|
192
212
|
readonly alignment?: "opposed" | "same";
|
|
193
213
|
/** Separation along the target anchor's outward direction in model units. */
|
|
194
214
|
readonly gap?: number;
|
|
195
|
-
/** Additional right-handed roll about the attached direction, in
|
|
196
|
-
readonly
|
|
215
|
+
/** Additional right-handed roll about the attached direction, in degrees. */
|
|
216
|
+
readonly spin?: number;
|
|
197
217
|
/** Optional numeric comparison overrides. */
|
|
198
218
|
readonly tolerance?: GeometryToleranceOptions;
|
|
199
219
|
}
|
|
@@ -215,36 +235,86 @@ export declare type AxisAngleRotation3 =
|
|
|
215
235
|
readonly degrees?: never;
|
|
216
236
|
};
|
|
217
237
|
|
|
218
|
-
/**
|
|
219
|
-
export declare interface Bounds2 {
|
|
238
|
+
/** Immutable finite XY bounds in millimetres, with tuple coordinates for data interoperability. */
|
|
239
|
+
export declare interface Bounds2 extends Bounds2Data {
|
|
240
|
+
/** Returns nonnegative X/Y dimensions in millimetres, including zero extents. */
|
|
241
|
+
size(): Vector2;
|
|
242
|
+
/** Returns the midpoint in millimetres. */
|
|
243
|
+
center(): Vector2;
|
|
244
|
+
/** Tests positioned XY containment, including touching boundaries. */
|
|
245
|
+
containsBounds(other: Bounds2Input): boolean;
|
|
246
|
+
/** Returns this value's frozen plain record; repeated calls do not allocate. */
|
|
247
|
+
toData(): Bounds2Data;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Snapshots finite ordered XY bounds in millimetres as an immutable fluent value.
|
|
252
|
+
*
|
|
253
|
+
* Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
|
|
254
|
+
* overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
|
|
255
|
+
* Compiled Generator packages passing these values to host recipes or computed data require
|
|
256
|
+
* runtime 8.0.0 or newer in major 8.
|
|
257
|
+
*/
|
|
258
|
+
export declare function bounds2(input: Bounds2Input): Bounds2;
|
|
259
|
+
|
|
260
|
+
/** Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. */
|
|
261
|
+
export declare interface Bounds2Data {
|
|
220
262
|
/** Inclusive maximum X/Y coordinates. */
|
|
221
|
-
readonly max:
|
|
263
|
+
readonly max: Vector2Data;
|
|
222
264
|
/** Inclusive minimum X/Y coordinates. */
|
|
223
|
-
readonly min:
|
|
265
|
+
readonly min: Vector2Data;
|
|
224
266
|
}
|
|
225
267
|
|
|
226
|
-
/**
|
|
227
|
-
export declare
|
|
268
|
+
/** An immutable XY bounds value or its plain min/max representation. */
|
|
269
|
+
export declare type Bounds2Input = Bounds2 | Bounds2Data;
|
|
270
|
+
|
|
271
|
+
/** Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability. */
|
|
272
|
+
export declare interface Bounds3 extends Bounds3Data {
|
|
273
|
+
/** Returns nonnegative X/Y/Z dimensions in millimetres, including zero extents. */
|
|
274
|
+
size(): Vector3;
|
|
275
|
+
/** Returns the midpoint in millimetres. */
|
|
276
|
+
center(): Vector3;
|
|
277
|
+
/** Tests positioned XYZ containment, including touching boundaries. */
|
|
278
|
+
containsBounds(other: Bounds3Input): boolean;
|
|
279
|
+
/** Returns this value's frozen plain record; repeated calls do not allocate. */
|
|
280
|
+
toData(): Bounds3Data;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Snapshots finite ordered XYZ bounds in millimetres as an immutable fluent value.
|
|
285
|
+
*
|
|
286
|
+
* Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
|
|
287
|
+
* overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
|
|
288
|
+
* Compiled Generator packages passing these values to host recipes or computed data require
|
|
289
|
+
* runtime 8.0.0 or newer in major 8.
|
|
290
|
+
*/
|
|
291
|
+
export declare function bounds3(input: Bounds3Input): Bounds3;
|
|
292
|
+
|
|
293
|
+
/** Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods. */
|
|
294
|
+
export declare interface Bounds3Data {
|
|
228
295
|
/** Inclusive maximum X/Y/Z coordinates. */
|
|
229
|
-
readonly max:
|
|
296
|
+
readonly max: Vector3Data;
|
|
230
297
|
/** Inclusive minimum X/Y/Z coordinates. */
|
|
231
|
-
readonly min:
|
|
298
|
+
readonly min: Vector3Data;
|
|
232
299
|
}
|
|
233
300
|
|
|
301
|
+
/** An immutable XYZ bounds value or its plain min/max representation. */
|
|
302
|
+
export declare type Bounds3Input = Bounds3 | Bounds3Data;
|
|
303
|
+
|
|
234
304
|
/** Midpoint of finite XY bounds in millimetres. */
|
|
235
|
-
export declare function boundsCenter(bounds:
|
|
305
|
+
export declare function boundsCenter(bounds: Bounds2Data): Vector2Data;
|
|
236
306
|
|
|
237
307
|
/** Midpoint of finite XYZ bounds in millimetres. */
|
|
238
|
-
export declare function boundsCenter(bounds:
|
|
308
|
+
export declare function boundsCenter(bounds: Bounds3Data): Vector3Data;
|
|
239
309
|
|
|
240
310
|
/** A uniform XY scale followed by translation, and the resulting bounds. */
|
|
241
311
|
export declare interface BoundsFit2 {
|
|
242
312
|
/** Positive uniform scale. */
|
|
243
313
|
readonly scale: number;
|
|
244
314
|
/** Millimetre translation applied after scaling around the origin. */
|
|
245
|
-
readonly position:
|
|
315
|
+
readonly position: Vector2Data;
|
|
246
316
|
/** Bounds after scaling and translation. */
|
|
247
|
-
readonly bounds:
|
|
317
|
+
readonly bounds: Bounds2Data;
|
|
248
318
|
}
|
|
249
319
|
|
|
250
320
|
/** A uniform XYZ scale followed by translation, and the resulting bounds. */
|
|
@@ -252,9 +322,9 @@ export declare interface BoundsFit3 {
|
|
|
252
322
|
/** Positive uniform scale. */
|
|
253
323
|
readonly scale: number;
|
|
254
324
|
/** Millimetre translation applied after scaling around the origin. */
|
|
255
|
-
readonly position:
|
|
325
|
+
readonly position: Vector3Data;
|
|
256
326
|
/** Bounds after scaling and translation. */
|
|
257
|
-
readonly bounds:
|
|
327
|
+
readonly bounds: Bounds3Data;
|
|
258
328
|
}
|
|
259
329
|
|
|
260
330
|
/** Uniform fitting controls; fitting centers the source inside the target. */
|
|
@@ -265,15 +335,15 @@ export declare interface BoundsFitOptions {
|
|
|
265
335
|
|
|
266
336
|
/** Creates immutable centered XY bounds from nonnegative dimensions in millimetres. */
|
|
267
337
|
export declare function boundsFromSize(
|
|
268
|
-
size:
|
|
338
|
+
size: Vector2Data,
|
|
269
339
|
options?: BoundsFromSizeOptions,
|
|
270
|
-
):
|
|
340
|
+
): Bounds2Data;
|
|
271
341
|
|
|
272
342
|
/** Creates immutable centered XYZ bounds from nonnegative dimensions in millimetres. */
|
|
273
343
|
export declare function boundsFromSize(
|
|
274
|
-
size:
|
|
344
|
+
size: Vector3Data,
|
|
275
345
|
options?: BoundsFromSizeOptions,
|
|
276
|
-
):
|
|
346
|
+
): Bounds3Data;
|
|
277
347
|
|
|
278
348
|
/** Placement of bounds constructed from nonnegative millimetre dimensions. */
|
|
279
349
|
export declare interface BoundsFromSizeOptions {
|
|
@@ -282,10 +352,10 @@ export declare interface BoundsFromSizeOptions {
|
|
|
282
352
|
}
|
|
283
353
|
|
|
284
354
|
/** Inclusive XY dimensions in millimetres; zero extents are retained. */
|
|
285
|
-
export declare function boundsSize(bounds:
|
|
355
|
+
export declare function boundsSize(bounds: Bounds2Data): Vector2Data;
|
|
286
356
|
|
|
287
357
|
/** Inclusive XYZ dimensions in millimetres; zero extents are retained. */
|
|
288
|
-
export declare function boundsSize(bounds:
|
|
358
|
+
export declare function boundsSize(bounds: Bounds3Data): Vector3Data;
|
|
289
359
|
|
|
290
360
|
/** Creates an outward face-center anchor using the same local origin convention as box().
|
|
291
361
|
* @remarks origin applies an explicit translation. For rotated components, transform the
|
|
@@ -300,13 +370,13 @@ export declare type BoxAnchorFace =
|
|
|
300
370
|
/** Box dimensions and construction origin for one named face anchor. */
|
|
301
371
|
export declare interface BoxAnchorOptions {
|
|
302
372
|
/** XYZ dimensions, or one uniform dimension, in millimetres. */
|
|
303
|
-
readonly size: number |
|
|
373
|
+
readonly size: number | Vector3Data;
|
|
304
374
|
/** Named outward face whose center is the attachment point. */
|
|
305
375
|
readonly face: BoxAnchorFace;
|
|
306
376
|
/** Centers the box around its construction origin; defaults to true, matching box(). */
|
|
307
377
|
readonly center?: boolean;
|
|
308
378
|
/** Construction origin; centered-box center or noncentered minimum corner. Defaults to zero. */
|
|
309
|
-
readonly origin?:
|
|
379
|
+
readonly origin?: Vector3Data;
|
|
310
380
|
}
|
|
311
381
|
|
|
312
382
|
/** Box edges use +Z top, +Y front and +X right; vertical names list front/back first. */
|
|
@@ -335,7 +405,7 @@ export declare type BoxEdgeTreatments = Readonly<
|
|
|
335
405
|
/**
|
|
336
406
|
* Dimensions, placement, and uniform or independently selected finishing for an axis-aligned box.
|
|
337
407
|
*/
|
|
338
|
-
export declare interface BoxOptions extends
|
|
408
|
+
export declare interface BoxOptions extends PrimitiveAttachment {
|
|
339
409
|
/** Explicit sampling ceilings for edge treatments, bounded by the host policy. */
|
|
340
410
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
341
411
|
/**
|
|
@@ -344,33 +414,11 @@ export declare interface BoxOptions extends PrimitivePlacement {
|
|
|
344
414
|
*/
|
|
345
415
|
readonly center?: boolean;
|
|
346
416
|
/** Positive uniform size or explicit `[X, Y, Z]` extents in millimetres. */
|
|
347
|
-
readonly size: number |
|
|
417
|
+
readonly size: number | Vector3Data;
|
|
348
418
|
/** Uniform treatment or independent disjoint nominal edge/group treatments. */
|
|
349
419
|
readonly treatment?: EdgeTreatment | BoxEdgeTreatments;
|
|
350
420
|
}
|
|
351
421
|
|
|
352
|
-
/**
|
|
353
|
-
* Builds closed thread-ridge components with every profile locked to the
|
|
354
|
-
* shaft's radial/axial frame. The mesh is intended for union with its
|
|
355
|
-
* minor-envelope cylinder and never owns WASM objects.
|
|
356
|
-
*/
|
|
357
|
-
export declare function buildHelicalThreadRidgeMesh(
|
|
358
|
-
options: HelicalThreadRidgeMeshOptions,
|
|
359
|
-
): TriangleMesh;
|
|
360
|
-
|
|
361
|
-
/**
|
|
362
|
-
* Builds one closed threaded cylinder without a ridge/core Boolean seam.
|
|
363
|
-
*
|
|
364
|
-
* Each circular facet includes its exact phase-shifted profile breakpoints, including duplicate-Z
|
|
365
|
-
* samples for vertical flanks and blunt transitions. Adjacent variable grids are stitched as a
|
|
366
|
-
* monotone strip, with optional intermediate rows bounded by physical `maxSegmentLength`. A
|
|
367
|
-
* conservative pre-allocation estimate rejects excessive meshes before constructing position
|
|
368
|
-
* arrays.
|
|
369
|
-
*/
|
|
370
|
-
export declare function buildHelicalThreadSolidMesh(
|
|
371
|
-
options: HelicalThreadSolidMeshOptions,
|
|
372
|
-
): TriangleMesh;
|
|
373
|
-
|
|
374
422
|
/** Axial side carrying the near-normal pressure flank of a buttress thread. */
|
|
375
423
|
export declare type ButtressPressureFlankSide = "negative" | "positive";
|
|
376
424
|
|
|
@@ -467,63 +515,16 @@ export declare interface ClearanceHoleDimensions {
|
|
|
467
515
|
/** Common clearance-hole fit categories, ordered from smallest to largest. */
|
|
468
516
|
export declare type ClearanceHoleFit = "close" | "normal" | "loose";
|
|
469
517
|
|
|
470
|
-
/**
|
|
471
|
-
* Finds the closest position anywhere on an open XY path or closed contour.
|
|
472
|
-
*
|
|
473
|
-
* Open paths need two points; closed paths need three and omit the duplicated seam.
|
|
474
|
-
* Repeated vertices are treated as zero-length edges. Inputs and derived distances must be
|
|
475
|
-
* finite. Only the final result is allocated, so scanning a dense boundary creates no per-edge objects.
|
|
476
|
-
* This measures the sampled boundary, not its filled interior or an underlying analytic curve.
|
|
477
|
-
*
|
|
478
|
-
* @example Find a point on a closed boundary
|
|
479
|
-
* ```ts
|
|
480
|
-
* closestPointOnPath([[0, 0], [10, 0], [10, 10]], [4, -2], { closed: true });
|
|
481
|
-
* ```
|
|
482
|
-
*/
|
|
483
|
-
export declare function closestPointOnPath(
|
|
484
|
-
path: Path2,
|
|
485
|
-
point: Vector2Tuple,
|
|
486
|
-
options?: ClosestPointOnPathOptions,
|
|
487
|
-
): ClosestPointOnPathResult<Vector2Tuple>;
|
|
488
|
-
|
|
489
|
-
/** Finds the closest position on an open XYZ path or explicitly closed spatial loop. */
|
|
490
|
-
export declare function closestPointOnPath(
|
|
491
|
-
path: Path3,
|
|
492
|
-
point: Vector3Tuple,
|
|
493
|
-
options?: ClosestPointOnPathOptions,
|
|
494
|
-
): ClosestPointOnPathResult<Vector3Tuple>;
|
|
495
|
-
|
|
496
|
-
/** Topology and work ceiling for a closest-point query on a sampled path. */
|
|
497
|
-
export declare interface ClosestPointOnPathOptions {
|
|
498
|
-
/** Include the last-to-first edge without duplicating the seam point. Defaults to false. */
|
|
499
|
-
readonly closed?: boolean;
|
|
500
|
-
/** Explicit path point ceiling; defaults to the package sampling limits. */
|
|
501
|
-
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
/** Closest position on a sampled path, measured in millimetres. */
|
|
505
|
-
export declare interface ClosestPointOnPathResult<
|
|
506
|
-
Point extends Vector2Tuple | Vector3Tuple,
|
|
507
|
-
> {
|
|
508
|
-
/** Copied position on the selected edge. */
|
|
509
|
-
readonly point: Point;
|
|
510
|
-
/** Euclidean distance from the query point to the path. */
|
|
511
|
-
readonly distance: number;
|
|
512
|
-
/** Zero-based starting vertex of the selected edge. Equal distances keep the first edge. */
|
|
513
|
-
readonly edgeIndex: number;
|
|
514
|
-
/** Clamped interpolation fraction from the edge's start to its end. */
|
|
515
|
-
readonly fraction: number;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
518
|
/**
|
|
519
519
|
* Closes an open, strictly upward [radius, height] side outline to the radius-zero axis.
|
|
520
|
+
*
|
|
520
521
|
* Adds horizontal bottom/top edges at the endpoint heights, retaining axis endpoints once.
|
|
521
522
|
* Returns a counterclockwise filled-boundary contour without a repeated seam vertex.
|
|
522
523
|
* Radii must be nonnegative; the result must enclose nonzero area without touching itself.
|
|
523
524
|
* This is a solid-body closure, not a hollow-wall or mounting-bore construction.
|
|
524
525
|
*/
|
|
525
526
|
export declare function closeToAxis(
|
|
526
|
-
side: readonly
|
|
527
|
+
side: readonly Vector2Data[],
|
|
527
528
|
limits?: Partial<GeometrySamplingLimits>,
|
|
528
529
|
): Contour;
|
|
529
530
|
|
|
@@ -590,9 +591,9 @@ export declare function compensateThreadProfileForFaceting(
|
|
|
590
591
|
* @returns A new frozen transform equal to `after * before`.
|
|
591
592
|
*/
|
|
592
593
|
export declare function composeTransform3(
|
|
593
|
-
after:
|
|
594
|
-
before:
|
|
595
|
-
):
|
|
594
|
+
after: Transform3Data,
|
|
595
|
+
before: Transform3Data,
|
|
596
|
+
): Transform3Data;
|
|
596
597
|
|
|
597
598
|
/**
|
|
598
599
|
* Builds rotation-minimizing frames for a non-duplicated closed path.
|
|
@@ -601,27 +602,34 @@ export declare function composeTransform3(
|
|
|
601
602
|
* normal back to the first tangent measures seam holonomy; distributing that residual rotation
|
|
602
603
|
* uniformly over all path intervals avoids a visible seam or accumulated frame flip.
|
|
603
604
|
* The maxPathPoints ceiling (default 100000) bounds path points and frames.
|
|
605
|
+
* Requires closed path values; raw tuples are interpreted as closed and must omit their seam point.
|
|
606
|
+
* Invalid paths throw GeometryError.
|
|
607
|
+
* Nonfinite initial normals reject; finite parallel preferences select a canonical fallback.
|
|
604
608
|
*/
|
|
605
609
|
export declare const computeClosedParallelTransportFrames: (
|
|
606
|
-
|
|
607
|
-
initialNormal?:
|
|
610
|
+
input: Path3Input,
|
|
611
|
+
initialNormal?: Vector3Input,
|
|
608
612
|
limits?: Partial<GeometrySamplingLimits>,
|
|
609
613
|
) => readonly PathFrame[];
|
|
610
614
|
|
|
611
615
|
/**
|
|
612
616
|
* Builds rotation-minimizing frames by parallel-transporting the previous normal.
|
|
617
|
+
*
|
|
613
618
|
* This avoids the sudden profile flips produced by picking a fresh up-vector per ring.
|
|
614
619
|
* Paths exceeding maxPathPoints (default 100000) reject before frame allocation or guide evaluation.
|
|
620
|
+
* Requires open path values; raw tuples are interpreted as an open path. Invalid paths throw GeometryError.
|
|
621
|
+
* Nonfinite normals and guide results reject. A finite initial guide parallel to the tangent selects a canonical fallback.
|
|
615
622
|
*/
|
|
616
623
|
export declare const computeParallelTransportFrames: (
|
|
617
|
-
|
|
618
|
-
initialNormal?:
|
|
624
|
+
input: Path3Input,
|
|
625
|
+
initialNormal?: Vector3Input,
|
|
619
626
|
normalGuide?: PathNormalGuide,
|
|
620
627
|
limits?: Partial<GeometrySamplingLimits>,
|
|
621
628
|
) => readonly PathFrame[];
|
|
622
629
|
|
|
623
630
|
/**
|
|
624
631
|
* Computes the uniform-density volume centroid of an oriented closed solid, including cavity shells.
|
|
632
|
+
*
|
|
625
633
|
* Coordinates are millimetres. Indexed closure and positive aggregate volume are required; callers
|
|
626
634
|
* may use validateSolidMesh first when geometric intersections and shell orientation are untrusted.
|
|
627
635
|
* Fresh mutable input is inspected on every call, and buffers are never changed.
|
|
@@ -631,26 +639,53 @@ export declare const computeParallelTransportFrames: (
|
|
|
631
639
|
*/
|
|
632
640
|
export declare function computeTriangleMeshCentroid(
|
|
633
641
|
mesh: TriangleMesh,
|
|
634
|
-
):
|
|
642
|
+
): Vector3Data;
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Creates an order-independent regression signature for a manufacturing mesh.
|
|
646
|
+
*
|
|
647
|
+
* The input must be non-empty, closed, consistently wound, and have no unreferenced vertices.
|
|
648
|
+
* Vertex and triangle order do not affect the fingerprint; winding, quantized geometry, and
|
|
649
|
+
* connectivity metrics do. The fingerprint is a regression aid, not a cryptographic digest.
|
|
650
|
+
*
|
|
651
|
+
* @param mesh - Closed oriented mesh to measure without mutation.
|
|
652
|
+
* @param options - Absolute quantization and complexity limits.
|
|
653
|
+
* @returns Compact counts, bounds, volume, topology, tolerances, and canonical fingerprint.
|
|
654
|
+
* @throws {@link GeometryError} When validation, topology, tolerance, or complexity checks fail.
|
|
655
|
+
*/
|
|
656
|
+
export declare function computeTriangleMeshSignature(
|
|
657
|
+
mesh: TriangleMesh,
|
|
658
|
+
options?: TriangleMeshSignatureOptions,
|
|
659
|
+
): TriangleMeshSignature;
|
|
635
660
|
|
|
636
661
|
/** Tests actual XY containment, including touching boundaries; dimensions must match. */
|
|
637
|
-
export declare function containsBounds(
|
|
662
|
+
export declare function containsBounds(
|
|
663
|
+
outer: Bounds2Data,
|
|
664
|
+
inner: Bounds2Data,
|
|
665
|
+
): boolean;
|
|
638
666
|
|
|
639
667
|
/** Tests actual XYZ containment, including touching boundaries; dimensions must match. */
|
|
640
|
-
export declare function containsBounds(
|
|
668
|
+
export declare function containsBounds(
|
|
669
|
+
outer: Bounds3Data,
|
|
670
|
+
inner: Bounds3Data,
|
|
671
|
+
): boolean;
|
|
641
672
|
|
|
642
673
|
/**
|
|
643
|
-
* A closed two-dimensional boundary whose first point is not repeated at the end.
|
|
674
|
+
* A sampled closed two-dimensional boundary whose first point is not repeated at the end.
|
|
644
675
|
*
|
|
645
676
|
* Polygon exteriors are counter-clockwise and holes are clockwise. Algorithms
|
|
646
677
|
* may reject duplicate adjacent points or fewer than three effective vertices.
|
|
678
|
+
* Use PolygonData to assign an exterior and its holes, or ProfileContour2 for identified curve spans.
|
|
679
|
+
*
|
|
680
|
+
* @see {@link PolygonData}
|
|
681
|
+
* @see [ProfileContour2](/docs/reference/geometry/ProfileContour2)
|
|
647
682
|
*/
|
|
648
|
-
export declare type Contour = readonly
|
|
683
|
+
export declare type Contour = readonly Vector2Data[];
|
|
649
684
|
|
|
650
685
|
/** Returns true when a point lies inside or on the boundary of a loop. */
|
|
651
686
|
export declare function contourContainsPoint(
|
|
652
687
|
loop: Contour,
|
|
653
|
-
point:
|
|
688
|
+
point: Vector2Data,
|
|
654
689
|
): boolean;
|
|
655
690
|
|
|
656
691
|
/** One explicitly closed planar contour, independent of editor metadata and parameter contracts. */
|
|
@@ -720,61 +755,8 @@ export declare type CorrespondingProfileStation = LoftPlacement & {
|
|
|
720
755
|
readonly profile: CorrespondingProfile;
|
|
721
756
|
};
|
|
722
757
|
|
|
723
|
-
/**
|
|
724
|
-
* Constructs a normalized immutable attachment anchor.
|
|
725
|
-
*
|
|
726
|
-
* `up` is projected onto the plane perpendicular to `direction`, removing small
|
|
727
|
-
* input drift while preserving its roll intent.
|
|
728
|
-
*
|
|
729
|
-
* @param position - Finite anchor point in model coordinates.
|
|
730
|
-
* @param direction - Non-zero outward attachment normal.
|
|
731
|
-
* @param up - Non-parallel roll reference; defaults to +Y.
|
|
732
|
-
* @param tolerance - Optional comparison overrides.
|
|
733
|
-
* @returns A frozen anchor with unit, orthogonal direction and up vectors.
|
|
734
|
-
* @throws {@link GeometryError} For non-finite or degenerate inputs.
|
|
735
|
-
*/
|
|
736
|
-
export declare function createAnchor3(
|
|
737
|
-
position: Vector3Tuple,
|
|
738
|
-
direction: Vector3Tuple,
|
|
739
|
-
up?: Vector3Tuple,
|
|
740
|
-
tolerance?: GeometryToleranceOptions,
|
|
741
|
-
): Anchor3;
|
|
742
|
-
|
|
743
|
-
/**
|
|
744
|
-
* Creates a periodic thread profile for the shaft-locked helical mesher.
|
|
745
|
-
*
|
|
746
|
-
* The open path spans one pitch. Radial zero is the major envelope; negative
|
|
747
|
-
* values point toward the shaft. Custom paths must be finite, axially
|
|
748
|
-
* non-decreasing, periodic at their endpoints, and reach radial zero.
|
|
749
|
-
*
|
|
750
|
-
* @example Printable triangular thread profile
|
|
751
|
-
* ```ts
|
|
752
|
-
* createThreadProfile({ kind: "triangular", pitch: 1.75 });
|
|
753
|
-
* ```
|
|
754
|
-
*/
|
|
755
|
-
export declare function createThreadProfile(
|
|
756
|
-
spec: ThreadProfileSpec,
|
|
757
|
-
): ThreadProfile;
|
|
758
|
-
|
|
759
|
-
/**
|
|
760
|
-
* Creates an order-independent regression signature for a manufacturing mesh.
|
|
761
|
-
*
|
|
762
|
-
* The input must be non-empty, closed, consistently wound, and have no unreferenced vertices.
|
|
763
|
-
* Vertex and triangle order do not affect the fingerprint; winding, quantized geometry, and
|
|
764
|
-
* connectivity metrics do. The fingerprint is a regression aid, not a cryptographic digest.
|
|
765
|
-
*
|
|
766
|
-
* @param mesh - Closed oriented mesh to measure without mutation.
|
|
767
|
-
* @param options - Absolute quantization and complexity limits.
|
|
768
|
-
* @returns Compact counts, bounds, volume, topology, tolerances, and canonical fingerprint.
|
|
769
|
-
* @throws {@link GeometryError} When validation, topology, tolerance, or complexity checks fail.
|
|
770
|
-
*/
|
|
771
|
-
export declare function createTriangleMeshSignature(
|
|
772
|
-
mesh: TriangleMesh,
|
|
773
|
-
options?: TriangleMeshSignatureOptions,
|
|
774
|
-
): TriangleMeshSignature;
|
|
775
|
-
|
|
776
758
|
/** Returns the signed scalar cross product; positive means `b` is counter-clockwise from `a`. */
|
|
777
|
-
export declare const cross2: (a:
|
|
759
|
+
export declare const cross2: (a: Vector2Data, b: Vector2Data) => number;
|
|
778
760
|
|
|
779
761
|
/**
|
|
780
762
|
* Returns the right-handed cross product.
|
|
@@ -783,20 +765,20 @@ export declare const cross2: (a: Vector2Tuple, b: Vector2Tuple) => number;
|
|
|
783
765
|
* cross3([1, 0, 0], [0, 1, 0]); // [0, 0, 1]
|
|
784
766
|
* ```
|
|
785
767
|
*/
|
|
786
|
-
export declare const cross3: (a:
|
|
768
|
+
export declare const cross3: (a: Vector3Data, b: Vector3Data) => Vector3Data;
|
|
787
769
|
|
|
788
770
|
/** Planar cubic Bézier with explicit endpoint and control coordinates. */
|
|
789
771
|
export declare interface CubicBezierCurve2 {
|
|
790
772
|
/** Selects a cubic Bézier through two endpoints and two controls. */
|
|
791
773
|
readonly kind: "cubic";
|
|
792
774
|
/** Initial XY point in millimetres. */
|
|
793
|
-
readonly start:
|
|
775
|
+
readonly start: Vector2Data;
|
|
794
776
|
/** First XY control point in millimetres. */
|
|
795
|
-
readonly control1:
|
|
777
|
+
readonly control1: Vector2Data;
|
|
796
778
|
/** Second XY control point in millimetres. */
|
|
797
|
-
readonly control2:
|
|
779
|
+
readonly control2: Vector2Data;
|
|
798
780
|
/** Final XY point in millimetres. */
|
|
799
|
-
readonly end:
|
|
781
|
+
readonly end: Vector2Data;
|
|
800
782
|
}
|
|
801
783
|
|
|
802
784
|
/**
|
|
@@ -806,21 +788,15 @@ export declare interface CubicBezierCurve3 {
|
|
|
806
788
|
/** Selects a cubic Bézier through two endpoints and two controls. */
|
|
807
789
|
readonly kind: "cubic";
|
|
808
790
|
/** Initial XYZ point in millimetres. */
|
|
809
|
-
readonly start:
|
|
791
|
+
readonly start: Vector3Data;
|
|
810
792
|
/** First XYZ control point in millimetres. */
|
|
811
|
-
readonly control1:
|
|
793
|
+
readonly control1: Vector3Data;
|
|
812
794
|
/** Second XYZ control point in millimetres. */
|
|
813
|
-
readonly control2:
|
|
795
|
+
readonly control2: Vector3Data;
|
|
814
796
|
/** Final XYZ point in millimetres. */
|
|
815
|
-
readonly end:
|
|
797
|
+
readonly end: Vector3Data;
|
|
816
798
|
}
|
|
817
799
|
|
|
818
|
-
/** Returns cumulative arc length for finite points under maxPathPoints (default 100000); rejects overflowing length. */
|
|
819
|
-
export declare const cumulativePathLengths: (
|
|
820
|
-
path: readonly Vector3Tuple[],
|
|
821
|
-
limits?: Partial<GeometrySamplingLimits>,
|
|
822
|
-
) => readonly number[];
|
|
823
|
-
|
|
824
800
|
/** Reusable planar curve definition. */
|
|
825
801
|
export declare type Curve2 = LineCurve2 | ArcCurve2 | CubicBezierCurve2;
|
|
826
802
|
|
|
@@ -838,7 +814,7 @@ export declare interface CurveSamplingOptions {
|
|
|
838
814
|
/** Millimetre sampling policy; circularSegments applies only to arcs. */
|
|
839
815
|
readonly resolution?: GeometryResolution;
|
|
840
816
|
/** Output vertex ceiling of at least two; may only lower limits.maxPathPoints. */
|
|
841
|
-
readonly
|
|
817
|
+
readonly maxVertices?: number;
|
|
842
818
|
/** Explicit sampling ceilings; omitted values use package defaults without ambient state. */
|
|
843
819
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
844
820
|
}
|
|
@@ -851,7 +827,7 @@ export declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
851
827
|
* Open path spanning exactly `[-pitch/2, pitch/2]`, with both endpoints on the minor envelope,
|
|
852
828
|
* one connected ridge, one contiguous crest, and radial zero at the major envelope.
|
|
853
829
|
*/
|
|
854
|
-
readonly points: readonly
|
|
830
|
+
readonly points: readonly Vector2Data[];
|
|
855
831
|
}
|
|
856
832
|
|
|
857
833
|
/** Creates a cap-center or radial-side anchor using cylinder()'s construction origin.
|
|
@@ -874,11 +850,11 @@ export declare interface CylinderAnchorOptions {
|
|
|
874
850
|
/** Named outward face; side anchors lie halfway up the cylinder. */
|
|
875
851
|
readonly face: CylinderAnchorFace;
|
|
876
852
|
/** Side angle counter-clockwise from +X, in degrees; defaults to zero. */
|
|
877
|
-
readonly
|
|
853
|
+
readonly angle?: number;
|
|
878
854
|
/** Centers the cylinder along Z; defaults to true, matching cylinder(). */
|
|
879
855
|
readonly center?: boolean;
|
|
880
856
|
/** Construction origin; centered-axis midpoint or noncentered bottom axis. Defaults to zero. */
|
|
881
|
-
readonly origin?:
|
|
857
|
+
readonly origin?: Vector3Data;
|
|
882
858
|
}
|
|
883
859
|
|
|
884
860
|
/**
|
|
@@ -886,7 +862,7 @@ export declare interface CylinderAnchorOptions {
|
|
|
886
862
|
*/
|
|
887
863
|
export declare type CylinderOptions = CircularPrimitiveOptions &
|
|
888
864
|
RadialSizingOptions &
|
|
889
|
-
|
|
865
|
+
PrimitiveAttachment & {
|
|
890
866
|
/**
|
|
891
867
|
* Centers the solid on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
892
868
|
* @defaultValue `true`
|
|
@@ -918,7 +894,7 @@ export declare interface CylindricalGearDimensions {
|
|
|
918
894
|
/** Addendum above the pitch circle, in millimetres. */
|
|
919
895
|
readonly addendum: number;
|
|
920
896
|
/** Angular pitch between adjacent teeth, in radians. */
|
|
921
|
-
readonly
|
|
897
|
+
readonly angularPitchRadians: number;
|
|
922
898
|
/** Tangential backlash applied to this gear, in millimetres. */
|
|
923
899
|
readonly backlash: number;
|
|
924
900
|
/** Base-circle radius used by the involute, in millimetres. */
|
|
@@ -985,7 +961,7 @@ export declare interface CylindricalGearPairDimensions {
|
|
|
985
961
|
/** Absolute driven-to-driver tooth-count ratio. */
|
|
986
962
|
readonly ratio: number;
|
|
987
963
|
/** Helix angle required on the driven member for conjugate teeth, in degrees. */
|
|
988
|
-
readonly
|
|
964
|
+
readonly requiredDrivenHelixAngle: number;
|
|
989
965
|
}
|
|
990
966
|
|
|
991
967
|
/** Sampling controls for one coupled internal-gear tooth cycle. */
|
|
@@ -1021,7 +997,7 @@ export declare interface CylindricalGearPairSpec {
|
|
|
1021
997
|
/**
|
|
1022
998
|
* Nominal dimensions for a standard full-depth cylindrical involute gear.
|
|
1023
999
|
*
|
|
1024
|
-
* Lengths use millimetres. `module` and `
|
|
1000
|
+
* Lengths use millimetres. `module` and `pressureAngle` are measured in
|
|
1025
1001
|
* the normal plane; a non-zero signed helix angle is converted to transverse
|
|
1026
1002
|
* pitch-plane dimensions. Positive and negative helix angles identify
|
|
1027
1003
|
* opposite hands but produce the same 2D pitch geometry.
|
|
@@ -1032,11 +1008,11 @@ export declare interface CylindricalGearSpec {
|
|
|
1032
1008
|
/** Dedendum clearance as a multiple of normal module; defaults to `0.25`. */
|
|
1033
1009
|
readonly clearanceFactor?: number;
|
|
1034
1010
|
/** Signed helix angle in degrees; zero creates a spur pitch system. */
|
|
1035
|
-
readonly
|
|
1011
|
+
readonly helixAngle?: number;
|
|
1036
1012
|
/** Normal module in millimetres per tooth. */
|
|
1037
1013
|
readonly module: number;
|
|
1038
1014
|
/** Normal pressure angle in degrees; defaults to 20 degrees. */
|
|
1039
|
-
readonly
|
|
1015
|
+
readonly pressureAngle?: number;
|
|
1040
1016
|
/** Integer tooth count from 6 through 1,000; external profiles also enforce the no-undercut limit. */
|
|
1041
1017
|
readonly toothCount: number;
|
|
1042
1018
|
}
|
|
@@ -1055,10 +1031,10 @@ export declare const DEFAULT_GEOMETRY_TOLERANCE: Readonly<{
|
|
|
1055
1031
|
export declare const defaultGeometrySamplingLimits: GeometrySamplingLimits;
|
|
1056
1032
|
|
|
1057
1033
|
/** Returns Euclidean point distance without allocating an intermediate difference vector. */
|
|
1058
|
-
export declare const distance2: (a:
|
|
1034
|
+
export declare const distance2: (a: Vector2Data, b: Vector2Data) => number;
|
|
1059
1035
|
|
|
1060
1036
|
/** Returns Euclidean point distance without allocating an intermediate difference vector. */
|
|
1061
|
-
export declare const distance3: (a:
|
|
1037
|
+
export declare const distance3: (a: Vector3Data, b: Vector3Data) => number;
|
|
1062
1038
|
|
|
1063
1039
|
/**
|
|
1064
1040
|
* Places an exact item count at equal arc-length intervals along a sampled path.
|
|
@@ -1067,16 +1043,18 @@ export declare const distance3: (a: Vector3Tuple, b: Vector3Tuple) => number;
|
|
|
1067
1043
|
* open paths include both endpoints when `count` is greater than one.
|
|
1068
1044
|
* Coordinates and total length must be finite. Input points and output placements are each
|
|
1069
1045
|
* limited by maxPathPoints (default 100000); exact counts exceeding that ceiling reject before length calculation.
|
|
1046
|
+
* Closure defaults to the path value's metadata, or false for tuples. An explicit conflicting closure rejects.
|
|
1047
|
+
* Invalid arguments and degenerate paths throw GeometryError.
|
|
1070
1048
|
*/
|
|
1071
1049
|
export declare const distributeAlongPath: (
|
|
1072
|
-
|
|
1050
|
+
input: Path3Input,
|
|
1073
1051
|
count: number,
|
|
1074
|
-
closed
|
|
1052
|
+
closed?: boolean,
|
|
1075
1053
|
limits?: Partial<GeometrySamplingLimits>,
|
|
1076
1054
|
) => readonly PathPlacement[];
|
|
1077
1055
|
|
|
1078
1056
|
/** Returns the scalar dot product. */
|
|
1079
|
-
export declare const dot2: (a:
|
|
1057
|
+
export declare const dot2: (a: Vector2Data, b: Vector2Data) => number;
|
|
1080
1058
|
|
|
1081
1059
|
/**
|
|
1082
1060
|
* Returns the scalar dot product.
|
|
@@ -1085,7 +1063,7 @@ export declare const dot2: (a: Vector2Tuple, b: Vector2Tuple) => number;
|
|
|
1085
1063
|
* dot3([1, 0, 0], [0, 1, 0]); // 0
|
|
1086
1064
|
* ```
|
|
1087
1065
|
*/
|
|
1088
|
-
export declare const dot3: (a:
|
|
1066
|
+
export declare const dot3: (a: Vector3Data, b: Vector3Data) => number;
|
|
1089
1067
|
|
|
1090
1068
|
/**
|
|
1091
1069
|
* Uniform finishing vocabulary shared by applicable solid edges and profile corners.
|
|
@@ -1113,13 +1091,13 @@ export declare type EllipseContourOptions = CircularPrimitiveOptions &
|
|
|
1113
1091
|
(
|
|
1114
1092
|
| {
|
|
1115
1093
|
/** Positive XY radii in millimetres; mutually exclusive with size. */
|
|
1116
|
-
readonly radius:
|
|
1094
|
+
readonly radius: Vector2Data;
|
|
1117
1095
|
/** Full XY extents are unavailable when radius is supplied. */
|
|
1118
1096
|
readonly size?: never;
|
|
1119
1097
|
}
|
|
1120
1098
|
| {
|
|
1121
1099
|
/** Positive full XY extents in millimetres; mutually exclusive with radius. */
|
|
1122
|
-
readonly size:
|
|
1100
|
+
readonly size: Vector2Data;
|
|
1123
1101
|
/** XY radii are unavailable when size is supplied. */
|
|
1124
1102
|
readonly radius?: never;
|
|
1125
1103
|
}
|
|
@@ -1147,11 +1125,12 @@ export declare interface EndTreatments {
|
|
|
1147
1125
|
* @throws {@link GeometryError} When an angle is non-finite.
|
|
1148
1126
|
*/
|
|
1149
1127
|
export declare function eulerTransform3(
|
|
1150
|
-
rotationDegrees:
|
|
1151
|
-
):
|
|
1128
|
+
rotationDegrees: Vector3Data,
|
|
1129
|
+
): Transform3Data;
|
|
1152
1130
|
|
|
1153
1131
|
/**
|
|
1154
1132
|
* Linearly extrudes one simple profile along +Z with robust ear-clipped caps.
|
|
1133
|
+
* Path2 profiles must be closed; raw point collections have an implicit closing edge.
|
|
1155
1134
|
*
|
|
1156
1135
|
* @example Extrude point data without an engine
|
|
1157
1136
|
* ```ts
|
|
@@ -1160,7 +1139,7 @@ export declare function eulerTransform3(
|
|
|
1160
1139
|
* ```
|
|
1161
1140
|
*/
|
|
1162
1141
|
export declare function extrudeMesh(
|
|
1163
|
-
|
|
1142
|
+
input: Path2Input,
|
|
1164
1143
|
options: ExtrudeOptions,
|
|
1165
1144
|
): TriangleMesh;
|
|
1166
1145
|
|
|
@@ -1185,22 +1164,22 @@ export declare interface ExtrusionSamplingOptions {
|
|
|
1185
1164
|
/** Operation-level physical policy over the nearest model scope. */
|
|
1186
1165
|
readonly resolution?: GeometryResolution;
|
|
1187
1166
|
/** Finite uniform or XY scale of the top profile; defaults to one. */
|
|
1188
|
-
readonly scaleTop?: number |
|
|
1167
|
+
readonly scaleTop?: number | Vector2Input;
|
|
1189
1168
|
/** Finite rotation of the top profile about +Z, in degrees; defaults to zero. */
|
|
1190
|
-
readonly
|
|
1169
|
+
readonly twist?: number;
|
|
1191
1170
|
}
|
|
1192
1171
|
|
|
1193
1172
|
/** Fits XY bounds uniformly and centers them in the target; zero source axes do not constrain scale. */
|
|
1194
1173
|
export declare function fitBounds(
|
|
1195
|
-
source:
|
|
1196
|
-
target:
|
|
1174
|
+
source: Bounds2Data,
|
|
1175
|
+
target: Bounds2Data,
|
|
1197
1176
|
options?: BoundsFitOptions,
|
|
1198
1177
|
): BoundsFit2;
|
|
1199
1178
|
|
|
1200
1179
|
/** Fits XYZ bounds uniformly and centers them in the target; zero source axes do not constrain scale. */
|
|
1201
1180
|
export declare function fitBounds(
|
|
1202
|
-
source:
|
|
1203
|
-
target:
|
|
1181
|
+
source: Bounds3Data,
|
|
1182
|
+
target: Bounds3Data,
|
|
1204
1183
|
options?: BoundsFitOptions,
|
|
1205
1184
|
): BoundsFit3;
|
|
1206
1185
|
|
|
@@ -1209,12 +1188,13 @@ export declare interface FittedTextLayout extends VectorTextLayout {
|
|
|
1209
1188
|
/** Transformed physical measurements, including nonempty visible ink bounds. */
|
|
1210
1189
|
readonly metrics: VectorTextMetrics & {
|
|
1211
1190
|
/** Finite positive-area ink bounds in final millimetres. */
|
|
1212
|
-
readonly bounds:
|
|
1191
|
+
readonly bounds: Bounds2Data;
|
|
1213
1192
|
};
|
|
1214
1193
|
}
|
|
1215
1194
|
|
|
1216
1195
|
/**
|
|
1217
1196
|
* Uniformly fits visible text ink inside finite XY bounds, centering it on the target.
|
|
1197
|
+
*
|
|
1218
1198
|
* Transforms retained vector paths before sampling, so later textSection/sampleTextContours
|
|
1219
1199
|
* resolution remains in final millimetres. Logical advances scale without translation;
|
|
1220
1200
|
* line count is unchanged. The input layout is preserved.
|
|
@@ -1227,20 +1207,20 @@ export declare interface FittedTextLayout extends VectorTextLayout {
|
|
|
1227
1207
|
*/
|
|
1228
1208
|
export declare function fitTextLayout(
|
|
1229
1209
|
layout: VectorTextLayout,
|
|
1230
|
-
target:
|
|
1210
|
+
target: Bounds2Data,
|
|
1231
1211
|
options?: BoundsFitOptions,
|
|
1232
1212
|
): FittedTextLayout;
|
|
1233
1213
|
|
|
1234
1214
|
/** A right-handed orthonormal coordinate frame expressed in world coordinates. */
|
|
1235
1215
|
export declare interface Frame3 {
|
|
1236
1216
|
/** World-space origin of the local frame. */
|
|
1237
|
-
readonly origin:
|
|
1217
|
+
readonly origin: Vector3Data;
|
|
1238
1218
|
/** Unit vector defining the local +X axis. */
|
|
1239
|
-
readonly xAxis:
|
|
1219
|
+
readonly xAxis: Vector3Data;
|
|
1240
1220
|
/** Unit vector defining the local +Y axis. */
|
|
1241
|
-
readonly yAxis:
|
|
1221
|
+
readonly yAxis: Vector3Data;
|
|
1242
1222
|
/** Unit vector defining the local +Z axis. */
|
|
1243
|
-
readonly zAxis:
|
|
1223
|
+
readonly zAxis: Vector3Data;
|
|
1244
1224
|
}
|
|
1245
1225
|
|
|
1246
1226
|
/**
|
|
@@ -1254,7 +1234,7 @@ export declare interface Frame3 {
|
|
|
1254
1234
|
export declare function frameTransform3(
|
|
1255
1235
|
frame: Frame3,
|
|
1256
1236
|
tolerance?: GeometryToleranceOptions,
|
|
1257
|
-
):
|
|
1237
|
+
): Transform3Data;
|
|
1258
1238
|
|
|
1259
1239
|
/**
|
|
1260
1240
|
* Error raised when a geometry precondition or invariant is not satisfied.
|
|
@@ -1321,9 +1301,9 @@ export declare interface GeometryResolution {
|
|
|
1321
1301
|
/** Optional maximum sampled edge length in millimetres. */
|
|
1322
1302
|
readonly maxSegmentLength?: number;
|
|
1323
1303
|
/** Upper safety bound for a full circle; defaults to the selected maxCircularSegments (512 by default). */
|
|
1324
|
-
readonly
|
|
1304
|
+
readonly maxSegments?: number;
|
|
1325
1305
|
/** Lower full-circle segment count; defaults to 16 or a lower selected circular ceiling. */
|
|
1326
|
-
readonly
|
|
1306
|
+
readonly minSegments?: number;
|
|
1327
1307
|
}
|
|
1328
1308
|
|
|
1329
1309
|
/** Explicit allocation ceilings for pure sampling and host-owned modeling operations. */
|
|
@@ -1349,7 +1329,7 @@ export declare interface GeometryToleranceOptions {
|
|
|
1349
1329
|
}
|
|
1350
1330
|
|
|
1351
1331
|
/** Returns one recommended metric clearance-hole diameter in millimetres. */
|
|
1352
|
-
export declare function
|
|
1332
|
+
export declare function getMetricClearanceHoleDiameter(
|
|
1353
1333
|
size: MetricFastenerSize,
|
|
1354
1334
|
fit?: ClearanceHoleFit,
|
|
1355
1335
|
): number;
|
|
@@ -1361,8 +1341,9 @@ export declare function getMetricFastenerStandard(
|
|
|
1361
1341
|
|
|
1362
1342
|
/**
|
|
1363
1343
|
* XY or XYZ grid with X varying fastest. The first item starts at the local origin.
|
|
1344
|
+
* Dimension 2 restricts counts and spacing to XY; any frame must preserve the XY plane.
|
|
1364
1345
|
*/
|
|
1365
|
-
export declare type GridPatternOptions = {
|
|
1346
|
+
export declare type GridPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
1366
1347
|
/** Center the complete distribution around its local origin; defaults to false. */
|
|
1367
1348
|
readonly center?: boolean;
|
|
1368
1349
|
/** Optional right-handed local axes and origin for the grid. */
|
|
@@ -1370,29 +1351,34 @@ export declare type GridPatternOptions = {
|
|
|
1370
1351
|
} & (
|
|
1371
1352
|
| {
|
|
1372
1353
|
/** Positive integer counts on X and Y. */
|
|
1373
|
-
readonly count:
|
|
1354
|
+
readonly count: Vector2Data;
|
|
1374
1355
|
/** Signed millimetres between adjacent copies on X and Y. */
|
|
1375
|
-
readonly spacing:
|
|
1376
|
-
}
|
|
1377
|
-
| {
|
|
1378
|
-
/** Positive integer counts on X, Y and Z. */
|
|
1379
|
-
readonly count: Vector3Tuple;
|
|
1380
|
-
/** Signed millimetres between adjacent copies on X, Y and Z. */
|
|
1381
|
-
readonly spacing: Vector3Tuple;
|
|
1356
|
+
readonly spacing: Vector2Data;
|
|
1382
1357
|
}
|
|
1358
|
+
| (Dimension extends 3
|
|
1359
|
+
? {
|
|
1360
|
+
/** Positive integer counts on X, Y and Z. */
|
|
1361
|
+
readonly count: Vector3Data;
|
|
1362
|
+
/** Signed millimetres between adjacent copies on X, Y and Z. */
|
|
1363
|
+
readonly spacing: Vector3Data;
|
|
1364
|
+
}
|
|
1365
|
+
: never)
|
|
1383
1366
|
);
|
|
1384
1367
|
|
|
1385
|
-
/** XY or XYZ grid
|
|
1368
|
+
/** Spatial XYZ matrices for an XY or XYZ grid, in X-fastest order. */
|
|
1386
1369
|
export declare function gridPatternTransforms(
|
|
1387
1370
|
options: GridPatternOptions,
|
|
1388
|
-
): readonly
|
|
1371
|
+
): readonly Transform3Data[];
|
|
1389
1372
|
|
|
1390
1373
|
/**
|
|
1391
1374
|
* Builds a closed indexed mesh from a rectilinear top, matched boundary walls, and flat base.
|
|
1375
|
+
*
|
|
1392
1376
|
* Heights run once per grid point after preflight; center-error adds one evaluation per cell.
|
|
1393
1377
|
* Top winding is +Z, the base is -Z, and sides face outward. Coordinates and heights must fit
|
|
1394
1378
|
* Float32 storage. Explicit axes are captured before sampling; shared wall vertices prevent cracks.
|
|
1395
1379
|
*
|
|
1380
|
+
* @see {@link preflightHeightfield}
|
|
1381
|
+
*
|
|
1396
1382
|
* @example Sample a closed wavy mesh
|
|
1397
1383
|
* ```ts
|
|
1398
1384
|
* heightfieldMesh({
|
|
@@ -1422,7 +1408,7 @@ export declare type HeightfieldMeshLimits = Partial<
|
|
|
1422
1408
|
*/
|
|
1423
1409
|
export declare type HeightfieldOptions = {
|
|
1424
1410
|
/** Absolute top Z at the supplied XY point. Every sample must be above baseZ. */
|
|
1425
|
-
readonly height: (point:
|
|
1411
|
+
readonly height: (point: Vector2Data) => number;
|
|
1426
1412
|
/** Flat bottom Z. Defaults to zero. */
|
|
1427
1413
|
readonly baseZ?: number;
|
|
1428
1414
|
/**
|
|
@@ -1435,11 +1421,11 @@ export declare type HeightfieldOptions = {
|
|
|
1435
1421
|
} & (
|
|
1436
1422
|
| {
|
|
1437
1423
|
/** Positive XY footprint for uniform sampling. */
|
|
1438
|
-
readonly size:
|
|
1424
|
+
readonly size: Vector2Data;
|
|
1439
1425
|
/** Exact positive integer X/Y interval counts. */
|
|
1440
1426
|
readonly segments: readonly [x: number, y: number];
|
|
1441
1427
|
/** Lower-left footprint XY. Omitted centers the footprint on XY. */
|
|
1442
|
-
readonly origin?:
|
|
1428
|
+
readonly origin?: Vector2Data;
|
|
1443
1429
|
/** Explicit coordinates cannot be combined with uniform sampling. */
|
|
1444
1430
|
readonly coordinates?: never;
|
|
1445
1431
|
}
|
|
@@ -1463,18 +1449,27 @@ export declare type HeightfieldOptions = {
|
|
|
1463
1449
|
}
|
|
1464
1450
|
);
|
|
1465
1451
|
|
|
1466
|
-
/**
|
|
1452
|
+
/** Exact grid and mesh buffer allocation counts resolved without evaluating the height callback. */
|
|
1467
1453
|
export declare interface HeightfieldPreflight {
|
|
1468
|
-
/** Number of top grid points;
|
|
1454
|
+
/** Number of top grid points; excludes the extra per-cell height evaluations for center-error. */
|
|
1469
1455
|
readonly sampleCount: number;
|
|
1470
1456
|
/** Number of allocated XYZ vertices. */
|
|
1471
1457
|
readonly vertexCount: number;
|
|
1472
1458
|
/** Number of allocated indexed triangles. */
|
|
1473
1459
|
readonly triangleCount: number;
|
|
1474
|
-
/** Total bytes of Float32 positions and Uint32 indices. */
|
|
1460
|
+
/** Total bytes of Float32 positions and Uint32 indices, excluding temporary storage. */
|
|
1475
1461
|
readonly byteCount: number;
|
|
1476
1462
|
}
|
|
1477
1463
|
|
|
1464
|
+
/**
|
|
1465
|
+
* Builds closed thread-ridge components with every profile locked to the
|
|
1466
|
+
* shaft's radial/axial frame. The mesh is intended for union with its
|
|
1467
|
+
* minor-envelope cylinder and never owns WASM objects.
|
|
1468
|
+
*/
|
|
1469
|
+
export declare function helicalThreadRidgeMesh(
|
|
1470
|
+
options: HelicalThreadRidgeMeshOptions,
|
|
1471
|
+
): TriangleMesh;
|
|
1472
|
+
|
|
1478
1473
|
/** Runtime-neutral options for the dedicated helical ridge mesher. */
|
|
1479
1474
|
export declare interface HelicalThreadRidgeMeshOptions {
|
|
1480
1475
|
/**
|
|
@@ -1491,7 +1486,7 @@ export declare interface HelicalThreadRidgeMeshOptions {
|
|
|
1491
1486
|
/** Nominal major diameter before any caller-owned fit compensation. */
|
|
1492
1487
|
readonly majorDiameter: number;
|
|
1493
1488
|
/** Angular offset of the first start in degrees. Default: `0`. */
|
|
1494
|
-
readonly
|
|
1489
|
+
readonly phase?: number;
|
|
1495
1490
|
/** Validated periodic profile repeated around the shaft. */
|
|
1496
1491
|
readonly profile: ThreadProfile;
|
|
1497
1492
|
/** Optional circular-resolution policy. */
|
|
@@ -1502,6 +1497,19 @@ export declare interface HelicalThreadRidgeMeshOptions {
|
|
|
1502
1497
|
readonly tolerance?: GeometryToleranceOptions;
|
|
1503
1498
|
}
|
|
1504
1499
|
|
|
1500
|
+
/**
|
|
1501
|
+
* Builds one closed threaded cylinder without a ridge/core Boolean seam.
|
|
1502
|
+
*
|
|
1503
|
+
* Each circular facet includes its exact phase-shifted profile breakpoints, including duplicate-Z
|
|
1504
|
+
* samples for vertical flanks and blunt transitions. Adjacent variable grids are stitched as a
|
|
1505
|
+
* monotone strip, with optional intermediate rows bounded by physical `maxSegmentLength`. A
|
|
1506
|
+
* conservative pre-allocation estimate rejects excessive meshes before constructing position
|
|
1507
|
+
* arrays.
|
|
1508
|
+
*/
|
|
1509
|
+
export declare function helicalThreadSolidMesh(
|
|
1510
|
+
options: HelicalThreadSolidMeshOptions,
|
|
1511
|
+
): TriangleMesh;
|
|
1512
|
+
|
|
1505
1513
|
/** Options for a complete threaded-cylinder mesh; base semantics match the ridge builder. */
|
|
1506
1514
|
export declare interface HelicalThreadSolidMeshOptions extends HelicalThreadRidgeMeshOptions {
|
|
1507
1515
|
/** Apply a 45-degree radial bevel at the lower target face. */
|
|
@@ -1520,7 +1528,7 @@ export declare interface HelicalThreadSolidMeshOptions extends HelicalThreadRidg
|
|
|
1520
1528
|
readonly bevelTopSize?: number;
|
|
1521
1529
|
}
|
|
1522
1530
|
|
|
1523
|
-
/**
|
|
1531
|
+
/** Selected sampling counts and conservative allocation estimates, before thread mesh construction. */
|
|
1524
1532
|
export declare interface HelicalThreadSolidMeshPreflight {
|
|
1525
1533
|
/** Uniform axial intervals required only by a requested physical segment-length limit. */
|
|
1526
1534
|
readonly axialIntervals: number;
|
|
@@ -1533,7 +1541,7 @@ export declare interface HelicalThreadSolidMeshPreflight {
|
|
|
1533
1541
|
}
|
|
1534
1542
|
|
|
1535
1543
|
/** Identity transform, safe to share because it is frozen. */
|
|
1536
|
-
export declare const IDENTITY_TRANSFORM3:
|
|
1544
|
+
export declare const IDENTITY_TRANSFORM3: Transform3Data;
|
|
1537
1545
|
|
|
1538
1546
|
/** Options for a compensated internal-thread subtraction tool along +Z. */
|
|
1539
1547
|
export declare interface InternalThreadCutterOptions
|
|
@@ -1553,11 +1561,12 @@ export declare interface InternalThreadCutterOptions
|
|
|
1553
1561
|
* @returns A new frozen transform whose composition with the input is identity.
|
|
1554
1562
|
*/
|
|
1555
1563
|
export declare function inverseTransform3(
|
|
1556
|
-
transform:
|
|
1557
|
-
):
|
|
1564
|
+
transform: Transform3Data,
|
|
1565
|
+
): Transform3Data;
|
|
1558
1566
|
|
|
1559
1567
|
/**
|
|
1560
1568
|
* Recognizes structured geometry errors from separately bundled Modeling copies in the same realm.
|
|
1569
|
+
*
|
|
1561
1570
|
* Ordinary errors and unmarked code-shaped objects are rejected. The marker is execution-local and
|
|
1562
1571
|
* does not survive structured cloning; worker protocols carry their own serialized error envelope.
|
|
1563
1572
|
*/
|
|
@@ -1576,42 +1585,136 @@ export declare function joinTriangleMeshes(
|
|
|
1576
1585
|
meshes: readonly TriangleMesh[],
|
|
1577
1586
|
): TriangleMesh;
|
|
1578
1587
|
|
|
1588
|
+
/** Shared knuckle-joint dimensions in millimetres, independent of mounting geometry. */
|
|
1589
|
+
export declare interface KnuckleHingeBaseSpec {
|
|
1590
|
+
/** Total extent along the +X pin axis, centered at the origin. */
|
|
1591
|
+
readonly length: number;
|
|
1592
|
+
/** Number of equal alternating intervals, starting with half A. */
|
|
1593
|
+
readonly knuckleCount: number;
|
|
1594
|
+
/** Outside vertex-sized barrel diameter. */
|
|
1595
|
+
readonly barrelDiameter: number;
|
|
1596
|
+
/** Vertex-sized shaft diameter, including an externally supplied shaft. */
|
|
1597
|
+
readonly pinDiameter: number;
|
|
1598
|
+
/** Nonnegative per-side radial allowance; bores circumscribe this running envelope. */
|
|
1599
|
+
readonly radialClearance: number;
|
|
1600
|
+
/** Nonnegative total air gap between each neighboring pair of knuckle ends. */
|
|
1601
|
+
readonly axialGap: number;
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
/** Immutable joint layout and conservative faceted envelopes; no engine initialization. */
|
|
1605
|
+
export declare interface KnuckleHingeDimensions {
|
|
1606
|
+
/** Validated, copied nominal inputs. */
|
|
1607
|
+
readonly spec: KnuckleHingeSpec;
|
|
1608
|
+
/** Nominal outside barrel radius. */
|
|
1609
|
+
readonly barrelRadius: number;
|
|
1610
|
+
/** Maximum shaft radius under any rotation. */
|
|
1611
|
+
readonly pinRadius: number;
|
|
1612
|
+
/** Minimum face-sized bore radius, including radial clearance. */
|
|
1613
|
+
readonly boreRadius: number;
|
|
1614
|
+
/** Maximum radius at the faceted bore vertices. */
|
|
1615
|
+
readonly boreOuterRadius: number;
|
|
1616
|
+
/** Conservative radial wall before outer end chamfers, accounting for both polygons. */
|
|
1617
|
+
readonly minimumBarrelWall: number;
|
|
1618
|
+
/** Equal length of every interval. */
|
|
1619
|
+
readonly knuckleLength: number;
|
|
1620
|
+
/** Common exact full-circle segment count. */
|
|
1621
|
+
readonly segments: number;
|
|
1622
|
+
/** Alternating schedule ordered from negative to positive X. */
|
|
1623
|
+
readonly knuckles: readonly KnuckleHingeInterval[];
|
|
1624
|
+
/** Integral pin interval; null when the consumer supplies an inserted pin. */
|
|
1625
|
+
readonly pin: Readonly<{
|
|
1626
|
+
/** Start coordinate along X, in millimetres. */
|
|
1627
|
+
start: number;
|
|
1628
|
+
/** Total integral shaft length, including material inside A. */
|
|
1629
|
+
length: number;
|
|
1630
|
+
}> | null;
|
|
1631
|
+
/** Origin at the joint center, direction +X, roll guide +Z. */
|
|
1632
|
+
readonly axis: Anchor3;
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
/** One equal-length barrel interval in the shared pin-centered frame. */
|
|
1636
|
+
export declare interface KnuckleHingeInterval {
|
|
1637
|
+
/** Alternating owner, beginning with A at the negative end of X. */
|
|
1638
|
+
readonly side: "a" | "b";
|
|
1639
|
+
/** Start along X, in millimetres. */
|
|
1640
|
+
readonly start: number;
|
|
1641
|
+
/** Axial length, excluding the neighboring gaps. */
|
|
1642
|
+
readonly length: number;
|
|
1643
|
+
}
|
|
1644
|
+
|
|
1645
|
+
/** Shared circular sampling for barrels, shafts, and bores. */
|
|
1646
|
+
export declare interface KnuckleHingeSamplingOptions {
|
|
1647
|
+
/** Exact full-circle count, divisible by four and at least four; overrides adaptive sampling. */
|
|
1648
|
+
readonly segments?: number;
|
|
1649
|
+
/** Physical tessellation policy. Exact circular counts must also be divisible by four. */
|
|
1650
|
+
readonly resolution?: GeometryResolution;
|
|
1651
|
+
/** Explicit allocation ceilings; defaults to the pure geometry sampling limits. */
|
|
1652
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
/**
|
|
1656
|
+
* Knuckle-joint construction modes and interval ownership.
|
|
1657
|
+
*
|
|
1658
|
+
* Print-in-place requires an odd count of at least three: A owns both
|
|
1659
|
+
* end anchors and the entire shaft. Inserted-pin bores both halves and supplies no shaft.
|
|
1660
|
+
* Lift-off requires exactly two intervals; A's integral pin enters B without a far anchor.
|
|
1661
|
+
*/
|
|
1662
|
+
export declare type KnuckleHingeSpec = KnuckleHingeBaseSpec &
|
|
1663
|
+
(
|
|
1664
|
+
| {
|
|
1665
|
+
/** Captive integral shaft or bores for an externally supplied pin. */
|
|
1666
|
+
readonly mode: "print-in-place" | "inserted-pin";
|
|
1667
|
+
/** Engagement applies only to lift-off construction. */
|
|
1668
|
+
readonly pinEngagement?: never;
|
|
1669
|
+
}
|
|
1670
|
+
| {
|
|
1671
|
+
/** Detachable socket on a finite integral pin. */
|
|
1672
|
+
readonly mode: "lift-off";
|
|
1673
|
+
/** Lift-off has one fixed interval and one removable interval. */
|
|
1674
|
+
readonly knuckleCount: 2;
|
|
1675
|
+
/** Positive axial engagement into B, no greater than its knuckle length. */
|
|
1676
|
+
readonly pinEngagement: number;
|
|
1677
|
+
}
|
|
1678
|
+
);
|
|
1679
|
+
|
|
1579
1680
|
/**
|
|
1580
1681
|
* Returns immutable translations for a +X row of finite XYZ bounds with a nonnegative gap.
|
|
1682
|
+
*
|
|
1581
1683
|
* Each minimum Y/Z becomes zero, and the first minimum X becomes zero. Supply bounds after
|
|
1582
1684
|
* any intended part rotation; translations apply to those bounds. An empty input returns [].
|
|
1583
1685
|
*/
|
|
1584
1686
|
export declare function layoutRow(
|
|
1585
|
-
bounds: readonly
|
|
1687
|
+
bounds: readonly Bounds3Data[],
|
|
1586
1688
|
options?: RowLayoutOptions,
|
|
1587
|
-
): readonly
|
|
1689
|
+
): readonly Vector3Data[];
|
|
1588
1690
|
|
|
1589
1691
|
/** Returns Euclidean vector length in the vector's coordinate units. */
|
|
1590
|
-
export declare const length2: (vector:
|
|
1692
|
+
export declare const length2: (vector: Vector2Data) => number;
|
|
1591
1693
|
|
|
1592
1694
|
/** Returns Euclidean vector length in the vector's coordinate units. */
|
|
1593
|
-
export declare const length3: (vector:
|
|
1695
|
+
export declare const length3: (vector: Vector3Data) => number;
|
|
1594
1696
|
|
|
1595
1697
|
/** Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. */
|
|
1596
1698
|
export declare const lerp2: (
|
|
1597
|
-
a:
|
|
1598
|
-
b:
|
|
1699
|
+
a: Vector2Data,
|
|
1700
|
+
b: Vector2Data,
|
|
1599
1701
|
t: number,
|
|
1600
|
-
) =>
|
|
1702
|
+
) => Vector2Data;
|
|
1601
1703
|
|
|
1602
1704
|
/** Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. */
|
|
1603
1705
|
export declare const lerp3: (
|
|
1604
|
-
a:
|
|
1605
|
-
b:
|
|
1706
|
+
a: Vector3Data,
|
|
1707
|
+
b: Vector3Data,
|
|
1606
1708
|
t: number,
|
|
1607
|
-
) =>
|
|
1709
|
+
) => Vector3Data;
|
|
1608
1710
|
|
|
1609
1711
|
/**
|
|
1610
1712
|
* Equal linear intervals determined by exactly two of count, spacing and total length.
|
|
1713
|
+
* Dimension defaults to 3; Section patterns use 2 and accept XY vector directions.
|
|
1611
1714
|
*/
|
|
1612
|
-
export declare type LinearPatternOptions = {
|
|
1715
|
+
export declare type LinearPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
1613
1716
|
/** Direction of repetition; magnitude is ignored. Defaults to +X. */
|
|
1614
|
-
readonly direction?:
|
|
1717
|
+
readonly direction?: Dimension extends 2 ? Vector2Input : Vector3Input;
|
|
1615
1718
|
} & (
|
|
1616
1719
|
| {
|
|
1617
1720
|
/** Positive copy count, including the original. */
|
|
@@ -1639,19 +1742,19 @@ export declare type LinearPatternOptions = {
|
|
|
1639
1742
|
}
|
|
1640
1743
|
);
|
|
1641
1744
|
|
|
1642
|
-
/**
|
|
1745
|
+
/** Spatial XYZ matrix placements in millimetres, including the original at the origin. */
|
|
1643
1746
|
export declare function linearPatternTransforms(
|
|
1644
1747
|
options: LinearPatternOptions,
|
|
1645
|
-
): readonly
|
|
1748
|
+
): readonly Transform3Data[];
|
|
1646
1749
|
|
|
1647
1750
|
/** Straight planar curve in millimetres. */
|
|
1648
1751
|
export declare interface LineCurve2 {
|
|
1649
1752
|
/** Selects straight interpolation between the two endpoints. */
|
|
1650
1753
|
readonly kind: "line";
|
|
1651
1754
|
/** Initial XY point in millimetres. */
|
|
1652
|
-
readonly start:
|
|
1755
|
+
readonly start: Vector2Data;
|
|
1653
1756
|
/** Final XY point in millimetres. */
|
|
1654
|
-
readonly end:
|
|
1757
|
+
readonly end: Vector2Data;
|
|
1655
1758
|
}
|
|
1656
1759
|
|
|
1657
1760
|
/** Straight spatial curve in millimetres. */
|
|
@@ -1659,9 +1762,9 @@ export declare interface LineCurve3 {
|
|
|
1659
1762
|
/** Selects straight interpolation between the two endpoints. */
|
|
1660
1763
|
readonly kind: "line";
|
|
1661
1764
|
/** Initial XYZ point in millimetres. */
|
|
1662
|
-
readonly start:
|
|
1765
|
+
readonly start: Vector3Data;
|
|
1663
1766
|
/** Final XYZ point in millimetres. */
|
|
1664
|
-
readonly end:
|
|
1767
|
+
readonly end: Vector3Data;
|
|
1665
1768
|
}
|
|
1666
1769
|
|
|
1667
1770
|
/**
|
|
@@ -1688,6 +1791,7 @@ export declare type LoftCorrespondence =
|
|
|
1688
1791
|
* Both ends use ear-clipped caps, supporting concave profiles without center fans.
|
|
1689
1792
|
* Intermediate slices interpolate placed world vertices, never frame axes.
|
|
1690
1793
|
* Transformed coordinates must fit finite Float32 mesh storage.
|
|
1794
|
+
* Path2 profiles must be closed; raw point collections are interpreted as closed.
|
|
1691
1795
|
*
|
|
1692
1796
|
* @example Loft with explicit point correspondence
|
|
1693
1797
|
* ```ts
|
|
@@ -1703,8 +1807,8 @@ export declare function loftMesh(
|
|
|
1703
1807
|
|
|
1704
1808
|
/** One point-data profile at a height or explicit right-handed spatial frame. */
|
|
1705
1809
|
export declare type LoftMeshStation = LoftPlacement & {
|
|
1706
|
-
/**
|
|
1707
|
-
readonly profile:
|
|
1810
|
+
/** Closed Path2 or ordered finite XY boundary points with an implicit closing edge. */
|
|
1811
|
+
readonly profile: Path2Input;
|
|
1708
1812
|
};
|
|
1709
1813
|
|
|
1710
1814
|
/**
|
|
@@ -1744,6 +1848,7 @@ export declare type LoftPlacement =
|
|
|
1744
1848
|
|
|
1745
1849
|
/**
|
|
1746
1850
|
* Explicitly matches identified component/contour/span topology across a family.
|
|
1851
|
+
*
|
|
1747
1852
|
* Every paired span uses the maximum physical subdivision count requested by any member.
|
|
1748
1853
|
* Cubics share a checked uniform parameter grid, including grids selected by exact paired requests.
|
|
1749
1854
|
* Input order and winding are preserved. Collapsed spans retain repeated logical slots, which
|
|
@@ -1784,21 +1889,6 @@ export declare function measureInternalCylindricalGearPairMotion(
|
|
|
1784
1889
|
options?: CylindricalGearPairMotionOptions,
|
|
1785
1890
|
): CylindricalGearPairMotionReport;
|
|
1786
1891
|
|
|
1787
|
-
/**
|
|
1788
|
-
* Measures bounds, surface area, and signed volume without changing the mesh.
|
|
1789
|
-
*
|
|
1790
|
-
* Signed volume is meaningful for a consistently wound closed mesh. Set
|
|
1791
|
-
* `requireClosed` when measurements will be used as manufacturing assertions.
|
|
1792
|
-
*
|
|
1793
|
-
* @param mesh - Mesh to validate and measure.
|
|
1794
|
-
* @param options - Validation policy applied before measurement.
|
|
1795
|
-
* @returns Immutable deterministic scalar and bounds measurements.
|
|
1796
|
-
*/
|
|
1797
|
-
export declare function measureTriangleMesh(
|
|
1798
|
-
mesh: TriangleMesh,
|
|
1799
|
-
options?: TriangleMeshValidationOptions,
|
|
1800
|
-
): TriangleMeshMeasurements;
|
|
1801
|
-
|
|
1802
1892
|
/**
|
|
1803
1893
|
* Computes axis-aligned bounds for a non-empty mesh.
|
|
1804
1894
|
*
|
|
@@ -1806,7 +1896,7 @@ export declare function measureTriangleMesh(
|
|
|
1806
1896
|
* @returns Fresh immutable minimum and maximum XYZ tuples.
|
|
1807
1897
|
* @throws {@link GeometryError} When the mesh is structurally invalid.
|
|
1808
1898
|
*/
|
|
1809
|
-
export declare const meshBounds: (mesh: TriangleMesh) =>
|
|
1899
|
+
export declare const meshBounds: (mesh: TriangleMesh) => Bounds3Data;
|
|
1810
1900
|
|
|
1811
1901
|
/**
|
|
1812
1902
|
* Curated metric modeling dimensions for clearance holes, regular hex nuts,
|
|
@@ -1837,7 +1927,7 @@ export declare const METRIC_FASTENER_STANDARDS: Readonly<{
|
|
|
1837
1927
|
M12: MetricFastenerStandard;
|
|
1838
1928
|
}>;
|
|
1839
1929
|
|
|
1840
|
-
/**
|
|
1930
|
+
/** Supported metric fastener sizes. */
|
|
1841
1931
|
export declare type MetricFastenerSize =
|
|
1842
1932
|
"M2" | "M2.5" | "M3" | "M4" | "M5" | "M6" | "M8" | "M10" | "M12";
|
|
1843
1933
|
|
|
@@ -1880,9 +1970,7 @@ export declare interface MetricSocketCapHeadDimensions {
|
|
|
1880
1970
|
* count `z_v = z / cos³(beta)`, so increasing helix angle can reduce the physical tooth count.
|
|
1881
1971
|
*/
|
|
1882
1972
|
export declare function minimumCylindricalGearToothCountWithoutUndercut(
|
|
1883
|
-
spec?: Readonly<
|
|
1884
|
-
Pick<CylindricalGearSpec, "helixAngleDegrees" | "pressureAngleDegrees">
|
|
1885
|
-
>,
|
|
1973
|
+
spec?: Readonly<Pick<CylindricalGearSpec, "helixAngle" | "pressureAngle">>,
|
|
1886
1974
|
): number;
|
|
1887
1975
|
|
|
1888
1976
|
/** Aggregate manufacturing output ceilings selected by a trusted host. */
|
|
@@ -1899,23 +1987,25 @@ export declare interface ModelingLimits extends GeometrySamplingLimits {
|
|
|
1899
1987
|
|
|
1900
1988
|
/**
|
|
1901
1989
|
* Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).
|
|
1990
|
+
*
|
|
1902
1991
|
* Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with
|
|
1903
1992
|
* `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.
|
|
1904
1993
|
*/
|
|
1905
1994
|
export declare const normalize2: (
|
|
1906
|
-
vector:
|
|
1995
|
+
vector: Vector2Data,
|
|
1907
1996
|
epsilon?: number,
|
|
1908
|
-
) =>
|
|
1997
|
+
) => Vector2Data;
|
|
1909
1998
|
|
|
1910
1999
|
/**
|
|
1911
2000
|
* Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).
|
|
2001
|
+
*
|
|
1912
2002
|
* Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with
|
|
1913
2003
|
* `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.
|
|
1914
2004
|
*/
|
|
1915
2005
|
export declare const normalize3: (
|
|
1916
|
-
vector:
|
|
2006
|
+
vector: Vector3Data,
|
|
1917
2007
|
epsilon?: number,
|
|
1918
|
-
) =>
|
|
2008
|
+
) => Vector3Data;
|
|
1919
2009
|
|
|
1920
2010
|
/**
|
|
1921
2011
|
* Cleans and validates one closed loop.
|
|
@@ -1926,7 +2016,7 @@ export declare const normalize3: (
|
|
|
1926
2016
|
* returned unchanged when their winding and tolerance policy match.
|
|
1927
2017
|
*/
|
|
1928
2018
|
export declare function normalizeContour(
|
|
1929
|
-
input: readonly
|
|
2019
|
+
input: readonly Vector2Data[],
|
|
1930
2020
|
counterClockwise: boolean,
|
|
1931
2021
|
tolerance?: GeometryToleranceOptions,
|
|
1932
2022
|
): Contour;
|
|
@@ -1970,31 +2060,120 @@ export declare function optimizePlanarPatches(
|
|
|
1970
2060
|
options?: PlanarMeshOptimizationOptions,
|
|
1971
2061
|
): PlanarMeshOptimizationResult;
|
|
1972
2062
|
|
|
1973
|
-
/**
|
|
1974
|
-
export declare
|
|
2063
|
+
/** Immutable directed XY polyline. Closure is explicit and does not imply a filled Section. */
|
|
2064
|
+
export declare interface Path2 {
|
|
2065
|
+
/** Coordinate dimension; identifies planar paths even when empty. */
|
|
2066
|
+
readonly dimension: 2;
|
|
2067
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
2068
|
+
readonly closed: boolean;
|
|
2069
|
+
/** Returns complete deeply frozen path data, including dimension and closure. Repeated calls do not allocate. */
|
|
2070
|
+
toData(): Path2Data;
|
|
2071
|
+
/** Total sampled edge length in model units, including the closing edge when closed. */
|
|
2072
|
+
length(): number;
|
|
2073
|
+
/** Immutable axis-aligned bounds, or undefined for an empty path. */
|
|
2074
|
+
bounds(): Bounds2 | undefined;
|
|
2075
|
+
/** Finds the nearest edge location; requires at least two vertices. */
|
|
2076
|
+
closestPoint(point: Vector2Input): PathLocation<Vector2>;
|
|
2077
|
+
/** Applies an XY placement without reordering traversal, including after reflection. */
|
|
2078
|
+
transform(placement: Transform2Input): Path2;
|
|
2079
|
+
/** Reverses vertex order and traversal; neither the source nor its coordinates are mutated. */
|
|
2080
|
+
reverse(): Path2;
|
|
2081
|
+
/** Returns a path sampled at equal arc lengths. Corners may be bridged; closure is preserved. */
|
|
2082
|
+
resample(options?: PathResamplingOptions): Path2;
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
/**
|
|
2086
|
+
* Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.
|
|
2087
|
+
*
|
|
2088
|
+
* Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated
|
|
2089
|
+
* seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed.
|
|
2090
|
+
* Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement
|
|
2091
|
+
* overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError.
|
|
2092
|
+
* A path input retains its closure. Limits bound construction only; resampling takes its own limits.
|
|
2093
|
+
*
|
|
2094
|
+
* Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
|
|
2095
|
+
*/
|
|
2096
|
+
export declare function path2(input: Path2Input, options?: PathOptions): Path2;
|
|
2097
|
+
|
|
2098
|
+
/** Complete plain XY path representation, including topology and empty-path dimensional identity. */
|
|
2099
|
+
export declare interface Path2Data {
|
|
2100
|
+
/** Coordinate dimension, retained even when points is empty. */
|
|
2101
|
+
readonly dimension: 2;
|
|
2102
|
+
/** Frozen or caller-owned XY coordinates; closed paths omit a duplicated seam. */
|
|
2103
|
+
readonly points: readonly Vector2Data[];
|
|
2104
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
2105
|
+
readonly closed: boolean;
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
/** A matching path value, complete plain path data, or a collection of vectors. */
|
|
2109
|
+
export declare type Path2Input = Path2 | Path2Data | readonly Vector2Input[];
|
|
2110
|
+
|
|
2111
|
+
/** Immutable directed XYZ polyline; it represents sampled edges, not an analytic curve. */
|
|
2112
|
+
export declare interface Path3 {
|
|
2113
|
+
/** Coordinate dimension; identifies spatial paths even when empty. */
|
|
2114
|
+
readonly dimension: 3;
|
|
2115
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
2116
|
+
readonly closed: boolean;
|
|
2117
|
+
/** Returns complete deeply frozen path data, including dimension and closure. Repeated calls do not allocate. */
|
|
2118
|
+
toData(): Path3Data;
|
|
2119
|
+
/** Total sampled edge length in model units, including the closing edge when closed. */
|
|
2120
|
+
length(): number;
|
|
2121
|
+
/** Immutable axis-aligned bounds, or undefined for an empty path. */
|
|
2122
|
+
bounds(): Bounds3 | undefined;
|
|
2123
|
+
/** Finds the nearest edge location; requires at least two vertices. */
|
|
2124
|
+
closestPoint(point: Vector3Input): PathLocation<Vector3>;
|
|
2125
|
+
/** Applies an XYZ placement without changing traversal order or closure. */
|
|
2126
|
+
transform(placement: Transform3Input): Path3;
|
|
2127
|
+
/** Reverses vertex order and traversal without mutating the source. */
|
|
2128
|
+
reverse(): Path3;
|
|
2129
|
+
/** Returns a path sampled at equal arc lengths. Corners may be bridged; closure is preserved. */
|
|
2130
|
+
resample(options?: PathResamplingOptions): Path3;
|
|
2131
|
+
}
|
|
1975
2132
|
|
|
1976
2133
|
/**
|
|
1977
|
-
*
|
|
2134
|
+
* Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam,
|
|
2135
|
+
* allocation and error rules as path2. Analytic curves must be sampled explicitly first.
|
|
2136
|
+
*
|
|
2137
|
+
* Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
|
|
2138
|
+
*
|
|
2139
|
+
* @see {@link path2} for shared construction rules.
|
|
1978
2140
|
*/
|
|
1979
|
-
export declare
|
|
2141
|
+
export declare function path3(input: Path3Input, options?: PathOptions): Path3;
|
|
2142
|
+
|
|
2143
|
+
/** Complete plain XYZ path representation, including topology and empty-path dimensional identity. */
|
|
2144
|
+
export declare interface Path3Data {
|
|
2145
|
+
/** Coordinate dimension, retained even when points is empty. */
|
|
2146
|
+
readonly dimension: 3;
|
|
2147
|
+
/** Frozen or caller-owned XYZ coordinates; closed paths omit a duplicated seam. */
|
|
2148
|
+
readonly points: readonly Vector3Data[];
|
|
2149
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
2150
|
+
readonly closed: boolean;
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
/** A matching path value, complete plain path data, or a collection of vectors. */
|
|
2154
|
+
export declare type Path3Input = Path3 | Path3Data | readonly Vector3Input[];
|
|
1980
2155
|
|
|
1981
2156
|
/** Orthonormal right-handed frame sampled along a path. */
|
|
1982
2157
|
export declare interface PathFrame {
|
|
1983
2158
|
/** Unit path tangent. */
|
|
1984
|
-
readonly tangent:
|
|
2159
|
+
readonly tangent: Vector3Data;
|
|
1985
2160
|
/** Unit transported profile X axis. */
|
|
1986
|
-
readonly normal:
|
|
2161
|
+
readonly normal: Vector3Data;
|
|
1987
2162
|
/** Unit profile Y axis equal to tangent × normal. */
|
|
1988
|
-
readonly binormal:
|
|
2163
|
+
readonly binormal: Vector3Data;
|
|
1989
2164
|
}
|
|
1990
2165
|
|
|
1991
|
-
/**
|
|
1992
|
-
|
|
1993
|
-
*/
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
2166
|
+
/** Nearest location on a sampled boundary, rather than inside a filled shape or on an analytic curve. */
|
|
2167
|
+
export declare interface PathLocation<Point extends Vector2 | Vector3> {
|
|
2168
|
+
/** Immutable position on the selected edge. */
|
|
2169
|
+
readonly point: Point;
|
|
2170
|
+
/** Euclidean distance from the query in model units. */
|
|
2171
|
+
readonly distance: number;
|
|
2172
|
+
/** Starting vertex of the selected edge; ties keep the first edge in traversal order. */
|
|
2173
|
+
readonly edgeIndex: number;
|
|
2174
|
+
/** Clamped fraction along that edge, not the whole path's normalized arc length. */
|
|
2175
|
+
readonly fraction: number;
|
|
2176
|
+
}
|
|
1998
2177
|
|
|
1999
2178
|
/**
|
|
2000
2179
|
* Supplies a profile-X orientation guide for each original normalized sweep station.
|
|
@@ -2004,37 +2183,53 @@ export declare const pathLength: (
|
|
|
2004
2183
|
* @returns A finite guide vector that is not parallel to the local path tangent.
|
|
2005
2184
|
*/
|
|
2006
2185
|
export declare type PathNormalGuide = (
|
|
2007
|
-
point:
|
|
2186
|
+
point: Vector3Data,
|
|
2008
2187
|
index: number,
|
|
2009
|
-
) =>
|
|
2188
|
+
) => Vector3Input;
|
|
2189
|
+
|
|
2190
|
+
/** Topology and allocation ceiling for an immutable sampled path. */
|
|
2191
|
+
export declare interface PathOptions {
|
|
2192
|
+
/** Connects the last vertex to the first; closed paths omit the repeated seam. Defaults to false. */
|
|
2193
|
+
readonly closed?: boolean;
|
|
2194
|
+
/** Construction point ceiling; defaults to package sampling limits. Later sampling has its own options. */
|
|
2195
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2196
|
+
}
|
|
2010
2197
|
|
|
2011
2198
|
/** Equal physical arc-length placements along an open or implicitly closed sampled path. */
|
|
2012
2199
|
export declare interface PathPatternOptions {
|
|
2013
2200
|
/** Positive number of copies; open paths include both endpoints when greater than one. */
|
|
2014
2201
|
readonly count: number;
|
|
2015
|
-
/**
|
|
2202
|
+
/** Raw point closure defaults to false; a path value supplies closure and rejects conflicts. */
|
|
2016
2203
|
readonly closed?: boolean;
|
|
2017
|
-
/** Preserve
|
|
2204
|
+
/** Preserve orientation, or align local +X for Sections / +Z for Solids to the tangent. Defaults to fixed. */
|
|
2018
2205
|
readonly orientation?: "fixed" | "tangent";
|
|
2019
2206
|
}
|
|
2020
2207
|
|
|
2021
2208
|
/**
|
|
2022
|
-
* Equal physical arc-length placements along a sampled XYZ path.
|
|
2209
|
+
* Equal physical arc-length placements along a sampled XYZ path.
|
|
2210
|
+
*
|
|
2211
|
+
* Tangent orientation maps +Z
|
|
2023
2212
|
* onto the local path tangent; fixed orientation only translates. Closed paths omit a repeated seam.
|
|
2024
2213
|
* Explicit sampling ceilings bound both input points and output placements.
|
|
2025
2214
|
*/
|
|
2026
2215
|
export declare function pathPatternTransforms(
|
|
2027
|
-
path:
|
|
2216
|
+
path: Path3Input,
|
|
2028
2217
|
options: PathPatternOptions,
|
|
2029
2218
|
limits?: Partial<GeometrySamplingLimits>,
|
|
2030
|
-
): readonly
|
|
2219
|
+
): readonly Transform3Data[];
|
|
2031
2220
|
|
|
2032
2221
|
/** Position and unit tangent for one path-distributed item. */
|
|
2033
2222
|
export declare interface PathPlacement {
|
|
2034
2223
|
/** Interpolated point on the sampled path. */
|
|
2035
|
-
readonly position:
|
|
2224
|
+
readonly position: Vector3Data;
|
|
2036
2225
|
/** Unit tangent of the path segment containing the placement. */
|
|
2037
|
-
readonly tangent:
|
|
2226
|
+
readonly tangent: Vector3Data;
|
|
2227
|
+
}
|
|
2228
|
+
|
|
2229
|
+
/** Equal arc-length sampling; the path itself owns whether its closing edge is included. */
|
|
2230
|
+
export declare interface PathResamplingOptions extends CurveSamplingOptions {
|
|
2231
|
+
/** Exact arc-length intervals; closed paths need at least three. Otherwise physical resolution or the effective source edge count controls sampling. */
|
|
2232
|
+
readonly segments?: number;
|
|
2038
2233
|
}
|
|
2039
2234
|
|
|
2040
2235
|
/** A fixed XY point in world coordinates; omitted pivots use the coordinate origin. */
|
|
@@ -2063,23 +2258,23 @@ export declare interface PlanarMeshOptimizationOptions extends TriangleMeshQuali
|
|
|
2063
2258
|
* Maximum attempted edge evaluations. By default this is twenty times the initial candidate
|
|
2064
2259
|
* edge count, capped at `1000000`.
|
|
2065
2260
|
*/
|
|
2066
|
-
readonly
|
|
2261
|
+
readonly maxFlipAttempts?: number;
|
|
2067
2262
|
/** Maximum times one edge may be reconsidered after neighbouring flips. Defaults to `12`. */
|
|
2068
|
-
readonly
|
|
2263
|
+
readonly maxEdgeRevisits?: number;
|
|
2069
2264
|
/** Maximum triangles allowed in one selected patch. Defaults to `50000`. */
|
|
2070
|
-
readonly
|
|
2265
|
+
readonly maxPatchTriangles?: number;
|
|
2071
2266
|
/** Maximum cumulative triangles across selected patches. Defaults to `200000`. */
|
|
2072
|
-
readonly
|
|
2267
|
+
readonly maxProcessedTriangles?: number;
|
|
2073
2268
|
/** Minimum triangles required before a planar patch is eligible. Defaults to `8`. */
|
|
2074
|
-
readonly
|
|
2269
|
+
readonly minPatchTriangles?: number;
|
|
2075
2270
|
/** Select patches whose worst normalized aspect ratio exceeds this value. Defaults to `12`. */
|
|
2076
|
-
readonly
|
|
2271
|
+
readonly triggerMaxAspectRatio?: number;
|
|
2077
2272
|
/** Select patches whose largest per-vertex triangle share exceeds this ratio. Defaults to `0.2`. */
|
|
2078
|
-
readonly
|
|
2273
|
+
readonly triggerMaxFanRatio?: number;
|
|
2079
2274
|
/** Select patches whose largest vertex triangle incidence exceeds this value. Defaults to `16`. */
|
|
2080
|
-
readonly
|
|
2275
|
+
readonly triggerMaxVertexTriangleIncidence?: number;
|
|
2081
2276
|
/** Select patches whose smallest interior angle is below this many degrees. Defaults to `8`. */
|
|
2082
|
-
readonly
|
|
2277
|
+
readonly triggerMinAngleDegrees?: number;
|
|
2083
2278
|
}
|
|
2084
2279
|
|
|
2085
2280
|
/** Outcome of bounded planar-patch optimization, including before/after diagnostics. */
|
|
@@ -2127,7 +2322,7 @@ export declare interface PlanarPatchQuality {
|
|
|
2127
2322
|
/** Smallest interior triangle angle in degrees. */
|
|
2128
2323
|
readonly minimumTriangleAngleDegrees: number;
|
|
2129
2324
|
/** Consistently wound unit normal for the patch plane. */
|
|
2130
|
-
readonly normal:
|
|
2325
|
+
readonly normal: Vector3Data;
|
|
2131
2326
|
/** Plane offset in `dot(normal, position) = planeOffset` form, in model units. */
|
|
2132
2327
|
readonly planeOffset: number;
|
|
2133
2328
|
/** Total patch area in squared model units. */
|
|
@@ -2139,11 +2334,14 @@ export declare interface PlanarPatchQuality {
|
|
|
2139
2334
|
}
|
|
2140
2335
|
|
|
2141
2336
|
/**
|
|
2142
|
-
* One
|
|
2337
|
+
* One filled two-dimensional polygon with an exterior and optional holes.
|
|
2143
2338
|
*
|
|
2144
2339
|
* `outer` is counter-clockwise and each hole is clockwise. Boundary arrays omit
|
|
2145
2340
|
* their duplicated closing point. Holes must lie inside `outer` and must not
|
|
2146
2341
|
* intersect each other or the exterior.
|
|
2342
|
+
*
|
|
2343
|
+
* @see {@link Contour}
|
|
2344
|
+
* @see {@link RegionData}
|
|
2147
2345
|
*/
|
|
2148
2346
|
export declare interface PolygonData {
|
|
2149
2347
|
/** Clockwise interior boundaries, each omitting its duplicated closing point. */
|
|
@@ -2162,31 +2360,60 @@ export declare interface PolylineResamplingOptions extends CurveSamplingOptions
|
|
|
2162
2360
|
readonly closed?: boolean;
|
|
2163
2361
|
}
|
|
2164
2362
|
|
|
2165
|
-
/**
|
|
2363
|
+
/**
|
|
2364
|
+
* Checks grid options, Float32 axis precision, and output limits; returns exact mesh buffer counts.
|
|
2365
|
+
*
|
|
2366
|
+
* This pure operation needs no engine and neither evaluates `height` nor allocates mesh buffers.
|
|
2367
|
+
* Successful preflight leaves height values, Float32 base storage, and generated mesh validity to
|
|
2368
|
+
* construction. `byteCount` covers position and index buffers, not total working memory.
|
|
2369
|
+
*
|
|
2370
|
+
* @see {@link heightfieldMesh}
|
|
2371
|
+
*/
|
|
2166
2372
|
export declare function preflightHeightfield(
|
|
2167
2373
|
options: HeightfieldOptions,
|
|
2168
2374
|
limits?: HeightfieldMeshLimits,
|
|
2169
2375
|
): HeightfieldPreflight;
|
|
2170
2376
|
|
|
2171
2377
|
/**
|
|
2172
|
-
*
|
|
2173
|
-
*
|
|
2378
|
+
* Checks thread dimensions, profile, end treatments, sampling, and conservative estimates against output limits.
|
|
2379
|
+
*
|
|
2380
|
+
* This pure operation needs no engine and constructs planning data without vertex or index buffers.
|
|
2381
|
+
* `circularSegments` is the selected count; row and triangle counts are conservative estimates.
|
|
2382
|
+
* Successful preflight leaves generated coordinate and topology checks to mesh construction.
|
|
2383
|
+
*
|
|
2384
|
+
* @see {@link helicalThreadSolidMesh}
|
|
2174
2385
|
*/
|
|
2175
2386
|
export declare function preflightHelicalThreadSolidMesh(
|
|
2176
2387
|
options: HelicalThreadSolidMeshOptions,
|
|
2177
2388
|
): HelicalThreadSolidMeshPreflight;
|
|
2178
2389
|
|
|
2179
|
-
/**
|
|
2390
|
+
/**
|
|
2391
|
+
* Resolves compensated cutter dimensions and checks extended mesh estimates against output limits.
|
|
2392
|
+
*
|
|
2393
|
+
* This pure operation uses explicit resolution and limits or package defaults, without an active
|
|
2394
|
+
* host execution. It includes the cutter's one-pitch extension beyond each requested face and
|
|
2395
|
+
* creates planning data without mesh buffers or native objects. Row and triangle counts are
|
|
2396
|
+
* estimates; mesh validity and native construction are checked later.
|
|
2397
|
+
*
|
|
2398
|
+
* @see {@link preflightHelicalThreadSolidMesh}
|
|
2399
|
+
* @see {@link helicalThreadSolidMesh}
|
|
2400
|
+
*/
|
|
2180
2401
|
export declare function preflightInternalThreadCutter(
|
|
2181
2402
|
options: InternalThreadCutterOptions,
|
|
2182
2403
|
): HelicalThreadSolidMeshPreflight;
|
|
2183
2404
|
|
|
2184
2405
|
/**
|
|
2185
|
-
*
|
|
2406
|
+
* Parses and validates bounded SVG input, constructing its normalized sampled region and diagnostics.
|
|
2407
|
+
*
|
|
2408
|
+
* This pure operation performs curve flattening, fill and stroke construction, and polygon union;
|
|
2409
|
+
* it needs no browser or engine. Geometry counts measure the returned region at the selected
|
|
2410
|
+
* resolution, rather than predicting later mesh allocation. The region may be empty; tiny-island
|
|
2411
|
+
* and short-edge indicators do not establish manufacturability or later solid validity.
|
|
2186
2412
|
*
|
|
2187
2413
|
* @param svg - Complete SVG XML source, limited to 256 KiB of UTF-8.
|
|
2188
2414
|
* @param options - Physical flattening and viewport-origin controls.
|
|
2189
2415
|
* @returns The canonical normalized region plus bounded source, topology, and safe-repair facts.
|
|
2416
|
+
* @throws {@link GeometryError} When XML, supported-feature, geometry, or complexity checks fail.
|
|
2190
2417
|
*/
|
|
2191
2418
|
export declare function preflightSvgRegion(
|
|
2192
2419
|
svg: string,
|
|
@@ -2194,38 +2421,45 @@ export declare function preflightSvgRegion(
|
|
|
2194
2421
|
): SvgRegionPreflight;
|
|
2195
2422
|
|
|
2196
2423
|
/**
|
|
2197
|
-
*
|
|
2198
|
-
*
|
|
2424
|
+
* Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
|
|
2425
|
+
*
|
|
2426
|
+
* This pure operation uses explicit resolution and limits or package defaults, without an active
|
|
2427
|
+
* host execution. It resolves body/cutter dimensions without mesh buffers or native objects.
|
|
2428
|
+
* `thread` contains conservative cutter estimates, excluding the body and Boolean result.
|
|
2429
|
+
* Successful preflight leaves mesh validity, native construction, and manufacturing fit to later checks.
|
|
2430
|
+
*
|
|
2431
|
+
* @see {@link preflightHelicalThreadSolidMesh}
|
|
2199
2432
|
*/
|
|
2200
2433
|
export declare function preflightThreadedNut(
|
|
2201
2434
|
options: ThreadedNutOptions,
|
|
2202
2435
|
): ThreadedNutPreflight;
|
|
2203
2436
|
|
|
2204
|
-
/**
|
|
2437
|
+
/**
|
|
2438
|
+
* Resolves compensated rod dimensions and checks conservative mesh estimates against output limits.
|
|
2439
|
+
*
|
|
2440
|
+
* This pure operation uses explicit resolution and limits or package defaults, without an active
|
|
2441
|
+
* host execution. It creates planning data without mesh buffers or native objects; returned row
|
|
2442
|
+
* and triangle counts are estimates. Mesh validity and native construction are checked later.
|
|
2443
|
+
*
|
|
2444
|
+
* @see {@link preflightHelicalThreadSolidMesh}
|
|
2445
|
+
* @see {@link helicalThreadSolidMesh}
|
|
2446
|
+
*/
|
|
2205
2447
|
export declare function preflightThreadedRod(
|
|
2206
2448
|
options: ThreadedRodOptions,
|
|
2207
2449
|
): HelicalThreadSolidMeshPreflight;
|
|
2208
2450
|
|
|
2209
|
-
/**
|
|
2210
|
-
export declare interface
|
|
2211
|
-
/** Applied after local construction; Section
|
|
2212
|
-
readonly
|
|
2451
|
+
/** Anchor attachment shared by solid and filled-section factories. */
|
|
2452
|
+
export declare interface PrimitiveAttachment {
|
|
2453
|
+
/** Applied after local construction; Section attachment must preserve the XY plane. */
|
|
2454
|
+
readonly attachment?: PrimitiveAttachmentOptions;
|
|
2213
2455
|
}
|
|
2214
2456
|
|
|
2215
2457
|
/** Maps an explicit or named shape-local attachment anchor onto a world-space anchor. */
|
|
2216
|
-
export declare interface
|
|
2458
|
+
export declare interface PrimitiveAttachmentOptions extends AttachOptions {
|
|
2217
2459
|
/** Shape-local source frame or a named primitive anchor such as bottom. */
|
|
2218
2460
|
readonly source: Anchor3 | string;
|
|
2219
2461
|
/** World-space target frame in millimetres. */
|
|
2220
2462
|
readonly target: Anchor3;
|
|
2221
|
-
/** Align outward directions face-to-face or in parallel. Defaults to opposed. */
|
|
2222
|
-
readonly alignment?: "opposed" | "same";
|
|
2223
|
-
/** Finite separation along the target direction in millimetres. Defaults to zero. */
|
|
2224
|
-
readonly gap?: number;
|
|
2225
|
-
/** Finite additional roll around the attached direction in degrees. Defaults to zero. */
|
|
2226
|
-
readonly spinDegrees?: number;
|
|
2227
|
-
/** Explicit numeric comparison overrides for anchor normalization. */
|
|
2228
|
-
readonly tolerance?: GeometryToleranceOptions;
|
|
2229
2463
|
}
|
|
2230
2464
|
|
|
2231
2465
|
/**
|
|
@@ -2264,7 +2498,13 @@ export declare interface PrintableThreadFitPolicy {
|
|
|
2264
2498
|
readonly maleRadialInset: number;
|
|
2265
2499
|
}
|
|
2266
2500
|
|
|
2267
|
-
/**
|
|
2501
|
+
/**
|
|
2502
|
+
* An explicit component/contour/span topology, before shared family sampling with matchProfiles.
|
|
2503
|
+
* Component, contour and span identities establish correspondence across a loft or sweep family.
|
|
2504
|
+
*
|
|
2505
|
+
* @see {@link CorrespondingProfile}
|
|
2506
|
+
* @see {@link matchProfiles}
|
|
2507
|
+
*/
|
|
2268
2508
|
export declare interface Profile {
|
|
2269
2509
|
/** Ordered components with explicit contour identities. */
|
|
2270
2510
|
readonly components: readonly ProfileComponent2[];
|
|
@@ -2280,7 +2520,13 @@ export declare interface ProfileComponent2 {
|
|
|
2280
2520
|
readonly holes: readonly ProfileContour2[];
|
|
2281
2521
|
}
|
|
2282
2522
|
|
|
2283
|
-
/**
|
|
2523
|
+
/**
|
|
2524
|
+
* An identified closed boundary of curve spans, before shared family sampling.
|
|
2525
|
+
* Outer winding is CCW and hole winding is CW. matchProfiles retains span identities in sampled contours.
|
|
2526
|
+
*
|
|
2527
|
+
* @see {@link Contour} for sampled point coordinates.
|
|
2528
|
+
* @see {@link CorrespondingContour} for sampled coordinates with correspondence metadata.
|
|
2529
|
+
*/
|
|
2284
2530
|
export declare interface ProfileContour2 {
|
|
2285
2531
|
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
2286
2532
|
readonly id: string;
|
|
@@ -2297,7 +2543,7 @@ export declare interface ProfiledEdgeTreatment {
|
|
|
2297
2543
|
* First coordinates decrease and second coordinates increase. Cylinder/extrusion ends use
|
|
2298
2544
|
* cap inset first, side setback second; planar corners use incoming then outgoing edges.
|
|
2299
2545
|
*/
|
|
2300
|
-
readonly profile: readonly
|
|
2546
|
+
readonly profile: readonly Vector2Data[];
|
|
2301
2547
|
}
|
|
2302
2548
|
|
|
2303
2549
|
/** An identified line, circular arc, or cubic Bézier between corresponding landmarks. */
|
|
@@ -2313,41 +2559,41 @@ export declare type ProfileSpan2 = {
|
|
|
2313
2559
|
/** Selects a straight span. */
|
|
2314
2560
|
readonly kind: "line";
|
|
2315
2561
|
/** Start point in millimetres. */
|
|
2316
|
-
readonly start:
|
|
2562
|
+
readonly start: Vector2Data;
|
|
2317
2563
|
/** End point in millimetres. */
|
|
2318
|
-
readonly end:
|
|
2564
|
+
readonly end: Vector2Data;
|
|
2319
2565
|
}
|
|
2320
2566
|
| {
|
|
2321
2567
|
/** Selects the geometric curve or span family. */
|
|
2322
2568
|
readonly kind: "arc";
|
|
2323
2569
|
/** Center point in millimetres. */
|
|
2324
|
-
readonly center:
|
|
2570
|
+
readonly center: Vector2Data;
|
|
2325
2571
|
/** Circular radius in millimetres. */
|
|
2326
2572
|
readonly radius: number;
|
|
2327
2573
|
/** Initial counterclockwise angle in degrees. */
|
|
2328
|
-
readonly
|
|
2574
|
+
readonly startAngle: number;
|
|
2329
2575
|
/** Signed counterclockwise angular sweep in degrees. */
|
|
2330
|
-
readonly
|
|
2576
|
+
readonly sweepAngle: number;
|
|
2331
2577
|
}
|
|
2332
2578
|
| {
|
|
2333
2579
|
/** Selects a cubic Bézier span with the same coordinates as CubicBezierCurve2. */
|
|
2334
2580
|
readonly kind: "cubic";
|
|
2335
2581
|
/** Start point in millimetres. */
|
|
2336
|
-
readonly start:
|
|
2582
|
+
readonly start: Vector2Data;
|
|
2337
2583
|
/** First control point in millimetres. */
|
|
2338
|
-
readonly control1:
|
|
2584
|
+
readonly control1: Vector2Data;
|
|
2339
2585
|
/** Second control point in millimetres. */
|
|
2340
|
-
readonly control2:
|
|
2586
|
+
readonly control2: Vector2Data;
|
|
2341
2587
|
/** End point in millimetres. */
|
|
2342
|
-
readonly end:
|
|
2588
|
+
readonly end: Vector2Data;
|
|
2343
2589
|
}
|
|
2344
2590
|
);
|
|
2345
2591
|
|
|
2346
2592
|
/** Removes the component parallel to a normalized plane normal. */
|
|
2347
2593
|
export declare const projectOntoPlane3: (
|
|
2348
|
-
vector:
|
|
2349
|
-
normal:
|
|
2350
|
-
) =>
|
|
2594
|
+
vector: Vector3Data,
|
|
2595
|
+
normal: Vector3Data,
|
|
2596
|
+
) => Vector3Data;
|
|
2351
2597
|
|
|
2352
2598
|
/** Resolved pitch-line dimensions for a finite rack segment. */
|
|
2353
2599
|
export declare interface RackPitchDimensions {
|
|
@@ -2378,33 +2624,39 @@ export declare interface RackPitchSpec {
|
|
|
2378
2624
|
/** Dedendum clearance as a multiple of normal module; defaults to `0.25`. */
|
|
2379
2625
|
readonly clearanceFactor?: number;
|
|
2380
2626
|
/** Signed helix angle in degrees; zero creates a straight rack. */
|
|
2381
|
-
readonly
|
|
2627
|
+
readonly helixAngle?: number;
|
|
2382
2628
|
/** Normal module in millimetres per tooth. */
|
|
2383
2629
|
readonly module: number;
|
|
2384
2630
|
/** Normal pressure angle in degrees; defaults to 20 degrees. */
|
|
2385
|
-
readonly
|
|
2631
|
+
readonly pressureAngle?: number;
|
|
2386
2632
|
/** Number of complete rack teeth represented by the segment. */
|
|
2387
2633
|
readonly toothCount: number;
|
|
2388
2634
|
}
|
|
2389
2635
|
|
|
2390
2636
|
/**
|
|
2391
|
-
*
|
|
2637
|
+
* Degree rotations about a fixed world-space pivot; XY patterns use the implicit +Z axis.
|
|
2392
2638
|
*/
|
|
2393
|
-
export declare
|
|
2394
|
-
/** Number of
|
|
2639
|
+
export declare type RadialPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
2640
|
+
/** Number of shapes to return, including the original. */
|
|
2395
2641
|
readonly count: number;
|
|
2396
|
-
/** Axis of the right-handed rotation. Its magnitude is ignored. */
|
|
2397
|
-
readonly axis: Vector3Tuple;
|
|
2398
2642
|
/** Signed rotation from one copy to the next, in degrees. */
|
|
2399
|
-
readonly
|
|
2400
|
-
/**
|
|
2401
|
-
readonly
|
|
2402
|
-
}
|
|
2643
|
+
readonly angle: number;
|
|
2644
|
+
/** Fixed world-space rotation pivot; defaults to the coordinate origin. */
|
|
2645
|
+
readonly pivot?: Dimension extends 2 ? Vector2Input : Vector3Input;
|
|
2646
|
+
} & (Dimension extends 2
|
|
2647
|
+
? {
|
|
2648
|
+
/** XY rotation uses +Z; an explicit spatial axis is unavailable. */
|
|
2649
|
+
readonly axis?: never;
|
|
2650
|
+
}
|
|
2651
|
+
: {
|
|
2652
|
+
/** Axis of the right-handed rotation. Its nonzero magnitude is ignored. */
|
|
2653
|
+
readonly axis: Vector3Input;
|
|
2654
|
+
});
|
|
2403
2655
|
|
|
2404
2656
|
/** Rotations about an explicit axis; angles use degrees and the first placement is identity. */
|
|
2405
2657
|
export declare function radialPatternTransforms(
|
|
2406
2658
|
options: RadialPatternOptions,
|
|
2407
|
-
): readonly
|
|
2659
|
+
): readonly Transform3Data[];
|
|
2408
2660
|
|
|
2409
2661
|
/** Radial dimensions refer to polygon vertices or compensate faceting to meet polygon faces. */
|
|
2410
2662
|
export declare type RadialSizing = "vertex" | "face";
|
|
@@ -2420,7 +2672,11 @@ export declare interface RadialSizingOptions {
|
|
|
2420
2672
|
}
|
|
2421
2673
|
|
|
2422
2674
|
/**
|
|
2423
|
-
* Creates an immutable CCW rectangle
|
|
2675
|
+
* Creates an immutable sampled CCW rectangle boundary. Round radius zero is square; tangent saturated endpoints occur once.
|
|
2676
|
+
*
|
|
2677
|
+
* Use [rectangle](/docs/reference/model/rectangle) for a filled Section.
|
|
2678
|
+
*
|
|
2679
|
+
* @see {@link rectangleProfile} for identified edge/corner spans used by matchProfiles.
|
|
2424
2680
|
*
|
|
2425
2681
|
* @example Rounded rectangle outline
|
|
2426
2682
|
* ```ts
|
|
@@ -2436,7 +2692,7 @@ export declare function rectangleContour(
|
|
|
2436
2692
|
*/
|
|
2437
2693
|
export declare interface RectangleContourOptions {
|
|
2438
2694
|
/** Positive uniform size or explicit XY extents in millimetres. */
|
|
2439
|
-
readonly size: number |
|
|
2695
|
+
readonly size: number | Vector2Data;
|
|
2440
2696
|
/** Center on XY; otherwise the minimum corner is the origin. Defaults to true. */
|
|
2441
2697
|
readonly center?: boolean;
|
|
2442
2698
|
/** Uniform treatment or four corner treatments. Exact round segments describe a complete circle and must divide by four. */
|
|
@@ -2464,6 +2720,11 @@ export declare type RectangleCornerTreatments = readonly [
|
|
|
2464
2720
|
/**
|
|
2465
2721
|
* Creates an identified rectangle whose edge/corner spans survive zero and saturated round radii. Outer winding is CCW.
|
|
2466
2722
|
*
|
|
2723
|
+
* Use [rectangle](/docs/reference/model/rectangle) for a filled Section.
|
|
2724
|
+
*
|
|
2725
|
+
* @see {@link matchProfiles} to sample a family with shared landmark correspondence.
|
|
2726
|
+
* @see {@link rectangleContour} for sampled boundary coordinates.
|
|
2727
|
+
*
|
|
2467
2728
|
* @example Retain rectangle landmarks
|
|
2468
2729
|
* ```ts
|
|
2469
2730
|
* rectangleProfile({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
|
|
@@ -2492,9 +2753,14 @@ export declare interface RectangleProfileOptions extends RectangleContourOptions
|
|
|
2492
2753
|
export declare function regionArea(region: RegionData): number;
|
|
2493
2754
|
|
|
2494
2755
|
/** Returns finite axis-aligned bounds for a non-empty region. */
|
|
2495
|
-
export declare function regionBounds(region: RegionData):
|
|
2756
|
+
export declare function regionBounds(region: RegionData): Bounds2Data;
|
|
2496
2757
|
|
|
2497
|
-
/**
|
|
2758
|
+
/**
|
|
2759
|
+
* A two-dimensional region represented by disjoint filled polygons.
|
|
2760
|
+
* Each PolygonData owns one exterior and its holes; an empty region contains no material.
|
|
2761
|
+
*
|
|
2762
|
+
* @see {@link PolygonData}
|
|
2763
|
+
*/
|
|
2498
2764
|
export declare type RegionData = readonly PolygonData[];
|
|
2499
2765
|
|
|
2500
2766
|
/**
|
|
@@ -2507,7 +2773,7 @@ export declare type RegionData = readonly PolygonData[];
|
|
|
2507
2773
|
*/
|
|
2508
2774
|
export declare const regularPolygonContour: (
|
|
2509
2775
|
options: RegularPolygonContourOptions,
|
|
2510
|
-
) => readonly
|
|
2776
|
+
) => readonly Vector2Data[];
|
|
2511
2777
|
|
|
2512
2778
|
/** Exact regular polygon dimensions and counterclockwise degree rotation. */
|
|
2513
2779
|
export declare interface RegularPolygonContourOptions extends RadialSizingOptions {
|
|
@@ -2516,7 +2782,7 @@ export declare interface RegularPolygonContourOptions extends RadialSizingOption
|
|
|
2516
2782
|
/** Exact side count from three through the selected profile sampling ceiling. */
|
|
2517
2783
|
readonly sides: number;
|
|
2518
2784
|
/** Counterclockwise rotation in degrees; defaults to zero with a vertex on +X. */
|
|
2519
|
-
readonly
|
|
2785
|
+
readonly rotation?: number;
|
|
2520
2786
|
}
|
|
2521
2787
|
|
|
2522
2788
|
/** Resamples a planar polyline with the same point, tangent, seam and budget guarantees as 3D.
|
|
@@ -2527,7 +2793,7 @@ export declare interface RegularPolygonContourOptions extends RadialSizingOption
|
|
|
2527
2793
|
* ```
|
|
2528
2794
|
*/
|
|
2529
2795
|
export declare function resamplePolyline2(
|
|
2530
|
-
path: readonly
|
|
2796
|
+
path: readonly Vector2Data[],
|
|
2531
2797
|
options?: PolylineResamplingOptions,
|
|
2532
2798
|
): SampledCurve2;
|
|
2533
2799
|
|
|
@@ -2543,7 +2809,7 @@ export declare function resamplePolyline2(
|
|
|
2543
2809
|
* ```
|
|
2544
2810
|
*/
|
|
2545
2811
|
export declare function resamplePolyline3(
|
|
2546
|
-
path: readonly
|
|
2812
|
+
path: readonly Vector3Data[],
|
|
2547
2813
|
options?: PolylineResamplingOptions,
|
|
2548
2814
|
): SampledCurve3;
|
|
2549
2815
|
|
|
@@ -2553,7 +2819,7 @@ export declare function resamplePolyline3(
|
|
|
2553
2819
|
* `alignTo` must be non-empty and contain only positive safe integers. Its checked least common
|
|
2554
2820
|
* multiple defines the alignment grid. An exact `segments` value wins over
|
|
2555
2821
|
* `resolution.circularSegments` and adaptive sampling, but is never rounded: it must already be
|
|
2556
|
-
* aligned and meet `
|
|
2822
|
+
* aligned and meet `minSegments`. Adaptive counts are rounded upward and fail with
|
|
2557
2823
|
* `COMPLEXITY_LIMIT` when the aligned result exceeds the configured safety cap.
|
|
2558
2824
|
*
|
|
2559
2825
|
* @param radius - Positive circle radius in millimetres used for adaptive physical sampling.
|
|
@@ -2580,7 +2846,7 @@ export declare function resolveAlignedCircularSegments(
|
|
|
2580
2846
|
* the reusable BOSL2-style convention while retaining at least one segment.
|
|
2581
2847
|
*
|
|
2582
2848
|
* @param radius - Arc radius in millimetres.
|
|
2583
|
-
* @param
|
|
2849
|
+
* @param angle - Non-zero signed sweep angle no greater than 360 degrees in magnitude.
|
|
2584
2850
|
* @param policy - Optional operation-level policy over the active model scope.
|
|
2585
2851
|
* @returns Segment count for the requested arc span.
|
|
2586
2852
|
* @throws {@link GeometryError} when radius, angle, or resolution policy is invalid, or the
|
|
@@ -2594,7 +2860,7 @@ export declare function resolveAlignedCircularSegments(
|
|
|
2594
2860
|
*/
|
|
2595
2861
|
export declare function resolveArcSegments(
|
|
2596
2862
|
radius: number,
|
|
2597
|
-
|
|
2863
|
+
angle: number,
|
|
2598
2864
|
policy?: CircularResolutionOptions,
|
|
2599
2865
|
limits?: Partial<GeometrySamplingLimits>,
|
|
2600
2866
|
): number;
|
|
@@ -2704,6 +2970,23 @@ export declare function resolveGeometryTolerance(
|
|
|
2704
2970
|
options?: GeometryToleranceOptions,
|
|
2705
2971
|
): ResolvedGeometryTolerance;
|
|
2706
2972
|
|
|
2973
|
+
/**
|
|
2974
|
+
* Resolves equal alternating knuckles along +X, centered at the origin, in millimetres.
|
|
2975
|
+
*
|
|
2976
|
+
* Both faces of each running pair use a common polygon count; face-sized bores contain the
|
|
2977
|
+
* shaft's complete rotational envelope. Adaptive sampling satisfies both face and vertex error
|
|
2978
|
+
* bounds; an insufficient ceiling rejects instead of reducing quality. Exact counts are intentional
|
|
2979
|
+
* facets. Zero allowances describe ideal contact, not a printable running fit.
|
|
2980
|
+
*
|
|
2981
|
+
* Rejects nonfinite or nonpositive dimensions, invalid mode/count combinations, exhausted axial
|
|
2982
|
+
* length, missing/excessive lift-off engagement, and nonpositive conservative faceted barrel walls.
|
|
2983
|
+
* Manufacturing minima, strength, mounting, retention, handedness, and motion remain caller policy.
|
|
2984
|
+
*/
|
|
2985
|
+
export declare function resolveKnuckleHinge(
|
|
2986
|
+
spec: KnuckleHingeSpec,
|
|
2987
|
+
options?: KnuckleHingeSamplingOptions,
|
|
2988
|
+
): KnuckleHingeDimensions;
|
|
2989
|
+
|
|
2707
2990
|
/** Resolves and validates a named or caller-defined print-fit policy. */
|
|
2708
2991
|
export declare function resolvePrintableThreadFitPolicy(
|
|
2709
2992
|
fit?: PrintableThreadFit | PrintableThreadFitPolicy,
|
|
@@ -2718,7 +3001,7 @@ export declare function resolveRackPitch(
|
|
|
2718
3001
|
* Resolves a role-independent, start-aligned facet count from the larger female mating envelope.
|
|
2719
3002
|
*
|
|
2720
3003
|
* An exact `circularSegments` value must already be divisible by `starts`; it is never silently
|
|
2721
|
-
* raised. Adaptive policies align upward and fail if that would exceed `
|
|
3004
|
+
* raised. Adaptive policies align upward and fail if that would exceed `maxSegments`.
|
|
2722
3005
|
*/
|
|
2723
3006
|
export declare function resolveThreadCircularSegments(
|
|
2724
3007
|
options: ThreadCircularSegmentsOptions,
|
|
@@ -2741,6 +3024,7 @@ export declare function reverseTriangleMesh(mesh: TriangleMesh): TriangleMesh;
|
|
|
2741
3024
|
* vertices and zero-area quads. Profile edges that lie entirely on the axis
|
|
2742
3025
|
* collapse to the solid's interior and are intentionally omitted.
|
|
2743
3026
|
* Profile coordinates must fit finite Float32 mesh storage.
|
|
3027
|
+
* Path2 profiles must be closed; raw point collections have an implicit closing edge.
|
|
2744
3028
|
*
|
|
2745
3029
|
* @param profile - Closed CCW `[radius, z]` profile without a duplicated seam point.
|
|
2746
3030
|
* @param options - Optional physical or exact circumferential sampling controls. Defaults to `{}`.
|
|
@@ -2749,11 +3033,11 @@ export declare function reverseTriangleMesh(mesh: TriangleMesh): TriangleMesh;
|
|
|
2749
3033
|
* @example Partial revolution with end caps
|
|
2750
3034
|
* ```ts
|
|
2751
3035
|
* // Each point is [radius, Z]; the profile seam is implicit.
|
|
2752
|
-
* revolveMesh([[0, 0], [12, 0], [8, 20], [0, 20]], {
|
|
3036
|
+
* revolveMesh([[0, 0], [12, 0], [8, 20], [0, 20]], { degrees: 270 });
|
|
2753
3037
|
* ```
|
|
2754
3038
|
*/
|
|
2755
3039
|
export declare const revolveMesh: (
|
|
2756
|
-
|
|
3040
|
+
input: Path2Input,
|
|
2757
3041
|
options?: RevolveOptions,
|
|
2758
3042
|
) => TriangleMesh;
|
|
2759
3043
|
|
|
@@ -2762,12 +3046,14 @@ export declare const revolveMesh: (
|
|
|
2762
3046
|
*/
|
|
2763
3047
|
export declare interface RevolveOptions extends CircularPrimitiveOptions {
|
|
2764
3048
|
/**
|
|
2765
|
-
* Positive
|
|
3049
|
+
* Positive sweep in degrees, no greater than 360. Defaults to a full revolution;
|
|
3050
|
+
* smaller sweeps form partial revolutions with end caps.
|
|
2766
3051
|
* Segment counts describe a complete circle and scale to this angular span. Native filled
|
|
2767
3052
|
* revolutions require at least three sweep intervals: adaptive sampling refines to that floor,
|
|
2768
3053
|
* while exact counts that imply fewer intervals reject. Pure revolveMesh supports one interval.
|
|
3054
|
+
* @defaultValue `360`
|
|
2769
3055
|
*/
|
|
2770
|
-
readonly
|
|
3056
|
+
readonly degrees?: number;
|
|
2771
3057
|
/** Explicit output and sampling allocation ceilings. */
|
|
2772
3058
|
readonly limits?: Partial<ModelingLimits>;
|
|
2773
3059
|
}
|
|
@@ -2777,9 +3063,9 @@ export declare interface RevolveOptions extends CircularPrimitiveOptions {
|
|
|
2777
3063
|
* Throws `NON_FINITE_VALUE` for nonfinite coordinates, angles, or derived coordinates.
|
|
2778
3064
|
*/
|
|
2779
3065
|
export declare const rotate2: (
|
|
2780
|
-
vector:
|
|
3066
|
+
vector: Vector2Data,
|
|
2781
3067
|
degrees: number,
|
|
2782
|
-
) =>
|
|
3068
|
+
) => Vector2Data;
|
|
2783
3069
|
|
|
2784
3070
|
/**
|
|
2785
3071
|
* Creates a right-handed axis-angle rotation transform.
|
|
@@ -2790,10 +3076,10 @@ export declare const rotate2: (
|
|
|
2790
3076
|
* @returns A frozen row-major transform.
|
|
2791
3077
|
*/
|
|
2792
3078
|
export declare function rotationTransform3(
|
|
2793
|
-
axis:
|
|
3079
|
+
axis: Vector3Data,
|
|
2794
3080
|
angle: AxisAngleRotation3,
|
|
2795
3081
|
tolerance?: GeometryToleranceOptions,
|
|
2796
|
-
):
|
|
3082
|
+
): Transform3Data;
|
|
2797
3083
|
|
|
2798
3084
|
/**
|
|
2799
3085
|
* Replaces each vertex of a non-duplicated closed polyline with a sampled
|
|
@@ -2803,13 +3089,14 @@ export declare function rotationTransform3(
|
|
|
2803
3089
|
* 45% of adjacent segment lengths to prevent neighboring corners from crossing.
|
|
2804
3090
|
* The returned path does not duplicate its closing point.
|
|
2805
3091
|
* Coordinates and radius must be finite; input and output are each limited by maxPathPoints (default 100000).
|
|
3092
|
+
* Requires a closed path value; raw tuples are interpreted as closed. Invalid inputs throw GeometryError.
|
|
2806
3093
|
*/
|
|
2807
3094
|
export declare const roundClosedPolylinePath: (
|
|
2808
|
-
|
|
3095
|
+
input: Path3Input,
|
|
2809
3096
|
radius: number,
|
|
2810
3097
|
segmentsPerCorner: number,
|
|
2811
3098
|
limits?: Partial<GeometrySamplingLimits>,
|
|
2812
|
-
) => readonly
|
|
3099
|
+
) => readonly Vector3Data[];
|
|
2813
3100
|
|
|
2814
3101
|
/**
|
|
2815
3102
|
* A circular edge or corner roundover with explicit physical sampling.
|
|
@@ -2829,6 +3116,7 @@ export declare interface RowLayoutOptions {
|
|
|
2829
3116
|
|
|
2830
3117
|
/**
|
|
2831
3118
|
* Samples 2–32 connected line/cubic segments into a simple, nonzero-area, immutable CCW XY loop.
|
|
3119
|
+
*
|
|
2832
3120
|
* Physical scaling precedes adaptive curve sampling; the final end must repeat start exactly.
|
|
2833
3121
|
* Shared anchors and the closing seam are emitted once. Winding normalization may change the
|
|
2834
3122
|
* starting vertex. The sampled loop is checked for self-intersection and degeneracy by
|
|
@@ -2836,7 +3124,7 @@ export declare interface RowLayoutOptions {
|
|
|
2836
3124
|
* coordinate range are required. No native engine, SDK, or ambient resolution is used.
|
|
2837
3125
|
*
|
|
2838
3126
|
* @param curve - Closed contour in millimetres unless positive scales convert its coordinates.
|
|
2839
|
-
* @param options - Physical resolution and unique vertex budget; defaults to 4096
|
|
3127
|
+
* @param options - Physical resolution and unique vertex budget; defaults to min(4096, maxProfilePoints).
|
|
2840
3128
|
* @returns Frozen counterclockwise loop in millimetres, without a repeated seam endpoint.
|
|
2841
3129
|
* @throws {@link GeometryError} for invalid data, topology, scale, or exceeded sampling budgets.
|
|
2842
3130
|
*
|
|
@@ -2866,17 +3154,16 @@ export declare interface SampleContourOptions {
|
|
|
2866
3154
|
/** Physical policy evaluated after scaling, using the shared curve sampler. */
|
|
2867
3155
|
readonly resolution?: GeometryResolution;
|
|
2868
3156
|
/** Unique output vertex ceiling, at least three, within maxProfilePoints. Defaults to min(4096, maxProfilePoints). */
|
|
2869
|
-
readonly
|
|
3157
|
+
readonly maxVertices?: number;
|
|
2870
3158
|
/** Selected profile and per-segment path ceilings; omitted values use package defaults. */
|
|
2871
3159
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2872
3160
|
}
|
|
2873
3161
|
|
|
2874
3162
|
/** Samples a planar curve with the same guarantees and policy as spatial sampling.
|
|
2875
|
-
* @remarks
|
|
2876
|
-
* frozen. At stationary tangents, outgoing secants are preferred and endpoints use a backward fallback.
|
|
3163
|
+
* @remarks Returned planar points and tangents are copied and frozen. At stationary tangents, outgoing secants are preferred and endpoints use a backward fallback.
|
|
2877
3164
|
* @example
|
|
2878
3165
|
* ```ts
|
|
2879
|
-
* const turn = sampleCurve2({kind: "arc", center: [0,0], radius: 10,
|
|
3166
|
+
* const turn = sampleCurve2({kind: "arc", center: [0,0], radius: 10, sweepAngle: 90});
|
|
2880
3167
|
* ```
|
|
2881
3168
|
*/
|
|
2882
3169
|
export declare function sampleCurve2(
|
|
@@ -2913,9 +3200,9 @@ export declare function sampleCylindricalGearOutline(
|
|
|
2913
3200
|
/** Immutable planar points and corresponding directed unit tangents. */
|
|
2914
3201
|
export declare interface SampledCurve2 {
|
|
2915
3202
|
/** Curves retain both endpoints, including full-circle seams; closed resampling omits its seam. */
|
|
2916
|
-
readonly points: readonly
|
|
3203
|
+
readonly points: readonly Vector2Data[];
|
|
2917
3204
|
/** Directed unit vectors; stationary derivatives use the nearest usable direction. */
|
|
2918
|
-
readonly tangents: readonly
|
|
3205
|
+
readonly tangents: readonly Vector2Data[];
|
|
2919
3206
|
}
|
|
2920
3207
|
|
|
2921
3208
|
/**
|
|
@@ -2923,9 +3210,9 @@ export declare interface SampledCurve2 {
|
|
|
2923
3210
|
*/
|
|
2924
3211
|
export declare interface SampledCurve3 {
|
|
2925
3212
|
/** Curves retain both endpoints, including full-circle seams; closed resampling omits its seam. */
|
|
2926
|
-
readonly points: readonly
|
|
3213
|
+
readonly points: readonly Vector3Data[];
|
|
2927
3214
|
/** Directed unit vectors; stationary derivatives use the nearest usable direction. */
|
|
2928
|
-
readonly tangents: readonly
|
|
3215
|
+
readonly tangents: readonly Vector3Data[];
|
|
2929
3216
|
}
|
|
2930
3217
|
|
|
2931
3218
|
/** Sampled paths plus conventional pitch and lead measurements. */
|
|
@@ -2933,7 +3220,7 @@ export declare interface SampledThreadHelices {
|
|
|
2933
3220
|
/** Axial advance over one revolution, equal to `pitch * starts`. */
|
|
2934
3221
|
readonly lead: number;
|
|
2935
3222
|
/** One immutable sampled path for each thread start. */
|
|
2936
|
-
readonly paths: readonly
|
|
3223
|
+
readonly paths: readonly (readonly Vector3Data[])[];
|
|
2937
3224
|
/** Adjacent axial thread spacing in millimetres. */
|
|
2938
3225
|
readonly pitch: number;
|
|
2939
3226
|
/** Number of revolutions represented by each path. */
|
|
@@ -2942,8 +3229,10 @@ export declare interface SampledThreadHelices {
|
|
|
2942
3229
|
|
|
2943
3230
|
/**
|
|
2944
3231
|
* Creates `segments + 1` points including exact helix endpoints from finite positive dimensions.
|
|
3232
|
+
*
|
|
2945
3233
|
* Integrated weights must remain finite. The maxPathPoints ceiling defaults to 100000; excessive
|
|
2946
3234
|
* exact counts reject before evaluating axial weights or allocating sample arrays.
|
|
3235
|
+
* Invalid inputs use GeometryError; exceptions thrown by axialWeight propagate unchanged.
|
|
2947
3236
|
*/
|
|
2948
3237
|
export declare const sampleHelix: ({
|
|
2949
3238
|
turns,
|
|
@@ -2952,7 +3241,7 @@ export declare const sampleHelix: ({
|
|
|
2952
3241
|
segments,
|
|
2953
3242
|
limits,
|
|
2954
3243
|
axialWeight,
|
|
2955
|
-
}: SampleHelixOptions) => readonly
|
|
3244
|
+
}: SampleHelixOptions) => readonly Vector3Data[];
|
|
2956
3245
|
|
|
2957
3246
|
/** Options for a sampled +Z helix with millimetre dimensions. */
|
|
2958
3247
|
export declare interface SampleHelixOptions {
|
|
@@ -2997,10 +3286,11 @@ export declare function sampleInternalCylindricalGearSpaceOutline(
|
|
|
2997
3286
|
export declare function sampleRackToothPath(
|
|
2998
3287
|
spec: RackPitchSpec,
|
|
2999
3288
|
limits?: Partial<GeometrySamplingLimits>,
|
|
3000
|
-
):
|
|
3289
|
+
): readonly Vector2Data[];
|
|
3001
3290
|
|
|
3002
3291
|
/**
|
|
3003
3292
|
* Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline.
|
|
3293
|
+
*
|
|
3004
3294
|
* Anchors must progress strictly upward; nonnegative-radius cubic controls must have ordered
|
|
3005
3295
|
* heights between their endpoints. Cubics use de Casteljau subdivision with a conservative
|
|
3006
3296
|
* control-hull chord-error bound. Lines also obey the optional physical edge-length ceiling.
|
|
@@ -3008,7 +3298,7 @@ export declare function sampleRackToothPath(
|
|
|
3008
3298
|
* no axis closure, winding normalization, or manufacturing repair is performed.
|
|
3009
3299
|
*
|
|
3010
3300
|
* @param curve - Open outline in millimetres unless the positive scales convert its coordinates.
|
|
3011
|
-
* @param options - Physical resolution and output budget; defaults to 4096
|
|
3301
|
+
* @param options - Physical resolution and output budget; defaults to min(4096, maxProfilePoints).
|
|
3012
3302
|
* @returns Frozen open polyline in millimetres, ordered from lowest to highest anchor.
|
|
3013
3303
|
* @throws {@link GeometryError} for invalid coordinates, order, scale, or exceeded subdivision budget.
|
|
3014
3304
|
*
|
|
@@ -3023,7 +3313,7 @@ export declare function sampleRackToothPath(
|
|
|
3023
3313
|
export declare function sampleSideProfile(
|
|
3024
3314
|
curve: SideProfileCurve,
|
|
3025
3315
|
options?: SampleSideProfileOptions,
|
|
3026
|
-
): readonly
|
|
3316
|
+
): readonly Vector2Data[];
|
|
3027
3317
|
|
|
3028
3318
|
/** Physical scaling and bounded adaptive subdivision for an open profile. */
|
|
3029
3319
|
export declare interface SampleSideProfileOptions {
|
|
@@ -3034,7 +3324,7 @@ export declare interface SampleSideProfileOptions {
|
|
|
3034
3324
|
/** Shared physical policy, evaluated after scaling; exact circular counts do not affect curves. */
|
|
3035
3325
|
readonly resolution?: GeometryResolution;
|
|
3036
3326
|
/** Maximum output vertex count within maxProfilePoints. Defaults to the smaller of 4096 and that ceiling. */
|
|
3037
|
-
readonly
|
|
3327
|
+
readonly maxVertices?: number;
|
|
3038
3328
|
/** Explicit profile and circular allocation ceilings. */
|
|
3039
3329
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
3040
3330
|
}
|
|
@@ -3064,9 +3354,9 @@ export declare function sampleThreadHelices(
|
|
|
3064
3354
|
|
|
3065
3355
|
/** Multiplies a vector by a dimensionless scalar. */
|
|
3066
3356
|
export declare const scale2: (
|
|
3067
|
-
vector:
|
|
3357
|
+
vector: Vector2Data,
|
|
3068
3358
|
scale: number,
|
|
3069
|
-
) =>
|
|
3359
|
+
) => Vector2Data;
|
|
3070
3360
|
|
|
3071
3361
|
/**
|
|
3072
3362
|
* Multiplies a vector by a dimensionless scalar.
|
|
@@ -3076,9 +3366,9 @@ export declare const scale2: (
|
|
|
3076
3366
|
* ```
|
|
3077
3367
|
*/
|
|
3078
3368
|
export declare const scale3: (
|
|
3079
|
-
vector:
|
|
3369
|
+
vector: Vector3Data,
|
|
3080
3370
|
scale: number,
|
|
3081
|
-
) =>
|
|
3371
|
+
) => Vector3Data;
|
|
3082
3372
|
|
|
3083
3373
|
/**
|
|
3084
3374
|
* Creates an immutable axis-aligned scale transform.
|
|
@@ -3089,9 +3379,7 @@ export declare const scale3: (
|
|
|
3089
3379
|
* @param factors - Finite, non-zero XYZ scale factors.
|
|
3090
3380
|
* @returns A frozen row-major transform.
|
|
3091
3381
|
*/
|
|
3092
|
-
export declare function scaleTransform3(
|
|
3093
|
-
factors: Vector3Tuple,
|
|
3094
|
-
): Transform3Matrix;
|
|
3382
|
+
export declare function scaleTransform3(factors: Vector3Data): Transform3Data;
|
|
3095
3383
|
|
|
3096
3384
|
/** An open radius/height outline; consumers own closure, mounting geometry, and wall policy. */
|
|
3097
3385
|
export declare interface SideProfileCurve {
|
|
@@ -3148,7 +3436,7 @@ export declare interface SmoothEdgeTreatment {
|
|
|
3148
3436
|
/** Bounded floating-point intersection and shell-orientation validation settings. */
|
|
3149
3437
|
export declare interface SolidMeshValidationOptions {
|
|
3150
3438
|
/** Work ceiling for spatial comparisons and containment tests; defaults to 2,000,000 and may only lower it. */
|
|
3151
|
-
readonly
|
|
3439
|
+
readonly maxTests?: number;
|
|
3152
3440
|
/** Distance comparison policy in millimetres; near contacts reject conservatively. */
|
|
3153
3441
|
readonly tolerance?: GeometryToleranceOptions;
|
|
3154
3442
|
}
|
|
@@ -3157,7 +3445,7 @@ export declare interface SolidMeshValidationOptions {
|
|
|
3157
3445
|
* Exactly one radius or diameter, placement, and tessellation for an origin-centered sphere.
|
|
3158
3446
|
*/
|
|
3159
3447
|
export declare type SphereOptions = CircularPrimitiveOptions &
|
|
3160
|
-
|
|
3448
|
+
PrimitiveAttachment &
|
|
3161
3449
|
(
|
|
3162
3450
|
| {
|
|
3163
3451
|
/** Positive radius in millimetres; mutually exclusive with diameter. */
|
|
@@ -3197,48 +3485,45 @@ export declare const starContour: (
|
|
|
3197
3485
|
points: number,
|
|
3198
3486
|
innerRadius?: number,
|
|
3199
3487
|
limits?: Partial<GeometrySamplingLimits>,
|
|
3200
|
-
) => readonly
|
|
3488
|
+
) => readonly Vector2Data[];
|
|
3201
3489
|
|
|
3202
3490
|
/** End-cap treatment for an open stroked path. */
|
|
3203
|
-
export declare type
|
|
3491
|
+
export declare type StrokeCap = "butt" | "round" | "square";
|
|
3204
3492
|
|
|
3205
3493
|
/** Join treatment where adjacent stroked path segments meet. */
|
|
3206
|
-
export declare type
|
|
3207
|
-
|
|
3208
|
-
/**
|
|
3209
|
-
* Converts a sampled millimetre path into the filled region covered by a centered stroke.
|
|
3210
|
-
*
|
|
3211
|
-
* Closed paths omit a duplicated seam point. Zero-length sampled segments are ignored, while the
|
|
3212
|
-
* effective path must still contain visible length. Round caps and joins use deterministic physical
|
|
3213
|
-
* resolution. Bevels fill the outer corner triangle; miters extend the outer edges to their
|
|
3214
|
-
* intersection, falling back to bevels above SVG's default miter limit of 4.
|
|
3215
|
-
*/
|
|
3216
|
-
export declare function strokePathRegion(
|
|
3217
|
-
path: Path2,
|
|
3218
|
-
options: StrokePathRegionOptions,
|
|
3219
|
-
): RegionData;
|
|
3494
|
+
export declare type StrokeJoin = "bevel" | "miter" | "round";
|
|
3220
3495
|
|
|
3221
3496
|
/** Physical stroke and topology controls shared by pure regions and native Sections. */
|
|
3222
|
-
export declare interface
|
|
3497
|
+
export declare interface StrokeOptions {
|
|
3223
3498
|
/** Explicit path, circular and expanded-profile allocation ceilings. */
|
|
3224
3499
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
3225
|
-
/**
|
|
3500
|
+
/** Raw point closure defaults to false; a Path2 supplies its closure and rejects conflicts. */
|
|
3226
3501
|
readonly closed?: boolean;
|
|
3227
3502
|
/** End-cap treatment for an open path. Ignored for closed paths. Default: `butt`. */
|
|
3228
|
-
readonly cap?:
|
|
3503
|
+
readonly cap?: StrokeCap;
|
|
3229
3504
|
/** Corner treatment; miters exceeding SVG's default limit of 4 become bevels. Default: `miter`. */
|
|
3230
|
-
readonly join?:
|
|
3505
|
+
readonly join?: StrokeJoin;
|
|
3231
3506
|
/** Physical tessellation policy for round caps and joins. */
|
|
3232
3507
|
readonly resolution?: GeometryResolution;
|
|
3233
3508
|
/** Positive total stroke width in millimetres, centered on the sampled path. */
|
|
3234
3509
|
readonly width: number;
|
|
3235
3510
|
}
|
|
3236
3511
|
|
|
3512
|
+
/**
|
|
3513
|
+
* Converts a sampled millimetre path into the filled region covered by a centered stroke.
|
|
3514
|
+
*
|
|
3515
|
+
* Closed paths omit a duplicated seam point. Zero-length sampled segments are ignored, while the
|
|
3516
|
+
* effective path must still contain visible length. Round caps and joins use deterministic physical
|
|
3517
|
+
* resolution. Bevels fill the outer corner triangle; miters extend the outer edges to their
|
|
3518
|
+
* intersection, falling back to bevels above SVG's default miter limit of 4.
|
|
3519
|
+
*/
|
|
3520
|
+
export declare function strokeRegionData(
|
|
3521
|
+
path: Path2Input,
|
|
3522
|
+
options: StrokeOptions,
|
|
3523
|
+
): RegionData;
|
|
3524
|
+
|
|
3237
3525
|
/** Subtracts `b` from `a` component-wise. */
|
|
3238
|
-
export declare const subtract2: (
|
|
3239
|
-
a: Vector2Tuple,
|
|
3240
|
-
b: Vector2Tuple,
|
|
3241
|
-
) => Vector2Tuple;
|
|
3526
|
+
export declare const subtract2: (a: Vector2Data, b: Vector2Data) => Vector2Data;
|
|
3242
3527
|
|
|
3243
3528
|
/**
|
|
3244
3529
|
* Subtracts `b` from `a`.
|
|
@@ -3247,10 +3532,7 @@ export declare const subtract2: (
|
|
|
3247
3532
|
* subtract3([4, 5, 6], [1, 2, 3]); // [3, 3, 3]
|
|
3248
3533
|
* ```
|
|
3249
3534
|
*/
|
|
3250
|
-
export declare const subtract3: (
|
|
3251
|
-
a: Vector3Tuple,
|
|
3252
|
-
b: Vector3Tuple,
|
|
3253
|
-
) => Vector3Tuple;
|
|
3535
|
+
export declare const subtract3: (a: Vector3Data, b: Vector3Data) => Vector3Data;
|
|
3254
3536
|
|
|
3255
3537
|
/** Sampling controls for deterministic SVG-to-region conversion. */
|
|
3256
3538
|
export declare interface SvgImportOptions {
|
|
@@ -3267,7 +3549,7 @@ export declare interface SvgImportOptions {
|
|
|
3267
3549
|
readonly origin?: "center" | "document";
|
|
3268
3550
|
}
|
|
3269
3551
|
|
|
3270
|
-
/**
|
|
3552
|
+
/** Normalized sampled SVG region plus bounded source, geometry, and safe-repair diagnostics. */
|
|
3271
3553
|
export declare interface SvgRegionPreflight {
|
|
3272
3554
|
/** Physical and final-topology measurements of `region`. */
|
|
3273
3555
|
readonly geometry: SvgRegionPreflightGeometryMetrics;
|
|
@@ -3284,47 +3566,47 @@ export declare interface SvgRegionPreflightGeometryMetrics {
|
|
|
3284
3566
|
/** Filled area in square millimetres. */
|
|
3285
3567
|
readonly area: number;
|
|
3286
3568
|
/** Millimetre bounds, or `null` when no painted region remains. */
|
|
3287
|
-
readonly bounds:
|
|
3569
|
+
readonly bounds: Bounds2Data | null;
|
|
3288
3570
|
/** Disconnected filled polygons in the final region. */
|
|
3289
|
-
readonly
|
|
3571
|
+
readonly componentCount: number;
|
|
3290
3572
|
/** Exterior and hole boundary count in the final region. */
|
|
3291
|
-
readonly
|
|
3573
|
+
readonly contourCount: number;
|
|
3292
3574
|
/** Interior boundary count in the final region. */
|
|
3293
|
-
readonly
|
|
3575
|
+
readonly holeCount: number;
|
|
3294
3576
|
/** Shortest final boundary edge in millimetres, or `null` for an empty region. */
|
|
3295
3577
|
readonly minEdgeLength: number | null;
|
|
3296
3578
|
/** Final boundary edges shorter than the conservative 0.01 mm indicator. */
|
|
3297
|
-
readonly
|
|
3579
|
+
readonly shortEdgeCount: number;
|
|
3298
3580
|
/** Components with less than 0.01 square millimetres of filled area. */
|
|
3299
|
-
readonly
|
|
3581
|
+
readonly tinyIslandCount: number;
|
|
3300
3582
|
/** Non-duplicated boundary vertices in the final normalized region. */
|
|
3301
|
-
readonly
|
|
3583
|
+
readonly vertexCount: number;
|
|
3302
3584
|
}
|
|
3303
3585
|
|
|
3304
3586
|
/** Visible, appearance-preserving cleanup counters from bounded SVG import. */
|
|
3305
3587
|
export declare interface SvgRegionPreflightRepairs {
|
|
3306
3588
|
/** Graphics elements with neither a visible fill nor a positive-width visible stroke. */
|
|
3307
|
-
readonly
|
|
3589
|
+
readonly invisibleElementCount: number;
|
|
3308
3590
|
/** Open filled subpaths closed by SVG fill semantics without closing their strokes. */
|
|
3309
|
-
readonly
|
|
3591
|
+
readonly implicitFilledClosureCount: number;
|
|
3310
3592
|
/** Visibly painted elements whose fill and stroke both resolved to empty geometry. */
|
|
3311
|
-
readonly
|
|
3593
|
+
readonly emptyElementCount: number;
|
|
3312
3594
|
/** Consecutive repeated flattened vertices discarded before topology resolution. */
|
|
3313
|
-
readonly
|
|
3595
|
+
readonly removedDuplicateVertexCount: number;
|
|
3314
3596
|
/** Explicit repeated seam vertices removed from otherwise closed contours. */
|
|
3315
|
-
readonly
|
|
3597
|
+
readonly removedSeamVertexCount: number;
|
|
3316
3598
|
}
|
|
3317
3599
|
|
|
3318
3600
|
/** Bounded source-complexity facts collected while parsing one SVG document. */
|
|
3319
3601
|
export declare interface SvgRegionPreflightSourceMetrics {
|
|
3320
3602
|
/** UTF-8 source size, capped at 256 KiB before parsing. */
|
|
3321
|
-
readonly
|
|
3603
|
+
readonly byteCount: number;
|
|
3322
3604
|
/** Renderable shape elements, capped at 500; containers and metadata are excluded. */
|
|
3323
|
-
readonly
|
|
3605
|
+
readonly elementCount: number;
|
|
3324
3606
|
/** Flattened vertices emitted before fill, stroke, and clipping operations. */
|
|
3325
|
-
readonly
|
|
3607
|
+
readonly emittedVertexCount: number;
|
|
3326
3608
|
/** Path endpoints and control vertices parsed before adaptive flattening. */
|
|
3327
|
-
readonly
|
|
3609
|
+
readonly parsedVertexCount: number;
|
|
3328
3610
|
}
|
|
3329
3611
|
|
|
3330
3612
|
/**
|
|
@@ -3339,8 +3621,8 @@ export declare interface SvgRegionPreflightSourceMetrics {
|
|
|
3339
3621
|
* ```
|
|
3340
3622
|
*/
|
|
3341
3623
|
export declare function sweepMesh(
|
|
3342
|
-
profile:
|
|
3343
|
-
path:
|
|
3624
|
+
profile: Path2Input,
|
|
3625
|
+
path: Path3Input,
|
|
3344
3626
|
options?: SweepOptions,
|
|
3345
3627
|
): TriangleMesh;
|
|
3346
3628
|
|
|
@@ -3348,7 +3630,7 @@ export declare function sweepMesh(
|
|
|
3348
3630
|
* Controls shared by pure mesh construction and filled modeling sweeps.
|
|
3349
3631
|
*/
|
|
3350
3632
|
export declare interface SweepOptions {
|
|
3351
|
-
/**
|
|
3633
|
+
/** Raw point closure defaults to false; a Path3 supplies its closure and rejects conflicts. */
|
|
3352
3634
|
readonly closed?: boolean;
|
|
3353
3635
|
/** Explicit output and sampling allocation ceilings. */
|
|
3354
3636
|
readonly limits?: Partial<ModelingLimits>;
|
|
@@ -3357,11 +3639,11 @@ export declare interface SweepOptions {
|
|
|
3357
3639
|
/** Physical sampling of nonzero twist; inserted stations retain authored station controls. */
|
|
3358
3640
|
readonly resolution?: GeometryResolution;
|
|
3359
3641
|
/** Total additional profile rotation in degrees, with progression selected by twistBy. */
|
|
3360
|
-
readonly
|
|
3642
|
+
readonly twist?: number;
|
|
3361
3643
|
/** Twist advances by physical path length (default), or normalized authored station position, including a closed seam gap. */
|
|
3362
3644
|
readonly twistBy?: "length" | "stations";
|
|
3363
3645
|
/** Positive uniform/XY scale, or one XY pair per path station. Defaults to one. */
|
|
3364
|
-
readonly scale?: number |
|
|
3646
|
+
readonly scale?: number | Vector2Input | readonly Vector2Input[];
|
|
3365
3647
|
/** Corresponding point-index advance at a rotationally equivalent closed seam. */
|
|
3366
3648
|
readonly seamProfileOffset?: number;
|
|
3367
3649
|
}
|
|
@@ -3374,13 +3656,13 @@ export declare type SweepOrientation =
|
|
|
3374
3656
|
/** Minimizes frame rotation by parallel transport. */
|
|
3375
3657
|
readonly kind: "transport";
|
|
3376
3658
|
/** Initial profile +X guide, projected perpendicular to the first tangent. */
|
|
3377
|
-
readonly initialNormal?:
|
|
3659
|
+
readonly initialNormal?: Vector3Input;
|
|
3378
3660
|
}
|
|
3379
3661
|
| {
|
|
3380
3662
|
/** Projects one fixed world-space normal at every path station. */
|
|
3381
3663
|
readonly kind: "fixed-normal";
|
|
3382
3664
|
/** Directed profile +X guide; must not be parallel to any local tangent. */
|
|
3383
|
-
readonly normal:
|
|
3665
|
+
readonly normal: Vector3Input;
|
|
3384
3666
|
}
|
|
3385
3667
|
| {
|
|
3386
3668
|
/** Uses an explicitly directed normal callback at each original normalized station. */
|
|
@@ -3419,7 +3701,7 @@ export declare interface ThreadCircularSegmentsOptions {
|
|
|
3419
3701
|
* This keeps a compensated male/female pair on one role-independent grid when an internal
|
|
3420
3702
|
* cutter has an enlarged entrance bevel. Default: `0`.
|
|
3421
3703
|
*/
|
|
3422
|
-
readonly
|
|
3704
|
+
readonly maxRadialOutset?: number;
|
|
3423
3705
|
/** Validated mating profile whose pitch and flank capacities govern tessellation. */
|
|
3424
3706
|
readonly profile: ThreadProfile;
|
|
3425
3707
|
/** Physical or exact circular resolution policy. */
|
|
@@ -3469,7 +3751,7 @@ export declare interface ThreadedNutOptions extends Omit<
|
|
|
3469
3751
|
readonly width: number;
|
|
3470
3752
|
}
|
|
3471
3753
|
|
|
3472
|
-
/**
|
|
3754
|
+
/** Resolved body and end-face dimensions plus conservative allocation estimates for the thread cutter. */
|
|
3473
3755
|
export declare interface ThreadedNutPreflight {
|
|
3474
3756
|
/** Polygon segment count used by the nut body. */
|
|
3475
3757
|
readonly bodySegments: number;
|
|
@@ -3481,7 +3763,7 @@ export declare interface ThreadedNutPreflight {
|
|
|
3481
3763
|
readonly minimumBodyFaceInradius: number;
|
|
3482
3764
|
/** Smallest radial wall left between the body and cutter at either requested face. */
|
|
3483
3765
|
readonly minimumFaceWall: number;
|
|
3484
|
-
/** Conservative allocation
|
|
3766
|
+
/** Conservative allocation estimates for the extended cutter; excludes the body and Boolean result. */
|
|
3485
3767
|
readonly thread: HelicalThreadSolidMeshPreflight;
|
|
3486
3768
|
/** Start-aligned circular facet count used by the compensated thread cutter. */
|
|
3487
3769
|
readonly threadCircularSegments: number;
|
|
@@ -3559,7 +3841,7 @@ export declare interface ThreadHelixOptions {
|
|
|
3559
3841
|
/** Total sampled axial length in millimetres. */
|
|
3560
3842
|
readonly length: number;
|
|
3561
3843
|
/** Angular offset of the first start in degrees. Default: `0`. */
|
|
3562
|
-
readonly
|
|
3844
|
+
readonly phase?: number;
|
|
3563
3845
|
/** Adjacent axial thread spacing in millimetres. */
|
|
3564
3846
|
readonly pitch: number;
|
|
3565
3847
|
/** Radial distance from the +Z axis in millimetres. */
|
|
@@ -3591,11 +3873,25 @@ export declare interface ThreadProfile {
|
|
|
3591
3873
|
/** Adjacent axial thread spacing in millimetres. */
|
|
3592
3874
|
readonly pitch: number;
|
|
3593
3875
|
/** Immutable open `[axial, radial]` path spanning one pitch. */
|
|
3594
|
-
readonly points: readonly
|
|
3876
|
+
readonly points: readonly Vector2Data[];
|
|
3595
3877
|
/** Axial width of the flat at the minor envelope. */
|
|
3596
3878
|
readonly rootFlatWidth: number;
|
|
3597
3879
|
}
|
|
3598
3880
|
|
|
3881
|
+
/**
|
|
3882
|
+
* Creates a periodic thread profile for the shaft-locked helical mesher.
|
|
3883
|
+
*
|
|
3884
|
+
* The open path spans one pitch. Radial zero is the major envelope; negative
|
|
3885
|
+
* values point toward the shaft. Custom paths must be finite, axially
|
|
3886
|
+
* non-decreasing, periodic at their endpoints, and reach radial zero.
|
|
3887
|
+
*
|
|
3888
|
+
* @example Printable triangular thread profile
|
|
3889
|
+
* ```ts
|
|
3890
|
+
* threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
3891
|
+
* ```
|
|
3892
|
+
*/
|
|
3893
|
+
export declare function threadProfile(spec: ThreadProfileSpec): ThreadProfile;
|
|
3894
|
+
|
|
3599
3895
|
/** Fields shared by all thread profile specifications. */
|
|
3600
3896
|
export declare interface ThreadProfileBaseSpec {
|
|
3601
3897
|
/** Adjacent axial thread spacing in millimetres. */
|
|
@@ -3621,7 +3917,7 @@ export declare type ThreadRole = "male" | "female";
|
|
|
3621
3917
|
/**
|
|
3622
3918
|
* Dimensions and independent ring/profile tessellation for a torus around the Z axis.
|
|
3623
3919
|
*/
|
|
3624
|
-
export declare interface TorusOptions extends
|
|
3920
|
+
export declare interface TorusOptions extends PrimitiveAttachment {
|
|
3625
3921
|
/** Explicit sampling ceilings, bounded by the host policy. */
|
|
3626
3922
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
3627
3923
|
/** Radius from the Z axis to the profile center, in millimetres; greater than `minorRadius`. */
|
|
@@ -3655,32 +3951,33 @@ export declare interface Transform2 {
|
|
|
3655
3951
|
/** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
|
|
3656
3952
|
applyNormal(normal: Vector2Input): Vector2;
|
|
3657
3953
|
/** Returns the frozen canonical row-major 3x3 matrix for interchange. */
|
|
3658
|
-
|
|
3954
|
+
toData(): Transform2Data;
|
|
3659
3955
|
/** Embeds this placement in XYZ, leaving Z unchanged, for solids and 3D paths. */
|
|
3660
3956
|
to3D(): Transform3;
|
|
3661
3957
|
}
|
|
3662
3958
|
|
|
3663
3959
|
/**
|
|
3664
|
-
* Creates an immutable XY transform, identity by default.
|
|
3960
|
+
* Creates an immutable XY transform, identity by default.
|
|
3961
|
+
*
|
|
3962
|
+
* Values and data are copied and validated.
|
|
3665
3963
|
* Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ.
|
|
3666
3964
|
* Zero scales and singular matrices throw GeometryError; negative scales reflect.
|
|
3667
3965
|
*
|
|
3966
|
+
* Use `toData()` for frozen matrix interchange.
|
|
3967
|
+
*
|
|
3668
3968
|
* @example
|
|
3669
3969
|
* ```ts
|
|
3670
3970
|
* const placement = transform2().rotate(90).translate([10, 0]);
|
|
3671
|
-
* placement.applyPoint([1, 0]).
|
|
3971
|
+
* placement.applyPoint([1, 0]).toData(); // approximately [10, 1]
|
|
3672
3972
|
* ```
|
|
3673
3973
|
*/
|
|
3674
|
-
export declare function transform2(
|
|
3675
|
-
|
|
3676
|
-
/** An immutable XY transform or its canonical row-major matrix for interchange. */
|
|
3677
|
-
export declare type Transform2Input = Transform2 | Transform2Matrix;
|
|
3974
|
+
export declare function transform2(input?: Transform2Input): Transform2;
|
|
3678
3975
|
|
|
3679
3976
|
/**
|
|
3680
3977
|
* A row-major affine 3x3 XY matrix applied to column vectors.
|
|
3681
3978
|
* Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.
|
|
3682
3979
|
*/
|
|
3683
|
-
export declare type
|
|
3980
|
+
export declare type Transform2Data = readonly [
|
|
3684
3981
|
m00: number,
|
|
3685
3982
|
m01: number,
|
|
3686
3983
|
m02: number,
|
|
@@ -3692,6 +3989,9 @@ export declare type Transform2Matrix = readonly [
|
|
|
3692
3989
|
m22: number,
|
|
3693
3990
|
];
|
|
3694
3991
|
|
|
3992
|
+
/** An immutable XY transform or its canonical row-major matrix for interchange. */
|
|
3993
|
+
export declare type Transform2Input = Transform2 | Transform2Data;
|
|
3994
|
+
|
|
3695
3995
|
/** Immutable reusable XYZ placement. Methods apply in written order; angles are degrees. */
|
|
3696
3996
|
export declare interface Transform3 {
|
|
3697
3997
|
/** Applies a translation in model units after this placement. */
|
|
@@ -3717,27 +4017,29 @@ export declare interface Transform3 {
|
|
|
3717
4017
|
/** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
|
|
3718
4018
|
applyNormal(normal: Vector3Input): Vector3;
|
|
3719
4019
|
/** Returns the frozen canonical row-major 4x4 matrix for interchange. */
|
|
3720
|
-
|
|
4020
|
+
toData(): Transform3Data;
|
|
3721
4021
|
/** Restricts to XY; throws GeometryError for a plane change or singular XY restriction. */
|
|
3722
4022
|
to2D(): Transform2;
|
|
3723
4023
|
}
|
|
3724
4024
|
|
|
3725
4025
|
/**
|
|
3726
|
-
* Creates an immutable XYZ transform, identity by default.
|
|
4026
|
+
* Creates an immutable XYZ transform, identity by default.
|
|
4027
|
+
*
|
|
4028
|
+
* Values and data are copied and validated.
|
|
3727
4029
|
* Calls apply in written order; rotations use degrees and pivots use current world coordinates.
|
|
3728
4030
|
* Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
|
|
3729
4031
|
* Use frameTransform3(frame) as the input for existing orthonormal frame placement.
|
|
3730
4032
|
*
|
|
4033
|
+
* Use `toData()` for frozen matrix interchange.
|
|
4034
|
+
* [composeTransform3](/docs/reference/geometry/composeTransform3) takes matrices in after, before order.
|
|
4035
|
+
*
|
|
3731
4036
|
* @example
|
|
3732
4037
|
* ```ts
|
|
3733
4038
|
* const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
|
|
3734
|
-
* placement.applyPoint([1, 0, 0]).
|
|
4039
|
+
* placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
|
|
3735
4040
|
* ```
|
|
3736
4041
|
*/
|
|
3737
|
-
export declare function transform3(
|
|
3738
|
-
|
|
3739
|
-
/** An immutable XYZ transform or its canonical row-major matrix for interchange. */
|
|
3740
|
-
export declare type Transform3Input = Transform3 | Transform3Matrix;
|
|
4042
|
+
export declare function transform3(input?: Transform3Input): Transform3;
|
|
3741
4043
|
|
|
3742
4044
|
/**
|
|
3743
4045
|
* A row-major affine 4x4 matrix applied to column vectors.
|
|
@@ -3745,7 +4047,7 @@ export declare type Transform3Input = Transform3 | Transform3Matrix;
|
|
|
3745
4047
|
* Translation occupies indices 3, 7, and 11. The final row must be
|
|
3746
4048
|
* `[0, 0, 0, 1]` within the active geometry tolerance.
|
|
3747
4049
|
*/
|
|
3748
|
-
export declare type
|
|
4050
|
+
export declare type Transform3Data = readonly [
|
|
3749
4051
|
m00: number,
|
|
3750
4052
|
m01: number,
|
|
3751
4053
|
m02: number,
|
|
@@ -3764,16 +4066,8 @@ export declare type Transform3Matrix = readonly [
|
|
|
3764
4066
|
m33: number,
|
|
3765
4067
|
];
|
|
3766
4068
|
|
|
3767
|
-
/**
|
|
3768
|
-
|
|
3769
|
-
*
|
|
3770
|
-
* Reflections reverse the point order automatically through normalization.
|
|
3771
|
-
*/
|
|
3772
|
-
export declare function transformContour(
|
|
3773
|
-
loop: Contour,
|
|
3774
|
-
transform: Transform2Input,
|
|
3775
|
-
tolerance?: GeometryToleranceOptions,
|
|
3776
|
-
): Contour;
|
|
4069
|
+
/** An immutable XYZ transform or its canonical row-major matrix for interchange. */
|
|
4070
|
+
export declare type Transform3Input = Transform3 | Transform3Data;
|
|
3777
4071
|
|
|
3778
4072
|
/**
|
|
3779
4073
|
* Returns the determinant of a transform's linear 3x3 component.
|
|
@@ -3784,22 +4078,9 @@ export declare function transformContour(
|
|
|
3784
4078
|
* @returns Signed linear determinant.
|
|
3785
4079
|
*/
|
|
3786
4080
|
export declare function transformDeterminant3(
|
|
3787
|
-
transform:
|
|
4081
|
+
transform: Transform3Data,
|
|
3788
4082
|
): number;
|
|
3789
4083
|
|
|
3790
|
-
/** Applies a canonical affine XY transform to a 2D path without changing point order. */
|
|
3791
|
-
export declare function transformPath2(
|
|
3792
|
-
path: Path2,
|
|
3793
|
-
transform: Transform2Input,
|
|
3794
|
-
tolerance?: GeometryToleranceOptions,
|
|
3795
|
-
): Path2;
|
|
3796
|
-
|
|
3797
|
-
/** Applies an affine transform to a 3D path without mutating its points. */
|
|
3798
|
-
export declare function transformPath3(
|
|
3799
|
-
path: Path3,
|
|
3800
|
-
placement: Transform3Input,
|
|
3801
|
-
): Path3;
|
|
3802
|
-
|
|
3803
4084
|
/**
|
|
3804
4085
|
* Transforms serialized polygon data with reflection-safe winding, without an engine.
|
|
3805
4086
|
* Use Section.transform(placement) when authoring filled geometry; this utility serves pure data preparation.
|
|
@@ -3817,12 +4098,12 @@ export declare function transformRegionData(
|
|
|
3817
4098
|
* automatically reverses every triangle. Singular transforms are rejected.
|
|
3818
4099
|
*
|
|
3819
4100
|
* @param mesh - Mesh to transform without mutation.
|
|
3820
|
-
* @param
|
|
4101
|
+
* @param placement - Immutable spatial placement or canonical row-major affine matrix.
|
|
3821
4102
|
* @returns A mesh with fresh transformed positions and copied or reversed indices.
|
|
3822
4103
|
*/
|
|
3823
4104
|
export declare function transformTriangleMesh(
|
|
3824
4105
|
mesh: TriangleMesh,
|
|
3825
|
-
|
|
4106
|
+
placement: Transform3Input,
|
|
3826
4107
|
): TriangleMesh;
|
|
3827
4108
|
|
|
3828
4109
|
/**
|
|
@@ -3832,8 +4113,8 @@ export declare function transformTriangleMesh(
|
|
|
3832
4113
|
* @returns A frozen row-major transform.
|
|
3833
4114
|
*/
|
|
3834
4115
|
export declare function translationTransform3(
|
|
3835
|
-
offset:
|
|
3836
|
-
):
|
|
4116
|
+
offset: Vector3Data,
|
|
4117
|
+
): Transform3Data;
|
|
3837
4118
|
|
|
3838
4119
|
/** Trapezoidal thread profile with a configurable included angle. */
|
|
3839
4120
|
export declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
@@ -3845,10 +4126,11 @@ export declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseS
|
|
|
3845
4126
|
*/
|
|
3846
4127
|
readonly depth?: number;
|
|
3847
4128
|
/**
|
|
3848
|
-
*
|
|
4129
|
+
* Full angle between the flanks in degrees, from `0` inclusive to `180` exclusive.
|
|
4130
|
+
* Each flank uses half this angle from the radial direction; `90` gives 45-degree slopes.
|
|
3849
4131
|
* @defaultValue `30`
|
|
3850
4132
|
*/
|
|
3851
|
-
readonly
|
|
4133
|
+
readonly includedAngle?: number;
|
|
3852
4134
|
}
|
|
3853
4135
|
|
|
3854
4136
|
/**
|
|
@@ -3865,7 +4147,7 @@ export declare interface TriangleMesh {
|
|
|
3865
4147
|
* Measurements and optional edge-connected topology from one validated mesh traversal.
|
|
3866
4148
|
*/
|
|
3867
4149
|
export declare interface TriangleMeshAnalysis extends TriangleMeshMeasurements {
|
|
3868
|
-
/** Number of referenced edge-connected
|
|
4150
|
+
/** Number of referenced edge-connected boundary shells when `includeTopology` is requested; cavities count separately. */
|
|
3869
4151
|
readonly connectedComponentCount?: number;
|
|
3870
4152
|
/** Number of distinct indexed undirected edges when `includeTopology` is requested. */
|
|
3871
4153
|
readonly edgeCount?: number;
|
|
@@ -3884,7 +4166,7 @@ export declare interface TriangleMeshAnalysisOptions extends TriangleMeshValidat
|
|
|
3884
4166
|
*/
|
|
3885
4167
|
export declare interface TriangleMeshMeasurements {
|
|
3886
4168
|
/** Axis-aligned bounds. */
|
|
3887
|
-
readonly bounds:
|
|
4169
|
+
readonly bounds: Bounds3Data;
|
|
3888
4170
|
/** Signed enclosed volume; positive values correspond to outward winding. */
|
|
3889
4171
|
readonly signedVolume: number;
|
|
3890
4172
|
/** Sum of all triangle areas in squared model units. */
|
|
@@ -3898,7 +4180,7 @@ export declare interface TriangleMeshMeasurements {
|
|
|
3898
4180
|
/** Options controlling bounded triangle-mesh quality analysis. */
|
|
3899
4181
|
export declare interface TriangleMeshQualityOptions {
|
|
3900
4182
|
/** Maximum number of triangles inspected. Defaults to `200000`. */
|
|
3901
|
-
readonly
|
|
4183
|
+
readonly maxTriangles?: number;
|
|
3902
4184
|
/** Numeric comparison overrides; model coordinates are interpreted in their existing units. */
|
|
3903
4185
|
readonly tolerance?: GeometryToleranceOptions;
|
|
3904
4186
|
}
|
|
@@ -3940,8 +4222,8 @@ export declare interface TriangleMeshQualityReport {
|
|
|
3940
4222
|
/** Immutable deterministic measurements for a closed, oriented triangle mesh. */
|
|
3941
4223
|
export declare interface TriangleMeshSignature {
|
|
3942
4224
|
/** Axis-aligned bounds quantized by `tolerances.position`. */
|
|
3943
|
-
readonly bounds:
|
|
3944
|
-
/** Number of edge-connected closed
|
|
4225
|
+
readonly bounds: Bounds3Data;
|
|
4226
|
+
/** Number of edge-connected closed boundary shells; cavities count separately. */
|
|
3945
4227
|
readonly connectedComponentCount: number;
|
|
3946
4228
|
/** Total orientable genus across all connected components. */
|
|
3947
4229
|
readonly genus: number;
|
|
@@ -3960,7 +4242,7 @@ export declare interface TriangleMeshSignature {
|
|
|
3960
4242
|
/** Options controlling deterministic triangle-mesh regression signatures. */
|
|
3961
4243
|
export declare interface TriangleMeshSignatureOptions {
|
|
3962
4244
|
/** Maximum accepted triangle count. Defaults to 200,000. */
|
|
3963
|
-
readonly
|
|
4245
|
+
readonly maxTriangles?: number;
|
|
3964
4246
|
/** Position and bounds quantization in model units. Defaults to `1e-5`. */
|
|
3965
4247
|
readonly positionTolerance?: number;
|
|
3966
4248
|
/** Signed-volume quantization in cubic model units. Defaults to `1e-4`. */
|
|
@@ -4010,7 +4292,7 @@ export declare function triangulateContour(loop: Contour): Uint32Array;
|
|
|
4010
4292
|
* Dimensions, placement, and tessellation for a hollow Z-axis tube.
|
|
4011
4293
|
*/
|
|
4012
4294
|
export declare interface TubeOptions
|
|
4013
|
-
extends CircularPrimitiveOptions,
|
|
4295
|
+
extends CircularPrimitiveOptions, PrimitiveAttachment {
|
|
4014
4296
|
/**
|
|
4015
4297
|
* Centers the tube on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
4016
4298
|
* @defaultValue `true`
|
|
@@ -4026,6 +4308,7 @@ export declare interface TubeOptions
|
|
|
4026
4308
|
|
|
4027
4309
|
/**
|
|
4028
4310
|
* Checks closed indexed topology, triangle intersections, and alternating nested shell orientation.
|
|
4311
|
+
*
|
|
4029
4312
|
* Outward exterior shells and inward cavity shells are accepted. Separate shells must not touch,
|
|
4030
4313
|
* intersect, or overlap as material. Indexed neighbours may share their own vertex or edge.
|
|
4031
4314
|
*
|
|
@@ -4052,9 +4335,9 @@ export declare function validateSolidMesh(
|
|
|
4052
4335
|
* @throws {@link GeometryError} For non-finite, non-affine, or singular matrices.
|
|
4053
4336
|
*/
|
|
4054
4337
|
export declare function validateTransform3(
|
|
4055
|
-
transform:
|
|
4338
|
+
transform: Transform3Data,
|
|
4056
4339
|
tolerance?: GeometryToleranceOptions,
|
|
4057
|
-
):
|
|
4340
|
+
): Transform3Data;
|
|
4058
4341
|
|
|
4059
4342
|
/**
|
|
4060
4343
|
* Validates mesh buffers, indices, triangle area, and optionally closed topology.
|
|
@@ -4098,22 +4381,26 @@ export declare interface Vector2 {
|
|
|
4098
4381
|
/** Returns Euclidean distance to another vector in the same coordinate units. */
|
|
4099
4382
|
distance(other: Vector2Input): number;
|
|
4100
4383
|
/** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
|
|
4101
|
-
|
|
4384
|
+
toData(): Vector2Data;
|
|
4102
4385
|
}
|
|
4103
4386
|
|
|
4104
4387
|
/**
|
|
4105
4388
|
* Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
4389
|
+
*
|
|
4106
4390
|
* Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
4107
4391
|
* and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
4108
4392
|
* Use transform2().applyDirection(value) for rotations and nonuniform scaling.
|
|
4393
|
+
*
|
|
4394
|
+
* Use `toData()` for frozen tuple interchange, or
|
|
4395
|
+
* [normalize2](/docs/reference/geometry/normalize2) for tuple-based normalization in numerical loops.
|
|
4109
4396
|
*/
|
|
4110
4397
|
export declare function vector2(input: Vector2Input): Vector2;
|
|
4111
4398
|
|
|
4112
|
-
/** An XY tuple or immutable fluent vector accepted by vector operations. */
|
|
4113
|
-
export declare type Vector2Input = Vector2Tuple | Vector2;
|
|
4114
|
-
|
|
4115
4399
|
/** A two-dimensional Cartesian vector or point. */
|
|
4116
|
-
export declare type
|
|
4400
|
+
export declare type Vector2Data = readonly [x: number, y: number];
|
|
4401
|
+
|
|
4402
|
+
/** An XY tuple or immutable fluent vector accepted by vector operations. */
|
|
4403
|
+
export declare type Vector2Input = Vector2Data | Vector2;
|
|
4117
4404
|
|
|
4118
4405
|
/** Immutable XYZ arithmetic; vector operations return new values and measurements return numbers. */
|
|
4119
4406
|
export declare interface Vector3 {
|
|
@@ -4142,15 +4429,19 @@ export declare interface Vector3 {
|
|
|
4142
4429
|
/** Returns Euclidean distance to another vector in the same coordinate units. */
|
|
4143
4430
|
distance(other: Vector3Input): number;
|
|
4144
4431
|
/** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
|
|
4145
|
-
|
|
4432
|
+
toData(): Vector3Data;
|
|
4146
4433
|
}
|
|
4147
4434
|
|
|
4148
4435
|
/**
|
|
4149
4436
|
* Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
4437
|
+
*
|
|
4150
4438
|
* Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
4151
4439
|
* and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
4152
4440
|
* Use transform3().applyDirection(value) for rotations and nonuniform scaling.
|
|
4153
4441
|
*
|
|
4442
|
+
* Use `toData()` for frozen tuple interchange, or
|
|
4443
|
+
* [normalize3](/docs/reference/geometry/normalize3) for tuple-based normalization in numerical loops.
|
|
4444
|
+
*
|
|
4154
4445
|
* @example
|
|
4155
4446
|
* ```ts
|
|
4156
4447
|
* const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
@@ -4159,11 +4450,11 @@ export declare interface Vector3 {
|
|
|
4159
4450
|
*/
|
|
4160
4451
|
export declare function vector3(input: Vector3Input): Vector3;
|
|
4161
4452
|
|
|
4162
|
-
/** An XYZ tuple or immutable fluent vector accepted by vector operations. */
|
|
4163
|
-
export declare type Vector3Input = Vector3Tuple | Vector3;
|
|
4164
|
-
|
|
4165
4453
|
/** A three-dimensional Cartesian vector or point. */
|
|
4166
|
-
export declare type
|
|
4454
|
+
export declare type Vector3Data = readonly [x: number, y: number, z: number];
|
|
4455
|
+
|
|
4456
|
+
/** An XYZ tuple or immutable fluent vector accepted by vector operations. */
|
|
4457
|
+
export declare type Vector3Input = Vector3Data | Vector3;
|
|
4167
4458
|
|
|
4168
4459
|
/** A circular baseline centered at the XY origin, with rigid shaped glyph groups. */
|
|
4169
4460
|
export declare interface VectorTextArcBaseline {
|
|
@@ -4172,7 +4463,7 @@ export declare interface VectorTextArcBaseline {
|
|
|
4172
4463
|
/** Baseline radius in millimetres, greater than zero and at most 10000. */
|
|
4173
4464
|
readonly radius: number;
|
|
4174
4465
|
/** Alignment datum in degrees counterclockwise from +X; defaults to 90. */
|
|
4175
|
-
readonly
|
|
4466
|
+
readonly centerAngle?: number;
|
|
4176
4467
|
/** Reading direction around the circle; defaults to clockwise. */
|
|
4177
4468
|
readonly direction?: "clockwise" | "counterclockwise";
|
|
4178
4469
|
}
|
|
@@ -4204,7 +4495,7 @@ export declare interface VectorTextLayoutOptions extends VectorTextOptions {
|
|
|
4204
4495
|
/** Text measurements from the same immutable layout that supplies geometry and SVG outlines. */
|
|
4205
4496
|
export declare interface VectorTextMetrics {
|
|
4206
4497
|
/** Visible curve bounds after alignment, or null when the text has no ink. */
|
|
4207
|
-
readonly bounds:
|
|
4498
|
+
readonly bounds: Bounds2Data | null;
|
|
4208
4499
|
/** Unaligned logical advance and negative baseline displacement in mm; arcs retain [arc length, 0]. */
|
|
4209
4500
|
readonly advance: readonly [number, number];
|
|
4210
4501
|
/** Maximum logical line advance in millimetres, including spaces; arc length on circular baselines. */
|