@metamesh/modeling 0.13.0 → 0.15.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 +55 -0
- package/README.md +67 -9
- package/dist/api/engine.d.ts +14 -7
- package/dist/api/geometry.d.ts +787 -447
- package/dist/api/index.d.ts +637 -250
- package/dist/api/text.d.ts +6 -4
- package/dist/docs/guides/concepts.md +135 -17
- package/dist/docs/guides/fonts.md +8 -0
- package/dist/docs/guides/fundamentals.md +8 -3
- package/dist/docs/guides/generation.md +6 -4
- package/dist/docs/guides/hosting.md +27 -14
- package/dist/docs/guides/recipes.md +82 -11
- package/dist/docs/manifest.json +1911 -856
- 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 +20 -9
- package/dist/docs/reference/engine/SessionOptions.md +1 -1
- package/dist/docs/reference/engine/SnapshotPart.md +4 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +2 -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 +2 -2
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +17 -4
- package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +9 -5
- package/dist/docs/reference/geometry/ArcCurve2.md +7 -7
- package/dist/docs/reference/geometry/ArcCurve3.md +9 -9
- package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +14 -5
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +6 -1
- package/dist/docs/reference/geometry/Bounds2.md +4 -4
- package/dist/docs/reference/geometry/Bounds3.md +4 -4
- package/dist/docs/reference/geometry/BoundsFit2.md +3 -3
- package/dist/docs/reference/geometry/BoundsFit3.md +3 -3
- package/dist/docs/reference/geometry/BoundsFitOptions.md +1 -1
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +1 -1
- package/dist/docs/reference/geometry/BoxAnchorFace.md +8 -1
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +8 -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 +1 -1
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +107 -0
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +1 -1
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +1 -1
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +1 -1
- package/dist/docs/reference/geometry/Contour.md +3 -3
- package/dist/docs/reference/geometry/ContourCurve.md +1 -1
- package/dist/docs/reference/geometry/ContourPoint.md +1 -1
- package/dist/docs/reference/geometry/ContourSegment.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingContour.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +6 -6
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +6 -6
- package/dist/docs/reference/geometry/Curve2.md +1 -1
- package/dist/docs/reference/geometry/Curve3.md +1 -1
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +5 -3
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +3 -3
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +8 -1
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +9 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +6 -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 +3 -3
- package/dist/docs/reference/geometry/EndTreatments.md +1 -1
- package/dist/docs/reference/geometry/ExtrudeOptions.md +6 -6
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -5
- package/dist/docs/reference/geometry/FittedTextLayout.md +1 -1
- package/dist/docs/reference/geometry/Frame3.md +6 -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 +14 -5
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +1 -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 +1 -1
- package/dist/docs/reference/geometry/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +1 -1
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +5 -5
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +6 -6
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +1 -1
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +7 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +6 -6
- package/dist/docs/reference/geometry/LineCurve2.md +4 -4
- package/dist/docs/reference/geometry/LineCurve3.md +4 -4
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
- package/dist/docs/reference/geometry/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +4 -4
- package/dist/docs/reference/geometry/LoftOptions.md +1 -1
- package/dist/docs/reference/geometry/LoftPlacement.md +1 -1
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +1 -1
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/geometry/MetricFastenerSize.md +1 -1
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +1 -1
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +1 -1
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +1 -1
- package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +1 -1
- package/dist/docs/reference/geometry/Path2-type.md +192 -0
- package/dist/docs/reference/geometry/Path2Data.md +14 -0
- package/dist/docs/reference/geometry/Path2Input.md +15 -0
- package/dist/docs/reference/geometry/Path3-type.md +192 -0
- package/dist/docs/reference/geometry/Path3Data.md +14 -0
- package/dist/docs/reference/geometry/Path3Input.md +15 -0
- package/dist/docs/reference/geometry/PathFrame.md +5 -5
- package/dist/docs/reference/geometry/PathLocation.md +65 -0
- package/dist/docs/reference/geometry/PathNormalGuide.md +6 -5
- package/dist/docs/reference/geometry/PathOptions.md +34 -0
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
- package/dist/docs/reference/geometry/PathPlacement.md +4 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +80 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +26 -0
- package/dist/docs/reference/geometry/Pivot3Options.md +26 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +1 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +22 -22
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +1 -1
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +3 -3
- package/dist/docs/reference/geometry/{Polygon.md → PolygonData.md} +2 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +4 -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 +1 -1
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/geometry/Profile.md +1 -1
- package/dist/docs/reference/geometry/ProfileComponent2.md +1 -1
- package/dist/docs/reference/geometry/ProfileContour2.md +1 -1
- package/dist/docs/reference/geometry/ProfileSpan2.md +3 -3
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/geometry/RackPitchDimensions.md +1 -1
- package/dist/docs/reference/geometry/RackPitchSpec.md +5 -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 +3 -3
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/RegionData.md +14 -0
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +3 -3
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +9 -4
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +1 -1
- package/dist/docs/reference/geometry/SampleContourOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +1 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +4 -4
- package/dist/docs/reference/geometry/SampledCurve3.md +4 -4
- package/dist/docs/reference/geometry/SampledThreadHelices.md +3 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +1 -1
- package/dist/docs/reference/geometry/SideProfilePoint.md +1 -1
- package/dist/docs/reference/geometry/SideProfileSegment.md +1 -1
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +3 -3
- package/dist/docs/reference/geometry/SphereOptions.md +3 -3
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/StrokeCap.md +7 -0
- package/dist/docs/reference/geometry/StrokeJoin.md +7 -0
- package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +8 -8
- package/dist/docs/reference/geometry/SvgImportOptions.md +1 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +3 -3
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +13 -13
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +11 -11
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +9 -9
- package/dist/docs/reference/geometry/SweepOptions.md +6 -6
- package/dist/docs/reference/geometry/SweepOrientation.md +7 -7
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -5
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadEndStyle.md +1 -1
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadHandedness.md +1 -1
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +3 -3
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +1 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +1 -1
- package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +3 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +1 -1
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/ThreadRole.md +1 -1
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +1 -1
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +6 -6
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +1 -1
- package/dist/docs/reference/geometry/ThreadedNutShape.md +1 -1
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +6 -6
- package/dist/docs/reference/geometry/TorusOptions.md +8 -8
- package/dist/docs/reference/geometry/Transform2-type.md +255 -0
- package/dist/docs/reference/geometry/Transform2Input.md +19 -0
- package/dist/docs/reference/geometry/Transform2Matrix.md +14 -0
- package/dist/docs/reference/geometry/Transform3-type.md +295 -0
- package/dist/docs/reference/geometry/Transform3Input.md +19 -0
- package/dist/docs/reference/geometry/Transform3Matrix.md +17 -0
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +5 -4
- package/dist/docs/reference/geometry/TriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +2 -2
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +3 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +2 -2
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +3 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +1 -1
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/TubeOptions.md +8 -8
- package/dist/docs/reference/geometry/Vector2-type.md +269 -0
- package/dist/docs/reference/geometry/Vector2Input.md +19 -0
- package/dist/docs/reference/geometry/Vector2Tuple.md +14 -0
- package/dist/docs/reference/geometry/Vector3-type.md +281 -0
- package/dist/docs/reference/geometry/Vector3Input.md +19 -0
- package/dist/docs/reference/geometry/Vector3Tuple.md +14 -0
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +3 -3
- package/dist/docs/reference/geometry/VectorTextLayout.md +1 -1
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +1 -1
- package/dist/docs/reference/geometry/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/geometry/VectorTextOptions.md +1 -1
- package/dist/docs/reference/geometry/add2.md +36 -0
- package/dist/docs/reference/geometry/add3.md +10 -6
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +2 -2
- package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +13 -9
- package/dist/docs/reference/geometry/anchorFrame3.md +5 -5
- package/dist/docs/reference/geometry/applyTransformDirection3.md +11 -7
- package/dist/docs/reference/geometry/applyTransformPoint3.md +11 -7
- package/dist/docs/reference/geometry/attachmentTransform3.md +77 -0
- package/dist/docs/reference/geometry/boundsCenter.md +7 -7
- package/dist/docs/reference/geometry/boundsFromSize.md +7 -7
- package/dist/docs/reference/geometry/boundsSize.md +7 -7
- package/dist/docs/reference/geometry/boxAnchor3.md +10 -6
- package/dist/docs/reference/geometry/categories/bounds-layout.md +1 -1
- package/dist/docs/reference/geometry/categories/curves-paths.md +15 -10
- package/dist/docs/reference/geometry/categories/mechanical.md +6 -6
- package/dist/docs/reference/geometry/categories/meshes.md +3 -4
- package/dist/docs/reference/geometry/categories/pattern-placement.md +7 -7
- package/dist/docs/reference/geometry/categories/primitive-options.md +4 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +5 -6
- package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -2
- package/dist/docs/reference/geometry/categories/transforms-math.md +41 -12
- package/dist/docs/reference/geometry/categories/vector-import.md +5 -5
- package/dist/docs/reference/geometry/circleContour.md +1 -1
- package/dist/docs/reference/geometry/closeToAxis.md +4 -4
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +1 -1
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +5 -5
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -5
- package/dist/docs/reference/geometry/composeTransform3.md +10 -6
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +10 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -7
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +4 -4
- package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +4 -4
- package/dist/docs/reference/geometry/containsBounds.md +1 -1
- package/dist/docs/reference/geometry/contourContainsPoint.md +4 -4
- package/dist/docs/reference/geometry/cross2.md +36 -0
- package/dist/docs/reference/geometry/cross3.md +10 -6
- package/dist/docs/reference/geometry/cylinderAnchor3.md +10 -6
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/distance2.md +36 -0
- package/dist/docs/reference/geometry/distance3.md +36 -0
- package/dist/docs/reference/geometry/distributeAlongPath.md +8 -6
- package/dist/docs/reference/geometry/dot2.md +36 -0
- package/dist/docs/reference/geometry/dot3.md +9 -5
- package/dist/docs/reference/geometry/ellipseContour.md +1 -1
- package/dist/docs/reference/geometry/eulerTransform3.md +10 -6
- package/dist/docs/reference/geometry/extrudeMesh.md +8 -8
- package/dist/docs/reference/geometry/fitBounds.md +1 -1
- package/dist/docs/reference/geometry/fitTextLayout.md +1 -1
- package/dist/docs/reference/geometry/frameTransform3.md +8 -4
- package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +3 -3
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +1 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/heightfieldMesh.md +1 -1
- package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +5 -5
- package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +5 -5
- package/dist/docs/reference/geometry/inverseTransform3.md +9 -5
- package/dist/docs/reference/geometry/isGeometryError.md +1 -1
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +1 -1
- package/dist/docs/reference/geometry/layoutRow.md +4 -4
- package/dist/docs/reference/geometry/length2.md +30 -0
- package/dist/docs/reference/geometry/length3.md +8 -4
- package/dist/docs/reference/geometry/lerp2.md +42 -0
- package/dist/docs/reference/geometry/lerp3.md +10 -6
- package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/loftMesh.md +2 -1
- package/dist/docs/reference/geometry/matchProfiles.md +1 -1
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +3 -2
- package/dist/docs/reference/geometry/meshBounds.md +1 -1
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +3 -3
- package/dist/docs/reference/geometry/normalize2.md +36 -0
- package/dist/docs/reference/geometry/normalize3.md +10 -6
- package/dist/docs/reference/geometry/normalizeContour.md +4 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -5
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -5
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +11 -11
- package/dist/docs/reference/geometry/path2.md +42 -0
- package/dist/docs/reference/geometry/path3.md +42 -0
- package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -8
- package/dist/docs/reference/geometry/preflightHeightfield.md +1 -1
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +3 -3
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +3 -3
- package/dist/docs/reference/geometry/preflightSvgRegion.md +1 -1
- package/dist/docs/reference/geometry/preflightThreadedNut.md +3 -3
- package/dist/docs/reference/geometry/preflightThreadedRod.md +3 -3
- package/dist/docs/reference/geometry/projectOntoPlane3.md +10 -6
- package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
- package/dist/docs/reference/geometry/rectangleContour.md +2 -2
- package/dist/docs/reference/geometry/rectangleProfile.md +2 -2
- package/dist/docs/reference/geometry/regionArea.md +4 -4
- package/dist/docs/reference/geometry/regionBounds.md +4 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +5 -5
- package/dist/docs/reference/geometry/resamplePolyline2.md +5 -5
- package/dist/docs/reference/geometry/resamplePolyline3.md +5 -5
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +8 -4
- package/dist/docs/reference/geometry/resolveArcSegments.md +6 -6
- package/dist/docs/reference/geometry/resolveCircularSegments.md +6 -5
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +1 -1
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +6 -6
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/geometry/resolveRackPitch.md +1 -1
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +4 -4
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/revolveMesh.md +10 -10
- package/dist/docs/reference/geometry/rotate2.md +36 -0
- package/dist/docs/reference/geometry/rotationTransform3.md +10 -6
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -6
- package/dist/docs/reference/geometry/sampleContour.md +3 -3
- package/dist/docs/reference/geometry/sampleCurve2.md +3 -3
- package/dist/docs/reference/geometry/sampleCurve3.md +2 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +1 -1
- package/dist/docs/reference/geometry/sampleHelix.md +5 -5
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +1 -1
- package/dist/docs/reference/geometry/sampleRackToothPath.md +4 -4
- package/dist/docs/reference/geometry/sampleSideProfile.md +6 -6
- package/dist/docs/reference/geometry/sampleTextContours.md +1 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +2 -2
- package/dist/docs/reference/geometry/scale2.md +36 -0
- package/dist/docs/reference/geometry/scale3.md +9 -5
- package/dist/docs/reference/geometry/scaleTransform3.md +10 -6
- package/dist/docs/reference/geometry/signedContourArea.md +1 -1
- package/dist/docs/reference/geometry/starContour.md +4 -4
- package/dist/docs/reference/geometry/strokeRegionData.md +63 -0
- package/dist/docs/reference/geometry/subtract2.md +36 -0
- package/dist/docs/reference/geometry/subtract3.md +10 -6
- package/dist/docs/reference/geometry/sweepMesh.md +9 -9
- package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +6 -6
- package/dist/docs/reference/geometry/transform2.md +38 -0
- package/dist/docs/reference/geometry/transform3.md +38 -0
- package/dist/docs/reference/geometry/transformDeterminant3.md +8 -4
- package/dist/docs/reference/geometry/transformRegionData.md +40 -0
- package/dist/docs/reference/geometry/transformTriangleMesh.md +6 -6
- package/dist/docs/reference/geometry/translationTransform3.md +10 -6
- package/dist/docs/reference/geometry/triangulateContour.md +1 -1
- package/dist/docs/reference/geometry/validateSolidMesh.md +2 -2
- package/dist/docs/reference/geometry/validateTransform3.md +9 -5
- package/dist/docs/reference/geometry/validateTriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/vector2.md +31 -0
- package/dist/docs/reference/geometry/vector3.md +38 -0
- package/dist/docs/reference/geometry.md +3 -3
- package/dist/docs/reference/model/Anchor3.md +5 -5
- package/dist/docs/reference/model/AttachOptions.md +10 -5
- package/dist/docs/reference/model/Bounds2.md +4 -4
- package/dist/docs/reference/model/Bounds3.md +4 -4
- 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 +1 -1
- package/dist/docs/reference/model/ComputedValue.md +1 -1
- package/dist/docs/reference/model/Contour.md +3 -3
- 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 +1 -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 +18 -8
- 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 +1 -1
- package/dist/docs/reference/model/GenerateContext.md +5 -5
- package/dist/docs/reference/model/GeneratedPart.md +6 -6
- package/dist/docs/reference/model/GenerationDiagnostic.md +1 -1
- package/dist/docs/reference/model/GenerationError.md +1 -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 +11 -5
- package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +3 -3
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +1 -1
- package/dist/docs/reference/model/HullOptions.md +7 -7
- package/dist/docs/reference/model/ImmutableBuffer-type.md +1 -1
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +1 -1
- package/dist/docs/reference/model/ImplicitOptions.md +4 -4
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +4 -4
- package/dist/docs/reference/model/LinearPatternOptions.md +12 -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 +4 -4
- package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/model/ModelProgram.md +1 -1
- package/dist/docs/reference/model/ModelingLimits.md +1 -1
- package/dist/docs/reference/model/NumericArray.md +1 -1
- package/dist/docs/reference/model/PartGeometry.md +1 -1
- package/dist/docs/reference/model/PartOptions.md +6 -6
- package/dist/docs/reference/model/Path2-type.md +192 -0
- package/dist/docs/reference/model/Path2Data.md +14 -0
- package/dist/docs/reference/model/Path2Input.md +15 -0
- package/dist/docs/reference/model/Path3-type.md +192 -0
- package/dist/docs/reference/model/Path3Data.md +14 -0
- package/dist/docs/reference/model/Path3Input.md +15 -0
- package/dist/docs/reference/model/PathLocation.md +65 -0
- package/dist/docs/reference/model/PathNormalGuide.md +6 -5
- package/dist/docs/reference/model/PathOptions.md +34 -0
- package/dist/docs/reference/model/PathPatternOptions.md +3 -3
- package/dist/docs/reference/model/PathResamplingOptions.md +79 -0
- package/dist/docs/reference/model/PatternSource.md +2 -2
- package/dist/docs/reference/model/Pivot2Options.md +27 -0
- package/dist/docs/reference/model/Pivot3Options.md +27 -0
- package/dist/docs/reference/model/PlaneOptions.md +3 -3
- package/dist/docs/reference/model/{Polygon-type.md → PolygonData.md} +2 -2
- package/dist/docs/reference/model/PolygonOptions.md +85 -8
- package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +7 -7
- package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +41 -20
- package/dist/docs/reference/model/PrintableThreadFit.md +1 -1
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/model/Profile.md +1 -1
- package/dist/docs/reference/model/ProfileComponent2.md +1 -1
- package/dist/docs/reference/model/ProfileContour2.md +1 -1
- 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 +17 -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/{Region.md → RegionData.md} +4 -4
- 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 +81 -40
- package/dist/docs/reference/model/SectionHullOptions.md +7 -7
- package/dist/docs/reference/model/SectionInspection.md +10 -10
- package/dist/docs/reference/model/{RegionOffsetJoin.md → SectionOffsetJoin.md} +3 -3
- package/dist/docs/reference/model/{RegionOffsetOptions.md → SectionOffsetOptions.md} +4 -4
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Solid.md +66 -26
- 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/StrokeCap.md +16 -0
- package/dist/docs/reference/model/StrokeJoin.md +16 -0
- package/dist/docs/reference/model/StrokeOptions.md +91 -0
- 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 +1 -1
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +1 -1
- package/dist/docs/reference/model/ThreadHandedness.md +1 -1
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +1 -1
- package/dist/docs/reference/model/ThreadLeadInShape.md +1 -1
- package/dist/docs/reference/model/ThreadProfile.md +3 -3
- package/dist/docs/reference/model/ThreadRidgeOptions.md +1 -1
- package/dist/docs/reference/model/ThreadedNutBevel.md +1 -1
- package/dist/docs/reference/model/ThreadedNutOptions.md +4 -4
- package/dist/docs/reference/model/ThreadedNutPreflight.md +1 -1
- package/dist/docs/reference/model/ThreadedNutShape.md +1 -1
- package/dist/docs/reference/model/ThreadedRodOptions.md +4 -4
- package/dist/docs/reference/model/TorusOptions.md +8 -8
- package/dist/docs/reference/model/Transform2-type.md +256 -0
- package/dist/docs/reference/model/Transform2Input.md +20 -0
- package/dist/docs/reference/model/Transform2Matrix.md +15 -0
- package/dist/docs/reference/model/Transform3-type.md +296 -0
- package/dist/docs/reference/model/Transform3Input.md +20 -0
- package/dist/docs/reference/model/{Transform3.md → Transform3Matrix.md} +3 -3
- package/dist/docs/reference/model/TriangleMesh.md +1 -1
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +2 -2
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +1 -1
- package/dist/docs/reference/model/TubeOptions.md +8 -8
- package/dist/docs/reference/model/Vector2-type.md +270 -0
- package/dist/docs/reference/model/Vector2Input.md +20 -0
- package/dist/docs/reference/model/{Vector2.md → Vector2Tuple.md} +3 -3
- package/dist/docs/reference/model/Vector3-type.md +282 -0
- package/dist/docs/reference/model/Vector3Input.md +20 -0
- package/dist/docs/reference/model/{Vector3.md → Vector3Tuple.md} +3 -3
- package/dist/docs/reference/model/VectorTextLayout.md +1 -1
- package/dist/docs/reference/model/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/model/anchor.md +1 -1
- 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 +4 -4
- package/dist/docs/reference/model/categories/bounded-surfaces.md +3 -3
- package/dist/docs/reference/model/categories/contracts.md +2 -2
- package/dist/docs/reference/model/categories/core-values-errors.md +5 -5
- package/dist/docs/reference/model/categories/explicit-profiles.md +3 -3
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +2 -2
- package/dist/docs/reference/model/categories/generation.md +1 -1
- package/dist/docs/reference/model/categories/inspection.md +7 -8
- package/dist/docs/reference/model/categories/mesh-inspection.md +2 -2
- package/dist/docs/reference/model/categories/paths.md +33 -0
- package/dist/docs/reference/model/categories/primitives.md +3 -3
- package/dist/docs/reference/model/categories/resolution.md +2 -2
- package/dist/docs/reference/model/categories/sections.md +10 -8
- package/dist/docs/reference/model/categories/threads.md +5 -5
- package/dist/docs/reference/model/categories/transforms-placement.md +27 -13
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/components.md +10 -7
- 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 +2 -2
- 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 +1 -1
- package/dist/docs/reference/model/gridPattern.md +4 -4
- package/dist/docs/reference/model/heightfield.md +2 -2
- package/dist/docs/reference/model/hull.md +2 -2
- package/dist/docs/reference/model/immutableBuffer.md +1 -1
- package/dist/docs/reference/model/immutableMesh.md +1 -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 +4 -4
- package/dist/docs/reference/model/intersect.md +1 -1
- package/dist/docs/reference/model/isEmpty.md +2 -2
- package/dist/docs/reference/model/linearPattern.md +4 -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 +42 -0
- package/dist/docs/reference/model/path3.md +42 -0
- package/dist/docs/reference/model/pathPattern.md +13 -12
- package/dist/docs/reference/model/polygon.md +4 -4
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +3 -3
- package/dist/docs/reference/model/preflightThreadedNut.md +3 -3
- package/dist/docs/reference/model/preflightThreadedRod.md +3 -3
- package/dist/docs/reference/model/radialPattern.md +5 -37
- package/dist/docs/reference/model/rectangle.md +4 -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 +74 -0
- 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 +2 -2
- package/dist/docs/reference/model/threadedNut.md +4 -4
- package/dist/docs/reference/model/threadedRod.md +4 -4
- package/dist/docs/reference/model/torus.md +3 -3
- package/dist/docs/reference/model/transform2.md +39 -0
- package/dist/docs/reference/model/transform3.md +39 -0
- 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 +32 -0
- package/dist/docs/reference/model/vector3.md +39 -0
- package/dist/docs/reference/model.md +9 -8
- package/dist/docs/reference/text/Bounds2.md +4 -4
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
- package/dist/docs/reference/text/Vector2Tuple.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 +1 -1
- package/dist/docs/reference/text/VectorTextOptions.md +1 -1
- package/dist/docs/reference/text/categories/font-preparation.md +4 -4
- package/dist/docs/reference/text/prepareVectorFont.md +2 -2
- package/dist/docs/reference/text.md +1 -1
- package/dist/engine/construction-operations.js +31 -14
- package/dist/engine/deferred-context.js +11 -181
- 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/loft-operations.js +35 -14
- package/dist/engine/model-summary.js +8 -5
- 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 +11 -8
- package/dist/engine/operation-environment.js +2 -2
- package/dist/engine/pattern-operations.js +3 -3
- 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 +8 -7
- package/dist/engine/profile-mesh.js +7 -7
- package/dist/engine/recipe-realization.js +35 -21
- package/dist/engine/section-operations.js +52 -11
- package/dist/engine/session-graph.js +1 -1
- package/dist/engine/session-native.js +1 -1
- package/dist/engine/session-snapshot.js +17 -6
- package/dist/engine/session.js +13 -8
- package/dist/engine/shape-anchors.js +5 -11
- package/dist/engine/transform-operations.js +66 -49
- package/dist/geometry/anchors.js +40 -33
- package/dist/geometry/curves/sampling.js +14 -14
- package/dist/geometry/edge-finishing.js +1 -1
- package/dist/geometry/extrusion.js +13 -16
- package/dist/geometry/index.js +13 -10
- 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 +20 -0
- package/dist/geometry/math/vector-value.js +168 -0
- package/dist/geometry/math/vector2.js +80 -0
- package/dist/geometry/math/vector3.js +37 -7
- package/dist/geometry/mechanical/gear-motion.js +8 -5
- package/dist/geometry/mechanical/gears.js +38 -38
- package/dist/geometry/mechanical/index.js +3 -3
- 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 +4 -5
- 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 +2 -2
- package/dist/geometry/mechanical/thread-surface.js +1 -1
- package/dist/geometry/mechanical/threads.js +8 -8
- 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-intersections.js +5 -1
- package/dist/geometry/mesh/mesh-solid.js +7 -7
- package/dist/geometry/mesh/mesh.js +4 -15
- package/dist/geometry/paths/closest-point.js +63 -0
- package/dist/geometry/paths/frames.js +44 -14
- package/dist/geometry/paths/helix.js +16 -6
- package/dist/geometry/paths/path-value.js +252 -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 +2 -2
- package/dist/geometry/polygon-clipping.js +17 -0
- package/dist/geometry/primitive-resolution.js +4 -1
- package/dist/geometry/profiles/contour.js +6 -6
- package/dist/geometry/profiles/matched.js +4 -4
- package/dist/geometry/profiles/profiles.js +4 -4
- package/dist/geometry/profiles/rectangle.js +4 -4
- package/dist/geometry/profiles/side-profile.js +7 -7
- package/dist/geometry/profiles/span-sampling.js +1 -1
- package/dist/geometry/resolution.js +51 -39
- package/dist/geometry/revolve/revolve-mesh.js +12 -7
- package/dist/geometry/stroke-path.js +57 -68
- package/dist/geometry/svg/fill.js +7 -21
- package/dist/geometry/svg-import.js +23 -23
- package/dist/geometry/sweeps/options.js +5 -4
- package/dist/geometry/sweeps/orientation.js +5 -5
- package/dist/geometry/sweeps/stations.js +14 -14
- package/dist/geometry/sweeps/sweep-closed.js +5 -5
- package/dist/geometry/sweeps/sweep-mesh.js +9 -3
- package/dist/geometry/sweeps/sweep-open.js +4 -4
- package/dist/geometry/sweeps/validation.js +4 -7
- package/dist/geometry/transform-chain.js +172 -0
- package/dist/geometry/transform-geometry.js +27 -30
- package/dist/geometry/transform-matrix.js +14 -0
- package/dist/geometry/transform2.js +60 -0
- package/dist/geometry/transform3.js +70 -26
- package/dist/index.js +4 -0
- package/dist/model/execution-binding.js +10 -5
- package/dist/model/geometry-recipes.js +15 -0
- package/dist/{engine → model}/immutable-generation-data.js +88 -6
- package/dist/model/operation-dispatch.js +10 -3
- package/dist/model/operations.js +45 -35
- package/dist/model/recipe-declaration.js +199 -0
- package/dist/model/shape-handles.js +17 -5
- 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/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/Region.md +0 -14
- package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
- package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
- package/dist/docs/reference/geometry/Transform3.md +0 -12
- package/dist/docs/reference/geometry/Vector2.md +0 -7
- package/dist/docs/reference/geometry/Vector3.md +0 -7
- package/dist/docs/reference/geometry/attachTransform.md +0 -73
- 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/rotateAroundAxis3.md +0 -38
- 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/geometry/transformRegion.md +0 -40
- package/dist/docs/reference/model/Transform2.md +0 -15
- package/dist/docs/reference/model/fromRegion.md +0 -33
- package/dist/docs/reference/model/rayCast.md +0 -40
- package/dist/docs/reference/model/toRegion.md +0 -33
- package/dist/docs/reference/model/toTriangleMesh.md +0 -27
- package/dist/docs/reference/text/Vector2.md +0 -7
- package/dist/engine/geometry-recipes.js +0 -12
- package/dist/engine/pattern-transform.js +0 -9
- package/dist/geometry/paths/path.js +0 -32
package/dist/api/geometry.d.ts
CHANGED
|
@@ -11,6 +11,9 @@ export declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
11
11
|
readonly depth?: number;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
/** Adds two finite XY vectors component-wise. */
|
|
15
|
+
export declare const add2: (a: Vector2Tuple, b: Vector2Tuple) => Vector2Tuple;
|
|
16
|
+
|
|
14
17
|
/**
|
|
15
18
|
* Adds two finite XYZ vectors component-wise.
|
|
16
19
|
* @example
|
|
@@ -18,10 +21,12 @@ export declare interface AcmeThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
18
21
|
* add3([1, 2, 3], [4, 5, 6]); // [5, 7, 9]
|
|
19
22
|
* ```
|
|
20
23
|
*/
|
|
21
|
-
export declare const add3: (a:
|
|
24
|
+
export declare const add3: (a: Vector3Tuple, b: Vector3Tuple) => Vector3Tuple;
|
|
22
25
|
|
|
23
26
|
/** Controls full-circle sampling that must satisfy one or more topology alignments. */
|
|
24
27
|
export declare interface AlignedCircularSegmentsOptions {
|
|
28
|
+
/** Radial sizing used by adaptive error and edge-length checks. Defaults to vertex. */
|
|
29
|
+
readonly sizing?: RadialSizing;
|
|
25
30
|
/**
|
|
26
31
|
* Non-empty alignment factors. Every value must be a positive safe integer; the returned count
|
|
27
32
|
* is divisible by their checked least common multiple.
|
|
@@ -33,12 +38,12 @@ export declare interface AlignedCircularSegmentsOptions {
|
|
|
33
38
|
* Additional full-circle segment floor, as a safe integer of at least three.
|
|
34
39
|
* @defaultValue `3`
|
|
35
40
|
*/
|
|
36
|
-
readonly
|
|
41
|
+
readonly minSegments?: number;
|
|
37
42
|
/**
|
|
38
43
|
* Exact full-circle segment count.
|
|
39
44
|
*
|
|
40
45
|
* This takes precedence over `resolution.circularSegments` and adaptive sampling, and must
|
|
41
|
-
* already satisfy every alignment factor and `
|
|
46
|
+
* already satisfy every alignment factor and `minSegments`.
|
|
42
47
|
*/
|
|
43
48
|
readonly segments?: number;
|
|
44
49
|
/** Operation-level physical tessellation policy over the active model-wide policy. */
|
|
@@ -84,17 +89,37 @@ export declare function analyzeTriangleMeshQuality(
|
|
|
84
89
|
*/
|
|
85
90
|
export declare interface Anchor3 {
|
|
86
91
|
/** Unit outward normal used as the anchor's local +Z direction. */
|
|
87
|
-
readonly direction:
|
|
92
|
+
readonly direction: Vector3Tuple;
|
|
88
93
|
/** World-space attachment position. */
|
|
89
|
-
readonly position:
|
|
94
|
+
readonly position: Vector3Tuple;
|
|
90
95
|
/** Roll guide projected into the plane perpendicular to `direction`. */
|
|
91
|
-
readonly up:
|
|
96
|
+
readonly up: Vector3Tuple;
|
|
92
97
|
}
|
|
93
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
|
+
|
|
94
119
|
/**
|
|
95
120
|
* Converts an anchor into a right-handed frame with direction as local +Z.
|
|
96
121
|
*
|
|
97
|
-
* @param anchor - Anchor created by {@link
|
|
122
|
+
* @param anchor - Anchor created by {@link anchor3} or equivalent valid data.
|
|
98
123
|
* @param tolerance - Optional comparison overrides.
|
|
99
124
|
* @returns A normalized right-handed frame at the anchor position.
|
|
100
125
|
*/
|
|
@@ -113,9 +138,9 @@ export declare function anchorFrame3(
|
|
|
113
138
|
* @returns A fresh transformed direction.
|
|
114
139
|
*/
|
|
115
140
|
export declare function applyTransformDirection3(
|
|
116
|
-
transform:
|
|
117
|
-
direction:
|
|
118
|
-
):
|
|
141
|
+
transform: Transform3Matrix,
|
|
142
|
+
direction: Vector3Tuple,
|
|
143
|
+
): Vector3Tuple;
|
|
119
144
|
|
|
120
145
|
/**
|
|
121
146
|
* Applies an affine transform to a point, including translation.
|
|
@@ -125,22 +150,22 @@ export declare function applyTransformDirection3(
|
|
|
125
150
|
* @returns A fresh transformed point.
|
|
126
151
|
*/
|
|
127
152
|
export declare function applyTransformPoint3(
|
|
128
|
-
transform:
|
|
129
|
-
point:
|
|
130
|
-
):
|
|
153
|
+
transform: Transform3Matrix,
|
|
154
|
+
point: Vector3Tuple,
|
|
155
|
+
): Vector3Tuple;
|
|
131
156
|
|
|
132
157
|
/** Planar circular arc with counterclockwise degree angles. */
|
|
133
158
|
export declare interface ArcCurve2 {
|
|
134
159
|
/** Selects a circular arc in the XY plane. */
|
|
135
160
|
readonly kind: "arc";
|
|
136
161
|
/** Circle center in millimetres. */
|
|
137
|
-
readonly center:
|
|
162
|
+
readonly center: Vector2Tuple;
|
|
138
163
|
/** Positive circular radius in millimetres. */
|
|
139
164
|
readonly radius: number;
|
|
140
165
|
/** Initial angle in degrees; defaults to zero. */
|
|
141
|
-
readonly
|
|
166
|
+
readonly startAngle?: number;
|
|
142
167
|
/** Nonzero signed sweep in degrees, bounded to one complete turn. */
|
|
143
|
-
readonly
|
|
168
|
+
readonly sweepAngle: number;
|
|
144
169
|
}
|
|
145
170
|
|
|
146
171
|
/** Spatial circular arc in the plane of two orthogonal unit directions. */
|
|
@@ -148,17 +173,17 @@ export declare interface ArcCurve3 {
|
|
|
148
173
|
/** Selects a circular arc in the supplied plane. */
|
|
149
174
|
readonly kind: "arc";
|
|
150
175
|
/** Circle center in millimetres. */
|
|
151
|
-
readonly center:
|
|
176
|
+
readonly center: Vector3Tuple;
|
|
152
177
|
/** Positive circular radius in millimetres. */
|
|
153
178
|
readonly radius: number;
|
|
154
179
|
/** Orthogonal unit direction at zero degrees. */
|
|
155
|
-
readonly xAxis:
|
|
180
|
+
readonly xAxis: Vector3Tuple;
|
|
156
181
|
/** Orthogonal unit direction at positive ninety degrees. */
|
|
157
|
-
readonly yAxis:
|
|
182
|
+
readonly yAxis: Vector3Tuple;
|
|
158
183
|
/** Initial angle in degrees; defaults to zero. */
|
|
159
|
-
readonly
|
|
184
|
+
readonly startAngle?: number;
|
|
160
185
|
/** Nonzero signed sweep in degrees, bounded to one complete turn. */
|
|
161
|
-
readonly
|
|
186
|
+
readonly sweepAngle: number;
|
|
162
187
|
}
|
|
163
188
|
|
|
164
189
|
/**
|
|
@@ -175,20 +200,20 @@ export declare interface ArcCurve3 {
|
|
|
175
200
|
* @returns A frozen affine transform for the moving object.
|
|
176
201
|
* @throws {@link GeometryError} For invalid anchors or non-finite options.
|
|
177
202
|
*/
|
|
178
|
-
export declare function
|
|
203
|
+
export declare function attachmentTransform3(
|
|
179
204
|
source: Anchor3,
|
|
180
205
|
target: Anchor3,
|
|
181
|
-
options?:
|
|
182
|
-
):
|
|
206
|
+
options?: AttachOptions,
|
|
207
|
+
): Transform3Matrix;
|
|
183
208
|
|
|
184
209
|
/** Options controlling how one anchor is attached to another. */
|
|
185
|
-
export declare interface
|
|
210
|
+
export declare interface AttachOptions {
|
|
186
211
|
/** Align outward directions face-to-face (`opposed`) or in parallel (`same`). */
|
|
187
212
|
readonly alignment?: "opposed" | "same";
|
|
188
213
|
/** Separation along the target anchor's outward direction in model units. */
|
|
189
214
|
readonly gap?: number;
|
|
190
|
-
/** Additional right-handed roll about the attached direction, in
|
|
191
|
-
readonly
|
|
215
|
+
/** Additional right-handed roll about the attached direction, in degrees. */
|
|
216
|
+
readonly spin?: number;
|
|
192
217
|
/** Optional numeric comparison overrides. */
|
|
193
218
|
readonly tolerance?: GeometryToleranceOptions;
|
|
194
219
|
}
|
|
@@ -213,31 +238,31 @@ export declare type AxisAngleRotation3 =
|
|
|
213
238
|
/** Axis-aligned bounds in two-dimensional model space. */
|
|
214
239
|
export declare interface Bounds2 {
|
|
215
240
|
/** Inclusive maximum X/Y coordinates. */
|
|
216
|
-
readonly max:
|
|
241
|
+
readonly max: Vector2Tuple;
|
|
217
242
|
/** Inclusive minimum X/Y coordinates. */
|
|
218
|
-
readonly min:
|
|
243
|
+
readonly min: Vector2Tuple;
|
|
219
244
|
}
|
|
220
245
|
|
|
221
246
|
/** Axis-aligned bounds in three-dimensional model space. */
|
|
222
247
|
export declare interface Bounds3 {
|
|
223
248
|
/** Inclusive maximum X/Y/Z coordinates. */
|
|
224
|
-
readonly max:
|
|
249
|
+
readonly max: Vector3Tuple;
|
|
225
250
|
/** Inclusive minimum X/Y/Z coordinates. */
|
|
226
|
-
readonly min:
|
|
251
|
+
readonly min: Vector3Tuple;
|
|
227
252
|
}
|
|
228
253
|
|
|
229
254
|
/** Midpoint of finite XY bounds in millimetres. */
|
|
230
|
-
export declare function boundsCenter(bounds: Bounds2):
|
|
255
|
+
export declare function boundsCenter(bounds: Bounds2): Vector2Tuple;
|
|
231
256
|
|
|
232
257
|
/** Midpoint of finite XYZ bounds in millimetres. */
|
|
233
|
-
export declare function boundsCenter(bounds: Bounds3):
|
|
258
|
+
export declare function boundsCenter(bounds: Bounds3): Vector3Tuple;
|
|
234
259
|
|
|
235
260
|
/** A uniform XY scale followed by translation, and the resulting bounds. */
|
|
236
261
|
export declare interface BoundsFit2 {
|
|
237
262
|
/** Positive uniform scale. */
|
|
238
263
|
readonly scale: number;
|
|
239
264
|
/** Millimetre translation applied after scaling around the origin. */
|
|
240
|
-
readonly position:
|
|
265
|
+
readonly position: Vector2Tuple;
|
|
241
266
|
/** Bounds after scaling and translation. */
|
|
242
267
|
readonly bounds: Bounds2;
|
|
243
268
|
}
|
|
@@ -247,7 +272,7 @@ export declare interface BoundsFit3 {
|
|
|
247
272
|
/** Positive uniform scale. */
|
|
248
273
|
readonly scale: number;
|
|
249
274
|
/** Millimetre translation applied after scaling around the origin. */
|
|
250
|
-
readonly position:
|
|
275
|
+
readonly position: Vector3Tuple;
|
|
251
276
|
/** Bounds after scaling and translation. */
|
|
252
277
|
readonly bounds: Bounds3;
|
|
253
278
|
}
|
|
@@ -260,13 +285,13 @@ export declare interface BoundsFitOptions {
|
|
|
260
285
|
|
|
261
286
|
/** Creates immutable centered XY bounds from nonnegative dimensions in millimetres. */
|
|
262
287
|
export declare function boundsFromSize(
|
|
263
|
-
size:
|
|
288
|
+
size: Vector2Tuple,
|
|
264
289
|
options?: BoundsFromSizeOptions,
|
|
265
290
|
): Bounds2;
|
|
266
291
|
|
|
267
292
|
/** Creates immutable centered XYZ bounds from nonnegative dimensions in millimetres. */
|
|
268
293
|
export declare function boundsFromSize(
|
|
269
|
-
size:
|
|
294
|
+
size: Vector3Tuple,
|
|
270
295
|
options?: BoundsFromSizeOptions,
|
|
271
296
|
): Bounds3;
|
|
272
297
|
|
|
@@ -277,10 +302,10 @@ export declare interface BoundsFromSizeOptions {
|
|
|
277
302
|
}
|
|
278
303
|
|
|
279
304
|
/** Inclusive XY dimensions in millimetres; zero extents are retained. */
|
|
280
|
-
export declare function boundsSize(bounds: Bounds2):
|
|
305
|
+
export declare function boundsSize(bounds: Bounds2): Vector2Tuple;
|
|
281
306
|
|
|
282
307
|
/** Inclusive XYZ dimensions in millimetres; zero extents are retained. */
|
|
283
|
-
export declare function boundsSize(bounds: Bounds3):
|
|
308
|
+
export declare function boundsSize(bounds: Bounds3): Vector3Tuple;
|
|
284
309
|
|
|
285
310
|
/** Creates an outward face-center anchor using the same local origin convention as box().
|
|
286
311
|
* @remarks origin applies an explicit translation. For rotated components, transform the
|
|
@@ -295,13 +320,13 @@ export declare type BoxAnchorFace =
|
|
|
295
320
|
/** Box dimensions and construction origin for one named face anchor. */
|
|
296
321
|
export declare interface BoxAnchorOptions {
|
|
297
322
|
/** XYZ dimensions, or one uniform dimension, in millimetres. */
|
|
298
|
-
readonly size: number |
|
|
323
|
+
readonly size: number | Vector3Tuple;
|
|
299
324
|
/** Named outward face whose center is the attachment point. */
|
|
300
325
|
readonly face: BoxAnchorFace;
|
|
301
326
|
/** Centers the box around its construction origin; defaults to true, matching box(). */
|
|
302
327
|
readonly center?: boolean;
|
|
303
328
|
/** Construction origin; centered-box center or noncentered minimum corner. Defaults to zero. */
|
|
304
|
-
readonly origin?:
|
|
329
|
+
readonly origin?: Vector3Tuple;
|
|
305
330
|
}
|
|
306
331
|
|
|
307
332
|
/** Box edges use +Z top, +Y front and +X right; vertical names list front/back first. */
|
|
@@ -330,7 +355,7 @@ export declare type BoxEdgeTreatments = Readonly<
|
|
|
330
355
|
/**
|
|
331
356
|
* Dimensions, placement, and uniform or independently selected finishing for an axis-aligned box.
|
|
332
357
|
*/
|
|
333
|
-
export declare interface BoxOptions extends
|
|
358
|
+
export declare interface BoxOptions extends PrimitiveAttachment {
|
|
334
359
|
/** Explicit sampling ceilings for edge treatments, bounded by the host policy. */
|
|
335
360
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
336
361
|
/**
|
|
@@ -339,33 +364,11 @@ export declare interface BoxOptions extends PrimitivePlacement {
|
|
|
339
364
|
*/
|
|
340
365
|
readonly center?: boolean;
|
|
341
366
|
/** Positive uniform size or explicit `[X, Y, Z]` extents in millimetres. */
|
|
342
|
-
readonly size: number |
|
|
367
|
+
readonly size: number | Vector3Tuple;
|
|
343
368
|
/** Uniform treatment or independent disjoint nominal edge/group treatments. */
|
|
344
369
|
readonly treatment?: EdgeTreatment | BoxEdgeTreatments;
|
|
345
370
|
}
|
|
346
371
|
|
|
347
|
-
/**
|
|
348
|
-
* Builds closed thread-ridge components with every profile locked to the
|
|
349
|
-
* shaft's radial/axial frame. The mesh is intended for union with its
|
|
350
|
-
* minor-envelope cylinder and never owns WASM objects.
|
|
351
|
-
*/
|
|
352
|
-
export declare function buildHelicalThreadRidgeMesh(
|
|
353
|
-
options: HelicalThreadRidgeMeshOptions,
|
|
354
|
-
): TriangleMesh;
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Builds one closed threaded cylinder without a ridge/core Boolean seam.
|
|
358
|
-
*
|
|
359
|
-
* Each circular facet includes its exact phase-shifted profile breakpoints, including duplicate-Z
|
|
360
|
-
* samples for vertical flanks and blunt transitions. Adjacent variable grids are stitched as a
|
|
361
|
-
* monotone strip, with optional intermediate rows bounded by physical `maxSegmentLength`. A
|
|
362
|
-
* conservative pre-allocation estimate rejects excessive meshes before constructing position
|
|
363
|
-
* arrays.
|
|
364
|
-
*/
|
|
365
|
-
export declare function buildHelicalThreadSolidMesh(
|
|
366
|
-
options: HelicalThreadSolidMeshOptions,
|
|
367
|
-
): TriangleMesh;
|
|
368
|
-
|
|
369
372
|
/** Axial side carrying the near-normal pressure flank of a buttress thread. */
|
|
370
373
|
export declare type ButtressPressureFlankSide = "negative" | "positive";
|
|
371
374
|
|
|
@@ -443,6 +446,12 @@ export declare interface CircularPrimitiveOptions {
|
|
|
443
446
|
readonly resolution?: GeometryResolution;
|
|
444
447
|
}
|
|
445
448
|
|
|
449
|
+
/** Circular sampling measured from the nominal inscribed or circumscribed radius. */
|
|
450
|
+
export declare interface CircularResolutionOptions extends GeometryResolution {
|
|
451
|
+
/** Vertex sizing bounds inward sagitta; face sizing bounds outward excess. Defaults to vertex. */
|
|
452
|
+
readonly sizing?: RadialSizing;
|
|
453
|
+
}
|
|
454
|
+
|
|
446
455
|
/** Close, normal, and loose metric clearance-hole diameters in millimetres. */
|
|
447
456
|
export declare interface ClearanceHoleDimensions {
|
|
448
457
|
/** Close-fit clearance-hole diameter. */
|
|
@@ -464,7 +473,7 @@ export declare type ClearanceHoleFit = "close" | "normal" | "loose";
|
|
|
464
473
|
* This is a solid-body closure, not a hollow-wall or mounting-bore construction.
|
|
465
474
|
*/
|
|
466
475
|
export declare function closeToAxis(
|
|
467
|
-
side: readonly
|
|
476
|
+
side: readonly Vector2Tuple[],
|
|
468
477
|
limits?: Partial<GeometrySamplingLimits>,
|
|
469
478
|
): Contour;
|
|
470
479
|
|
|
@@ -531,9 +540,9 @@ export declare function compensateThreadProfileForFaceting(
|
|
|
531
540
|
* @returns A new frozen transform equal to `after * before`.
|
|
532
541
|
*/
|
|
533
542
|
export declare function composeTransform3(
|
|
534
|
-
after:
|
|
535
|
-
before:
|
|
536
|
-
):
|
|
543
|
+
after: Transform3Matrix,
|
|
544
|
+
before: Transform3Matrix,
|
|
545
|
+
): Transform3Matrix;
|
|
537
546
|
|
|
538
547
|
/**
|
|
539
548
|
* Builds rotation-minimizing frames for a non-duplicated closed path.
|
|
@@ -542,10 +551,13 @@ export declare function composeTransform3(
|
|
|
542
551
|
* normal back to the first tangent measures seam holonomy; distributing that residual rotation
|
|
543
552
|
* uniformly over all path intervals avoids a visible seam or accumulated frame flip.
|
|
544
553
|
* The maxPathPoints ceiling (default 100000) bounds path points and frames.
|
|
554
|
+
* Requires closed path values; raw tuples are interpreted as closed and must omit their seam point.
|
|
555
|
+
* Invalid paths throw GeometryError.
|
|
556
|
+
* Nonfinite initial normals reject; finite parallel preferences select a canonical fallback.
|
|
545
557
|
*/
|
|
546
558
|
export declare const computeClosedParallelTransportFrames: (
|
|
547
|
-
|
|
548
|
-
initialNormal?:
|
|
559
|
+
input: Path3Input,
|
|
560
|
+
initialNormal?: Vector3Input,
|
|
549
561
|
limits?: Partial<GeometrySamplingLimits>,
|
|
550
562
|
) => readonly PathFrame[];
|
|
551
563
|
|
|
@@ -553,10 +565,12 @@ export declare const computeClosedParallelTransportFrames: (
|
|
|
553
565
|
* Builds rotation-minimizing frames by parallel-transporting the previous normal.
|
|
554
566
|
* This avoids the sudden profile flips produced by picking a fresh up-vector per ring.
|
|
555
567
|
* Paths exceeding maxPathPoints (default 100000) reject before frame allocation or guide evaluation.
|
|
568
|
+
* Requires open path values; raw tuples are interpreted as an open path. Invalid paths throw GeometryError.
|
|
569
|
+
* Nonfinite normals and guide results reject. A finite initial guide parallel to the tangent selects a canonical fallback.
|
|
556
570
|
*/
|
|
557
571
|
export declare const computeParallelTransportFrames: (
|
|
558
|
-
|
|
559
|
-
initialNormal?:
|
|
572
|
+
input: Path3Input,
|
|
573
|
+
initialNormal?: Vector3Input,
|
|
560
574
|
normalGuide?: PathNormalGuide,
|
|
561
575
|
limits?: Partial<GeometrySamplingLimits>,
|
|
562
576
|
) => readonly PathFrame[];
|
|
@@ -572,7 +586,24 @@ export declare const computeParallelTransportFrames: (
|
|
|
572
586
|
*/
|
|
573
587
|
export declare function computeTriangleMeshCentroid(
|
|
574
588
|
mesh: TriangleMesh,
|
|
575
|
-
):
|
|
589
|
+
): Vector3Tuple;
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Creates an order-independent regression signature for a manufacturing mesh.
|
|
593
|
+
*
|
|
594
|
+
* The input must be non-empty, closed, consistently wound, and have no unreferenced vertices.
|
|
595
|
+
* Vertex and triangle order do not affect the fingerprint; winding, quantized geometry, and
|
|
596
|
+
* connectivity metrics do. The fingerprint is a regression aid, not a cryptographic digest.
|
|
597
|
+
*
|
|
598
|
+
* @param mesh - Closed oriented mesh to measure without mutation.
|
|
599
|
+
* @param options - Absolute quantization and complexity limits.
|
|
600
|
+
* @returns Compact counts, bounds, volume, topology, tolerances, and canonical fingerprint.
|
|
601
|
+
* @throws {@link GeometryError} When validation, topology, tolerance, or complexity checks fail.
|
|
602
|
+
*/
|
|
603
|
+
export declare function computeTriangleMeshSignature(
|
|
604
|
+
mesh: TriangleMesh,
|
|
605
|
+
options?: TriangleMeshSignatureOptions,
|
|
606
|
+
): TriangleMeshSignature;
|
|
576
607
|
|
|
577
608
|
/** Tests actual XY containment, including touching boundaries; dimensions must match. */
|
|
578
609
|
export declare function containsBounds(outer: Bounds2, inner: Bounds2): boolean;
|
|
@@ -586,12 +617,12 @@ export declare function containsBounds(outer: Bounds3, inner: Bounds3): boolean;
|
|
|
586
617
|
* Polygon exteriors are counter-clockwise and holes are clockwise. Algorithms
|
|
587
618
|
* may reject duplicate adjacent points or fewer than three effective vertices.
|
|
588
619
|
*/
|
|
589
|
-
export declare type Contour = readonly
|
|
620
|
+
export declare type Contour = readonly Vector2Tuple[];
|
|
590
621
|
|
|
591
622
|
/** Returns true when a point lies inside or on the boundary of a loop. */
|
|
592
623
|
export declare function contourContainsPoint(
|
|
593
624
|
loop: Contour,
|
|
594
|
-
point:
|
|
625
|
+
point: Vector2Tuple,
|
|
595
626
|
): boolean;
|
|
596
627
|
|
|
597
628
|
/** One explicitly closed planar contour, independent of editor metadata and parameter contracts. */
|
|
@@ -661,58 +692,8 @@ export declare type CorrespondingProfileStation = LoftPlacement & {
|
|
|
661
692
|
readonly profile: CorrespondingProfile;
|
|
662
693
|
};
|
|
663
694
|
|
|
664
|
-
/**
|
|
665
|
-
|
|
666
|
-
*
|
|
667
|
-
* `up` is projected onto the plane perpendicular to `direction`, removing small
|
|
668
|
-
* input drift while preserving its roll intent.
|
|
669
|
-
*
|
|
670
|
-
* @param position - Finite anchor point in model coordinates.
|
|
671
|
-
* @param direction - Non-zero outward attachment normal.
|
|
672
|
-
* @param up - Non-parallel roll reference; defaults to +Y.
|
|
673
|
-
* @param tolerance - Optional comparison overrides.
|
|
674
|
-
* @returns A frozen anchor with unit, orthogonal direction and up vectors.
|
|
675
|
-
* @throws {@link GeometryError} For non-finite or degenerate inputs.
|
|
676
|
-
*/
|
|
677
|
-
export declare function createAnchor3(
|
|
678
|
-
position: Vector3,
|
|
679
|
-
direction: Vector3,
|
|
680
|
-
up?: Vector3,
|
|
681
|
-
tolerance?: GeometryToleranceOptions,
|
|
682
|
-
): Anchor3;
|
|
683
|
-
|
|
684
|
-
/**
|
|
685
|
-
* Creates a periodic thread profile for the shaft-locked helical mesher.
|
|
686
|
-
*
|
|
687
|
-
* The open path spans one pitch. Radial zero is the major envelope; negative
|
|
688
|
-
* values point toward the shaft. Custom paths must be finite, axially
|
|
689
|
-
* non-decreasing, periodic at their endpoints, and reach radial zero.
|
|
690
|
-
*
|
|
691
|
-
* @example Printable triangular thread profile
|
|
692
|
-
* ```ts
|
|
693
|
-
* createThreadProfile({ kind: "triangular", pitch: 1.75 });
|
|
694
|
-
* ```
|
|
695
|
-
*/
|
|
696
|
-
export declare function createThreadProfile(
|
|
697
|
-
spec: ThreadProfileSpec,
|
|
698
|
-
): ThreadProfile;
|
|
699
|
-
|
|
700
|
-
/**
|
|
701
|
-
* Creates an order-independent regression signature for a manufacturing mesh.
|
|
702
|
-
*
|
|
703
|
-
* The input must be non-empty, closed, consistently wound, and have no unreferenced vertices.
|
|
704
|
-
* Vertex and triangle order do not affect the fingerprint; winding, quantized geometry, and
|
|
705
|
-
* connectivity metrics do. The fingerprint is a regression aid, not a cryptographic digest.
|
|
706
|
-
*
|
|
707
|
-
* @param mesh - Closed oriented mesh to measure without mutation.
|
|
708
|
-
* @param options - Absolute quantization and complexity limits.
|
|
709
|
-
* @returns Compact counts, bounds, volume, topology, tolerances, and canonical fingerprint.
|
|
710
|
-
* @throws {@link GeometryError} When validation, topology, tolerance, or complexity checks fail.
|
|
711
|
-
*/
|
|
712
|
-
export declare function createTriangleMeshSignature(
|
|
713
|
-
mesh: TriangleMesh,
|
|
714
|
-
options?: TriangleMeshSignatureOptions,
|
|
715
|
-
): TriangleMeshSignature;
|
|
695
|
+
/** Returns the signed scalar cross product; positive means `b` is counter-clockwise from `a`. */
|
|
696
|
+
export declare const cross2: (a: Vector2Tuple, b: Vector2Tuple) => number;
|
|
716
697
|
|
|
717
698
|
/**
|
|
718
699
|
* Returns the right-handed cross product.
|
|
@@ -721,20 +702,20 @@ export declare function createTriangleMeshSignature(
|
|
|
721
702
|
* cross3([1, 0, 0], [0, 1, 0]); // [0, 0, 1]
|
|
722
703
|
* ```
|
|
723
704
|
*/
|
|
724
|
-
export declare const cross3: (a:
|
|
705
|
+
export declare const cross3: (a: Vector3Tuple, b: Vector3Tuple) => Vector3Tuple;
|
|
725
706
|
|
|
726
707
|
/** Planar cubic Bézier with explicit endpoint and control coordinates. */
|
|
727
708
|
export declare interface CubicBezierCurve2 {
|
|
728
709
|
/** Selects a cubic Bézier through two endpoints and two controls. */
|
|
729
710
|
readonly kind: "cubic";
|
|
730
711
|
/** Initial XY point in millimetres. */
|
|
731
|
-
readonly start:
|
|
712
|
+
readonly start: Vector2Tuple;
|
|
732
713
|
/** First XY control point in millimetres. */
|
|
733
|
-
readonly control1:
|
|
714
|
+
readonly control1: Vector2Tuple;
|
|
734
715
|
/** Second XY control point in millimetres. */
|
|
735
|
-
readonly control2:
|
|
716
|
+
readonly control2: Vector2Tuple;
|
|
736
717
|
/** Final XY point in millimetres. */
|
|
737
|
-
readonly end:
|
|
718
|
+
readonly end: Vector2Tuple;
|
|
738
719
|
}
|
|
739
720
|
|
|
740
721
|
/**
|
|
@@ -744,21 +725,15 @@ export declare interface CubicBezierCurve3 {
|
|
|
744
725
|
/** Selects a cubic Bézier through two endpoints and two controls. */
|
|
745
726
|
readonly kind: "cubic";
|
|
746
727
|
/** Initial XYZ point in millimetres. */
|
|
747
|
-
readonly start:
|
|
728
|
+
readonly start: Vector3Tuple;
|
|
748
729
|
/** First XYZ control point in millimetres. */
|
|
749
|
-
readonly control1:
|
|
730
|
+
readonly control1: Vector3Tuple;
|
|
750
731
|
/** Second XYZ control point in millimetres. */
|
|
751
|
-
readonly control2:
|
|
732
|
+
readonly control2: Vector3Tuple;
|
|
752
733
|
/** Final XYZ point in millimetres. */
|
|
753
|
-
readonly end:
|
|
734
|
+
readonly end: Vector3Tuple;
|
|
754
735
|
}
|
|
755
736
|
|
|
756
|
-
/** Returns cumulative arc length for finite points under maxPathPoints (default 100000); rejects overflowing length. */
|
|
757
|
-
export declare const cumulativePathLengths: (
|
|
758
|
-
path: readonly Vector3[],
|
|
759
|
-
limits?: Partial<GeometrySamplingLimits>,
|
|
760
|
-
) => readonly number[];
|
|
761
|
-
|
|
762
737
|
/** Reusable planar curve definition. */
|
|
763
738
|
export declare type Curve2 = LineCurve2 | ArcCurve2 | CubicBezierCurve2;
|
|
764
739
|
|
|
@@ -776,7 +751,7 @@ export declare interface CurveSamplingOptions {
|
|
|
776
751
|
/** Millimetre sampling policy; circularSegments applies only to arcs. */
|
|
777
752
|
readonly resolution?: GeometryResolution;
|
|
778
753
|
/** Output vertex ceiling of at least two; may only lower limits.maxPathPoints. */
|
|
779
|
-
readonly
|
|
754
|
+
readonly maxVertices?: number;
|
|
780
755
|
/** Explicit sampling ceilings; omitted values use package defaults without ambient state. */
|
|
781
756
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
782
757
|
}
|
|
@@ -789,7 +764,7 @@ export declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
789
764
|
* Open path spanning exactly `[-pitch/2, pitch/2]`, with both endpoints on the minor envelope,
|
|
790
765
|
* one connected ridge, one contiguous crest, and radial zero at the major envelope.
|
|
791
766
|
*/
|
|
792
|
-
readonly points: readonly
|
|
767
|
+
readonly points: readonly Vector2Tuple[];
|
|
793
768
|
}
|
|
794
769
|
|
|
795
770
|
/** Creates a cap-center or radial-side anchor using cylinder()'s construction origin.
|
|
@@ -812,11 +787,11 @@ export declare interface CylinderAnchorOptions {
|
|
|
812
787
|
/** Named outward face; side anchors lie halfway up the cylinder. */
|
|
813
788
|
readonly face: CylinderAnchorFace;
|
|
814
789
|
/** Side angle counter-clockwise from +X, in degrees; defaults to zero. */
|
|
815
|
-
readonly
|
|
790
|
+
readonly angle?: number;
|
|
816
791
|
/** Centers the cylinder along Z; defaults to true, matching cylinder(). */
|
|
817
792
|
readonly center?: boolean;
|
|
818
793
|
/** Construction origin; centered-axis midpoint or noncentered bottom axis. Defaults to zero. */
|
|
819
|
-
readonly origin?:
|
|
794
|
+
readonly origin?: Vector3Tuple;
|
|
820
795
|
}
|
|
821
796
|
|
|
822
797
|
/**
|
|
@@ -824,7 +799,7 @@ export declare interface CylinderAnchorOptions {
|
|
|
824
799
|
*/
|
|
825
800
|
export declare type CylinderOptions = CircularPrimitiveOptions &
|
|
826
801
|
RadialSizingOptions &
|
|
827
|
-
|
|
802
|
+
PrimitiveAttachment & {
|
|
828
803
|
/**
|
|
829
804
|
* Centers the solid on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
830
805
|
* @defaultValue `true`
|
|
@@ -856,7 +831,7 @@ export declare interface CylindricalGearDimensions {
|
|
|
856
831
|
/** Addendum above the pitch circle, in millimetres. */
|
|
857
832
|
readonly addendum: number;
|
|
858
833
|
/** Angular pitch between adjacent teeth, in radians. */
|
|
859
|
-
readonly
|
|
834
|
+
readonly angularPitchRadians: number;
|
|
860
835
|
/** Tangential backlash applied to this gear, in millimetres. */
|
|
861
836
|
readonly backlash: number;
|
|
862
837
|
/** Base-circle radius used by the involute, in millimetres. */
|
|
@@ -923,7 +898,7 @@ export declare interface CylindricalGearPairDimensions {
|
|
|
923
898
|
/** Absolute driven-to-driver tooth-count ratio. */
|
|
924
899
|
readonly ratio: number;
|
|
925
900
|
/** Helix angle required on the driven member for conjugate teeth, in degrees. */
|
|
926
|
-
readonly
|
|
901
|
+
readonly requiredDrivenHelixAngle: number;
|
|
927
902
|
}
|
|
928
903
|
|
|
929
904
|
/** Sampling controls for one coupled internal-gear tooth cycle. */
|
|
@@ -959,7 +934,7 @@ export declare interface CylindricalGearPairSpec {
|
|
|
959
934
|
/**
|
|
960
935
|
* Nominal dimensions for a standard full-depth cylindrical involute gear.
|
|
961
936
|
*
|
|
962
|
-
* Lengths use millimetres. `module` and `
|
|
937
|
+
* Lengths use millimetres. `module` and `pressureAngle` are measured in
|
|
963
938
|
* the normal plane; a non-zero signed helix angle is converted to transverse
|
|
964
939
|
* pitch-plane dimensions. Positive and negative helix angles identify
|
|
965
940
|
* opposite hands but produce the same 2D pitch geometry.
|
|
@@ -970,11 +945,11 @@ export declare interface CylindricalGearSpec {
|
|
|
970
945
|
/** Dedendum clearance as a multiple of normal module; defaults to `0.25`. */
|
|
971
946
|
readonly clearanceFactor?: number;
|
|
972
947
|
/** Signed helix angle in degrees; zero creates a spur pitch system. */
|
|
973
|
-
readonly
|
|
948
|
+
readonly helixAngle?: number;
|
|
974
949
|
/** Normal module in millimetres per tooth. */
|
|
975
950
|
readonly module: number;
|
|
976
951
|
/** Normal pressure angle in degrees; defaults to 20 degrees. */
|
|
977
|
-
readonly
|
|
952
|
+
readonly pressureAngle?: number;
|
|
978
953
|
/** Integer tooth count from 6 through 1,000; external profiles also enforce the no-undercut limit. */
|
|
979
954
|
readonly toothCount: number;
|
|
980
955
|
}
|
|
@@ -992,6 +967,12 @@ export declare const DEFAULT_GEOMETRY_TOLERANCE: Readonly<{
|
|
|
992
967
|
/** Conservative defaults; trusted callers can supply larger explicit ceilings. */
|
|
993
968
|
export declare const defaultGeometrySamplingLimits: GeometrySamplingLimits;
|
|
994
969
|
|
|
970
|
+
/** Returns Euclidean point distance without allocating an intermediate difference vector. */
|
|
971
|
+
export declare const distance2: (a: Vector2Tuple, b: Vector2Tuple) => number;
|
|
972
|
+
|
|
973
|
+
/** Returns Euclidean point distance without allocating an intermediate difference vector. */
|
|
974
|
+
export declare const distance3: (a: Vector3Tuple, b: Vector3Tuple) => number;
|
|
975
|
+
|
|
995
976
|
/**
|
|
996
977
|
* Places an exact item count at equal arc-length intervals along a sampled path.
|
|
997
978
|
*
|
|
@@ -999,14 +980,19 @@ export declare const defaultGeometrySamplingLimits: GeometrySamplingLimits;
|
|
|
999
980
|
* open paths include both endpoints when `count` is greater than one.
|
|
1000
981
|
* Coordinates and total length must be finite. Input points and output placements are each
|
|
1001
982
|
* limited by maxPathPoints (default 100000); exact counts exceeding that ceiling reject before length calculation.
|
|
983
|
+
* Closure defaults to the path value's metadata, or false for tuples. An explicit conflicting closure rejects.
|
|
984
|
+
* Invalid arguments and degenerate paths throw GeometryError.
|
|
1002
985
|
*/
|
|
1003
986
|
export declare const distributeAlongPath: (
|
|
1004
|
-
|
|
987
|
+
input: Path3Input,
|
|
1005
988
|
count: number,
|
|
1006
|
-
closed
|
|
989
|
+
closed?: boolean,
|
|
1007
990
|
limits?: Partial<GeometrySamplingLimits>,
|
|
1008
991
|
) => readonly PathPlacement[];
|
|
1009
992
|
|
|
993
|
+
/** Returns the scalar dot product. */
|
|
994
|
+
export declare const dot2: (a: Vector2Tuple, b: Vector2Tuple) => number;
|
|
995
|
+
|
|
1010
996
|
/**
|
|
1011
997
|
* Returns the scalar dot product.
|
|
1012
998
|
* @example
|
|
@@ -1014,7 +1000,7 @@ export declare const distributeAlongPath: (
|
|
|
1014
1000
|
* dot3([1, 0, 0], [0, 1, 0]); // 0
|
|
1015
1001
|
* ```
|
|
1016
1002
|
*/
|
|
1017
|
-
export declare const dot3: (a:
|
|
1003
|
+
export declare const dot3: (a: Vector3Tuple, b: Vector3Tuple) => number;
|
|
1018
1004
|
|
|
1019
1005
|
/**
|
|
1020
1006
|
* Uniform finishing vocabulary shared by applicable solid edges and profile corners.
|
|
@@ -1042,13 +1028,13 @@ export declare type EllipseContourOptions = CircularPrimitiveOptions &
|
|
|
1042
1028
|
(
|
|
1043
1029
|
| {
|
|
1044
1030
|
/** Positive XY radii in millimetres; mutually exclusive with size. */
|
|
1045
|
-
readonly radius:
|
|
1031
|
+
readonly radius: Vector2Tuple;
|
|
1046
1032
|
/** Full XY extents are unavailable when radius is supplied. */
|
|
1047
1033
|
readonly size?: never;
|
|
1048
1034
|
}
|
|
1049
1035
|
| {
|
|
1050
1036
|
/** Positive full XY extents in millimetres; mutually exclusive with radius. */
|
|
1051
|
-
readonly size:
|
|
1037
|
+
readonly size: Vector2Tuple;
|
|
1052
1038
|
/** XY radii are unavailable when size is supplied. */
|
|
1053
1039
|
readonly radius?: never;
|
|
1054
1040
|
}
|
|
@@ -1075,10 +1061,13 @@ export declare interface EndTreatments {
|
|
|
1075
1061
|
* @returns A frozen row-major transform.
|
|
1076
1062
|
* @throws {@link GeometryError} When an angle is non-finite.
|
|
1077
1063
|
*/
|
|
1078
|
-
export declare function eulerTransform3(
|
|
1064
|
+
export declare function eulerTransform3(
|
|
1065
|
+
rotationDegrees: Vector3Tuple,
|
|
1066
|
+
): Transform3Matrix;
|
|
1079
1067
|
|
|
1080
1068
|
/**
|
|
1081
1069
|
* Linearly extrudes one simple profile along +Z with robust ear-clipped caps.
|
|
1070
|
+
* Path2 profiles must be closed; raw point collections have an implicit closing edge.
|
|
1082
1071
|
*
|
|
1083
1072
|
* @example Extrude point data without an engine
|
|
1084
1073
|
* ```ts
|
|
@@ -1087,7 +1076,7 @@ export declare function eulerTransform3(rotationDegrees: Vector3): Transform3;
|
|
|
1087
1076
|
* ```
|
|
1088
1077
|
*/
|
|
1089
1078
|
export declare function extrudeMesh(
|
|
1090
|
-
|
|
1079
|
+
input: Path2Input,
|
|
1091
1080
|
options: ExtrudeOptions,
|
|
1092
1081
|
): TriangleMesh;
|
|
1093
1082
|
|
|
@@ -1112,9 +1101,9 @@ export declare interface ExtrusionSamplingOptions {
|
|
|
1112
1101
|
/** Operation-level physical policy over the nearest model scope. */
|
|
1113
1102
|
readonly resolution?: GeometryResolution;
|
|
1114
1103
|
/** Finite uniform or XY scale of the top profile; defaults to one. */
|
|
1115
|
-
readonly scaleTop?: number |
|
|
1104
|
+
readonly scaleTop?: number | Vector2Input;
|
|
1116
1105
|
/** Finite rotation of the top profile about +Z, in degrees; defaults to zero. */
|
|
1117
|
-
readonly
|
|
1106
|
+
readonly twist?: number;
|
|
1118
1107
|
}
|
|
1119
1108
|
|
|
1120
1109
|
/** Fits XY bounds uniformly and centers them in the target; zero source axes do not constrain scale. */
|
|
@@ -1161,13 +1150,13 @@ export declare function fitTextLayout(
|
|
|
1161
1150
|
/** A right-handed orthonormal coordinate frame expressed in world coordinates. */
|
|
1162
1151
|
export declare interface Frame3 {
|
|
1163
1152
|
/** World-space origin of the local frame. */
|
|
1164
|
-
readonly origin:
|
|
1153
|
+
readonly origin: Vector3Tuple;
|
|
1165
1154
|
/** Unit vector defining the local +X axis. */
|
|
1166
|
-
readonly xAxis:
|
|
1155
|
+
readonly xAxis: Vector3Tuple;
|
|
1167
1156
|
/** Unit vector defining the local +Y axis. */
|
|
1168
|
-
readonly yAxis:
|
|
1157
|
+
readonly yAxis: Vector3Tuple;
|
|
1169
1158
|
/** Unit vector defining the local +Z axis. */
|
|
1170
|
-
readonly zAxis:
|
|
1159
|
+
readonly zAxis: Vector3Tuple;
|
|
1171
1160
|
}
|
|
1172
1161
|
|
|
1173
1162
|
/**
|
|
@@ -1181,7 +1170,7 @@ export declare interface Frame3 {
|
|
|
1181
1170
|
export declare function frameTransform3(
|
|
1182
1171
|
frame: Frame3,
|
|
1183
1172
|
tolerance?: GeometryToleranceOptions,
|
|
1184
|
-
):
|
|
1173
|
+
): Transform3Matrix;
|
|
1185
1174
|
|
|
1186
1175
|
/**
|
|
1187
1176
|
* Error raised when a geometry precondition or invariant is not satisfied.
|
|
@@ -1248,9 +1237,9 @@ export declare interface GeometryResolution {
|
|
|
1248
1237
|
/** Optional maximum sampled edge length in millimetres. */
|
|
1249
1238
|
readonly maxSegmentLength?: number;
|
|
1250
1239
|
/** Upper safety bound for a full circle; defaults to the selected maxCircularSegments (512 by default). */
|
|
1251
|
-
readonly
|
|
1240
|
+
readonly maxSegments?: number;
|
|
1252
1241
|
/** Lower full-circle segment count; defaults to 16 or a lower selected circular ceiling. */
|
|
1253
|
-
readonly
|
|
1242
|
+
readonly minSegments?: number;
|
|
1254
1243
|
}
|
|
1255
1244
|
|
|
1256
1245
|
/** Explicit allocation ceilings for pure sampling and host-owned modeling operations. */
|
|
@@ -1276,7 +1265,7 @@ export declare interface GeometryToleranceOptions {
|
|
|
1276
1265
|
}
|
|
1277
1266
|
|
|
1278
1267
|
/** Returns one recommended metric clearance-hole diameter in millimetres. */
|
|
1279
|
-
export declare function
|
|
1268
|
+
export declare function getMetricClearanceHoleDiameter(
|
|
1280
1269
|
size: MetricFastenerSize,
|
|
1281
1270
|
fit?: ClearanceHoleFit,
|
|
1282
1271
|
): number;
|
|
@@ -1288,8 +1277,9 @@ export declare function getMetricFastenerStandard(
|
|
|
1288
1277
|
|
|
1289
1278
|
/**
|
|
1290
1279
|
* XY or XYZ grid with X varying fastest. The first item starts at the local origin.
|
|
1280
|
+
* Dimension 2 restricts counts and spacing to XY; any frame must preserve the XY plane.
|
|
1291
1281
|
*/
|
|
1292
|
-
export declare type GridPatternOptions = {
|
|
1282
|
+
export declare type GridPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
1293
1283
|
/** Center the complete distribution around its local origin; defaults to false. */
|
|
1294
1284
|
readonly center?: boolean;
|
|
1295
1285
|
/** Optional right-handed local axes and origin for the grid. */
|
|
@@ -1297,22 +1287,24 @@ export declare type GridPatternOptions = {
|
|
|
1297
1287
|
} & (
|
|
1298
1288
|
| {
|
|
1299
1289
|
/** Positive integer counts on X and Y. */
|
|
1300
|
-
readonly count:
|
|
1290
|
+
readonly count: Vector2Tuple;
|
|
1301
1291
|
/** Signed millimetres between adjacent copies on X and Y. */
|
|
1302
|
-
readonly spacing:
|
|
1303
|
-
}
|
|
1304
|
-
| {
|
|
1305
|
-
/** Positive integer counts on X, Y and Z. */
|
|
1306
|
-
readonly count: Vector3;
|
|
1307
|
-
/** Signed millimetres between adjacent copies on X, Y and Z. */
|
|
1308
|
-
readonly spacing: Vector3;
|
|
1292
|
+
readonly spacing: Vector2Tuple;
|
|
1309
1293
|
}
|
|
1294
|
+
| (Dimension extends 3
|
|
1295
|
+
? {
|
|
1296
|
+
/** Positive integer counts on X, Y and Z. */
|
|
1297
|
+
readonly count: Vector3Tuple;
|
|
1298
|
+
/** Signed millimetres between adjacent copies on X, Y and Z. */
|
|
1299
|
+
readonly spacing: Vector3Tuple;
|
|
1300
|
+
}
|
|
1301
|
+
: never)
|
|
1310
1302
|
);
|
|
1311
1303
|
|
|
1312
|
-
/** XY or XYZ grid
|
|
1304
|
+
/** Spatial XYZ matrices for an XY or XYZ grid, in X-fastest order. */
|
|
1313
1305
|
export declare function gridPatternTransforms(
|
|
1314
1306
|
options: GridPatternOptions,
|
|
1315
|
-
): readonly
|
|
1307
|
+
): readonly Transform3Matrix[];
|
|
1316
1308
|
|
|
1317
1309
|
/**
|
|
1318
1310
|
* Builds a closed indexed mesh from a rectilinear top, matched boundary walls, and flat base.
|
|
@@ -1349,7 +1341,7 @@ export declare type HeightfieldMeshLimits = Partial<
|
|
|
1349
1341
|
*/
|
|
1350
1342
|
export declare type HeightfieldOptions = {
|
|
1351
1343
|
/** Absolute top Z at the supplied XY point. Every sample must be above baseZ. */
|
|
1352
|
-
readonly height: (point:
|
|
1344
|
+
readonly height: (point: Vector2Tuple) => number;
|
|
1353
1345
|
/** Flat bottom Z. Defaults to zero. */
|
|
1354
1346
|
readonly baseZ?: number;
|
|
1355
1347
|
/**
|
|
@@ -1362,11 +1354,11 @@ export declare type HeightfieldOptions = {
|
|
|
1362
1354
|
} & (
|
|
1363
1355
|
| {
|
|
1364
1356
|
/** Positive XY footprint for uniform sampling. */
|
|
1365
|
-
readonly size:
|
|
1357
|
+
readonly size: Vector2Tuple;
|
|
1366
1358
|
/** Exact positive integer X/Y interval counts. */
|
|
1367
1359
|
readonly segments: readonly [x: number, y: number];
|
|
1368
1360
|
/** Lower-left footprint XY. Omitted centers the footprint on XY. */
|
|
1369
|
-
readonly origin?:
|
|
1361
|
+
readonly origin?: Vector2Tuple;
|
|
1370
1362
|
/** Explicit coordinates cannot be combined with uniform sampling. */
|
|
1371
1363
|
readonly coordinates?: never;
|
|
1372
1364
|
}
|
|
@@ -1402,6 +1394,15 @@ export declare interface HeightfieldPreflight {
|
|
|
1402
1394
|
readonly byteCount: number;
|
|
1403
1395
|
}
|
|
1404
1396
|
|
|
1397
|
+
/**
|
|
1398
|
+
* Builds closed thread-ridge components with every profile locked to the
|
|
1399
|
+
* shaft's radial/axial frame. The mesh is intended for union with its
|
|
1400
|
+
* minor-envelope cylinder and never owns WASM objects.
|
|
1401
|
+
*/
|
|
1402
|
+
export declare function helicalThreadRidgeMesh(
|
|
1403
|
+
options: HelicalThreadRidgeMeshOptions,
|
|
1404
|
+
): TriangleMesh;
|
|
1405
|
+
|
|
1405
1406
|
/** Runtime-neutral options for the dedicated helical ridge mesher. */
|
|
1406
1407
|
export declare interface HelicalThreadRidgeMeshOptions {
|
|
1407
1408
|
/**
|
|
@@ -1418,7 +1419,7 @@ export declare interface HelicalThreadRidgeMeshOptions {
|
|
|
1418
1419
|
/** Nominal major diameter before any caller-owned fit compensation. */
|
|
1419
1420
|
readonly majorDiameter: number;
|
|
1420
1421
|
/** Angular offset of the first start in degrees. Default: `0`. */
|
|
1421
|
-
readonly
|
|
1422
|
+
readonly phase?: number;
|
|
1422
1423
|
/** Validated periodic profile repeated around the shaft. */
|
|
1423
1424
|
readonly profile: ThreadProfile;
|
|
1424
1425
|
/** Optional circular-resolution policy. */
|
|
@@ -1429,6 +1430,19 @@ export declare interface HelicalThreadRidgeMeshOptions {
|
|
|
1429
1430
|
readonly tolerance?: GeometryToleranceOptions;
|
|
1430
1431
|
}
|
|
1431
1432
|
|
|
1433
|
+
/**
|
|
1434
|
+
* Builds one closed threaded cylinder without a ridge/core Boolean seam.
|
|
1435
|
+
*
|
|
1436
|
+
* Each circular facet includes its exact phase-shifted profile breakpoints, including duplicate-Z
|
|
1437
|
+
* samples for vertical flanks and blunt transitions. Adjacent variable grids are stitched as a
|
|
1438
|
+
* monotone strip, with optional intermediate rows bounded by physical `maxSegmentLength`. A
|
|
1439
|
+
* conservative pre-allocation estimate rejects excessive meshes before constructing position
|
|
1440
|
+
* arrays.
|
|
1441
|
+
*/
|
|
1442
|
+
export declare function helicalThreadSolidMesh(
|
|
1443
|
+
options: HelicalThreadSolidMeshOptions,
|
|
1444
|
+
): TriangleMesh;
|
|
1445
|
+
|
|
1432
1446
|
/** Options for a complete threaded-cylinder mesh; base semantics match the ridge builder. */
|
|
1433
1447
|
export declare interface HelicalThreadSolidMeshOptions extends HelicalThreadRidgeMeshOptions {
|
|
1434
1448
|
/** Apply a 45-degree radial bevel at the lower target face. */
|
|
@@ -1460,7 +1474,7 @@ export declare interface HelicalThreadSolidMeshPreflight {
|
|
|
1460
1474
|
}
|
|
1461
1475
|
|
|
1462
1476
|
/** Identity transform, safe to share because it is frozen. */
|
|
1463
|
-
export declare const IDENTITY_TRANSFORM3:
|
|
1477
|
+
export declare const IDENTITY_TRANSFORM3: Transform3Matrix;
|
|
1464
1478
|
|
|
1465
1479
|
/** Options for a compensated internal-thread subtraction tool along +Z. */
|
|
1466
1480
|
export declare interface InternalThreadCutterOptions
|
|
@@ -1479,7 +1493,9 @@ export declare interface InternalThreadCutterOptions
|
|
|
1479
1493
|
* @param transform - Transform to invert.
|
|
1480
1494
|
* @returns A new frozen transform whose composition with the input is identity.
|
|
1481
1495
|
*/
|
|
1482
|
-
export declare function inverseTransform3(
|
|
1496
|
+
export declare function inverseTransform3(
|
|
1497
|
+
transform: Transform3Matrix,
|
|
1498
|
+
): Transform3Matrix;
|
|
1483
1499
|
|
|
1484
1500
|
/**
|
|
1485
1501
|
* Recognizes structured geometry errors from separately bundled Modeling copies in the same realm.
|
|
@@ -1509,20 +1525,35 @@ export declare function joinTriangleMeshes(
|
|
|
1509
1525
|
export declare function layoutRow(
|
|
1510
1526
|
bounds: readonly Bounds3[],
|
|
1511
1527
|
options?: RowLayoutOptions,
|
|
1512
|
-
): readonly
|
|
1528
|
+
): readonly Vector3Tuple[];
|
|
1529
|
+
|
|
1530
|
+
/** Returns Euclidean vector length in the vector's coordinate units. */
|
|
1531
|
+
export declare const length2: (vector: Vector2Tuple) => number;
|
|
1513
1532
|
|
|
1514
1533
|
/** Returns Euclidean vector length in the vector's coordinate units. */
|
|
1515
|
-
export declare const length3: (vector:
|
|
1534
|
+
export declare const length3: (vector: Vector3Tuple) => number;
|
|
1516
1535
|
|
|
1517
1536
|
/** Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. */
|
|
1518
|
-
export declare const
|
|
1537
|
+
export declare const lerp2: (
|
|
1538
|
+
a: Vector2Tuple,
|
|
1539
|
+
b: Vector2Tuple,
|
|
1540
|
+
t: number,
|
|
1541
|
+
) => Vector2Tuple;
|
|
1542
|
+
|
|
1543
|
+
/** Linearly interpolates two vectors; `t` is dimensionless and may extrapolate. */
|
|
1544
|
+
export declare const lerp3: (
|
|
1545
|
+
a: Vector3Tuple,
|
|
1546
|
+
b: Vector3Tuple,
|
|
1547
|
+
t: number,
|
|
1548
|
+
) => Vector3Tuple;
|
|
1519
1549
|
|
|
1520
1550
|
/**
|
|
1521
1551
|
* Equal linear intervals determined by exactly two of count, spacing and total length.
|
|
1552
|
+
* Dimension defaults to 3; Section patterns use 2 and accept XY vector directions.
|
|
1522
1553
|
*/
|
|
1523
|
-
export declare type LinearPatternOptions = {
|
|
1554
|
+
export declare type LinearPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
1524
1555
|
/** Direction of repetition; magnitude is ignored. Defaults to +X. */
|
|
1525
|
-
readonly direction?:
|
|
1556
|
+
readonly direction?: Dimension extends 2 ? Vector2Input : Vector3Input;
|
|
1526
1557
|
} & (
|
|
1527
1558
|
| {
|
|
1528
1559
|
/** Positive copy count, including the original. */
|
|
@@ -1550,19 +1581,19 @@ export declare type LinearPatternOptions = {
|
|
|
1550
1581
|
}
|
|
1551
1582
|
);
|
|
1552
1583
|
|
|
1553
|
-
/**
|
|
1584
|
+
/** Spatial XYZ matrix placements in millimetres, including the original at the origin. */
|
|
1554
1585
|
export declare function linearPatternTransforms(
|
|
1555
1586
|
options: LinearPatternOptions,
|
|
1556
|
-
): readonly
|
|
1587
|
+
): readonly Transform3Matrix[];
|
|
1557
1588
|
|
|
1558
1589
|
/** Straight planar curve in millimetres. */
|
|
1559
1590
|
export declare interface LineCurve2 {
|
|
1560
1591
|
/** Selects straight interpolation between the two endpoints. */
|
|
1561
1592
|
readonly kind: "line";
|
|
1562
1593
|
/** Initial XY point in millimetres. */
|
|
1563
|
-
readonly start:
|
|
1594
|
+
readonly start: Vector2Tuple;
|
|
1564
1595
|
/** Final XY point in millimetres. */
|
|
1565
|
-
readonly end:
|
|
1596
|
+
readonly end: Vector2Tuple;
|
|
1566
1597
|
}
|
|
1567
1598
|
|
|
1568
1599
|
/** Straight spatial curve in millimetres. */
|
|
@@ -1570,9 +1601,9 @@ export declare interface LineCurve3 {
|
|
|
1570
1601
|
/** Selects straight interpolation between the two endpoints. */
|
|
1571
1602
|
readonly kind: "line";
|
|
1572
1603
|
/** Initial XYZ point in millimetres. */
|
|
1573
|
-
readonly start:
|
|
1604
|
+
readonly start: Vector3Tuple;
|
|
1574
1605
|
/** Final XYZ point in millimetres. */
|
|
1575
|
-
readonly end:
|
|
1606
|
+
readonly end: Vector3Tuple;
|
|
1576
1607
|
}
|
|
1577
1608
|
|
|
1578
1609
|
/**
|
|
@@ -1599,6 +1630,7 @@ export declare type LoftCorrespondence =
|
|
|
1599
1630
|
* Both ends use ear-clipped caps, supporting concave profiles without center fans.
|
|
1600
1631
|
* Intermediate slices interpolate placed world vertices, never frame axes.
|
|
1601
1632
|
* Transformed coordinates must fit finite Float32 mesh storage.
|
|
1633
|
+
* Path2 profiles must be closed; raw point collections are interpreted as closed.
|
|
1602
1634
|
*
|
|
1603
1635
|
* @example Loft with explicit point correspondence
|
|
1604
1636
|
* ```ts
|
|
@@ -1614,8 +1646,8 @@ export declare function loftMesh(
|
|
|
1614
1646
|
|
|
1615
1647
|
/** One point-data profile at a height or explicit right-handed spatial frame. */
|
|
1616
1648
|
export declare type LoftMeshStation = LoftPlacement & {
|
|
1617
|
-
/**
|
|
1618
|
-
readonly profile:
|
|
1649
|
+
/** Closed Path2 or ordered finite XY boundary points with an implicit closing edge. */
|
|
1650
|
+
readonly profile: Path2Input;
|
|
1619
1651
|
};
|
|
1620
1652
|
|
|
1621
1653
|
/**
|
|
@@ -1684,7 +1716,8 @@ export declare interface MatchProfilesOptions {
|
|
|
1684
1716
|
/**
|
|
1685
1717
|
* Measures sampled kinematic interference over one tooth cycle of an internal gear pair.
|
|
1686
1718
|
*
|
|
1687
|
-
* The driver and ring
|
|
1719
|
+
* The driver and ring start with half-tooth offsets for odd tooth counts, then rotate in the
|
|
1720
|
+
* same direction at their resolved tooth-count ratio. Each
|
|
1688
1721
|
* sampled pinion outline is subtracted from the ring's center-and-space opening; remaining area is
|
|
1689
1722
|
* solid overlap. This catches involute, tip, and trimming interference that a single assembled pose
|
|
1690
1723
|
* misses. It is a deterministic model check, not a certified gear-rating calculation.
|
|
@@ -1694,21 +1727,6 @@ export declare function measureInternalCylindricalGearPairMotion(
|
|
|
1694
1727
|
options?: CylindricalGearPairMotionOptions,
|
|
1695
1728
|
): CylindricalGearPairMotionReport;
|
|
1696
1729
|
|
|
1697
|
-
/**
|
|
1698
|
-
* Measures bounds, surface area, and signed volume without changing the mesh.
|
|
1699
|
-
*
|
|
1700
|
-
* Signed volume is meaningful for a consistently wound closed mesh. Set
|
|
1701
|
-
* `requireClosed` when measurements will be used as manufacturing assertions.
|
|
1702
|
-
*
|
|
1703
|
-
* @param mesh - Mesh to validate and measure.
|
|
1704
|
-
* @param options - Validation policy applied before measurement.
|
|
1705
|
-
* @returns Immutable deterministic scalar and bounds measurements.
|
|
1706
|
-
*/
|
|
1707
|
-
export declare function measureTriangleMesh(
|
|
1708
|
-
mesh: TriangleMesh,
|
|
1709
|
-
options?: TriangleMeshValidationOptions,
|
|
1710
|
-
): TriangleMeshMeasurements;
|
|
1711
|
-
|
|
1712
1730
|
/**
|
|
1713
1731
|
* Computes axis-aligned bounds for a non-empty mesh.
|
|
1714
1732
|
*
|
|
@@ -1790,9 +1808,7 @@ export declare interface MetricSocketCapHeadDimensions {
|
|
|
1790
1808
|
* count `z_v = z / cos³(beta)`, so increasing helix angle can reduce the physical tooth count.
|
|
1791
1809
|
*/
|
|
1792
1810
|
export declare function minimumCylindricalGearToothCountWithoutUndercut(
|
|
1793
|
-
spec?: Readonly<
|
|
1794
|
-
Pick<CylindricalGearSpec, "helixAngleDegrees" | "pressureAngleDegrees">
|
|
1795
|
-
>,
|
|
1811
|
+
spec?: Readonly<Pick<CylindricalGearSpec, "helixAngle" | "pressureAngle">>,
|
|
1796
1812
|
): number;
|
|
1797
1813
|
|
|
1798
1814
|
/** Aggregate manufacturing output ceilings selected by a trusted host. */
|
|
@@ -1807,8 +1823,25 @@ export declare interface ModelingLimits extends GeometrySamplingLimits {
|
|
|
1807
1823
|
readonly maxBytes: number;
|
|
1808
1824
|
}
|
|
1809
1825
|
|
|
1810
|
-
/**
|
|
1811
|
-
|
|
1826
|
+
/**
|
|
1827
|
+
* Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).
|
|
1828
|
+
* Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with
|
|
1829
|
+
* `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.
|
|
1830
|
+
*/
|
|
1831
|
+
export declare const normalize2: (
|
|
1832
|
+
vector: Vector2Tuple,
|
|
1833
|
+
epsilon?: number,
|
|
1834
|
+
) => Vector2Tuple;
|
|
1835
|
+
|
|
1836
|
+
/**
|
|
1837
|
+
* Returns a unit vector; `epsilon` is a finite, non-negative length threshold (default `1e-12`).
|
|
1838
|
+
* Rejects invalid thresholds, nonfinite lengths, and lengths at or below the threshold with
|
|
1839
|
+
* `INVALID_TOLERANCE`, `NON_FINITE_VALUE`, and `DEGENERATE_GEOMETRY` respectively.
|
|
1840
|
+
*/
|
|
1841
|
+
export declare const normalize3: (
|
|
1842
|
+
vector: Vector3Tuple,
|
|
1843
|
+
epsilon?: number,
|
|
1844
|
+
) => Vector3Tuple;
|
|
1812
1845
|
|
|
1813
1846
|
/**
|
|
1814
1847
|
* Cleans and validates one closed loop.
|
|
@@ -1819,7 +1852,7 @@ export declare const normalize3: (vector: Vector3, epsilon?: number) => Vector3;
|
|
|
1819
1852
|
* returned unchanged when their winding and tolerance policy match.
|
|
1820
1853
|
*/
|
|
1821
1854
|
export declare function normalizeContour(
|
|
1822
|
-
input: readonly
|
|
1855
|
+
input: readonly Vector2Tuple[],
|
|
1823
1856
|
counterClockwise: boolean,
|
|
1824
1857
|
tolerance?: GeometryToleranceOptions,
|
|
1825
1858
|
): Contour;
|
|
@@ -1832,18 +1865,18 @@ export declare function normalizeContour(
|
|
|
1832
1865
|
* may be returned unchanged under the same tolerance policy.
|
|
1833
1866
|
*/
|
|
1834
1867
|
export declare function normalizePolygon(
|
|
1835
|
-
polygon:
|
|
1868
|
+
polygon: PolygonData,
|
|
1836
1869
|
tolerance?: GeometryToleranceOptions,
|
|
1837
|
-
):
|
|
1870
|
+
): PolygonData;
|
|
1838
1871
|
|
|
1839
1872
|
/**
|
|
1840
1873
|
* Validates a disjoint explicit region and returns immutable normalized data.
|
|
1841
1874
|
* Previously validated immutable results may be returned unchanged under the same tolerance policy.
|
|
1842
1875
|
*/
|
|
1843
1876
|
export declare function normalizeRegion(
|
|
1844
|
-
region:
|
|
1877
|
+
region: RegionData,
|
|
1845
1878
|
tolerance?: GeometryToleranceOptions,
|
|
1846
|
-
):
|
|
1879
|
+
): RegionData;
|
|
1847
1880
|
|
|
1848
1881
|
/**
|
|
1849
1882
|
* Improves pathological planar triangulation with bounded legal diagonal flips.
|
|
@@ -1863,31 +1896,101 @@ export declare function optimizePlanarPatches(
|
|
|
1863
1896
|
options?: PlanarMeshOptimizationOptions,
|
|
1864
1897
|
): PlanarMeshOptimizationResult;
|
|
1865
1898
|
|
|
1866
|
-
/**
|
|
1867
|
-
export declare
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1899
|
+
/** Immutable directed XY polyline. Closure is explicit and does not imply a filled Section. */
|
|
1900
|
+
export declare interface Path2 {
|
|
1901
|
+
/** Coordinate dimension; identifies planar paths even when empty. */
|
|
1902
|
+
readonly dimension: 2;
|
|
1903
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
1904
|
+
readonly closed: boolean;
|
|
1905
|
+
/** Returns frozen tuple coordinates; closure remains separate metadata. Repeated calls do not allocate. */
|
|
1906
|
+
toArray(): Path2Data;
|
|
1907
|
+
/** Total sampled edge length in model units, including the closing edge when closed. */
|
|
1908
|
+
length(): number;
|
|
1909
|
+
/** Axis-aligned bounds, or undefined for an empty path. */
|
|
1910
|
+
bounds(): Bounds2 | undefined;
|
|
1911
|
+
/** Finds the nearest edge location; requires at least two vertices. */
|
|
1912
|
+
closestPoint(point: Vector2Input): PathLocation<Vector2>;
|
|
1913
|
+
/** Applies an XY placement without reordering traversal, including after reflection. */
|
|
1914
|
+
transform(placement: Transform2Input): Path2;
|
|
1915
|
+
/** Reverses vertex order and traversal; neither the source nor its coordinates are mutated. */
|
|
1916
|
+
reverse(): Path2;
|
|
1917
|
+
/** Returns a path sampled at equal arc lengths. Corners may be bridged; closure is preserved. */
|
|
1918
|
+
resample(options?: PathResamplingOptions): Path2;
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
/**
|
|
1922
|
+
* Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.
|
|
1923
|
+
* Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated
|
|
1924
|
+
* seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed.
|
|
1925
|
+
* Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement
|
|
1926
|
+
* overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError.
|
|
1927
|
+
* A path input retains its closure. Limits bound construction only; resampling takes its own limits.
|
|
1928
|
+
*/
|
|
1929
|
+
export declare function path2(input: Path2Input, options?: PathOptions): Path2;
|
|
1930
|
+
|
|
1931
|
+
/** XY point tuples for interchange; closure is supplied by the consuming operation or Path2 value. */
|
|
1932
|
+
export declare type Path2Data = readonly Vector2Tuple[];
|
|
1933
|
+
|
|
1934
|
+
/** An immutable XY sampled path or a collection of XY tuples and fluent vectors. */
|
|
1935
|
+
export declare type Path2Input = Path2 | readonly Vector2Input[];
|
|
1936
|
+
|
|
1937
|
+
/** Immutable directed XYZ polyline; it represents sampled edges, not an analytic curve. */
|
|
1938
|
+
export declare interface Path3 {
|
|
1939
|
+
/** Coordinate dimension; identifies spatial paths even when empty. */
|
|
1940
|
+
readonly dimension: 3;
|
|
1941
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
1942
|
+
readonly closed: boolean;
|
|
1943
|
+
/** Returns frozen tuple coordinates; closure remains separate metadata. Repeated calls do not allocate. */
|
|
1944
|
+
toArray(): Path3Data;
|
|
1945
|
+
/** Total sampled edge length in model units, including the closing edge when closed. */
|
|
1946
|
+
length(): number;
|
|
1947
|
+
/** Axis-aligned bounds, or undefined for an empty path. */
|
|
1948
|
+
bounds(): Bounds3 | undefined;
|
|
1949
|
+
/** Finds the nearest edge location; requires at least two vertices. */
|
|
1950
|
+
closestPoint(point: Vector3Input): PathLocation<Vector3>;
|
|
1951
|
+
/** Applies an XYZ placement without changing traversal order or closure. */
|
|
1952
|
+
transform(placement: Transform3Input): Path3;
|
|
1953
|
+
/** Reverses vertex order and traversal without mutating the source. */
|
|
1954
|
+
reverse(): Path3;
|
|
1955
|
+
/** Returns a path sampled at equal arc lengths. Corners may be bridged; closure is preserved. */
|
|
1956
|
+
resample(options?: PathResamplingOptions): Path3;
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
/**
|
|
1960
|
+
* Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam,
|
|
1961
|
+
* allocation and error rules as path2. Analytic curves must be sampled explicitly first.
|
|
1962
|
+
*/
|
|
1963
|
+
export declare function path3(input: Path3Input, options?: PathOptions): Path3;
|
|
1964
|
+
|
|
1965
|
+
/**
|
|
1966
|
+
* XYZ point tuples for interchange; closure is supplied by the consuming operation or Path3 value.
|
|
1967
|
+
*/
|
|
1968
|
+
export declare type Path3Data = readonly Vector3Tuple[];
|
|
1969
|
+
|
|
1970
|
+
/** An immutable XYZ sampled path or a collection of XYZ tuples and fluent vectors. */
|
|
1971
|
+
export declare type Path3Input = Path3 | readonly Vector3Input[];
|
|
1873
1972
|
|
|
1874
1973
|
/** Orthonormal right-handed frame sampled along a path. */
|
|
1875
1974
|
export declare interface PathFrame {
|
|
1876
1975
|
/** Unit path tangent. */
|
|
1877
|
-
readonly tangent:
|
|
1976
|
+
readonly tangent: Vector3Tuple;
|
|
1878
1977
|
/** Unit transported profile X axis. */
|
|
1879
|
-
readonly normal:
|
|
1978
|
+
readonly normal: Vector3Tuple;
|
|
1880
1979
|
/** Unit profile Y axis equal to tangent × normal. */
|
|
1881
|
-
readonly binormal:
|
|
1980
|
+
readonly binormal: Vector3Tuple;
|
|
1882
1981
|
}
|
|
1883
1982
|
|
|
1884
|
-
/**
|
|
1885
|
-
|
|
1886
|
-
*/
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1983
|
+
/** Nearest location on a sampled boundary, rather than inside a filled shape or on an analytic curve. */
|
|
1984
|
+
export declare interface PathLocation<Point extends Vector2 | Vector3> {
|
|
1985
|
+
/** Immutable position on the selected edge. */
|
|
1986
|
+
readonly point: Point;
|
|
1987
|
+
/** Euclidean distance from the query in model units. */
|
|
1988
|
+
readonly distance: number;
|
|
1989
|
+
/** Starting vertex of the selected edge; ties keep the first edge in traversal order. */
|
|
1990
|
+
readonly edgeIndex: number;
|
|
1991
|
+
/** Clamped fraction along that edge, not the whole path's normalized arc length. */
|
|
1992
|
+
readonly fraction: number;
|
|
1993
|
+
}
|
|
1891
1994
|
|
|
1892
1995
|
/**
|
|
1893
1996
|
* Supplies a profile-X orientation guide for each original normalized sweep station.
|
|
@@ -1897,17 +2000,25 @@ export declare const pathLength: (
|
|
|
1897
2000
|
* @returns A finite guide vector that is not parallel to the local path tangent.
|
|
1898
2001
|
*/
|
|
1899
2002
|
export declare type PathNormalGuide = (
|
|
1900
|
-
point:
|
|
2003
|
+
point: Vector3Tuple,
|
|
1901
2004
|
index: number,
|
|
1902
|
-
) =>
|
|
2005
|
+
) => Vector3Input;
|
|
2006
|
+
|
|
2007
|
+
/** Topology and allocation ceiling for an immutable sampled path. */
|
|
2008
|
+
export declare interface PathOptions {
|
|
2009
|
+
/** Connects the last vertex to the first; closed paths omit the repeated seam. Defaults to false. */
|
|
2010
|
+
readonly closed?: boolean;
|
|
2011
|
+
/** Construction point ceiling; defaults to package sampling limits. Later sampling has its own options. */
|
|
2012
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2013
|
+
}
|
|
1903
2014
|
|
|
1904
2015
|
/** Equal physical arc-length placements along an open or implicitly closed sampled path. */
|
|
1905
2016
|
export declare interface PathPatternOptions {
|
|
1906
2017
|
/** Positive number of copies; open paths include both endpoints when greater than one. */
|
|
1907
2018
|
readonly count: number;
|
|
1908
|
-
/**
|
|
2019
|
+
/** Raw point closure defaults to false; a path value supplies closure and rejects conflicts. */
|
|
1909
2020
|
readonly closed?: boolean;
|
|
1910
|
-
/** Preserve
|
|
2021
|
+
/** Preserve orientation, or align local +X for Sections / +Z for Solids to the tangent. Defaults to fixed. */
|
|
1911
2022
|
readonly orientation?: "fixed" | "tangent";
|
|
1912
2023
|
}
|
|
1913
2024
|
|
|
@@ -1917,17 +2028,35 @@ export declare interface PathPatternOptions {
|
|
|
1917
2028
|
* Explicit sampling ceilings bound both input points and output placements.
|
|
1918
2029
|
*/
|
|
1919
2030
|
export declare function pathPatternTransforms(
|
|
1920
|
-
path:
|
|
2031
|
+
path: Path3Input,
|
|
1921
2032
|
options: PathPatternOptions,
|
|
1922
2033
|
limits?: Partial<GeometrySamplingLimits>,
|
|
1923
|
-
): readonly
|
|
2034
|
+
): readonly Transform3Matrix[];
|
|
1924
2035
|
|
|
1925
2036
|
/** Position and unit tangent for one path-distributed item. */
|
|
1926
2037
|
export declare interface PathPlacement {
|
|
1927
2038
|
/** Interpolated point on the sampled path. */
|
|
1928
|
-
readonly position:
|
|
2039
|
+
readonly position: Vector3Tuple;
|
|
1929
2040
|
/** Unit tangent of the path segment containing the placement. */
|
|
1930
|
-
readonly tangent:
|
|
2041
|
+
readonly tangent: Vector3Tuple;
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2044
|
+
/** Equal arc-length sampling; the path itself owns whether its closing edge is included. */
|
|
2045
|
+
export declare interface PathResamplingOptions extends CurveSamplingOptions {
|
|
2046
|
+
/** Exact arc-length intervals; closed paths need at least three. Otherwise physical resolution or the effective source edge count controls sampling. */
|
|
2047
|
+
readonly segments?: number;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
/** A fixed XY point in world coordinates; omitted pivots use the coordinate origin. */
|
|
2051
|
+
export declare interface Pivot2Options {
|
|
2052
|
+
/** World-space point left fixed by rotation or scaling. */
|
|
2053
|
+
readonly pivot?: Vector2Input;
|
|
2054
|
+
}
|
|
2055
|
+
|
|
2056
|
+
/** A fixed XYZ point in world coordinates; omitted pivots use the coordinate origin. */
|
|
2057
|
+
export declare interface Pivot3Options {
|
|
2058
|
+
/** World-space point left fixed by rotation or scaling. */
|
|
2059
|
+
readonly pivot?: Vector3Input;
|
|
1931
2060
|
}
|
|
1932
2061
|
|
|
1933
2062
|
/** Stable reason why planar optimization returned the original mesh unchanged. */
|
|
@@ -1944,23 +2073,23 @@ export declare interface PlanarMeshOptimizationOptions extends TriangleMeshQuali
|
|
|
1944
2073
|
* Maximum attempted edge evaluations. By default this is twenty times the initial candidate
|
|
1945
2074
|
* edge count, capped at `1000000`.
|
|
1946
2075
|
*/
|
|
1947
|
-
readonly
|
|
2076
|
+
readonly maxFlipAttempts?: number;
|
|
1948
2077
|
/** Maximum times one edge may be reconsidered after neighbouring flips. Defaults to `12`. */
|
|
1949
|
-
readonly
|
|
2078
|
+
readonly maxEdgeRevisits?: number;
|
|
1950
2079
|
/** Maximum triangles allowed in one selected patch. Defaults to `50000`. */
|
|
1951
|
-
readonly
|
|
2080
|
+
readonly maxPatchTriangles?: number;
|
|
1952
2081
|
/** Maximum cumulative triangles across selected patches. Defaults to `200000`. */
|
|
1953
|
-
readonly
|
|
2082
|
+
readonly maxProcessedTriangles?: number;
|
|
1954
2083
|
/** Minimum triangles required before a planar patch is eligible. Defaults to `8`. */
|
|
1955
|
-
readonly
|
|
2084
|
+
readonly minPatchTriangles?: number;
|
|
1956
2085
|
/** Select patches whose worst normalized aspect ratio exceeds this value. Defaults to `12`. */
|
|
1957
|
-
readonly
|
|
2086
|
+
readonly triggerMaxAspectRatio?: number;
|
|
1958
2087
|
/** Select patches whose largest per-vertex triangle share exceeds this ratio. Defaults to `0.2`. */
|
|
1959
|
-
readonly
|
|
2088
|
+
readonly triggerMaxFanRatio?: number;
|
|
1960
2089
|
/** Select patches whose largest vertex triangle incidence exceeds this value. Defaults to `16`. */
|
|
1961
|
-
readonly
|
|
2090
|
+
readonly triggerMaxVertexTriangleIncidence?: number;
|
|
1962
2091
|
/** Select patches whose smallest interior angle is below this many degrees. Defaults to `8`. */
|
|
1963
|
-
readonly
|
|
2092
|
+
readonly triggerMinAngleDegrees?: number;
|
|
1964
2093
|
}
|
|
1965
2094
|
|
|
1966
2095
|
/** Outcome of bounded planar-patch optimization, including before/after diagnostics. */
|
|
@@ -2008,7 +2137,7 @@ export declare interface PlanarPatchQuality {
|
|
|
2008
2137
|
/** Smallest interior triangle angle in degrees. */
|
|
2009
2138
|
readonly minimumTriangleAngleDegrees: number;
|
|
2010
2139
|
/** Consistently wound unit normal for the patch plane. */
|
|
2011
|
-
readonly normal:
|
|
2140
|
+
readonly normal: Vector3Tuple;
|
|
2012
2141
|
/** Plane offset in `dot(normal, position) = planeOffset` form, in model units. */
|
|
2013
2142
|
readonly planeOffset: number;
|
|
2014
2143
|
/** Total patch area in squared model units. */
|
|
@@ -2026,7 +2155,7 @@ export declare interface PlanarPatchQuality {
|
|
|
2026
2155
|
* their duplicated closing point. Holes must lie inside `outer` and must not
|
|
2027
2156
|
* intersect each other or the exterior.
|
|
2028
2157
|
*/
|
|
2029
|
-
export declare interface
|
|
2158
|
+
export declare interface PolygonData {
|
|
2030
2159
|
/** Clockwise interior boundaries, each omitting its duplicated closing point. */
|
|
2031
2160
|
readonly holes: readonly Contour[];
|
|
2032
2161
|
/** Counter-clockwise exterior boundary, omitting its duplicated closing point. */
|
|
@@ -2087,26 +2216,18 @@ export declare function preflightThreadedRod(
|
|
|
2087
2216
|
options: ThreadedRodOptions,
|
|
2088
2217
|
): HelicalThreadSolidMeshPreflight;
|
|
2089
2218
|
|
|
2090
|
-
/**
|
|
2091
|
-
export declare interface
|
|
2092
|
-
/** Applied after local construction; Section
|
|
2093
|
-
readonly
|
|
2219
|
+
/** Anchor attachment shared by solid and filled-section factories. */
|
|
2220
|
+
export declare interface PrimitiveAttachment {
|
|
2221
|
+
/** Applied after local construction; Section attachment must preserve the XY plane. */
|
|
2222
|
+
readonly attachment?: PrimitiveAttachmentOptions;
|
|
2094
2223
|
}
|
|
2095
2224
|
|
|
2096
2225
|
/** Maps an explicit or named shape-local attachment anchor onto a world-space anchor. */
|
|
2097
|
-
export declare interface
|
|
2226
|
+
export declare interface PrimitiveAttachmentOptions extends AttachOptions {
|
|
2098
2227
|
/** Shape-local source frame or a named primitive anchor such as bottom. */
|
|
2099
2228
|
readonly source: Anchor3 | string;
|
|
2100
2229
|
/** World-space target frame in millimetres. */
|
|
2101
2230
|
readonly target: Anchor3;
|
|
2102
|
-
/** Align outward directions face-to-face or in parallel. Defaults to opposed. */
|
|
2103
|
-
readonly alignment?: "opposed" | "same";
|
|
2104
|
-
/** Finite separation along the target direction in millimetres. Defaults to zero. */
|
|
2105
|
-
readonly gap?: number;
|
|
2106
|
-
/** Finite additional roll around the attached direction in degrees. Defaults to zero. */
|
|
2107
|
-
readonly spinDegrees?: number;
|
|
2108
|
-
/** Explicit numeric comparison overrides for anchor normalization. */
|
|
2109
|
-
readonly tolerance?: GeometryToleranceOptions;
|
|
2110
2231
|
}
|
|
2111
2232
|
|
|
2112
2233
|
/**
|
|
@@ -2178,7 +2299,7 @@ export declare interface ProfiledEdgeTreatment {
|
|
|
2178
2299
|
* First coordinates decrease and second coordinates increase. Cylinder/extrusion ends use
|
|
2179
2300
|
* cap inset first, side setback second; planar corners use incoming then outgoing edges.
|
|
2180
2301
|
*/
|
|
2181
|
-
readonly profile: readonly
|
|
2302
|
+
readonly profile: readonly Vector2Tuple[];
|
|
2182
2303
|
}
|
|
2183
2304
|
|
|
2184
2305
|
/** An identified line, circular arc, or cubic Bézier between corresponding landmarks. */
|
|
@@ -2194,41 +2315,41 @@ export declare type ProfileSpan2 = {
|
|
|
2194
2315
|
/** Selects a straight span. */
|
|
2195
2316
|
readonly kind: "line";
|
|
2196
2317
|
/** Start point in millimetres. */
|
|
2197
|
-
readonly start:
|
|
2318
|
+
readonly start: Vector2Tuple;
|
|
2198
2319
|
/** End point in millimetres. */
|
|
2199
|
-
readonly end:
|
|
2320
|
+
readonly end: Vector2Tuple;
|
|
2200
2321
|
}
|
|
2201
2322
|
| {
|
|
2202
2323
|
/** Selects the geometric curve or span family. */
|
|
2203
2324
|
readonly kind: "arc";
|
|
2204
2325
|
/** Center point in millimetres. */
|
|
2205
|
-
readonly center:
|
|
2326
|
+
readonly center: Vector2Tuple;
|
|
2206
2327
|
/** Circular radius in millimetres. */
|
|
2207
2328
|
readonly radius: number;
|
|
2208
2329
|
/** Initial counterclockwise angle in degrees. */
|
|
2209
|
-
readonly
|
|
2330
|
+
readonly startAngle: number;
|
|
2210
2331
|
/** Signed counterclockwise angular sweep in degrees. */
|
|
2211
|
-
readonly
|
|
2332
|
+
readonly sweepAngle: number;
|
|
2212
2333
|
}
|
|
2213
2334
|
| {
|
|
2214
2335
|
/** Selects a cubic Bézier span with the same coordinates as CubicBezierCurve2. */
|
|
2215
2336
|
readonly kind: "cubic";
|
|
2216
2337
|
/** Start point in millimetres. */
|
|
2217
|
-
readonly start:
|
|
2338
|
+
readonly start: Vector2Tuple;
|
|
2218
2339
|
/** First control point in millimetres. */
|
|
2219
|
-
readonly control1:
|
|
2340
|
+
readonly control1: Vector2Tuple;
|
|
2220
2341
|
/** Second control point in millimetres. */
|
|
2221
|
-
readonly control2:
|
|
2342
|
+
readonly control2: Vector2Tuple;
|
|
2222
2343
|
/** End point in millimetres. */
|
|
2223
|
-
readonly end:
|
|
2344
|
+
readonly end: Vector2Tuple;
|
|
2224
2345
|
}
|
|
2225
2346
|
);
|
|
2226
2347
|
|
|
2227
2348
|
/** Removes the component parallel to a normalized plane normal. */
|
|
2228
2349
|
export declare const projectOntoPlane3: (
|
|
2229
|
-
vector:
|
|
2230
|
-
normal:
|
|
2231
|
-
) =>
|
|
2350
|
+
vector: Vector3Tuple,
|
|
2351
|
+
normal: Vector3Tuple,
|
|
2352
|
+
) => Vector3Tuple;
|
|
2232
2353
|
|
|
2233
2354
|
/** Resolved pitch-line dimensions for a finite rack segment. */
|
|
2234
2355
|
export declare interface RackPitchDimensions {
|
|
@@ -2259,37 +2380,41 @@ export declare interface RackPitchSpec {
|
|
|
2259
2380
|
/** Dedendum clearance as a multiple of normal module; defaults to `0.25`. */
|
|
2260
2381
|
readonly clearanceFactor?: number;
|
|
2261
2382
|
/** Signed helix angle in degrees; zero creates a straight rack. */
|
|
2262
|
-
readonly
|
|
2383
|
+
readonly helixAngle?: number;
|
|
2263
2384
|
/** Normal module in millimetres per tooth. */
|
|
2264
2385
|
readonly module: number;
|
|
2265
2386
|
/** Normal pressure angle in degrees; defaults to 20 degrees. */
|
|
2266
|
-
readonly
|
|
2387
|
+
readonly pressureAngle?: number;
|
|
2267
2388
|
/** Number of complete rack teeth represented by the segment. */
|
|
2268
2389
|
readonly toothCount: number;
|
|
2269
2390
|
}
|
|
2270
2391
|
|
|
2271
2392
|
/**
|
|
2272
|
-
*
|
|
2393
|
+
* Degree rotations about a fixed world-space pivot; XY patterns use the implicit +Z axis.
|
|
2273
2394
|
*/
|
|
2274
|
-
export declare
|
|
2275
|
-
/** Number of
|
|
2395
|
+
export declare type RadialPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
2396
|
+
/** Number of shapes to return, including the original. */
|
|
2276
2397
|
readonly count: number;
|
|
2277
|
-
/** Axis of the right-handed rotation. Its magnitude is ignored. */
|
|
2278
|
-
readonly axis: Vector3;
|
|
2279
2398
|
/** Signed rotation from one copy to the next, in degrees. */
|
|
2280
|
-
readonly
|
|
2281
|
-
/**
|
|
2282
|
-
readonly
|
|
2283
|
-
}
|
|
2399
|
+
readonly angle: number;
|
|
2400
|
+
/** Fixed world-space rotation pivot; defaults to the coordinate origin. */
|
|
2401
|
+
readonly pivot?: Dimension extends 2 ? Vector2Input : Vector3Input;
|
|
2402
|
+
} & (Dimension extends 2
|
|
2403
|
+
? {
|
|
2404
|
+
/** XY rotation uses +Z; an explicit spatial axis is unavailable. */
|
|
2405
|
+
readonly axis?: never;
|
|
2406
|
+
}
|
|
2407
|
+
: {
|
|
2408
|
+
/** Axis of the right-handed rotation. Its nonzero magnitude is ignored. */
|
|
2409
|
+
readonly axis: Vector3Input;
|
|
2410
|
+
});
|
|
2284
2411
|
|
|
2285
2412
|
/** Rotations about an explicit axis; angles use degrees and the first placement is identity. */
|
|
2286
2413
|
export declare function radialPatternTransforms(
|
|
2287
2414
|
options: RadialPatternOptions,
|
|
2288
|
-
): readonly
|
|
2415
|
+
): readonly Transform3Matrix[];
|
|
2289
2416
|
|
|
2290
|
-
/**
|
|
2291
|
-
* Radial dimensions refer to polygon vertices or compensate faceting to meet polygon faces.
|
|
2292
|
-
*/
|
|
2417
|
+
/** Radial dimensions refer to polygon vertices or compensate faceting to meet polygon faces. */
|
|
2293
2418
|
export declare type RadialSizing = "vertex" | "face";
|
|
2294
2419
|
|
|
2295
2420
|
/**
|
|
@@ -2319,7 +2444,7 @@ export declare function rectangleContour(
|
|
|
2319
2444
|
*/
|
|
2320
2445
|
export declare interface RectangleContourOptions {
|
|
2321
2446
|
/** Positive uniform size or explicit XY extents in millimetres. */
|
|
2322
|
-
readonly size: number |
|
|
2447
|
+
readonly size: number | Vector2Tuple;
|
|
2323
2448
|
/** Center on XY; otherwise the minimum corner is the origin. Defaults to true. */
|
|
2324
2449
|
readonly center?: boolean;
|
|
2325
2450
|
/** Uniform treatment or four corner treatments. Exact round segments describe a complete circle and must divide by four. */
|
|
@@ -2362,9 +2487,6 @@ export declare interface RectangleProfileOptions extends RectangleContourOptions
|
|
|
2362
2487
|
readonly id?: string;
|
|
2363
2488
|
}
|
|
2364
2489
|
|
|
2365
|
-
/** A two-dimensional region represented by disjoint filled polygons. */
|
|
2366
|
-
export declare type Region = readonly Polygon[];
|
|
2367
|
-
|
|
2368
2490
|
/**
|
|
2369
2491
|
* Returns the total filled area of a normalized region in square millimetres.
|
|
2370
2492
|
*
|
|
@@ -2375,10 +2497,13 @@ export declare type Region = readonly Polygon[];
|
|
|
2375
2497
|
* @param region - Normalized disjoint polygons with CCW outers and clockwise holes.
|
|
2376
2498
|
* @returns Total filled area in square millimetres.
|
|
2377
2499
|
*/
|
|
2378
|
-
export declare function regionArea(region:
|
|
2500
|
+
export declare function regionArea(region: RegionData): number;
|
|
2379
2501
|
|
|
2380
2502
|
/** Returns finite axis-aligned bounds for a non-empty region. */
|
|
2381
|
-
export declare function regionBounds(region:
|
|
2503
|
+
export declare function regionBounds(region: RegionData): Bounds2;
|
|
2504
|
+
|
|
2505
|
+
/** A two-dimensional region represented by disjoint filled polygons. */
|
|
2506
|
+
export declare type RegionData = readonly PolygonData[];
|
|
2382
2507
|
|
|
2383
2508
|
/**
|
|
2384
2509
|
* Creates a centered CCW point loop with vertex or face radial sizing and an implicit seam.
|
|
@@ -2390,7 +2515,7 @@ export declare function regionBounds(region: Region): Bounds2;
|
|
|
2390
2515
|
*/
|
|
2391
2516
|
export declare const regularPolygonContour: (
|
|
2392
2517
|
options: RegularPolygonContourOptions,
|
|
2393
|
-
) => readonly
|
|
2518
|
+
) => readonly Vector2Tuple[];
|
|
2394
2519
|
|
|
2395
2520
|
/** Exact regular polygon dimensions and counterclockwise degree rotation. */
|
|
2396
2521
|
export declare interface RegularPolygonContourOptions extends RadialSizingOptions {
|
|
@@ -2399,7 +2524,7 @@ export declare interface RegularPolygonContourOptions extends RadialSizingOption
|
|
|
2399
2524
|
/** Exact side count from three through the selected profile sampling ceiling. */
|
|
2400
2525
|
readonly sides: number;
|
|
2401
2526
|
/** Counterclockwise rotation in degrees; defaults to zero with a vertex on +X. */
|
|
2402
|
-
readonly
|
|
2527
|
+
readonly rotation?: number;
|
|
2403
2528
|
}
|
|
2404
2529
|
|
|
2405
2530
|
/** Resamples a planar polyline with the same point, tangent, seam and budget guarantees as 3D.
|
|
@@ -2410,7 +2535,7 @@ export declare interface RegularPolygonContourOptions extends RadialSizingOption
|
|
|
2410
2535
|
* ```
|
|
2411
2536
|
*/
|
|
2412
2537
|
export declare function resamplePolyline2(
|
|
2413
|
-
path: readonly
|
|
2538
|
+
path: readonly Vector2Tuple[],
|
|
2414
2539
|
options?: PolylineResamplingOptions,
|
|
2415
2540
|
): SampledCurve2;
|
|
2416
2541
|
|
|
@@ -2426,7 +2551,7 @@ export declare function resamplePolyline2(
|
|
|
2426
2551
|
* ```
|
|
2427
2552
|
*/
|
|
2428
2553
|
export declare function resamplePolyline3(
|
|
2429
|
-
path: readonly
|
|
2554
|
+
path: readonly Vector3Tuple[],
|
|
2430
2555
|
options?: PolylineResamplingOptions,
|
|
2431
2556
|
): SampledCurve3;
|
|
2432
2557
|
|
|
@@ -2436,7 +2561,7 @@ export declare function resamplePolyline3(
|
|
|
2436
2561
|
* `alignTo` must be non-empty and contain only positive safe integers. Its checked least common
|
|
2437
2562
|
* multiple defines the alignment grid. An exact `segments` value wins over
|
|
2438
2563
|
* `resolution.circularSegments` and adaptive sampling, but is never rounded: it must already be
|
|
2439
|
-
* aligned and meet `
|
|
2564
|
+
* aligned and meet `minSegments`. Adaptive counts are rounded upward and fail with
|
|
2440
2565
|
* `COMPLEXITY_LIMIT` when the aligned result exceeds the configured safety cap.
|
|
2441
2566
|
*
|
|
2442
2567
|
* @param radius - Positive circle radius in millimetres used for adaptive physical sampling.
|
|
@@ -2463,7 +2588,7 @@ export declare function resolveAlignedCircularSegments(
|
|
|
2463
2588
|
* the reusable BOSL2-style convention while retaining at least one segment.
|
|
2464
2589
|
*
|
|
2465
2590
|
* @param radius - Arc radius in millimetres.
|
|
2466
|
-
* @param
|
|
2591
|
+
* @param angle - Non-zero signed sweep angle no greater than 360 degrees in magnitude.
|
|
2467
2592
|
* @param policy - Optional operation-level policy over the active model scope.
|
|
2468
2593
|
* @returns Segment count for the requested arc span.
|
|
2469
2594
|
* @throws {@link GeometryError} when radius, angle, or resolution policy is invalid, or the
|
|
@@ -2477,8 +2602,8 @@ export declare function resolveAlignedCircularSegments(
|
|
|
2477
2602
|
*/
|
|
2478
2603
|
export declare function resolveArcSegments(
|
|
2479
2604
|
radius: number,
|
|
2480
|
-
|
|
2481
|
-
policy?:
|
|
2605
|
+
angle: number,
|
|
2606
|
+
policy?: CircularResolutionOptions,
|
|
2482
2607
|
limits?: Partial<GeometrySamplingLimits>,
|
|
2483
2608
|
): number;
|
|
2484
2609
|
|
|
@@ -2486,7 +2611,8 @@ export declare function resolveArcSegments(
|
|
|
2486
2611
|
* Resolves a deterministic full-circle segment count for one radius.
|
|
2487
2612
|
*
|
|
2488
2613
|
* An exact `circularSegments` value wins. Otherwise the smallest regular polygon satisfying both
|
|
2489
|
-
* physical error criteria is used.
|
|
2614
|
+
* physical error criteria is used. Face sizing bounds the circumscribed polygon's outward
|
|
2615
|
+
* excess and actual edge length. A safety cap that would violate either criterion raises
|
|
2490
2616
|
* `COMPLEXITY_LIMIT` rather than silently reducing quality.
|
|
2491
2617
|
*
|
|
2492
2618
|
* @param radius - Circle radius in millimetres.
|
|
@@ -2504,7 +2630,7 @@ export declare function resolveArcSegments(
|
|
|
2504
2630
|
*/
|
|
2505
2631
|
export declare function resolveCircularSegments(
|
|
2506
2632
|
radius: number,
|
|
2507
|
-
policy?:
|
|
2633
|
+
policy?: CircularResolutionOptions,
|
|
2508
2634
|
limits?: Partial<GeometrySamplingLimits>,
|
|
2509
2635
|
): number;
|
|
2510
2636
|
|
|
@@ -2559,7 +2685,7 @@ export declare interface ResolvedGeometryTolerance {
|
|
|
2559
2685
|
* @returns Number of intermediate copies, excluding the two end profiles.
|
|
2560
2686
|
*/
|
|
2561
2687
|
export declare function resolveExtrusionDivisions(
|
|
2562
|
-
profile: Contour |
|
|
2688
|
+
profile: Contour | RegionData,
|
|
2563
2689
|
height: number,
|
|
2564
2690
|
options?: ExtrusionSamplingOptions,
|
|
2565
2691
|
): number;
|
|
@@ -2600,7 +2726,7 @@ export declare function resolveRackPitch(
|
|
|
2600
2726
|
* Resolves a role-independent, start-aligned facet count from the larger female mating envelope.
|
|
2601
2727
|
*
|
|
2602
2728
|
* An exact `circularSegments` value must already be divisible by `starts`; it is never silently
|
|
2603
|
-
* raised. Adaptive policies align upward and fail if that would exceed `
|
|
2729
|
+
* raised. Adaptive policies align upward and fail if that would exceed `maxSegments`.
|
|
2604
2730
|
*/
|
|
2605
2731
|
export declare function resolveThreadCircularSegments(
|
|
2606
2732
|
options: ThreadCircularSegmentsOptions,
|
|
@@ -2623,6 +2749,7 @@ export declare function reverseTriangleMesh(mesh: TriangleMesh): TriangleMesh;
|
|
|
2623
2749
|
* vertices and zero-area quads. Profile edges that lie entirely on the axis
|
|
2624
2750
|
* collapse to the solid's interior and are intentionally omitted.
|
|
2625
2751
|
* Profile coordinates must fit finite Float32 mesh storage.
|
|
2752
|
+
* Path2 profiles must be closed; raw point collections have an implicit closing edge.
|
|
2626
2753
|
*
|
|
2627
2754
|
* @param profile - Closed CCW `[radius, z]` profile without a duplicated seam point.
|
|
2628
2755
|
* @param options - Optional physical or exact circumferential sampling controls. Defaults to `{}`.
|
|
@@ -2631,11 +2758,11 @@ export declare function reverseTriangleMesh(mesh: TriangleMesh): TriangleMesh;
|
|
|
2631
2758
|
* @example Partial revolution with end caps
|
|
2632
2759
|
* ```ts
|
|
2633
2760
|
* // Each point is [radius, Z]; the profile seam is implicit.
|
|
2634
|
-
* revolveMesh([[0, 0], [12, 0], [8, 20], [0, 20]], {
|
|
2761
|
+
* revolveMesh([[0, 0], [12, 0], [8, 20], [0, 20]], { degrees: 270 });
|
|
2635
2762
|
* ```
|
|
2636
2763
|
*/
|
|
2637
2764
|
export declare const revolveMesh: (
|
|
2638
|
-
|
|
2765
|
+
input: Path2Input,
|
|
2639
2766
|
options?: RevolveOptions,
|
|
2640
2767
|
) => TriangleMesh;
|
|
2641
2768
|
|
|
@@ -2644,22 +2771,26 @@ export declare const revolveMesh: (
|
|
|
2644
2771
|
*/
|
|
2645
2772
|
export declare interface RevolveOptions extends CircularPrimitiveOptions {
|
|
2646
2773
|
/**
|
|
2647
|
-
* Positive
|
|
2774
|
+
* Positive sweep in degrees, no greater than 360. Defaults to a full revolution;
|
|
2775
|
+
* smaller sweeps form partial revolutions with end caps.
|
|
2648
2776
|
* Segment counts describe a complete circle and scale to this angular span. Native filled
|
|
2649
2777
|
* revolutions require at least three sweep intervals: adaptive sampling refines to that floor,
|
|
2650
2778
|
* while exact counts that imply fewer intervals reject. Pure revolveMesh supports one interval.
|
|
2779
|
+
* @defaultValue `360`
|
|
2651
2780
|
*/
|
|
2652
|
-
readonly
|
|
2781
|
+
readonly degrees?: number;
|
|
2653
2782
|
/** Explicit output and sampling allocation ceilings. */
|
|
2654
2783
|
readonly limits?: Partial<ModelingLimits>;
|
|
2655
2784
|
}
|
|
2656
2785
|
|
|
2657
|
-
/**
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2786
|
+
/**
|
|
2787
|
+
* Rotates a finite vector counter-clockwise in XY by `degrees` about the origin.
|
|
2788
|
+
* Throws `NON_FINITE_VALUE` for nonfinite coordinates, angles, or derived coordinates.
|
|
2789
|
+
*/
|
|
2790
|
+
export declare const rotate2: (
|
|
2791
|
+
vector: Vector2Tuple,
|
|
2792
|
+
degrees: number,
|
|
2793
|
+
) => Vector2Tuple;
|
|
2663
2794
|
|
|
2664
2795
|
/**
|
|
2665
2796
|
* Creates a right-handed axis-angle rotation transform.
|
|
@@ -2670,10 +2801,10 @@ export declare const rotateAroundAxis3: (
|
|
|
2670
2801
|
* @returns A frozen row-major transform.
|
|
2671
2802
|
*/
|
|
2672
2803
|
export declare function rotationTransform3(
|
|
2673
|
-
axis:
|
|
2804
|
+
axis: Vector3Tuple,
|
|
2674
2805
|
angle: AxisAngleRotation3,
|
|
2675
2806
|
tolerance?: GeometryToleranceOptions,
|
|
2676
|
-
):
|
|
2807
|
+
): Transform3Matrix;
|
|
2677
2808
|
|
|
2678
2809
|
/**
|
|
2679
2810
|
* Replaces each vertex of a non-duplicated closed polyline with a sampled
|
|
@@ -2683,13 +2814,14 @@ export declare function rotationTransform3(
|
|
|
2683
2814
|
* 45% of adjacent segment lengths to prevent neighboring corners from crossing.
|
|
2684
2815
|
* The returned path does not duplicate its closing point.
|
|
2685
2816
|
* Coordinates and radius must be finite; input and output are each limited by maxPathPoints (default 100000).
|
|
2817
|
+
* Requires a closed path value; raw tuples are interpreted as closed. Invalid inputs throw GeometryError.
|
|
2686
2818
|
*/
|
|
2687
2819
|
export declare const roundClosedPolylinePath: (
|
|
2688
|
-
|
|
2820
|
+
input: Path3Input,
|
|
2689
2821
|
radius: number,
|
|
2690
2822
|
segmentsPerCorner: number,
|
|
2691
2823
|
limits?: Partial<GeometrySamplingLimits>,
|
|
2692
|
-
) => readonly
|
|
2824
|
+
) => readonly Vector3Tuple[];
|
|
2693
2825
|
|
|
2694
2826
|
/**
|
|
2695
2827
|
* A circular edge or corner roundover with explicit physical sampling.
|
|
@@ -2716,7 +2848,7 @@ export declare interface RowLayoutOptions {
|
|
|
2716
2848
|
* coordinate range are required. No native engine, SDK, or ambient resolution is used.
|
|
2717
2849
|
*
|
|
2718
2850
|
* @param curve - Closed contour in millimetres unless positive scales convert its coordinates.
|
|
2719
|
-
* @param options - Physical resolution and unique vertex budget; defaults to 4096
|
|
2851
|
+
* @param options - Physical resolution and unique vertex budget; defaults to min(4096, maxProfilePoints).
|
|
2720
2852
|
* @returns Frozen counterclockwise loop in millimetres, without a repeated seam endpoint.
|
|
2721
2853
|
* @throws {@link GeometryError} for invalid data, topology, scale, or exceeded sampling budgets.
|
|
2722
2854
|
*
|
|
@@ -2746,7 +2878,7 @@ export declare interface SampleContourOptions {
|
|
|
2746
2878
|
/** Physical policy evaluated after scaling, using the shared curve sampler. */
|
|
2747
2879
|
readonly resolution?: GeometryResolution;
|
|
2748
2880
|
/** Unique output vertex ceiling, at least three, within maxProfilePoints. Defaults to min(4096, maxProfilePoints). */
|
|
2749
|
-
readonly
|
|
2881
|
+
readonly maxVertices?: number;
|
|
2750
2882
|
/** Selected profile and per-segment path ceilings; omitted values use package defaults. */
|
|
2751
2883
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2752
2884
|
}
|
|
@@ -2756,7 +2888,7 @@ export declare interface SampleContourOptions {
|
|
|
2756
2888
|
* frozen. At stationary tangents, outgoing secants are preferred and endpoints use a backward fallback.
|
|
2757
2889
|
* @example
|
|
2758
2890
|
* ```ts
|
|
2759
|
-
* const turn = sampleCurve2({kind: "arc", center: [0,0], radius: 10,
|
|
2891
|
+
* const turn = sampleCurve2({kind: "arc", center: [0,0], radius: 10, sweepAngle: 90});
|
|
2760
2892
|
* ```
|
|
2761
2893
|
*/
|
|
2762
2894
|
export declare function sampleCurve2(
|
|
@@ -2793,9 +2925,9 @@ export declare function sampleCylindricalGearOutline(
|
|
|
2793
2925
|
/** Immutable planar points and corresponding directed unit tangents. */
|
|
2794
2926
|
export declare interface SampledCurve2 {
|
|
2795
2927
|
/** Curves retain both endpoints, including full-circle seams; closed resampling omits its seam. */
|
|
2796
|
-
readonly points: readonly
|
|
2928
|
+
readonly points: readonly Vector2Tuple[];
|
|
2797
2929
|
/** Directed unit vectors; stationary derivatives use the nearest usable direction. */
|
|
2798
|
-
readonly tangents: readonly
|
|
2930
|
+
readonly tangents: readonly Vector2Tuple[];
|
|
2799
2931
|
}
|
|
2800
2932
|
|
|
2801
2933
|
/**
|
|
@@ -2803,9 +2935,9 @@ export declare interface SampledCurve2 {
|
|
|
2803
2935
|
*/
|
|
2804
2936
|
export declare interface SampledCurve3 {
|
|
2805
2937
|
/** Curves retain both endpoints, including full-circle seams; closed resampling omits its seam. */
|
|
2806
|
-
readonly points: readonly
|
|
2938
|
+
readonly points: readonly Vector3Tuple[];
|
|
2807
2939
|
/** Directed unit vectors; stationary derivatives use the nearest usable direction. */
|
|
2808
|
-
readonly tangents: readonly
|
|
2940
|
+
readonly tangents: readonly Vector3Tuple[];
|
|
2809
2941
|
}
|
|
2810
2942
|
|
|
2811
2943
|
/** Sampled paths plus conventional pitch and lead measurements. */
|
|
@@ -2813,7 +2945,7 @@ export declare interface SampledThreadHelices {
|
|
|
2813
2945
|
/** Axial advance over one revolution, equal to `pitch * starts`. */
|
|
2814
2946
|
readonly lead: number;
|
|
2815
2947
|
/** One immutable sampled path for each thread start. */
|
|
2816
|
-
readonly paths: readonly
|
|
2948
|
+
readonly paths: readonly Path3Data[];
|
|
2817
2949
|
/** Adjacent axial thread spacing in millimetres. */
|
|
2818
2950
|
readonly pitch: number;
|
|
2819
2951
|
/** Number of revolutions represented by each path. */
|
|
@@ -2824,6 +2956,7 @@ export declare interface SampledThreadHelices {
|
|
|
2824
2956
|
* Creates `segments + 1` points including exact helix endpoints from finite positive dimensions.
|
|
2825
2957
|
* Integrated weights must remain finite. The maxPathPoints ceiling defaults to 100000; excessive
|
|
2826
2958
|
* exact counts reject before evaluating axial weights or allocating sample arrays.
|
|
2959
|
+
* Invalid inputs use GeometryError; exceptions thrown by axialWeight propagate unchanged.
|
|
2827
2960
|
*/
|
|
2828
2961
|
export declare const sampleHelix: ({
|
|
2829
2962
|
turns,
|
|
@@ -2832,7 +2965,7 @@ export declare const sampleHelix: ({
|
|
|
2832
2965
|
segments,
|
|
2833
2966
|
limits,
|
|
2834
2967
|
axialWeight,
|
|
2835
|
-
}: SampleHelixOptions) => readonly
|
|
2968
|
+
}: SampleHelixOptions) => readonly Vector3Tuple[];
|
|
2836
2969
|
|
|
2837
2970
|
/** Options for a sampled +Z helix with millimetre dimensions. */
|
|
2838
2971
|
export declare interface SampleHelixOptions {
|
|
@@ -2877,7 +3010,7 @@ export declare function sampleInternalCylindricalGearSpaceOutline(
|
|
|
2877
3010
|
export declare function sampleRackToothPath(
|
|
2878
3011
|
spec: RackPitchSpec,
|
|
2879
3012
|
limits?: Partial<GeometrySamplingLimits>,
|
|
2880
|
-
):
|
|
3013
|
+
): Path2Data;
|
|
2881
3014
|
|
|
2882
3015
|
/**
|
|
2883
3016
|
* Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline.
|
|
@@ -2888,7 +3021,7 @@ export declare function sampleRackToothPath(
|
|
|
2888
3021
|
* no axis closure, winding normalization, or manufacturing repair is performed.
|
|
2889
3022
|
*
|
|
2890
3023
|
* @param curve - Open outline in millimetres unless the positive scales convert its coordinates.
|
|
2891
|
-
* @param options - Physical resolution and output budget; defaults to 4096
|
|
3024
|
+
* @param options - Physical resolution and output budget; defaults to min(4096, maxProfilePoints).
|
|
2892
3025
|
* @returns Frozen open polyline in millimetres, ordered from lowest to highest anchor.
|
|
2893
3026
|
* @throws {@link GeometryError} for invalid coordinates, order, scale, or exceeded subdivision budget.
|
|
2894
3027
|
*
|
|
@@ -2903,7 +3036,7 @@ export declare function sampleRackToothPath(
|
|
|
2903
3036
|
export declare function sampleSideProfile(
|
|
2904
3037
|
curve: SideProfileCurve,
|
|
2905
3038
|
options?: SampleSideProfileOptions,
|
|
2906
|
-
): readonly
|
|
3039
|
+
): readonly Vector2Tuple[];
|
|
2907
3040
|
|
|
2908
3041
|
/** Physical scaling and bounded adaptive subdivision for an open profile. */
|
|
2909
3042
|
export declare interface SampleSideProfileOptions {
|
|
@@ -2914,7 +3047,7 @@ export declare interface SampleSideProfileOptions {
|
|
|
2914
3047
|
/** Shared physical policy, evaluated after scaling; exact circular counts do not affect curves. */
|
|
2915
3048
|
readonly resolution?: GeometryResolution;
|
|
2916
3049
|
/** Maximum output vertex count within maxProfilePoints. Defaults to the smaller of 4096 and that ceiling. */
|
|
2917
|
-
readonly
|
|
3050
|
+
readonly maxVertices?: number;
|
|
2918
3051
|
/** Explicit profile and circular allocation ceilings. */
|
|
2919
3052
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2920
3053
|
}
|
|
@@ -2942,6 +3075,12 @@ export declare function sampleThreadHelices(
|
|
|
2942
3075
|
options: ThreadHelixOptions,
|
|
2943
3076
|
): SampledThreadHelices;
|
|
2944
3077
|
|
|
3078
|
+
/** Multiplies a vector by a dimensionless scalar. */
|
|
3079
|
+
export declare const scale2: (
|
|
3080
|
+
vector: Vector2Tuple,
|
|
3081
|
+
scale: number,
|
|
3082
|
+
) => Vector2Tuple;
|
|
3083
|
+
|
|
2945
3084
|
/**
|
|
2946
3085
|
* Multiplies a vector by a dimensionless scalar.
|
|
2947
3086
|
* @example
|
|
@@ -2949,7 +3088,10 @@ export declare function sampleThreadHelices(
|
|
|
2949
3088
|
* scale3([1, 2, 3], 2); // [2, 4, 6]
|
|
2950
3089
|
* ```
|
|
2951
3090
|
*/
|
|
2952
|
-
export declare const scale3: (
|
|
3091
|
+
export declare const scale3: (
|
|
3092
|
+
vector: Vector3Tuple,
|
|
3093
|
+
scale: number,
|
|
3094
|
+
) => Vector3Tuple;
|
|
2953
3095
|
|
|
2954
3096
|
/**
|
|
2955
3097
|
* Creates an immutable axis-aligned scale transform.
|
|
@@ -2960,7 +3102,9 @@ export declare const scale3: (vector: Vector3, scale: number) => Vector3;
|
|
|
2960
3102
|
* @param factors - Finite, non-zero XYZ scale factors.
|
|
2961
3103
|
* @returns A frozen row-major transform.
|
|
2962
3104
|
*/
|
|
2963
|
-
export declare function scaleTransform3(
|
|
3105
|
+
export declare function scaleTransform3(
|
|
3106
|
+
factors: Vector3Tuple,
|
|
3107
|
+
): Transform3Matrix;
|
|
2964
3108
|
|
|
2965
3109
|
/** An open radius/height outline; consumers own closure, mounting geometry, and wall policy. */
|
|
2966
3110
|
export declare interface SideProfileCurve {
|
|
@@ -3017,7 +3161,7 @@ export declare interface SmoothEdgeTreatment {
|
|
|
3017
3161
|
/** Bounded floating-point intersection and shell-orientation validation settings. */
|
|
3018
3162
|
export declare interface SolidMeshValidationOptions {
|
|
3019
3163
|
/** Work ceiling for spatial comparisons and containment tests; defaults to 2,000,000 and may only lower it. */
|
|
3020
|
-
readonly
|
|
3164
|
+
readonly maxTests?: number;
|
|
3021
3165
|
/** Distance comparison policy in millimetres; near contacts reject conservatively. */
|
|
3022
3166
|
readonly tolerance?: GeometryToleranceOptions;
|
|
3023
3167
|
}
|
|
@@ -3026,7 +3170,7 @@ export declare interface SolidMeshValidationOptions {
|
|
|
3026
3170
|
* Exactly one radius or diameter, placement, and tessellation for an origin-centered sphere.
|
|
3027
3171
|
*/
|
|
3028
3172
|
export declare type SphereOptions = CircularPrimitiveOptions &
|
|
3029
|
-
|
|
3173
|
+
PrimitiveAttachment &
|
|
3030
3174
|
(
|
|
3031
3175
|
| {
|
|
3032
3176
|
/** Positive radius in millimetres; mutually exclusive with diameter. */
|
|
@@ -3066,43 +3210,49 @@ export declare const starContour: (
|
|
|
3066
3210
|
points: number,
|
|
3067
3211
|
innerRadius?: number,
|
|
3068
3212
|
limits?: Partial<GeometrySamplingLimits>,
|
|
3069
|
-
) => readonly
|
|
3213
|
+
) => readonly Vector2Tuple[];
|
|
3070
3214
|
|
|
3071
3215
|
/** End-cap treatment for an open stroked path. */
|
|
3072
|
-
export declare type
|
|
3216
|
+
export declare type StrokeCap = "butt" | "round" | "square";
|
|
3073
3217
|
|
|
3074
3218
|
/** Join treatment where adjacent stroked path segments meet. */
|
|
3075
|
-
export declare type
|
|
3076
|
-
|
|
3077
|
-
/**
|
|
3078
|
-
* Converts a sampled millimetre path into the filled region covered by a centered stroke.
|
|
3079
|
-
*
|
|
3080
|
-
* Closed paths omit a duplicated seam point. Zero-length sampled segments are ignored, while the
|
|
3081
|
-
* effective path must still contain visible length. Round caps and joins use deterministic physical
|
|
3082
|
-
* resolution. Bevels fill the outer corner triangle; miters extend the outer edges to their
|
|
3083
|
-
* intersection, falling back to bevels above SVG's default miter limit of 4.
|
|
3084
|
-
*/
|
|
3085
|
-
export declare function strokePathRegion(
|
|
3086
|
-
path: Path2,
|
|
3087
|
-
options: StrokePathRegionOptions,
|
|
3088
|
-
): Region;
|
|
3219
|
+
export declare type StrokeJoin = "bevel" | "miter" | "round";
|
|
3089
3220
|
|
|
3090
|
-
/** Physical stroke and topology controls
|
|
3091
|
-
export declare interface
|
|
3221
|
+
/** Physical stroke and topology controls shared by pure regions and native Sections. */
|
|
3222
|
+
export declare interface StrokeOptions {
|
|
3092
3223
|
/** Explicit path, circular and expanded-profile allocation ceilings. */
|
|
3093
3224
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
3094
|
-
/**
|
|
3225
|
+
/** Raw point closure defaults to false; a Path2 supplies its closure and rejects conflicts. */
|
|
3095
3226
|
readonly closed?: boolean;
|
|
3096
3227
|
/** End-cap treatment for an open path. Ignored for closed paths. Default: `butt`. */
|
|
3097
|
-
readonly cap?:
|
|
3228
|
+
readonly cap?: StrokeCap;
|
|
3098
3229
|
/** Corner treatment; miters exceeding SVG's default limit of 4 become bevels. Default: `miter`. */
|
|
3099
|
-
readonly join?:
|
|
3230
|
+
readonly join?: StrokeJoin;
|
|
3100
3231
|
/** Physical tessellation policy for round caps and joins. */
|
|
3101
3232
|
readonly resolution?: GeometryResolution;
|
|
3102
3233
|
/** Positive total stroke width in millimetres, centered on the sampled path. */
|
|
3103
3234
|
readonly width: number;
|
|
3104
3235
|
}
|
|
3105
3236
|
|
|
3237
|
+
/**
|
|
3238
|
+
* Converts a sampled millimetre path into the filled region covered by a centered stroke.
|
|
3239
|
+
*
|
|
3240
|
+
* Closed paths omit a duplicated seam point. Zero-length sampled segments are ignored, while the
|
|
3241
|
+
* effective path must still contain visible length. Round caps and joins use deterministic physical
|
|
3242
|
+
* resolution. Bevels fill the outer corner triangle; miters extend the outer edges to their
|
|
3243
|
+
* intersection, falling back to bevels above SVG's default miter limit of 4.
|
|
3244
|
+
*/
|
|
3245
|
+
export declare function strokeRegionData(
|
|
3246
|
+
path: Path2Input,
|
|
3247
|
+
options: StrokeOptions,
|
|
3248
|
+
): RegionData;
|
|
3249
|
+
|
|
3250
|
+
/** Subtracts `b` from `a` component-wise. */
|
|
3251
|
+
export declare const subtract2: (
|
|
3252
|
+
a: Vector2Tuple,
|
|
3253
|
+
b: Vector2Tuple,
|
|
3254
|
+
) => Vector2Tuple;
|
|
3255
|
+
|
|
3106
3256
|
/**
|
|
3107
3257
|
* Subtracts `b` from `a`.
|
|
3108
3258
|
* @example
|
|
@@ -3110,7 +3260,10 @@ export declare interface StrokePathRegionOptions {
|
|
|
3110
3260
|
* subtract3([4, 5, 6], [1, 2, 3]); // [3, 3, 3]
|
|
3111
3261
|
* ```
|
|
3112
3262
|
*/
|
|
3113
|
-
export declare const subtract3: (
|
|
3263
|
+
export declare const subtract3: (
|
|
3264
|
+
a: Vector3Tuple,
|
|
3265
|
+
b: Vector3Tuple,
|
|
3266
|
+
) => Vector3Tuple;
|
|
3114
3267
|
|
|
3115
3268
|
/** Sampling controls for deterministic SVG-to-region conversion. */
|
|
3116
3269
|
export declare interface SvgImportOptions {
|
|
@@ -3134,7 +3287,7 @@ export declare interface SvgRegionPreflight {
|
|
|
3134
3287
|
/** Appearance-preserving cleanup observed during parsing and normalization. */
|
|
3135
3288
|
readonly repairs: SvgRegionPreflightRepairs;
|
|
3136
3289
|
/** Canonical millimetre, Y-up geometry. */
|
|
3137
|
-
readonly region:
|
|
3290
|
+
readonly region: RegionData;
|
|
3138
3291
|
/** Bounded source and flattening complexity measurements. */
|
|
3139
3292
|
readonly source: SvgRegionPreflightSourceMetrics;
|
|
3140
3293
|
}
|
|
@@ -3146,45 +3299,45 @@ export declare interface SvgRegionPreflightGeometryMetrics {
|
|
|
3146
3299
|
/** Millimetre bounds, or `null` when no painted region remains. */
|
|
3147
3300
|
readonly bounds: Bounds2 | null;
|
|
3148
3301
|
/** Disconnected filled polygons in the final region. */
|
|
3149
|
-
readonly
|
|
3302
|
+
readonly componentCount: number;
|
|
3150
3303
|
/** Exterior and hole boundary count in the final region. */
|
|
3151
|
-
readonly
|
|
3304
|
+
readonly contourCount: number;
|
|
3152
3305
|
/** Interior boundary count in the final region. */
|
|
3153
|
-
readonly
|
|
3306
|
+
readonly holeCount: number;
|
|
3154
3307
|
/** Shortest final boundary edge in millimetres, or `null` for an empty region. */
|
|
3155
3308
|
readonly minEdgeLength: number | null;
|
|
3156
3309
|
/** Final boundary edges shorter than the conservative 0.01 mm indicator. */
|
|
3157
|
-
readonly
|
|
3310
|
+
readonly shortEdgeCount: number;
|
|
3158
3311
|
/** Components with less than 0.01 square millimetres of filled area. */
|
|
3159
|
-
readonly
|
|
3312
|
+
readonly tinyIslandCount: number;
|
|
3160
3313
|
/** Non-duplicated boundary vertices in the final normalized region. */
|
|
3161
|
-
readonly
|
|
3314
|
+
readonly vertexCount: number;
|
|
3162
3315
|
}
|
|
3163
3316
|
|
|
3164
3317
|
/** Visible, appearance-preserving cleanup counters from bounded SVG import. */
|
|
3165
3318
|
export declare interface SvgRegionPreflightRepairs {
|
|
3166
3319
|
/** Graphics elements with neither a visible fill nor a positive-width visible stroke. */
|
|
3167
|
-
readonly
|
|
3320
|
+
readonly invisibleElementCount: number;
|
|
3168
3321
|
/** Open filled subpaths closed by SVG fill semantics without closing their strokes. */
|
|
3169
|
-
readonly
|
|
3322
|
+
readonly implicitFilledClosureCount: number;
|
|
3170
3323
|
/** Visibly painted elements whose fill and stroke both resolved to empty geometry. */
|
|
3171
|
-
readonly
|
|
3324
|
+
readonly emptyElementCount: number;
|
|
3172
3325
|
/** Consecutive repeated flattened vertices discarded before topology resolution. */
|
|
3173
|
-
readonly
|
|
3326
|
+
readonly removedDuplicateVertexCount: number;
|
|
3174
3327
|
/** Explicit repeated seam vertices removed from otherwise closed contours. */
|
|
3175
|
-
readonly
|
|
3328
|
+
readonly removedSeamVertexCount: number;
|
|
3176
3329
|
}
|
|
3177
3330
|
|
|
3178
3331
|
/** Bounded source-complexity facts collected while parsing one SVG document. */
|
|
3179
3332
|
export declare interface SvgRegionPreflightSourceMetrics {
|
|
3180
3333
|
/** UTF-8 source size, capped at 256 KiB before parsing. */
|
|
3181
|
-
readonly
|
|
3334
|
+
readonly byteCount: number;
|
|
3182
3335
|
/** Renderable shape elements, capped at 500; containers and metadata are excluded. */
|
|
3183
|
-
readonly
|
|
3336
|
+
readonly elementCount: number;
|
|
3184
3337
|
/** Flattened vertices emitted before fill, stroke, and clipping operations. */
|
|
3185
|
-
readonly
|
|
3338
|
+
readonly emittedVertexCount: number;
|
|
3186
3339
|
/** Path endpoints and control vertices parsed before adaptive flattening. */
|
|
3187
|
-
readonly
|
|
3340
|
+
readonly parsedVertexCount: number;
|
|
3188
3341
|
}
|
|
3189
3342
|
|
|
3190
3343
|
/**
|
|
@@ -3199,8 +3352,8 @@ export declare interface SvgRegionPreflightSourceMetrics {
|
|
|
3199
3352
|
* ```
|
|
3200
3353
|
*/
|
|
3201
3354
|
export declare function sweepMesh(
|
|
3202
|
-
profile:
|
|
3203
|
-
path:
|
|
3355
|
+
profile: Path2Input,
|
|
3356
|
+
path: Path3Input,
|
|
3204
3357
|
options?: SweepOptions,
|
|
3205
3358
|
): TriangleMesh;
|
|
3206
3359
|
|
|
@@ -3208,7 +3361,7 @@ export declare function sweepMesh(
|
|
|
3208
3361
|
* Controls shared by pure mesh construction and filled modeling sweeps.
|
|
3209
3362
|
*/
|
|
3210
3363
|
export declare interface SweepOptions {
|
|
3211
|
-
/**
|
|
3364
|
+
/** Raw point closure defaults to false; a Path3 supplies its closure and rejects conflicts. */
|
|
3212
3365
|
readonly closed?: boolean;
|
|
3213
3366
|
/** Explicit output and sampling allocation ceilings. */
|
|
3214
3367
|
readonly limits?: Partial<ModelingLimits>;
|
|
@@ -3217,11 +3370,11 @@ export declare interface SweepOptions {
|
|
|
3217
3370
|
/** Physical sampling of nonzero twist; inserted stations retain authored station controls. */
|
|
3218
3371
|
readonly resolution?: GeometryResolution;
|
|
3219
3372
|
/** Total additional profile rotation in degrees, with progression selected by twistBy. */
|
|
3220
|
-
readonly
|
|
3373
|
+
readonly twist?: number;
|
|
3221
3374
|
/** Twist advances by physical path length (default), or normalized authored station position, including a closed seam gap. */
|
|
3222
3375
|
readonly twistBy?: "length" | "stations";
|
|
3223
3376
|
/** Positive uniform/XY scale, or one XY pair per path station. Defaults to one. */
|
|
3224
|
-
readonly scale?: number |
|
|
3377
|
+
readonly scale?: number | Vector2Input | readonly Vector2Input[];
|
|
3225
3378
|
/** Corresponding point-index advance at a rotationally equivalent closed seam. */
|
|
3226
3379
|
readonly seamProfileOffset?: number;
|
|
3227
3380
|
}
|
|
@@ -3234,13 +3387,13 @@ export declare type SweepOrientation =
|
|
|
3234
3387
|
/** Minimizes frame rotation by parallel transport. */
|
|
3235
3388
|
readonly kind: "transport";
|
|
3236
3389
|
/** Initial profile +X guide, projected perpendicular to the first tangent. */
|
|
3237
|
-
readonly initialNormal?:
|
|
3390
|
+
readonly initialNormal?: Vector3Input;
|
|
3238
3391
|
}
|
|
3239
3392
|
| {
|
|
3240
3393
|
/** Projects one fixed world-space normal at every path station. */
|
|
3241
3394
|
readonly kind: "fixed-normal";
|
|
3242
3395
|
/** Directed profile +X guide; must not be parallel to any local tangent. */
|
|
3243
|
-
readonly normal:
|
|
3396
|
+
readonly normal: Vector3Input;
|
|
3244
3397
|
}
|
|
3245
3398
|
| {
|
|
3246
3399
|
/** Uses an explicitly directed normal callback at each original normalized station. */
|
|
@@ -3279,7 +3432,7 @@ export declare interface ThreadCircularSegmentsOptions {
|
|
|
3279
3432
|
* This keeps a compensated male/female pair on one role-independent grid when an internal
|
|
3280
3433
|
* cutter has an enlarged entrance bevel. Default: `0`.
|
|
3281
3434
|
*/
|
|
3282
|
-
readonly
|
|
3435
|
+
readonly maxRadialOutset?: number;
|
|
3283
3436
|
/** Validated mating profile whose pitch and flank capacities govern tessellation. */
|
|
3284
3437
|
readonly profile: ThreadProfile;
|
|
3285
3438
|
/** Physical or exact circular resolution policy. */
|
|
@@ -3419,7 +3572,7 @@ export declare interface ThreadHelixOptions {
|
|
|
3419
3572
|
/** Total sampled axial length in millimetres. */
|
|
3420
3573
|
readonly length: number;
|
|
3421
3574
|
/** Angular offset of the first start in degrees. Default: `0`. */
|
|
3422
|
-
readonly
|
|
3575
|
+
readonly phase?: number;
|
|
3423
3576
|
/** Adjacent axial thread spacing in millimetres. */
|
|
3424
3577
|
readonly pitch: number;
|
|
3425
3578
|
/** Radial distance from the +Z axis in millimetres. */
|
|
@@ -3451,11 +3604,25 @@ export declare interface ThreadProfile {
|
|
|
3451
3604
|
/** Adjacent axial thread spacing in millimetres. */
|
|
3452
3605
|
readonly pitch: number;
|
|
3453
3606
|
/** Immutable open `[axial, radial]` path spanning one pitch. */
|
|
3454
|
-
readonly points: readonly
|
|
3607
|
+
readonly points: readonly Vector2Tuple[];
|
|
3455
3608
|
/** Axial width of the flat at the minor envelope. */
|
|
3456
3609
|
readonly rootFlatWidth: number;
|
|
3457
3610
|
}
|
|
3458
3611
|
|
|
3612
|
+
/**
|
|
3613
|
+
* Creates a periodic thread profile for the shaft-locked helical mesher.
|
|
3614
|
+
*
|
|
3615
|
+
* The open path spans one pitch. Radial zero is the major envelope; negative
|
|
3616
|
+
* values point toward the shaft. Custom paths must be finite, axially
|
|
3617
|
+
* non-decreasing, periodic at their endpoints, and reach radial zero.
|
|
3618
|
+
*
|
|
3619
|
+
* @example Printable triangular thread profile
|
|
3620
|
+
* ```ts
|
|
3621
|
+
* threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
3622
|
+
* ```
|
|
3623
|
+
*/
|
|
3624
|
+
export declare function threadProfile(spec: ThreadProfileSpec): ThreadProfile;
|
|
3625
|
+
|
|
3459
3626
|
/** Fields shared by all thread profile specifications. */
|
|
3460
3627
|
export declare interface ThreadProfileBaseSpec {
|
|
3461
3628
|
/** Adjacent axial thread spacing in millimetres. */
|
|
@@ -3481,7 +3648,7 @@ export declare type ThreadRole = "male" | "female";
|
|
|
3481
3648
|
/**
|
|
3482
3649
|
* Dimensions and independent ring/profile tessellation for a torus around the Z axis.
|
|
3483
3650
|
*/
|
|
3484
|
-
export declare interface TorusOptions extends
|
|
3651
|
+
export declare interface TorusOptions extends PrimitiveAttachment {
|
|
3485
3652
|
/** Explicit sampling ceilings, bounded by the host policy. */
|
|
3486
3653
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
3487
3654
|
/** Radius from the Z axis to the profile center, in millimetres; greater than `minorRadius`. */
|
|
@@ -3496,13 +3663,116 @@ export declare interface TorusOptions extends PrimitivePlacement {
|
|
|
3496
3663
|
readonly resolution?: GeometryResolution;
|
|
3497
3664
|
}
|
|
3498
3665
|
|
|
3666
|
+
/** Immutable reusable XY placement. Methods apply in written order; angles are degrees. */
|
|
3667
|
+
export declare interface Transform2 {
|
|
3668
|
+
/** Applies a translation in model units after this placement. */
|
|
3669
|
+
translate(offset: Vector2Input): Transform2;
|
|
3670
|
+
/** Rotates counterclockwise in degrees about an optional world-space pivot (default origin). */
|
|
3671
|
+
rotate(degrees: number, options?: Pivot2Options): Transform2;
|
|
3672
|
+
/** Scales about an optional world-space pivot; finite nonzero factors may reflect. */
|
|
3673
|
+
scale(factors: number | Vector2Input, options?: Pivot2Options): Transform2;
|
|
3674
|
+
/** Applies this placement first, then `next`; neither operand is mutated. */
|
|
3675
|
+
andThen(next: Transform2Input): Transform2;
|
|
3676
|
+
/** Returns the inverse; singular and numerically unstable transforms throw GeometryError. */
|
|
3677
|
+
inverse(): Transform2;
|
|
3678
|
+
/** Transforms a finite point, including translation. Returns a fresh immutable vector. */
|
|
3679
|
+
applyPoint(point: Vector2Input): Vector2;
|
|
3680
|
+
/** Transforms a finite direction, excluding translation and retaining scale. This is not a normal transform. */
|
|
3681
|
+
applyDirection(direction: Vector2Input): Vector2;
|
|
3682
|
+
/** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
|
|
3683
|
+
applyNormal(normal: Vector2Input): Vector2;
|
|
3684
|
+
/** Returns the frozen canonical row-major 3x3 matrix for interchange. */
|
|
3685
|
+
toMatrix(): Transform2Matrix;
|
|
3686
|
+
/** Embeds this placement in XYZ, leaving Z unchanged, for solids and 3D paths. */
|
|
3687
|
+
to3D(): Transform3;
|
|
3688
|
+
}
|
|
3689
|
+
|
|
3690
|
+
/**
|
|
3691
|
+
* Creates an immutable XY transform, identity by default. Matrices are copied and validated.
|
|
3692
|
+
* Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ.
|
|
3693
|
+
* Zero scales and singular matrices throw GeometryError; negative scales reflect.
|
|
3694
|
+
*
|
|
3695
|
+
* @example
|
|
3696
|
+
* ```ts
|
|
3697
|
+
* const placement = transform2().rotate(90).translate([10, 0]);
|
|
3698
|
+
* placement.applyPoint([1, 0]).toArray(); // approximately [10, 1]
|
|
3699
|
+
* ```
|
|
3700
|
+
*/
|
|
3701
|
+
export declare function transform2(matrix?: Transform2Matrix): Transform2;
|
|
3702
|
+
|
|
3703
|
+
/** An immutable XY transform or its canonical row-major matrix for interchange. */
|
|
3704
|
+
export declare type Transform2Input = Transform2 | Transform2Matrix;
|
|
3705
|
+
|
|
3706
|
+
/**
|
|
3707
|
+
* A row-major affine 3x3 XY matrix applied to column vectors.
|
|
3708
|
+
* Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.
|
|
3709
|
+
*/
|
|
3710
|
+
export declare type Transform2Matrix = readonly [
|
|
3711
|
+
m00: number,
|
|
3712
|
+
m01: number,
|
|
3713
|
+
m02: number,
|
|
3714
|
+
m10: number,
|
|
3715
|
+
m11: number,
|
|
3716
|
+
m12: number,
|
|
3717
|
+
m20: number,
|
|
3718
|
+
m21: number,
|
|
3719
|
+
m22: number,
|
|
3720
|
+
];
|
|
3721
|
+
|
|
3722
|
+
/** Immutable reusable XYZ placement. Methods apply in written order; angles are degrees. */
|
|
3723
|
+
export declare interface Transform3 {
|
|
3724
|
+
/** Applies a translation in model units after this placement. */
|
|
3725
|
+
translate(offset: Vector3Input): Transform3;
|
|
3726
|
+
/** Rotates about global X, then Y, then Z in degrees, about an optional world-space pivot. */
|
|
3727
|
+
rotate(degrees: Vector3Input, options?: Pivot3Options): Transform3;
|
|
3728
|
+
/** Rotates right-handed in degrees about a nonzero axis and optional world-space pivot. */
|
|
3729
|
+
rotateAxis(
|
|
3730
|
+
axis: Vector3Input,
|
|
3731
|
+
degrees: number,
|
|
3732
|
+
options?: Pivot3Options,
|
|
3733
|
+
): Transform3;
|
|
3734
|
+
/** Scales about an optional world-space pivot; finite nonzero factors may reflect. */
|
|
3735
|
+
scale(factors: number | Vector3Input, options?: Pivot3Options): Transform3;
|
|
3736
|
+
/** Applies this placement first, then `next`; equivalent to composeTransform3(next, current). */
|
|
3737
|
+
andThen(next: Transform3Input): Transform3;
|
|
3738
|
+
/** Returns the inverse; singular and numerically unstable transforms throw GeometryError. */
|
|
3739
|
+
inverse(): Transform3;
|
|
3740
|
+
/** Transforms a finite point, including translation. Returns a fresh immutable vector. */
|
|
3741
|
+
applyPoint(point: Vector3Input): Vector3;
|
|
3742
|
+
/** Transforms a finite direction, excluding translation and retaining scale. This is not a normal transform. */
|
|
3743
|
+
applyDirection(direction: Vector3Input): Vector3;
|
|
3744
|
+
/** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
|
|
3745
|
+
applyNormal(normal: Vector3Input): Vector3;
|
|
3746
|
+
/** Returns the frozen canonical row-major 4x4 matrix for interchange. */
|
|
3747
|
+
toMatrix(): Transform3Matrix;
|
|
3748
|
+
/** Restricts to XY; throws GeometryError for a plane change or singular XY restriction. */
|
|
3749
|
+
to2D(): Transform2;
|
|
3750
|
+
}
|
|
3751
|
+
|
|
3752
|
+
/**
|
|
3753
|
+
* Creates an immutable XYZ transform, identity by default. Matrices are copied and validated.
|
|
3754
|
+
* Calls apply in written order; rotations use degrees and pivots use current world coordinates.
|
|
3755
|
+
* Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
|
|
3756
|
+
* Use frameTransform3(frame) as the input for existing orthonormal frame placement.
|
|
3757
|
+
*
|
|
3758
|
+
* @example
|
|
3759
|
+
* ```ts
|
|
3760
|
+
* const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
|
|
3761
|
+
* placement.applyPoint([1, 0, 0]).toArray(); // approximately [10, 1, 0]
|
|
3762
|
+
* ```
|
|
3763
|
+
*/
|
|
3764
|
+
export declare function transform3(matrix?: Transform3Matrix): Transform3;
|
|
3765
|
+
|
|
3766
|
+
/** An immutable XYZ transform or its canonical row-major matrix for interchange. */
|
|
3767
|
+
export declare type Transform3Input = Transform3 | Transform3Matrix;
|
|
3768
|
+
|
|
3499
3769
|
/**
|
|
3500
3770
|
* A row-major affine 4x4 matrix applied to column vectors.
|
|
3501
3771
|
*
|
|
3502
3772
|
* Translation occupies indices 3, 7, and 11. The final row must be
|
|
3503
3773
|
* `[0, 0, 0, 1]` within the active geometry tolerance.
|
|
3504
3774
|
*/
|
|
3505
|
-
export declare type
|
|
3775
|
+
export declare type Transform3Matrix = readonly [
|
|
3506
3776
|
m00: number,
|
|
3507
3777
|
m01: number,
|
|
3508
3778
|
m02: number,
|
|
@@ -3521,17 +3791,6 @@ export declare type Transform3 = readonly [
|
|
|
3521
3791
|
m33: number,
|
|
3522
3792
|
];
|
|
3523
3793
|
|
|
3524
|
-
/**
|
|
3525
|
-
* Transforms a closed loop and preserves its original winding convention.
|
|
3526
|
-
*
|
|
3527
|
-
* Reflections reverse the point order automatically through normalization.
|
|
3528
|
-
*/
|
|
3529
|
-
export declare function transformContour(
|
|
3530
|
-
loop: Contour,
|
|
3531
|
-
transform: Transform3,
|
|
3532
|
-
tolerance?: GeometryToleranceOptions,
|
|
3533
|
-
): Contour;
|
|
3534
|
-
|
|
3535
3794
|
/**
|
|
3536
3795
|
* Returns the determinant of a transform's linear 3x3 component.
|
|
3537
3796
|
*
|
|
@@ -3540,27 +3799,19 @@ export declare function transformContour(
|
|
|
3540
3799
|
* @param transform - Valid affine transform.
|
|
3541
3800
|
* @returns Signed linear determinant.
|
|
3542
3801
|
*/
|
|
3543
|
-
export declare function transformDeterminant3(
|
|
3802
|
+
export declare function transformDeterminant3(
|
|
3803
|
+
transform: Transform3Matrix,
|
|
3804
|
+
): number;
|
|
3544
3805
|
|
|
3545
|
-
/**
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
/** Applies an affine transform to a 3D path without mutating its points. */
|
|
3553
|
-
export declare function transformPath3(
|
|
3554
|
-
path: Path3,
|
|
3555
|
-
transform: Transform3,
|
|
3556
|
-
): Path3;
|
|
3557
|
-
|
|
3558
|
-
/** Transforms an explicit outer/hole region with reflection-safe winding correction. */
|
|
3559
|
-
export declare function transformRegion(
|
|
3560
|
-
region: Region,
|
|
3561
|
-
transform: Transform3,
|
|
3806
|
+
/**
|
|
3807
|
+
* Transforms serialized polygon data with reflection-safe winding, without an engine.
|
|
3808
|
+
* Use Section.transform(placement) when authoring filled geometry; this utility serves pure data preparation.
|
|
3809
|
+
*/
|
|
3810
|
+
export declare function transformRegionData(
|
|
3811
|
+
region: RegionData,
|
|
3812
|
+
transform: Transform2Input,
|
|
3562
3813
|
tolerance?: GeometryToleranceOptions,
|
|
3563
|
-
):
|
|
3814
|
+
): RegionData;
|
|
3564
3815
|
|
|
3565
3816
|
/**
|
|
3566
3817
|
* Applies an affine transform to a mesh and preserves outward face orientation.
|
|
@@ -3569,12 +3820,12 @@ export declare function transformRegion(
|
|
|
3569
3820
|
* automatically reverses every triangle. Singular transforms are rejected.
|
|
3570
3821
|
*
|
|
3571
3822
|
* @param mesh - Mesh to transform without mutation.
|
|
3572
|
-
* @param
|
|
3823
|
+
* @param placement - Immutable spatial placement or canonical row-major affine matrix.
|
|
3573
3824
|
* @returns A mesh with fresh transformed positions and copied or reversed indices.
|
|
3574
3825
|
*/
|
|
3575
3826
|
export declare function transformTriangleMesh(
|
|
3576
3827
|
mesh: TriangleMesh,
|
|
3577
|
-
|
|
3828
|
+
placement: Transform3Input,
|
|
3578
3829
|
): TriangleMesh;
|
|
3579
3830
|
|
|
3580
3831
|
/**
|
|
@@ -3583,7 +3834,9 @@ export declare function transformTriangleMesh(
|
|
|
3583
3834
|
* @param offset - Finite XYZ translation in model units.
|
|
3584
3835
|
* @returns A frozen row-major transform.
|
|
3585
3836
|
*/
|
|
3586
|
-
export declare function translationTransform3(
|
|
3837
|
+
export declare function translationTransform3(
|
|
3838
|
+
offset: Vector3Tuple,
|
|
3839
|
+
): Transform3Matrix;
|
|
3587
3840
|
|
|
3588
3841
|
/** Trapezoidal thread profile with a configurable included angle. */
|
|
3589
3842
|
export declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
@@ -3595,10 +3848,11 @@ export declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseS
|
|
|
3595
3848
|
*/
|
|
3596
3849
|
readonly depth?: number;
|
|
3597
3850
|
/**
|
|
3598
|
-
*
|
|
3851
|
+
* Full angle between the flanks in degrees, from `0` inclusive to `180` exclusive.
|
|
3852
|
+
* Each flank uses half this angle from the radial direction; `90` gives 45-degree slopes.
|
|
3599
3853
|
* @defaultValue `30`
|
|
3600
3854
|
*/
|
|
3601
|
-
readonly
|
|
3855
|
+
readonly includedAngle?: number;
|
|
3602
3856
|
}
|
|
3603
3857
|
|
|
3604
3858
|
/**
|
|
@@ -3615,7 +3869,7 @@ export declare interface TriangleMesh {
|
|
|
3615
3869
|
* Measurements and optional edge-connected topology from one validated mesh traversal.
|
|
3616
3870
|
*/
|
|
3617
3871
|
export declare interface TriangleMeshAnalysis extends TriangleMeshMeasurements {
|
|
3618
|
-
/** Number of referenced edge-connected
|
|
3872
|
+
/** Number of referenced edge-connected boundary shells when `includeTopology` is requested; cavities count separately. */
|
|
3619
3873
|
readonly connectedComponentCount?: number;
|
|
3620
3874
|
/** Number of distinct indexed undirected edges when `includeTopology` is requested. */
|
|
3621
3875
|
readonly edgeCount?: number;
|
|
@@ -3648,7 +3902,7 @@ export declare interface TriangleMeshMeasurements {
|
|
|
3648
3902
|
/** Options controlling bounded triangle-mesh quality analysis. */
|
|
3649
3903
|
export declare interface TriangleMeshQualityOptions {
|
|
3650
3904
|
/** Maximum number of triangles inspected. Defaults to `200000`. */
|
|
3651
|
-
readonly
|
|
3905
|
+
readonly maxTriangles?: number;
|
|
3652
3906
|
/** Numeric comparison overrides; model coordinates are interpreted in their existing units. */
|
|
3653
3907
|
readonly tolerance?: GeometryToleranceOptions;
|
|
3654
3908
|
}
|
|
@@ -3691,7 +3945,7 @@ export declare interface TriangleMeshQualityReport {
|
|
|
3691
3945
|
export declare interface TriangleMeshSignature {
|
|
3692
3946
|
/** Axis-aligned bounds quantized by `tolerances.position`. */
|
|
3693
3947
|
readonly bounds: Bounds3;
|
|
3694
|
-
/** Number of edge-connected closed
|
|
3948
|
+
/** Number of edge-connected closed boundary shells; cavities count separately. */
|
|
3695
3949
|
readonly connectedComponentCount: number;
|
|
3696
3950
|
/** Total orientable genus across all connected components. */
|
|
3697
3951
|
readonly genus: number;
|
|
@@ -3710,7 +3964,7 @@ export declare interface TriangleMeshSignature {
|
|
|
3710
3964
|
/** Options controlling deterministic triangle-mesh regression signatures. */
|
|
3711
3965
|
export declare interface TriangleMeshSignatureOptions {
|
|
3712
3966
|
/** Maximum accepted triangle count. Defaults to 200,000. */
|
|
3713
|
-
readonly
|
|
3967
|
+
readonly maxTriangles?: number;
|
|
3714
3968
|
/** Position and bounds quantization in model units. Defaults to `1e-5`. */
|
|
3715
3969
|
readonly positionTolerance?: number;
|
|
3716
3970
|
/** Signed-volume quantization in cubic model units. Defaults to `1e-4`. */
|
|
@@ -3760,7 +4014,7 @@ export declare function triangulateContour(loop: Contour): Uint32Array;
|
|
|
3760
4014
|
* Dimensions, placement, and tessellation for a hollow Z-axis tube.
|
|
3761
4015
|
*/
|
|
3762
4016
|
export declare interface TubeOptions
|
|
3763
|
-
extends CircularPrimitiveOptions,
|
|
4017
|
+
extends CircularPrimitiveOptions, PrimitiveAttachment {
|
|
3764
4018
|
/**
|
|
3765
4019
|
* Centers the tube on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
3766
4020
|
* @defaultValue `true`
|
|
@@ -3802,9 +4056,9 @@ export declare function validateSolidMesh(
|
|
|
3802
4056
|
* @throws {@link GeometryError} For non-finite, non-affine, or singular matrices.
|
|
3803
4057
|
*/
|
|
3804
4058
|
export declare function validateTransform3(
|
|
3805
|
-
transform:
|
|
4059
|
+
transform: Transform3Matrix,
|
|
3806
4060
|
tolerance?: GeometryToleranceOptions,
|
|
3807
|
-
):
|
|
4061
|
+
): Transform3Matrix;
|
|
3808
4062
|
|
|
3809
4063
|
/**
|
|
3810
4064
|
* Validates mesh buffers, indices, triangle area, and optionally closed topology.
|
|
@@ -3823,11 +4077,97 @@ export declare function validateTriangleMesh(
|
|
|
3823
4077
|
options?: TriangleMeshValidationOptions,
|
|
3824
4078
|
): TriangleMesh;
|
|
3825
4079
|
|
|
4080
|
+
/** Immutable XY arithmetic; vector operations return new values and measurements return numbers. */
|
|
4081
|
+
export declare interface Vector2 {
|
|
4082
|
+
/** X coordinate in the vector's coordinate units. */
|
|
4083
|
+
readonly x: number;
|
|
4084
|
+
/** Y coordinate in the vector's coordinate units. */
|
|
4085
|
+
readonly y: number;
|
|
4086
|
+
/** Adds another vector component-wise. */
|
|
4087
|
+
add(other: Vector2Input): Vector2;
|
|
4088
|
+
/** Subtracts another vector component-wise. */
|
|
4089
|
+
subtract(other: Vector2Input): Vector2;
|
|
4090
|
+
/** Multiplies by a finite dimensionless scalar. */
|
|
4091
|
+
scale(factor: number): Vector2;
|
|
4092
|
+
/** Returns a unit vector; rejects length at or below finite nonnegative `epsilon` (default `1e-12`). */
|
|
4093
|
+
normalize(epsilon?: number): Vector2;
|
|
4094
|
+
/** Interpolates toward another vector by finite dimensionless `t`; extrapolation is allowed. */
|
|
4095
|
+
lerp(other: Vector2Input, t: number): Vector2;
|
|
4096
|
+
/** Returns the scalar dot product. */
|
|
4097
|
+
dot(other: Vector2Input): number;
|
|
4098
|
+
/** Returns the signed scalar cross product; positive means the other vector is counterclockwise. */
|
|
4099
|
+
cross(other: Vector2Input): number;
|
|
4100
|
+
/** Returns Euclidean length in the vector's coordinate units. */
|
|
4101
|
+
length(): number;
|
|
4102
|
+
/** Returns Euclidean distance to another vector in the same coordinate units. */
|
|
4103
|
+
distance(other: Vector2Input): number;
|
|
4104
|
+
/** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
|
|
4105
|
+
toArray(): Vector2Tuple;
|
|
4106
|
+
}
|
|
4107
|
+
|
|
4108
|
+
/**
|
|
4109
|
+
* Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
4110
|
+
* Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
4111
|
+
* and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
4112
|
+
* Use transform2().applyDirection(value) for rotations and nonuniform scaling.
|
|
4113
|
+
*/
|
|
4114
|
+
export declare function vector2(input: Vector2Input): Vector2;
|
|
4115
|
+
|
|
4116
|
+
/** An XY tuple or immutable fluent vector accepted by vector operations. */
|
|
4117
|
+
export declare type Vector2Input = Vector2Tuple | Vector2;
|
|
4118
|
+
|
|
3826
4119
|
/** A two-dimensional Cartesian vector or point. */
|
|
3827
|
-
export declare type
|
|
4120
|
+
export declare type Vector2Tuple = readonly [x: number, y: number];
|
|
4121
|
+
|
|
4122
|
+
/** Immutable XYZ arithmetic; vector operations return new values and measurements return numbers. */
|
|
4123
|
+
export declare interface Vector3 {
|
|
4124
|
+
/** X coordinate in the vector's coordinate units. */
|
|
4125
|
+
readonly x: number;
|
|
4126
|
+
/** Y coordinate in the vector's coordinate units. */
|
|
4127
|
+
readonly y: number;
|
|
4128
|
+
/** Z coordinate in the vector's coordinate units. */
|
|
4129
|
+
readonly z: number;
|
|
4130
|
+
/** Adds another vector component-wise. */
|
|
4131
|
+
add(other: Vector3Input): Vector3;
|
|
4132
|
+
/** Subtracts another vector component-wise. */
|
|
4133
|
+
subtract(other: Vector3Input): Vector3;
|
|
4134
|
+
/** Multiplies by a finite dimensionless scalar. */
|
|
4135
|
+
scale(factor: number): Vector3;
|
|
4136
|
+
/** Returns a unit vector; rejects length at or below finite nonnegative `epsilon` (default `1e-12`). */
|
|
4137
|
+
normalize(epsilon?: number): Vector3;
|
|
4138
|
+
/** Interpolates toward another vector by finite dimensionless `t`; extrapolation is allowed. */
|
|
4139
|
+
lerp(other: Vector3Input, t: number): Vector3;
|
|
4140
|
+
/** Returns the scalar dot product. */
|
|
4141
|
+
dot(other: Vector3Input): number;
|
|
4142
|
+
/** Returns the right-handed cross product as a new vector. */
|
|
4143
|
+
cross(other: Vector3Input): Vector3;
|
|
4144
|
+
/** Returns Euclidean length in the vector's coordinate units. */
|
|
4145
|
+
length(): number;
|
|
4146
|
+
/** Returns Euclidean distance to another vector in the same coordinate units. */
|
|
4147
|
+
distance(other: Vector3Input): number;
|
|
4148
|
+
/** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
|
|
4149
|
+
toArray(): Vector3Tuple;
|
|
4150
|
+
}
|
|
4151
|
+
|
|
4152
|
+
/**
|
|
4153
|
+
* Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
4154
|
+
* Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
4155
|
+
* and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
4156
|
+
* Use transform3().applyDirection(value) for rotations and nonuniform scaling.
|
|
4157
|
+
*
|
|
4158
|
+
* @example
|
|
4159
|
+
* ```ts
|
|
4160
|
+
* const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
4161
|
+
* const alignment = direction.dot([0, 0, 1]);
|
|
4162
|
+
* ```
|
|
4163
|
+
*/
|
|
4164
|
+
export declare function vector3(input: Vector3Input): Vector3;
|
|
4165
|
+
|
|
4166
|
+
/** An XYZ tuple or immutable fluent vector accepted by vector operations. */
|
|
4167
|
+
export declare type Vector3Input = Vector3Tuple | Vector3;
|
|
3828
4168
|
|
|
3829
4169
|
/** A three-dimensional Cartesian vector or point. */
|
|
3830
|
-
export declare type
|
|
4170
|
+
export declare type Vector3Tuple = readonly [x: number, y: number, z: number];
|
|
3831
4171
|
|
|
3832
4172
|
/** A circular baseline centered at the XY origin, with rigid shaped glyph groups. */
|
|
3833
4173
|
export declare interface VectorTextArcBaseline {
|
|
@@ -3836,7 +4176,7 @@ export declare interface VectorTextArcBaseline {
|
|
|
3836
4176
|
/** Baseline radius in millimetres, greater than zero and at most 10000. */
|
|
3837
4177
|
readonly radius: number;
|
|
3838
4178
|
/** Alignment datum in degrees counterclockwise from +X; defaults to 90. */
|
|
3839
|
-
readonly
|
|
4179
|
+
readonly centerAngle?: number;
|
|
3840
4180
|
/** Reading direction around the circle; defaults to clockwise. */
|
|
3841
4181
|
readonly direction?: "clockwise" | "counterclockwise";
|
|
3842
4182
|
}
|