@metamesh/modeling 0.14.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/README.md +55 -13
- package/dist/api/engine.d.ts +15 -7
- package/dist/api/geometry.d.ts +853 -562
- package/dist/api/index.d.ts +604 -227
- package/dist/api/text.d.ts +9 -7
- package/dist/docs/guides/concepts.md +295 -91
- package/dist/docs/guides/fonts.md +9 -8
- package/dist/docs/guides/fundamentals.md +22 -23
- package/dist/docs/guides/generation.md +24 -23
- package/dist/docs/guides/hosting.md +26 -11
- package/dist/docs/guides/recipes.md +74 -48
- package/dist/docs/guides/standalone-model.md +42 -0
- package/dist/docs/manifest.json +1555 -749
- package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
- package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
- package/dist/docs/reference/engine/GenerationOptions.md +1 -1
- package/dist/docs/reference/engine/GeometryResource.md +1 -1
- package/dist/docs/reference/engine/ModelDependencies.md +1 -1
- package/dist/docs/reference/engine/ModelEngine.md +1 -1
- package/dist/docs/reference/engine/ModelEngineOptions.md +4 -8
- package/dist/docs/reference/engine/ModelSession.md +1 -1
- package/dist/docs/reference/engine/ModelSnapshot.md +21 -10
- package/dist/docs/reference/engine/SessionOptions.md +1 -1
- package/dist/docs/reference/engine/SnapshotPart.md +6 -3
- package/dist/docs/reference/engine/categories/host-lifecycle.md +7 -2
- package/dist/docs/reference/engine/createModelEngine.md +3 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
- package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
- package/dist/docs/reference/engine/validateModel.md +1 -1
- package/dist/docs/reference/engine.md +6 -2
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +4 -4
- package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +6 -5
- package/dist/docs/reference/geometry/ArcCurve2.md +11 -7
- package/dist/docs/reference/geometry/ArcCurve3.md +13 -9
- package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +11 -5
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +2 -1
- package/dist/docs/reference/geometry/Bounds2-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds2Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds2Input.md +21 -0
- package/dist/docs/reference/geometry/Bounds3-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
- package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
- package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
- package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
- package/dist/docs/reference/geometry/BoxEdge.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/geometry/BoxOptions.md +10 -10
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -7
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
- package/dist/docs/reference/geometry/Contour.md +10 -4
- package/dist/docs/reference/geometry/ContourCurve.md +5 -1
- package/dist/docs/reference/geometry/ContourPoint.md +6 -1
- package/dist/docs/reference/geometry/ContourSegment.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
- package/dist/docs/reference/geometry/Curve2.md +5 -1
- package/dist/docs/reference/geometry/Curve3.md +5 -1
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +9 -3
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +6 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -3
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +7 -3
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +11 -6
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
- package/dist/docs/reference/geometry/EndTreatments.md +1 -1
- package/dist/docs/reference/geometry/ExtrudeOptions.md +10 -6
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +9 -5
- package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
- package/dist/docs/reference/geometry/Frame3.md +10 -6
- package/dist/docs/reference/geometry/GeometryError.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +5 -5
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +11 -5
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
- package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +9 -5
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +10 -6
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +10 -6
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
- package/dist/docs/reference/geometry/LineCurve2.md +8 -4
- package/dist/docs/reference/geometry/LineCurve3.md +8 -4
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
- package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +8 -4
- package/dist/docs/reference/geometry/LoftOptions.md +5 -1
- package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
- package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
- package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
- package/dist/docs/reference/geometry/Path2-type.md +196 -0
- package/dist/docs/reference/geometry/Path2Data.md +50 -0
- package/dist/docs/reference/geometry/Path2Input.md +20 -0
- package/dist/docs/reference/geometry/Path3-type.md +196 -0
- package/dist/docs/reference/geometry/Path3Data.md +50 -0
- package/dist/docs/reference/geometry/Path3Input.md +20 -0
- package/dist/docs/reference/geometry/PathFrame.md +9 -5
- package/dist/docs/reference/geometry/PathLocation.md +69 -0
- package/dist/docs/reference/geometry/PathNormalGuide.md +10 -5
- package/dist/docs/reference/geometry/PathOptions.md +38 -0
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
- package/dist/docs/reference/geometry/PathPlacement.md +8 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +84 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
- package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +26 -22
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
- package/dist/docs/reference/geometry/PolygonData.md +7 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -4
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +31 -0
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +104 -0
- package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
- package/dist/docs/reference/geometry/Profile.md +8 -2
- package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
- package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
- package/dist/docs/reference/geometry/RackPitchSpec.md +10 -5
- package/dist/docs/reference/geometry/RadialPatternOptions.md +17 -22
- package/dist/docs/reference/geometry/RadialSizing.md +1 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
- package/dist/docs/reference/geometry/RegionData.md +6 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +7 -3
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +13 -4
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
- package/dist/docs/reference/geometry/SampleContourOptions.md +7 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +7 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
- package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
- package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
- package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +7 -3
- package/dist/docs/reference/geometry/SphereOptions.md +3 -3
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/StrokeCap.md +14 -0
- package/dist/docs/reference/geometry/StrokeJoin.md +14 -0
- package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +11 -7
- package/dist/docs/reference/geometry/SvgImportOptions.md +5 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +6 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +19 -15
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +16 -11
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +14 -9
- package/dist/docs/reference/geometry/SweepOptions.md +10 -6
- package/dist/docs/reference/geometry/SweepOrientation.md +11 -7
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +9 -5
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +7 -3
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
- package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +7 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadRole.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +10 -6
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
- package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +10 -6
- package/dist/docs/reference/geometry/TorusOptions.md +8 -8
- package/dist/docs/reference/geometry/Transform2-type.md +6 -5
- package/dist/docs/reference/geometry/Transform2Data.md +15 -0
- package/dist/docs/reference/geometry/Transform2Input.md +4 -3
- package/dist/docs/reference/geometry/Transform3-type.md +6 -5
- package/dist/docs/reference/geometry/Transform3Data.md +18 -0
- package/dist/docs/reference/geometry/Transform3Input.md +4 -3
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +9 -4
- package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +8 -4
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +8 -4
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +8 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/TubeOptions.md +8 -8
- package/dist/docs/reference/geometry/Vector2-type.md +6 -5
- package/dist/docs/reference/geometry/Vector2Data.md +15 -0
- package/dist/docs/reference/geometry/Vector2Input.md +4 -3
- package/dist/docs/reference/geometry/Vector3-type.md +6 -5
- package/dist/docs/reference/geometry/Vector3Data.md +15 -0
- package/dist/docs/reference/geometry/Vector3Input.md +4 -3
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +8 -3
- package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +5 -1
- package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
- package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
- package/dist/docs/reference/geometry/add2.md +7 -6
- package/dist/docs/reference/geometry/add3.md +7 -6
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +6 -2
- package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +10 -9
- package/dist/docs/reference/geometry/anchorFrame3.md +9 -5
- package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
- package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
- package/dist/docs/reference/geometry/{attachTransform.md → attachmentTransform3.md} +16 -15
- package/dist/docs/reference/geometry/bounds2.md +38 -0
- package/dist/docs/reference/geometry/bounds3.md +38 -0
- package/dist/docs/reference/geometry/boundsCenter.md +12 -11
- package/dist/docs/reference/geometry/boundsFromSize.md +12 -11
- package/dist/docs/reference/geometry/boundsSize.md +12 -11
- package/dist/docs/reference/geometry/boxAnchor3.md +7 -6
- package/dist/docs/reference/geometry/categories/bounds-layout.md +23 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +27 -13
- package/dist/docs/reference/geometry/categories/mechanical.md +27 -15
- package/dist/docs/reference/geometry/categories/meshes.md +18 -10
- package/dist/docs/reference/geometry/categories/pattern-placement.md +11 -9
- package/dist/docs/reference/geometry/categories/primitive-options.md +10 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -13
- package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +25 -16
- package/dist/docs/reference/geometry/categories/vector-import.md +15 -9
- package/dist/docs/reference/geometry/circleContour.md +5 -1
- package/dist/docs/reference/geometry/closeToAxis.md +14 -5
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +9 -5
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +9 -5
- package/dist/docs/reference/geometry/composeTransform3.md +7 -6
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +14 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +17 -7
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
- package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +8 -4
- package/dist/docs/reference/geometry/containsBounds.md +10 -9
- package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
- package/dist/docs/reference/geometry/cross2.md +6 -5
- package/dist/docs/reference/geometry/cross3.md +7 -6
- package/dist/docs/reference/geometry/cylinderAnchor3.md +7 -6
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/distance2.md +6 -5
- package/dist/docs/reference/geometry/distance3.md +6 -5
- package/dist/docs/reference/geometry/distributeAlongPath.md +12 -6
- package/dist/docs/reference/geometry/dot2.md +6 -5
- package/dist/docs/reference/geometry/dot3.md +6 -5
- package/dist/docs/reference/geometry/ellipseContour.md +5 -1
- package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
- package/dist/docs/reference/geometry/extrudeMesh.md +12 -8
- package/dist/docs/reference/geometry/fitBounds.md +10 -9
- package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
- package/dist/docs/reference/geometry/frameTransform3.md +5 -4
- package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +7 -3
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
- package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +9 -5
- package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +9 -5
- package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
- package/dist/docs/reference/geometry/isGeometryError.md +5 -2
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
- package/dist/docs/reference/geometry/layoutRow.md +11 -7
- package/dist/docs/reference/geometry/length2.md +5 -4
- package/dist/docs/reference/geometry/length3.md +5 -4
- package/dist/docs/reference/geometry/lerp2.md +7 -6
- package/dist/docs/reference/geometry/lerp3.md +7 -6
- package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/loftMesh.md +6 -1
- package/dist/docs/reference/geometry/matchProfiles.md +11 -2
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
- package/dist/docs/reference/geometry/meshBounds.md +8 -4
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +7 -3
- package/dist/docs/reference/geometry/normalize2.md +10 -6
- package/dist/docs/reference/geometry/normalize3.md +10 -6
- package/dist/docs/reference/geometry/normalizeContour.md +8 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +15 -11
- package/dist/docs/reference/geometry/path2.md +54 -0
- package/dist/docs/reference/geometry/path3.md +49 -0
- package/dist/docs/reference/geometry/pathPatternTransforms.md +13 -9
- package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +13 -4
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +15 -4
- package/dist/docs/reference/geometry/preflightSvgRegion.md +15 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +14 -4
- package/dist/docs/reference/geometry/preflightThreadedRod.md +14 -4
- package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
- package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
- package/dist/docs/reference/geometry/rectangleContour.md +10 -3
- package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
- package/dist/docs/reference/geometry/regionArea.md +5 -1
- package/dist/docs/reference/geometry/regionBounds.md +8 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +9 -5
- package/dist/docs/reference/geometry/resamplePolyline2.md +9 -5
- package/dist/docs/reference/geometry/resamplePolyline3.md +9 -5
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +4 -4
- package/dist/docs/reference/geometry/resolveArcSegments.md +4 -4
- package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +7 -3
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
- package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -4
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/revolveMesh.md +14 -10
- package/dist/docs/reference/geometry/rotate2.md +6 -5
- package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +12 -6
- package/dist/docs/reference/geometry/sampleContour.md +14 -4
- package/dist/docs/reference/geometry/sampleCurve2.md +8 -5
- package/dist/docs/reference/geometry/sampleCurve3.md +6 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleHelix.md +13 -5
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
- package/dist/docs/reference/geometry/sampleSideProfile.md +17 -7
- package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +6 -2
- package/dist/docs/reference/geometry/scale2.md +6 -5
- package/dist/docs/reference/geometry/scale3.md +6 -5
- package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
- package/dist/docs/reference/geometry/signedContourArea.md +5 -1
- package/dist/docs/reference/geometry/starContour.md +8 -4
- package/dist/docs/reference/geometry/strokeRegionData.md +67 -0
- package/dist/docs/reference/geometry/subtract2.md +7 -6
- package/dist/docs/reference/geometry/subtract3.md +7 -6
- package/dist/docs/reference/geometry/sweepMesh.md +13 -9
- package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +10 -6
- package/dist/docs/reference/geometry/transform2.md +14 -7
- package/dist/docs/reference/geometry/transform3.md +16 -7
- package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
- package/dist/docs/reference/geometry/transformRegionData.md +5 -1
- package/dist/docs/reference/geometry/transformTriangleMesh.md +10 -6
- package/dist/docs/reference/geometry/translationTransform3.md +7 -6
- package/dist/docs/reference/geometry/triangulateContour.md +5 -1
- package/dist/docs/reference/geometry/validateSolidMesh.md +10 -3
- package/dist/docs/reference/geometry/validateTransform3.md +6 -5
- package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/vector2.md +10 -2
- package/dist/docs/reference/geometry/vector3.md +10 -2
- package/dist/docs/reference/geometry.md +8 -6
- package/dist/docs/reference/model/Anchor3.md +6 -5
- package/dist/docs/reference/model/AttachOptions.md +11 -5
- package/dist/docs/reference/model/Bounds2-type.md +125 -0
- package/dist/docs/reference/model/Bounds2Data.md +44 -0
- package/dist/docs/reference/model/Bounds2Input.md +19 -0
- package/dist/docs/reference/model/Bounds3-type.md +125 -0
- package/dist/docs/reference/model/Bounds3Data.md +44 -0
- package/dist/docs/reference/model/Bounds3Input.md +19 -0
- package/dist/docs/reference/model/BoxEdge.md +1 -1
- package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/model/BoxOptions.md +10 -10
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/CircleContourOptions.md +1 -1
- package/dist/docs/reference/model/CircleOptions.md +3 -3
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/model/Computed.md +6 -1
- package/dist/docs/reference/model/ComputedValue.md +5 -1
- package/dist/docs/reference/model/Contour.md +6 -4
- package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/model/CorrespondingContour.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/model/CylinderOptions.md +3 -3
- package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
- package/dist/docs/reference/model/EdgeTreatment.md +1 -1
- package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
- package/dist/docs/reference/model/EllipseOptions.md +3 -3
- package/dist/docs/reference/model/EndTreatments.md +1 -1
- package/dist/docs/reference/model/ExtrudeOptions.md +6 -6
- package/dist/docs/reference/model/FinalizedModel.md +20 -10
- package/dist/docs/reference/model/FinalizedPart.md +1 -1
- package/dist/docs/reference/model/Frame3.md +6 -6
- package/dist/docs/reference/model/GenerateCallback.md +5 -1
- package/dist/docs/reference/model/GenerateContext.md +5 -1
- package/dist/docs/reference/model/GeneratedPart.md +5 -1
- package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
- package/dist/docs/reference/model/GenerationError.md +5 -1
- package/dist/docs/reference/model/GeometryResolution.md +5 -5
- package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/model/GridPatternOptions.md +12 -5
- package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +4 -3
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
- package/dist/docs/reference/model/HullOptions.md +5 -5
- package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
- package/dist/docs/reference/model/ImplicitOptions.md +6 -6
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +5 -4
- package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +34 -0
- package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
- package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
- package/dist/docs/reference/model/LinearPatternOptions.md +13 -5
- package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/model/LoftOptions.md +1 -1
- package/dist/docs/reference/model/LoftPlacement.md +1 -1
- package/dist/docs/reference/model/LoftStation.md +3 -3
- package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/model/ModelProgram.md +5 -1
- package/dist/docs/reference/model/ModelingLimits.md +1 -1
- package/dist/docs/reference/model/NumericArray.md +8 -1
- package/dist/docs/reference/model/PartGeometry.md +5 -1
- package/dist/docs/reference/model/PartOptions.md +5 -1
- package/dist/docs/reference/model/Path2-type.md +196 -0
- package/dist/docs/reference/model/Path2Data.md +50 -0
- package/dist/docs/reference/model/Path2Input.md +20 -0
- package/dist/docs/reference/model/Path3-type.md +196 -0
- package/dist/docs/reference/model/Path3Data.md +50 -0
- package/dist/docs/reference/model/Path3Input.md +20 -0
- package/dist/docs/reference/model/PathLocation.md +69 -0
- package/dist/docs/reference/model/PathNormalGuide.md +6 -5
- package/dist/docs/reference/model/PathOptions.md +38 -0
- package/dist/docs/reference/model/PathPatternOptions.md +4 -3
- package/dist/docs/reference/model/PathResamplingOptions.md +83 -0
- package/dist/docs/reference/model/PatternSource.md +2 -1
- package/dist/docs/reference/model/Pivot2Options.md +2 -1
- package/dist/docs/reference/model/Pivot3Options.md +2 -1
- package/dist/docs/reference/model/PlaneOptions.md +3 -3
- package/dist/docs/reference/model/PolygonData.md +3 -2
- package/dist/docs/reference/model/PolygonOptions.md +8 -8
- package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +8 -7
- package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +42 -20
- package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
- package/dist/docs/reference/model/Profile.md +4 -2
- package/dist/docs/reference/model/ProfileComponent2.md +1 -1
- package/dist/docs/reference/model/ProfileContour2.md +4 -2
- package/dist/docs/reference/model/ProfileSpan2.md +3 -3
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/model/RadialPatternOptions.md +18 -22
- package/dist/docs/reference/model/RadialSizing.md +1 -1
- package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
- package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/model/RectangleOptions.md +10 -10
- package/dist/docs/reference/model/RegionData.md +2 -2
- package/dist/docs/reference/model/RegularPolygonOptions.md +5 -5
- package/dist/docs/reference/model/RevolveOptions.md +9 -4
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Section.md +20 -12
- package/dist/docs/reference/model/SectionHullOptions.md +5 -5
- package/dist/docs/reference/model/SectionInspection.md +10 -10
- package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
- package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Solid.md +31 -7
- package/dist/docs/reference/model/SolidInspection.md +7 -7
- package/dist/docs/reference/model/{SolidRayHit.md → SolidSegmentHit.md} +6 -6
- package/dist/docs/reference/model/SphereOptions.md +3 -3
- package/dist/docs/reference/model/StarOptions.md +10 -10
- package/dist/docs/reference/model/{StrokePathCap.md → StrokeCap.md} +3 -3
- package/dist/docs/reference/model/{StrokePathJoin.md → StrokeJoin.md} +3 -3
- package/dist/docs/reference/model/StrokeOptions.md +6 -6
- package/dist/docs/reference/model/SvgOrigin.md +1 -1
- package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
- package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
- package/dist/docs/reference/model/SweepOptions.md +6 -6
- package/dist/docs/reference/model/SweepOrientation.md +7 -7
- package/dist/docs/reference/model/TextSectionOptions.md +1 -1
- package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
- package/dist/docs/reference/model/ThreadHandedness.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
- package/dist/docs/reference/model/ThreadProfile.md +4 -3
- package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
- package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
- package/dist/docs/reference/model/ThreadedNutOptions.md +5 -4
- package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
- package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
- package/dist/docs/reference/model/ThreadedRodOptions.md +5 -4
- package/dist/docs/reference/model/TorusOptions.md +8 -8
- package/dist/docs/reference/model/Transform2-type.md +6 -5
- package/dist/docs/reference/model/Transform2Data.md +16 -0
- package/dist/docs/reference/model/Transform2Input.md +4 -3
- package/dist/docs/reference/model/Transform3-type.md +6 -5
- package/dist/docs/reference/model/Transform3Data.md +19 -0
- package/dist/docs/reference/model/Transform3Input.md +4 -3
- package/dist/docs/reference/model/TriangleMesh.md +1 -1
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +4 -4
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
- package/dist/docs/reference/model/TubeOptions.md +8 -8
- package/dist/docs/reference/model/Vector2-type.md +6 -5
- package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
- package/dist/docs/reference/model/Vector2Input.md +4 -3
- package/dist/docs/reference/model/Vector3-type.md +6 -5
- package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
- package/dist/docs/reference/model/Vector3Input.md +4 -3
- package/dist/docs/reference/model/VectorTextLayout.md +1 -1
- package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/model/anchor.md +2 -1
- package/dist/docs/reference/model/bounds2.md +36 -0
- package/dist/docs/reference/model/bounds3.md +36 -0
- package/dist/docs/reference/model/box.md +4 -4
- package/dist/docs/reference/model/castSegment.md +40 -0
- package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
- package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
- package/dist/docs/reference/model/categories/bounds.md +36 -0
- package/dist/docs/reference/model/categories/contracts.md +4 -2
- package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
- package/dist/docs/reference/model/categories/explicit-profiles.md +7 -5
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
- package/dist/docs/reference/model/categories/generation.md +11 -2
- package/dist/docs/reference/model/categories/hinges.md +38 -0
- package/dist/docs/reference/model/categories/inspection.md +12 -6
- package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
- package/dist/docs/reference/model/categories/paths.md +41 -0
- package/dist/docs/reference/model/categories/primitives.md +10 -4
- package/dist/docs/reference/model/categories/resolution.md +4 -2
- package/dist/docs/reference/model/categories/sections.md +12 -8
- package/dist/docs/reference/model/categories/threads.md +11 -8
- package/dist/docs/reference/model/categories/transforms-placement.md +23 -15
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/components.md +6 -6
- package/dist/docs/reference/model/compose.md +1 -1
- package/dist/docs/reference/model/cylinder.md +1 -1
- package/dist/docs/reference/model/distance.md +1 -1
- package/dist/docs/reference/model/ellipse.md +1 -1
- package/dist/docs/reference/model/extrude.md +3 -3
- package/dist/docs/reference/model/generate.md +5 -1
- package/dist/docs/reference/model/gridPattern.md +5 -4
- package/dist/docs/reference/model/heightfield.md +5 -2
- package/dist/docs/reference/model/hull.md +1 -1
- package/dist/docs/reference/model/immutableBuffer.md +5 -1
- package/dist/docs/reference/model/immutableMesh.md +5 -1
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/inspectSection.md +1 -1
- package/dist/docs/reference/model/inspectSolid.md +1 -1
- package/dist/docs/reference/model/internalThreadCutter.md +5 -4
- package/dist/docs/reference/model/intersect.md +1 -1
- package/dist/docs/reference/model/isEmpty.md +1 -1
- package/dist/docs/reference/model/knuckleHinge.md +47 -0
- package/dist/docs/reference/model/linearPattern.md +5 -4
- package/dist/docs/reference/model/loft.md +1 -1
- package/dist/docs/reference/model/matchProfiles.md +2 -2
- package/dist/docs/reference/model/minkowskiSum.md +1 -1
- package/dist/docs/reference/model/path2.md +54 -0
- package/dist/docs/reference/model/path3.md +49 -0
- package/dist/docs/reference/model/pathPattern.md +14 -12
- package/dist/docs/reference/model/polygon.md +8 -5
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +9 -3
- package/dist/docs/reference/model/preflightThreadedNut.md +9 -3
- package/dist/docs/reference/model/preflightThreadedRod.md +9 -3
- package/dist/docs/reference/model/radialPattern.md +6 -37
- package/dist/docs/reference/model/rectangle.md +7 -4
- package/dist/docs/reference/model/regularPolygon.md +1 -1
- package/dist/docs/reference/model/revolve.md +5 -4
- package/dist/docs/reference/model/solidFromMesh.md +1 -1
- package/dist/docs/reference/model/sphere.md +1 -1
- package/dist/docs/reference/model/split.md +1 -1
- package/dist/docs/reference/model/splitByPlane.md +1 -1
- package/dist/docs/reference/model/star.md +4 -4
- package/dist/docs/reference/model/stroke.md +8 -8
- package/dist/docs/reference/model/svgPathSection.md +1 -1
- package/dist/docs/reference/model/svgSection.md +1 -1
- package/dist/docs/reference/model/sweep.md +7 -7
- package/dist/docs/reference/model/textSection.md +1 -1
- package/dist/docs/reference/model/threadRidge.md +3 -2
- package/dist/docs/reference/model/threadedNut.md +5 -4
- package/dist/docs/reference/model/threadedRod.md +5 -4
- package/dist/docs/reference/model/torus.md +3 -3
- package/dist/docs/reference/model/transform2.md +14 -7
- package/dist/docs/reference/model/transform3.md +16 -7
- package/dist/docs/reference/model/tube.md +3 -3
- package/dist/docs/reference/model/union.md +1 -1
- package/dist/docs/reference/model/vector2.md +10 -2
- package/dist/docs/reference/model/vector3.md +10 -2
- package/dist/docs/reference/model.md +17 -9
- package/dist/docs/reference/text/Bounds2Data.md +34 -0
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
- package/dist/docs/reference/text/Vector2Data.md +7 -0
- package/dist/docs/reference/text/VectorFont.md +2 -2
- package/dist/docs/reference/text/VectorFontOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +3 -3
- package/dist/docs/reference/text/VectorTextLayout.md +1 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/text/VectorTextOptions.md +1 -1
- package/dist/docs/reference/text/categories/font-preparation.md +8 -6
- package/dist/docs/reference/text/prepareVectorFont.md +2 -2
- package/dist/docs/reference/text.md +4 -2
- package/dist/engine/construction-operations.js +31 -14
- package/dist/engine/execution.js +39 -8
- package/dist/engine/extrusion-finishing.js +1 -1
- package/dist/engine/index.js +6 -1
- package/dist/engine/inspection-operations.js +13 -11
- package/dist/engine/knuckle-hinge-operation.js +85 -0
- package/dist/engine/loft-operations.js +35 -14
- package/dist/engine/mechanical-operations.js +3 -1
- package/dist/engine/model-summary.js +8 -5
- package/dist/engine/modeling-context.js +8 -1
- package/dist/engine/native/material-components.js +305 -0
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/native/threads.js +3 -3
- package/dist/engine/native/transforms.js +5 -7
- package/dist/engine/operation-environment.js +2 -2
- package/dist/engine/pattern-operations.js +1 -1
- package/dist/engine/placement.js +2 -2
- package/dist/engine/primitive-anchors.js +17 -17
- package/dist/engine/primitive-operations.js +1 -1
- package/dist/engine/primitive-profiles.js +7 -7
- package/dist/engine/profile-mesh.js +7 -7
- package/dist/engine/recipe-realization.js +10 -2
- package/dist/engine/section-operations.js +33 -8
- package/dist/engine/session-snapshot.js +14 -4
- package/dist/engine/session.js +10 -5
- package/dist/engine/shape-anchors.js +3 -3
- package/dist/engine/transform-operations.js +27 -27
- package/dist/geometry/anchors.js +40 -33
- package/dist/geometry/bounds-value.js +93 -0
- package/dist/geometry/bounds.js +10 -8
- package/dist/geometry/curves/sampling.js +15 -16
- package/dist/geometry/edge-finishing.js +1 -1
- package/dist/geometry/errors.js +1 -0
- package/dist/geometry/extrusion.js +13 -16
- package/dist/geometry/heightfield.js +12 -1
- package/dist/geometry/index.js +12 -11
- package/dist/geometry/loft/loft-simple-mesh.js +6 -6
- package/dist/geometry/loft/loft.js +22 -13
- package/dist/geometry/math/immutable-value.js +1 -1
- package/dist/geometry/math/vector-value.js +11 -3
- package/dist/geometry/math/vector2.js +1 -0
- package/dist/geometry/math/vector3.js +1 -0
- package/dist/geometry/mechanical/gear-motion.js +3 -3
- package/dist/geometry/mechanical/gears.js +38 -38
- package/dist/geometry/mechanical/index.js +4 -3
- package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
- package/dist/geometry/mechanical/standards.js +1 -1
- package/dist/geometry/mechanical/thread-helices.js +2 -3
- package/dist/geometry/mechanical/thread-mesh-plan.js +11 -7
- package/dist/geometry/mechanical/thread-mesh.js +7 -7
- package/dist/geometry/mechanical/thread-profiles.js +5 -5
- package/dist/geometry/mechanical/thread-solids.js +31 -6
- package/dist/geometry/mechanical/thread-surface.js +1 -1
- package/dist/geometry/mechanical/threads.js +8 -8
- package/dist/geometry/mesh/mesh-centroid.js +1 -0
- package/dist/geometry/mesh/mesh-planar.js +25 -27
- package/dist/geometry/mesh/mesh-quality.js +5 -5
- package/dist/geometry/mesh/mesh-signature.js +13 -13
- package/dist/geometry/mesh/mesh-solid.js +8 -7
- package/dist/geometry/mesh/mesh.js +4 -15
- package/dist/geometry/paths/closest-point.js +8 -19
- package/dist/geometry/paths/frames.js +42 -11
- package/dist/geometry/paths/helix.js +17 -6
- package/dist/geometry/paths/path-value.js +268 -0
- package/dist/geometry/paths/planar.js +36 -23
- package/dist/geometry/paths/resampling.js +27 -5
- package/dist/geometry/patterns/placements.js +100 -27
- package/dist/geometry/patterns.js +5 -3
- package/dist/geometry/polygon-clipping.js +17 -0
- package/dist/geometry/profiles/contour.js +7 -6
- package/dist/geometry/profiles/matched.js +5 -4
- package/dist/geometry/profiles/profiles.js +4 -4
- package/dist/geometry/profiles/rectangle.js +14 -5
- package/dist/geometry/profiles/side-profile.js +9 -7
- package/dist/geometry/profiles/span-sampling.js +1 -1
- package/dist/geometry/resolution.js +34 -34
- package/dist/geometry/revolve/revolve-mesh.js +12 -7
- package/dist/geometry/stroke-path.js +12 -27
- package/dist/geometry/svg/fill.js +7 -21
- package/dist/geometry/svg-import.js +31 -25
- package/dist/geometry/sweeps/options.js +5 -4
- package/dist/geometry/sweeps/orientation.js +5 -5
- package/dist/geometry/sweeps/stations.js +10 -10
- package/dist/geometry/sweeps/sweep-closed.js +2 -2
- package/dist/geometry/sweeps/sweep-mesh.js +9 -3
- package/dist/geometry/sweeps/sweep-open.js +1 -1
- package/dist/geometry/sweeps/validation.js +4 -7
- package/dist/geometry/text-fitting.js +1 -0
- package/dist/geometry/transform-geometry.js +7 -14
- package/dist/geometry/transform-matrix.js +1 -1
- package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
- package/dist/index.js +3 -1
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +62 -10
- package/dist/model/knuckle-hinge.js +1 -0
- package/dist/model/operations.js +79 -26
- package/dist/model/recipe-declaration.js +21 -7
- package/dist/model/shape-handles.js +2 -1
- package/dist/text/index.js +15 -9
- package/dist/text/vector-text-layout.js +31 -26
- package/package.json +1 -1
- package/dist/docs/reference/geometry/Bounds2.md +0 -39
- package/dist/docs/reference/geometry/Bounds3.md +0 -39
- package/dist/docs/reference/geometry/ClosestPointOnPathOptions.md +0 -34
- package/dist/docs/reference/geometry/ClosestPointOnPathResult.md +0 -65
- package/dist/docs/reference/geometry/Path2.md +0 -14
- package/dist/docs/reference/geometry/Path3.md +0 -14
- package/dist/docs/reference/geometry/PrimitivePlacement.md +0 -31
- package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +0 -83
- package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
- package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
- package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
- package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
- package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
- package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
- package/dist/docs/reference/geometry/closestPointOnPath.md +0 -110
- package/dist/docs/reference/geometry/cumulativePathLengths.md +0 -33
- package/dist/docs/reference/geometry/measureTriangleMesh.md +0 -55
- package/dist/docs/reference/geometry/pathLength.md +0 -33
- package/dist/docs/reference/geometry/strokePathRegion.md +0 -63
- package/dist/docs/reference/geometry/transformContour.md +0 -42
- package/dist/docs/reference/geometry/transformPath2.md +0 -40
- package/dist/docs/reference/geometry/transformPath3.md +0 -33
- package/dist/docs/reference/model/Bounds2.md +0 -39
- package/dist/docs/reference/model/Bounds3.md +0 -39
- package/dist/docs/reference/model/Path2.md +0 -20
- package/dist/docs/reference/model/Transform2Matrix.md +0 -15
- package/dist/docs/reference/model/Transform3Matrix.md +0 -18
- package/dist/docs/reference/model/rayCast.md +0 -40
- package/dist/docs/reference/model/toTriangleMesh.md +0 -27
- package/dist/docs/reference/text/Bounds2.md +0 -34
- package/dist/docs/reference/text/Vector2Tuple.md +0 -7
- package/dist/geometry/paths/path.js +0 -32
package/dist/api/index.d.ts
CHANGED
|
@@ -30,43 +30,91 @@ export declare function anchor(shape: Solid | Section, name: string): Anchor3;
|
|
|
30
30
|
*/
|
|
31
31
|
export declare interface Anchor3 {
|
|
32
32
|
/** Unit outward normal used as the anchor's local +Z direction. */
|
|
33
|
-
readonly direction:
|
|
33
|
+
readonly direction: Vector3Data;
|
|
34
34
|
/** World-space attachment position. */
|
|
35
|
-
readonly position:
|
|
35
|
+
readonly position: Vector3Data;
|
|
36
36
|
/** Roll guide projected into the plane perpendicular to `direction`. */
|
|
37
|
-
readonly up:
|
|
37
|
+
readonly up: Vector3Data;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
/**
|
|
41
|
-
* Degree-based anchor attachment controls for a scoped solid.
|
|
42
|
-
*/
|
|
40
|
+
/** Options controlling how one anchor is attached to another. */
|
|
43
41
|
export declare interface AttachOptions {
|
|
44
42
|
/** Align outward directions face-to-face (`opposed`) or in parallel (`same`). */
|
|
45
43
|
readonly alignment?: "opposed" | "same";
|
|
46
|
-
/** Separation along the target anchor's outward direction in
|
|
44
|
+
/** Separation along the target anchor's outward direction in model units. */
|
|
47
45
|
readonly gap?: number;
|
|
48
46
|
/** Additional right-handed roll about the attached direction, in degrees. */
|
|
49
|
-
readonly
|
|
47
|
+
readonly spin?: number;
|
|
50
48
|
/** Optional numeric comparison overrides. */
|
|
51
49
|
readonly tolerance?: GeometryToleranceOptions;
|
|
52
50
|
}
|
|
53
51
|
|
|
54
|
-
/**
|
|
55
|
-
export declare interface Bounds2 {
|
|
52
|
+
/** Immutable finite XY bounds in millimetres, with tuple coordinates for data interoperability. */
|
|
53
|
+
export declare interface Bounds2 extends Bounds2Data {
|
|
54
|
+
/** Returns nonnegative X/Y dimensions in millimetres, including zero extents. */
|
|
55
|
+
size(): Vector2;
|
|
56
|
+
/** Returns the midpoint in millimetres. */
|
|
57
|
+
center(): Vector2;
|
|
58
|
+
/** Tests positioned XY containment, including touching boundaries. */
|
|
59
|
+
containsBounds(other: Bounds2Input): boolean;
|
|
60
|
+
/** Returns this value's frozen plain record; repeated calls do not allocate. */
|
|
61
|
+
toData(): Bounds2Data;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Snapshots finite ordered XY bounds in millimetres as an immutable fluent value.
|
|
66
|
+
*
|
|
67
|
+
* Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
|
|
68
|
+
* overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
|
|
69
|
+
* Compiled Generator packages passing these values to host recipes or computed data require
|
|
70
|
+
* runtime 8.0.0 or newer in major 8.
|
|
71
|
+
*/
|
|
72
|
+
export declare function bounds2(input: Bounds2Input): Bounds2;
|
|
73
|
+
|
|
74
|
+
/** Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. */
|
|
75
|
+
export declare interface Bounds2Data {
|
|
56
76
|
/** Inclusive maximum X/Y coordinates. */
|
|
57
|
-
readonly max:
|
|
77
|
+
readonly max: Vector2Data;
|
|
58
78
|
/** Inclusive minimum X/Y coordinates. */
|
|
59
|
-
readonly min:
|
|
79
|
+
readonly min: Vector2Data;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** An immutable XY bounds value or its plain min/max representation. */
|
|
83
|
+
export declare type Bounds2Input = Bounds2 | Bounds2Data;
|
|
84
|
+
|
|
85
|
+
/** Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability. */
|
|
86
|
+
export declare interface Bounds3 extends Bounds3Data {
|
|
87
|
+
/** Returns nonnegative X/Y/Z dimensions in millimetres, including zero extents. */
|
|
88
|
+
size(): Vector3;
|
|
89
|
+
/** Returns the midpoint in millimetres. */
|
|
90
|
+
center(): Vector3;
|
|
91
|
+
/** Tests positioned XYZ containment, including touching boundaries. */
|
|
92
|
+
containsBounds(other: Bounds3Input): boolean;
|
|
93
|
+
/** Returns this value's frozen plain record; repeated calls do not allocate. */
|
|
94
|
+
toData(): Bounds3Data;
|
|
60
95
|
}
|
|
61
96
|
|
|
62
|
-
/**
|
|
63
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Snapshots finite ordered XYZ bounds in millimetres as an immutable fluent value.
|
|
99
|
+
*
|
|
100
|
+
* Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
|
|
101
|
+
* overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
|
|
102
|
+
* Compiled Generator packages passing these values to host recipes or computed data require
|
|
103
|
+
* runtime 8.0.0 or newer in major 8.
|
|
104
|
+
*/
|
|
105
|
+
export declare function bounds3(input: Bounds3Input): Bounds3;
|
|
106
|
+
|
|
107
|
+
/** Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods. */
|
|
108
|
+
export declare interface Bounds3Data {
|
|
64
109
|
/** Inclusive maximum X/Y/Z coordinates. */
|
|
65
|
-
readonly max:
|
|
110
|
+
readonly max: Vector3Data;
|
|
66
111
|
/** Inclusive minimum X/Y/Z coordinates. */
|
|
67
|
-
readonly min:
|
|
112
|
+
readonly min: Vector3Data;
|
|
68
113
|
}
|
|
69
114
|
|
|
115
|
+
/** An immutable XYZ bounds value or its plain min/max representation. */
|
|
116
|
+
export declare type Bounds3Input = Bounds3 | Bounds3Data;
|
|
117
|
+
|
|
70
118
|
/**
|
|
71
119
|
* Axis-aligned box with uniform or disjoint named edge/group treatments.
|
|
72
120
|
*
|
|
@@ -103,7 +151,7 @@ export declare type BoxEdgeTreatments = Readonly<
|
|
|
103
151
|
/**
|
|
104
152
|
* Dimensions, placement, and uniform or independently selected finishing for an axis-aligned box.
|
|
105
153
|
*/
|
|
106
|
-
export declare interface BoxOptions extends
|
|
154
|
+
export declare interface BoxOptions extends PrimitiveAttachment {
|
|
107
155
|
/** Explicit sampling ceilings for edge treatments, bounded by the host policy. */
|
|
108
156
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
109
157
|
/**
|
|
@@ -112,7 +160,7 @@ export declare interface BoxOptions extends PrimitivePlacement {
|
|
|
112
160
|
*/
|
|
113
161
|
readonly center?: boolean;
|
|
114
162
|
/** Positive uniform size or explicit `[X, Y, Z]` extents in millimetres. */
|
|
115
|
-
readonly size: number |
|
|
163
|
+
readonly size: number | Vector3Data;
|
|
116
164
|
/** Uniform treatment or independent disjoint nominal edge/group treatments. */
|
|
117
165
|
readonly treatment?: EdgeTreatment | BoxEdgeTreatments;
|
|
118
166
|
}
|
|
@@ -137,6 +185,13 @@ declare interface ButtressThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
137
185
|
readonly pressureFlankSide?: ButtressPressureFlankSide;
|
|
138
186
|
}
|
|
139
187
|
|
|
188
|
+
/** Copies intersections along the finite directed origin-to-endpoint segment. */
|
|
189
|
+
export declare function castSegment(
|
|
190
|
+
solid: Solid,
|
|
191
|
+
origin: Vector3Input,
|
|
192
|
+
endpoint: Vector3Input,
|
|
193
|
+
): readonly SolidSegmentHit[];
|
|
194
|
+
|
|
140
195
|
/**
|
|
141
196
|
* A planar edge or corner chamfer with equal or independent surface setbacks.
|
|
142
197
|
*/
|
|
@@ -180,7 +235,7 @@ export declare type CircleContourOptions = CircularPrimitiveOptions &
|
|
|
180
235
|
/**
|
|
181
236
|
* Circular dimensions with exactly one nominal radius or diameter.
|
|
182
237
|
*/
|
|
183
|
-
export declare type CircleOptions = CircleContourOptions &
|
|
238
|
+
export declare type CircleOptions = CircleContourOptions & PrimitiveAttachment;
|
|
184
239
|
|
|
185
240
|
/**
|
|
186
241
|
* Tessellation controls shared by circular primitives across Geometry entry points.
|
|
@@ -200,11 +255,11 @@ export declare interface CircularPrimitiveOptions {
|
|
|
200
255
|
}
|
|
201
256
|
|
|
202
257
|
/**
|
|
203
|
-
* Observes
|
|
258
|
+
* Observes disconnected material pieces as session-restricted solid selections.
|
|
204
259
|
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
260
|
+
* Each piece retains its enclosed cavities. A sealed hollow box is one component; adding a loose
|
|
261
|
+
* ball inside its cavity produces two. Recombining the pieces preserves the original material.
|
|
262
|
+
* This does not cut connected geometry. Containment is bounded to 2,000,000 comparisons.
|
|
208
263
|
* Selection order and cardinality depend on evaluated topology. Results and recipes using them
|
|
209
264
|
* can only be evaluated in this session; composition itself requires no engine.
|
|
210
265
|
*
|
|
@@ -241,12 +296,16 @@ declare const computedBrand: unique symbol;
|
|
|
241
296
|
export declare type ComputedValue<T> = T | Computed<T>;
|
|
242
297
|
|
|
243
298
|
/**
|
|
244
|
-
* A closed two-dimensional boundary whose first point is not repeated at the end.
|
|
299
|
+
* A sampled closed two-dimensional boundary whose first point is not repeated at the end.
|
|
245
300
|
*
|
|
246
301
|
* Polygon exteriors are counter-clockwise and holes are clockwise. Algorithms
|
|
247
302
|
* may reject duplicate adjacent points or fewer than three effective vertices.
|
|
303
|
+
* Use PolygonData to assign an exterior and its holes, or ProfileContour2 for identified curve spans.
|
|
304
|
+
*
|
|
305
|
+
* @see {@link PolygonData}
|
|
306
|
+
* @see [ProfileContour2](/docs/reference/geometry/ProfileContour2)
|
|
248
307
|
*/
|
|
249
|
-
export declare type Contour = readonly
|
|
308
|
+
export declare type Contour = readonly Vector2Data[];
|
|
250
309
|
|
|
251
310
|
/** One sampled component retaining contour identities and logical point correspondence. */
|
|
252
311
|
export declare interface CorrespondingComponent {
|
|
@@ -280,6 +339,20 @@ export declare type CorrespondingProfileStation = LoftPlacement & {
|
|
|
280
339
|
readonly profile: CorrespondingProfile;
|
|
281
340
|
};
|
|
282
341
|
|
|
342
|
+
/**
|
|
343
|
+
* Explicit physical sampling and allocation policy for reusable curves.
|
|
344
|
+
*/
|
|
345
|
+
declare interface CurveSamplingOptions {
|
|
346
|
+
/** Exact segment count overrides physical criteria; curve parameters are spaced uniformly. */
|
|
347
|
+
readonly segments?: number;
|
|
348
|
+
/** Millimetre sampling policy; circularSegments applies only to arcs. */
|
|
349
|
+
readonly resolution?: GeometryResolution;
|
|
350
|
+
/** Output vertex ceiling of at least two; may only lower limits.maxPathPoints. */
|
|
351
|
+
readonly maxVertices?: number;
|
|
352
|
+
/** Explicit sampling ceilings; omitted values use package defaults without ambient state. */
|
|
353
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
354
|
+
}
|
|
355
|
+
|
|
283
356
|
/** Caller-defined periodic axial/radial profile in millimetres. */
|
|
284
357
|
declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
285
358
|
/** Selects a caller-defined periodic profile. */
|
|
@@ -288,7 +361,7 @@ declare interface CustomThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
288
361
|
* Open path spanning exactly `[-pitch/2, pitch/2]`, with both endpoints on the minor envelope,
|
|
289
362
|
* one connected ridge, one contiguous crest, and radial zero at the major envelope.
|
|
290
363
|
*/
|
|
291
|
-
readonly points: readonly
|
|
364
|
+
readonly points: readonly Vector2Data[];
|
|
292
365
|
}
|
|
293
366
|
|
|
294
367
|
/**
|
|
@@ -311,7 +384,7 @@ export declare function cylinder(options: CylinderOptions): Solid;
|
|
|
311
384
|
*/
|
|
312
385
|
export declare type CylinderOptions = CircularPrimitiveOptions &
|
|
313
386
|
RadialSizingOptions &
|
|
314
|
-
|
|
387
|
+
PrimitiveAttachment & {
|
|
315
388
|
/**
|
|
316
389
|
* Centers the solid on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
317
390
|
* @defaultValue `true`
|
|
@@ -385,13 +458,13 @@ export declare type EllipseContourOptions = CircularPrimitiveOptions &
|
|
|
385
458
|
(
|
|
386
459
|
| {
|
|
387
460
|
/** Positive XY radii in millimetres; mutually exclusive with size. */
|
|
388
|
-
readonly radius:
|
|
461
|
+
readonly radius: Vector2Data;
|
|
389
462
|
/** Full XY extents are unavailable when radius is supplied. */
|
|
390
463
|
readonly size?: never;
|
|
391
464
|
}
|
|
392
465
|
| {
|
|
393
466
|
/** Positive full XY extents in millimetres; mutually exclusive with radius. */
|
|
394
|
-
readonly size:
|
|
467
|
+
readonly size: Vector2Data;
|
|
395
468
|
/** XY radii are unavailable when size is supplied. */
|
|
396
469
|
readonly radius?: never;
|
|
397
470
|
}
|
|
@@ -400,7 +473,8 @@ export declare type EllipseContourOptions = CircularPrimitiveOptions &
|
|
|
400
473
|
/**
|
|
401
474
|
* Ellipse dimensions in local XY, with exactly one radii or full-size tuple.
|
|
402
475
|
*/
|
|
403
|
-
export declare type EllipseOptions = EllipseContourOptions &
|
|
476
|
+
export declare type EllipseOptions = EllipseContourOptions &
|
|
477
|
+
PrimitiveAttachment;
|
|
404
478
|
|
|
405
479
|
/**
|
|
406
480
|
* Independent inward finishing on primitive or straight convex extrusion ends.
|
|
@@ -452,9 +526,9 @@ declare interface ExtrusionSamplingOptions {
|
|
|
452
526
|
/** Operation-level physical policy over the nearest model scope. */
|
|
453
527
|
readonly resolution?: GeometryResolution;
|
|
454
528
|
/** Finite uniform or XY scale of the top profile; defaults to one. */
|
|
455
|
-
readonly scaleTop?: number |
|
|
529
|
+
readonly scaleTop?: number | Vector2Input;
|
|
456
530
|
/** Finite rotation of the top profile about +Z, in degrees; defaults to zero. */
|
|
457
|
-
readonly
|
|
531
|
+
readonly twist?: number;
|
|
458
532
|
}
|
|
459
533
|
|
|
460
534
|
/** Finalized manufacturing snapshot. Its arrays are independent of all native values. */
|
|
@@ -462,22 +536,24 @@ export declare interface FinalizedModel {
|
|
|
462
536
|
/** Ordered finalized manufacturing parts with copied transferable arrays. */
|
|
463
537
|
readonly parts: readonly FinalizedPart[];
|
|
464
538
|
/** Axis-aligned XYZ bounds in millimetres. */
|
|
465
|
-
readonly bounds:
|
|
539
|
+
readonly bounds: Bounds3Data;
|
|
466
540
|
/** Aggregate counts, unique backing storage, volume, and execution timings. */
|
|
467
541
|
readonly stats: {
|
|
542
|
+
/** Number of declared output parts, including repeated geometry instances. */
|
|
543
|
+
readonly partCount: number;
|
|
468
544
|
/** Aggregate position-buffer vertex count. */
|
|
469
|
-
readonly
|
|
545
|
+
readonly vertexCount: number;
|
|
470
546
|
/** Aggregate indexed triangle count. */
|
|
471
|
-
readonly
|
|
547
|
+
readonly triangleCount: number;
|
|
472
548
|
/** Signed enclosed volume of all selected parts in cubic millimetres. */
|
|
473
549
|
readonly volumeMm3: number;
|
|
474
550
|
/** Unique transferable backing-buffer bytes, counted once across all parts. */
|
|
475
|
-
readonly
|
|
551
|
+
readonly byteCount: number;
|
|
476
552
|
/** Synchronous callback duration in milliseconds. */
|
|
477
553
|
readonly buildMs: number;
|
|
478
554
|
/** Manufacturing validation and buffer finalization duration in milliseconds. */
|
|
479
555
|
readonly finalizationMs: number;
|
|
480
|
-
/** Total
|
|
556
|
+
/** Total generation duration, including cache retention and native cleanup, in milliseconds. */
|
|
481
557
|
readonly generationMs: number;
|
|
482
558
|
};
|
|
483
559
|
}
|
|
@@ -495,13 +571,13 @@ export declare interface FinalizedPart extends TriangleMesh {
|
|
|
495
571
|
/** A right-handed orthonormal coordinate frame expressed in world coordinates. */
|
|
496
572
|
export declare interface Frame3 {
|
|
497
573
|
/** World-space origin of the local frame. */
|
|
498
|
-
readonly origin:
|
|
574
|
+
readonly origin: Vector3Data;
|
|
499
575
|
/** Unit vector defining the local +X axis. */
|
|
500
|
-
readonly xAxis:
|
|
576
|
+
readonly xAxis: Vector3Data;
|
|
501
577
|
/** Unit vector defining the local +Y axis. */
|
|
502
|
-
readonly yAxis:
|
|
578
|
+
readonly yAxis: Vector3Data;
|
|
503
579
|
/** Unit vector defining the local +Z axis. */
|
|
504
|
-
readonly zAxis:
|
|
580
|
+
readonly zAxis: Vector3Data;
|
|
505
581
|
}
|
|
506
582
|
|
|
507
583
|
/**
|
|
@@ -589,9 +665,9 @@ export declare interface GeometryResolution {
|
|
|
589
665
|
/** Optional maximum sampled edge length in millimetres. */
|
|
590
666
|
readonly maxSegmentLength?: number;
|
|
591
667
|
/** Upper safety bound for a full circle; defaults to the selected maxCircularSegments (512 by default). */
|
|
592
|
-
readonly
|
|
668
|
+
readonly maxSegments?: number;
|
|
593
669
|
/** Lower full-circle segment count; defaults to 16 or a lower selected circular ceiling. */
|
|
594
|
-
readonly
|
|
670
|
+
readonly minSegments?: number;
|
|
595
671
|
}
|
|
596
672
|
|
|
597
673
|
/** Explicit allocation ceilings for pure sampling and host-owned modeling operations. */
|
|
@@ -629,16 +705,17 @@ export declare function gridPattern(
|
|
|
629
705
|
options: GridPatternOptions,
|
|
630
706
|
): readonly Solid[];
|
|
631
707
|
|
|
632
|
-
/** Repeats a filled Section on
|
|
708
|
+
/** Repeats a filled Section on an XY grid; any explicit frame must preserve the XY plane. */
|
|
633
709
|
export declare function gridPattern(
|
|
634
710
|
source: PatternSource<Section>,
|
|
635
|
-
options: GridPatternOptions
|
|
711
|
+
options: GridPatternOptions<2>,
|
|
636
712
|
): readonly Section[];
|
|
637
713
|
|
|
638
714
|
/**
|
|
639
715
|
* XY or XYZ grid with X varying fastest. The first item starts at the local origin.
|
|
716
|
+
* Dimension 2 restricts counts and spacing to XY; any frame must preserve the XY plane.
|
|
640
717
|
*/
|
|
641
|
-
export declare type GridPatternOptions = {
|
|
718
|
+
export declare type GridPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
642
719
|
/** Center the complete distribution around its local origin; defaults to false. */
|
|
643
720
|
readonly center?: boolean;
|
|
644
721
|
/** Optional right-handed local axes and origin for the grid. */
|
|
@@ -646,20 +723,23 @@ export declare type GridPatternOptions = {
|
|
|
646
723
|
} & (
|
|
647
724
|
| {
|
|
648
725
|
/** Positive integer counts on X and Y. */
|
|
649
|
-
readonly count:
|
|
726
|
+
readonly count: Vector2Data;
|
|
650
727
|
/** Signed millimetres between adjacent copies on X and Y. */
|
|
651
|
-
readonly spacing:
|
|
652
|
-
}
|
|
653
|
-
| {
|
|
654
|
-
/** Positive integer counts on X, Y and Z. */
|
|
655
|
-
readonly count: Vector3Tuple;
|
|
656
|
-
/** Signed millimetres between adjacent copies on X, Y and Z. */
|
|
657
|
-
readonly spacing: Vector3Tuple;
|
|
728
|
+
readonly spacing: Vector2Data;
|
|
658
729
|
}
|
|
730
|
+
| (Dimension extends 3
|
|
731
|
+
? {
|
|
732
|
+
/** Positive integer counts on X, Y and Z. */
|
|
733
|
+
readonly count: Vector3Data;
|
|
734
|
+
/** Signed millimetres between adjacent copies on X, Y and Z. */
|
|
735
|
+
readonly spacing: Vector3Data;
|
|
736
|
+
}
|
|
737
|
+
: never)
|
|
659
738
|
);
|
|
660
739
|
|
|
661
740
|
/**
|
|
662
741
|
* Closed rectilinear top above a flat base, with uniform or explicit XY coordinates.
|
|
742
|
+
*
|
|
663
743
|
* Samples each grid height once; center-error triangulation also samples each cell centre.
|
|
664
744
|
* The retained callback must capture independent immutable inputs, not live session readers or parameters.
|
|
665
745
|
*
|
|
@@ -684,7 +764,7 @@ export declare function heightfield(options: HeightfieldOptions): Solid;
|
|
|
684
764
|
*/
|
|
685
765
|
export declare type HeightfieldOptions = {
|
|
686
766
|
/** Absolute top Z at the supplied XY point. Every sample must be above baseZ. */
|
|
687
|
-
readonly height: (point:
|
|
767
|
+
readonly height: (point: Vector2Data) => number;
|
|
688
768
|
/** Flat bottom Z. Defaults to zero. */
|
|
689
769
|
readonly baseZ?: number;
|
|
690
770
|
/**
|
|
@@ -697,11 +777,11 @@ export declare type HeightfieldOptions = {
|
|
|
697
777
|
} & (
|
|
698
778
|
| {
|
|
699
779
|
/** Positive XY footprint for uniform sampling. */
|
|
700
|
-
readonly size:
|
|
780
|
+
readonly size: Vector2Data;
|
|
701
781
|
/** Exact positive integer X/Y interval counts. */
|
|
702
782
|
readonly segments: readonly [x: number, y: number];
|
|
703
783
|
/** Lower-left footprint XY. Omitted centers the footprint on XY. */
|
|
704
|
-
readonly origin?:
|
|
784
|
+
readonly origin?: Vector2Data;
|
|
705
785
|
/** Explicit coordinates cannot be combined with uniform sampling. */
|
|
706
786
|
readonly coordinates?: never;
|
|
707
787
|
}
|
|
@@ -741,7 +821,7 @@ export declare interface HelicalThreadRidgeMeshOptions {
|
|
|
741
821
|
/** Nominal major diameter before any caller-owned fit compensation. */
|
|
742
822
|
readonly majorDiameter: number;
|
|
743
823
|
/** Angular offset of the first start in degrees. Default: `0`. */
|
|
744
|
-
readonly
|
|
824
|
+
readonly phase?: number;
|
|
745
825
|
/** Validated periodic profile repeated around the shaft. */
|
|
746
826
|
readonly profile: ThreadProfile;
|
|
747
827
|
/** Optional circular-resolution policy. */
|
|
@@ -752,7 +832,7 @@ export declare interface HelicalThreadRidgeMeshOptions {
|
|
|
752
832
|
readonly tolerance?: GeometryToleranceOptions;
|
|
753
833
|
}
|
|
754
834
|
|
|
755
|
-
/**
|
|
835
|
+
/** Selected sampling counts and conservative allocation estimates, before thread mesh construction. */
|
|
756
836
|
export declare interface HelicalThreadSolidMeshPreflight {
|
|
757
837
|
/** Uniform axial intervals required only by a requested physical segment-length limit. */
|
|
758
838
|
readonly axialIntervals: number;
|
|
@@ -783,7 +863,7 @@ export declare function hull(options: SectionHullOptions): Section;
|
|
|
783
863
|
export declare type HullOptions =
|
|
784
864
|
| {
|
|
785
865
|
/** Finite millimetre XYZ points to include in the convex hull. */
|
|
786
|
-
readonly points: readonly
|
|
866
|
+
readonly points: readonly Vector3Input[];
|
|
787
867
|
/** Point input excludes solid input. */
|
|
788
868
|
readonly solids?: never;
|
|
789
869
|
}
|
|
@@ -859,9 +939,9 @@ export declare function implicit(options: ImplicitOptions): Solid;
|
|
|
859
939
|
/** Positive-inside sampling, bounded to 4M native BCC grid slots and 8M field calls. */
|
|
860
940
|
export declare interface ImplicitOptions {
|
|
861
941
|
/** Positive-inside scalar field evaluated at finite XYZ points. */
|
|
862
|
-
readonly field: (point:
|
|
942
|
+
readonly field: (point: Vector3Data) => number;
|
|
863
943
|
/** Axis-aligned XYZ bounds in millimetres. */
|
|
864
|
-
readonly bounds:
|
|
944
|
+
readonly bounds: Bounds3Data;
|
|
865
945
|
/** Positive sampling edge length in millimetres. */
|
|
866
946
|
readonly edgeLength: number;
|
|
867
947
|
/** Field isosurface value; defaults to zero. */
|
|
@@ -898,8 +978,8 @@ export declare function inspectSolid(solid: Solid): SolidInspection;
|
|
|
898
978
|
* @example Internal thread
|
|
899
979
|
* ```ts
|
|
900
980
|
* import { cylinder, internalThreadCutter } from "@metamesh/modeling";
|
|
901
|
-
* import {
|
|
902
|
-
* const profile =
|
|
981
|
+
* import { threadProfile } from "@metamesh/modeling/geometry";
|
|
982
|
+
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
903
983
|
* const body = cylinder({ diameter: 20, height: 12, center: false });
|
|
904
984
|
* const cutter = internalThreadCutter({ nominalMajorDiameter: 12, length: 12, profile });
|
|
905
985
|
* body.subtract([cutter]);
|
|
@@ -949,6 +1029,122 @@ export declare function intersect(sections: readonly Section[]): Section;
|
|
|
949
1029
|
*/
|
|
950
1030
|
export declare function isEmpty(shape: Solid | Section): boolean;
|
|
951
1031
|
|
|
1032
|
+
/** Portable local geometry; consumers own plates, holes, part declarations, and final placement. */
|
|
1033
|
+
export declare interface KnuckleHinge {
|
|
1034
|
+
/** Alternating A intervals, including the integral shaft in print-in-place and lift-off modes. */
|
|
1035
|
+
readonly halfA: Solid;
|
|
1036
|
+
/** Alternating B intervals with a face-sized running bore. */
|
|
1037
|
+
readonly halfB: Solid;
|
|
1038
|
+
/** Centered +X pin axis with +Z roll guide; opening and lift-off withdrawal are caller transforms. */
|
|
1039
|
+
readonly axis: Anchor3;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
/**
|
|
1043
|
+
* Declares separate knuckle-joint halves along the centered +X pin axis, in millimetres.
|
|
1044
|
+
*
|
|
1045
|
+
* A starts at negative X. Attach independent webs or use barrels only; caller geometry connects
|
|
1046
|
+
* otherwise disconnected intervals. Returns portable recipes without initializing the engine.
|
|
1047
|
+
* Unspecified resolution inherits the evaluating session. Axis direction is +X with +Z up.
|
|
1048
|
+
*
|
|
1049
|
+
* Barrel end chamfers affect outer rims only; webs have square edges. Consumers own plates, screw holes,
|
|
1050
|
+
* pin retention, fit policy, and part placement. Added mounting material must preserve the bores.
|
|
1051
|
+
* No opening range or collision freedom is implied for arbitrary caller attachments.
|
|
1052
|
+
* Compiled Generator packages using this operation require runtime 8.0.0 or newer in major 8.
|
|
1053
|
+
*
|
|
1054
|
+
* @example Integral-pin hinge with two mounting webs
|
|
1055
|
+
* ```ts
|
|
1056
|
+
* const joint = knuckleHinge({
|
|
1057
|
+
* mode: "print-in-place", length: 30, knuckleCount: 3,
|
|
1058
|
+
* barrelDiameter: 10, pinDiameter: 3, radialClearance: 0.3, axialGap: 0.4,
|
|
1059
|
+
* halfA: { web: { direction: "positive-y", reach: 8, zMin: -5, thickness: 2 } },
|
|
1060
|
+
* halfB: { web: { direction: "negative-y", reach: 8, zMin: -5, thickness: 2 } },
|
|
1061
|
+
* });
|
|
1062
|
+
* ```
|
|
1063
|
+
*/
|
|
1064
|
+
export declare function knuckleHinge(
|
|
1065
|
+
options: KnuckleHingeOptions,
|
|
1066
|
+
): KnuckleHinge;
|
|
1067
|
+
|
|
1068
|
+
/** Shared knuckle-joint dimensions in millimetres, independent of mounting geometry. */
|
|
1069
|
+
export declare interface KnuckleHingeBaseSpec {
|
|
1070
|
+
/** Total extent along the +X pin axis, centered at the origin. */
|
|
1071
|
+
readonly length: number;
|
|
1072
|
+
/** Number of equal alternating intervals, starting with half A. */
|
|
1073
|
+
readonly knuckleCount: number;
|
|
1074
|
+
/** Outside vertex-sized barrel diameter. */
|
|
1075
|
+
readonly barrelDiameter: number;
|
|
1076
|
+
/** Vertex-sized shaft diameter, including an externally supplied shaft. */
|
|
1077
|
+
readonly pinDiameter: number;
|
|
1078
|
+
/** Nonnegative per-side radial allowance; bores circumscribe this running envelope. */
|
|
1079
|
+
readonly radialClearance: number;
|
|
1080
|
+
/** Nonnegative total air gap between each neighboring pair of knuckle ends. */
|
|
1081
|
+
readonly axialGap: number;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
/** Optional mounting and outer-rim treatment for one knuckle owner. */
|
|
1085
|
+
export declare interface KnuckleHingeHalfOptions {
|
|
1086
|
+
/** Omit for barrels only. Each interval receives one web; disconnected intervals need caller geometry. */
|
|
1087
|
+
readonly web?: KnuckleHingeWeb;
|
|
1088
|
+
/** 45° setback in millimetres at both ends of every barrel; defaults to 0. */
|
|
1089
|
+
readonly barrelChamfer?: number;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
/** Joint declaration with independent attachments; unspecified sampling inherits the evaluating host. */
|
|
1093
|
+
export declare type KnuckleHingeOptions = KnuckleHingeSpec &
|
|
1094
|
+
KnuckleHingeSamplingOptions & {
|
|
1095
|
+
/** Optional attachment and rim treatment for A, which owns an integral pin when present. */
|
|
1096
|
+
readonly halfA?: KnuckleHingeHalfOptions;
|
|
1097
|
+
/** Optional attachment and rim treatment for B, which always carries a running bore. */
|
|
1098
|
+
readonly halfB?: KnuckleHingeHalfOptions;
|
|
1099
|
+
};
|
|
1100
|
+
|
|
1101
|
+
/** Shared circular sampling for barrels, shafts, and bores. */
|
|
1102
|
+
export declare interface KnuckleHingeSamplingOptions {
|
|
1103
|
+
/** Exact full-circle count, divisible by four and at least four; overrides adaptive sampling. */
|
|
1104
|
+
readonly segments?: number;
|
|
1105
|
+
/** Physical tessellation policy. Exact circular counts must also be divisible by four. */
|
|
1106
|
+
readonly resolution?: GeometryResolution;
|
|
1107
|
+
/** Explicit allocation ceilings; defaults to the pure geometry sampling limits. */
|
|
1108
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
/**
|
|
1112
|
+
* Knuckle-joint construction modes and interval ownership.
|
|
1113
|
+
*
|
|
1114
|
+
* Print-in-place requires an odd count of at least three: A owns both
|
|
1115
|
+
* end anchors and the entire shaft. Inserted-pin bores both halves and supplies no shaft.
|
|
1116
|
+
* Lift-off requires exactly two intervals; A's integral pin enters B without a far anchor.
|
|
1117
|
+
*/
|
|
1118
|
+
export declare type KnuckleHingeSpec = KnuckleHingeBaseSpec &
|
|
1119
|
+
(
|
|
1120
|
+
| {
|
|
1121
|
+
/** Captive integral shaft or bores for an externally supplied pin. */
|
|
1122
|
+
readonly mode: "print-in-place" | "inserted-pin";
|
|
1123
|
+
/** Engagement applies only to lift-off construction. */
|
|
1124
|
+
readonly pinEngagement?: never;
|
|
1125
|
+
}
|
|
1126
|
+
| {
|
|
1127
|
+
/** Detachable socket on a finite integral pin. */
|
|
1128
|
+
readonly mode: "lift-off";
|
|
1129
|
+
/** Lift-off has one fixed interval and one removable interval. */
|
|
1130
|
+
readonly knuckleCount: 2;
|
|
1131
|
+
/** Positive axial engagement into B, no greater than its knuckle length. */
|
|
1132
|
+
readonly pinEngagement: number;
|
|
1133
|
+
}
|
|
1134
|
+
);
|
|
1135
|
+
|
|
1136
|
+
/** Rectangular connection from the axis into a caller-owned mounting body, in millimetres. */
|
|
1137
|
+
export declare interface KnuckleHingeWeb {
|
|
1138
|
+
/** Direction from the pin axis; independently chosen for each half. */
|
|
1139
|
+
readonly direction: "positive-y" | "negative-y";
|
|
1140
|
+
/** Positive distance from the axis to the web's far edge. Overlap into the mounting body. */
|
|
1141
|
+
readonly reach: number;
|
|
1142
|
+
/** Lower-face Z coordinate in the pin-centered frame, in millimetres. Must overlap the barrel's interior. */
|
|
1143
|
+
readonly zMin: number;
|
|
1144
|
+
/** Positive thickness along +Z. Webs have square edges and span their own barrel intervals. */
|
|
1145
|
+
readonly thickness: number;
|
|
1146
|
+
}
|
|
1147
|
+
|
|
952
1148
|
/**
|
|
953
1149
|
* Repeats one solid along a normalized direction.
|
|
954
1150
|
*
|
|
@@ -962,18 +1158,19 @@ export declare function linearPattern(
|
|
|
962
1158
|
options: LinearPatternOptions,
|
|
963
1159
|
): readonly Solid[];
|
|
964
1160
|
|
|
965
|
-
/** Repeats a filled Section
|
|
1161
|
+
/** Repeats a filled Section along an XY direction, defaulting to +X. */
|
|
966
1162
|
export declare function linearPattern(
|
|
967
1163
|
source: PatternSource<Section>,
|
|
968
|
-
options: LinearPatternOptions
|
|
1164
|
+
options: LinearPatternOptions<2>,
|
|
969
1165
|
): readonly Section[];
|
|
970
1166
|
|
|
971
1167
|
/**
|
|
972
1168
|
* Equal linear intervals determined by exactly two of count, spacing and total length.
|
|
1169
|
+
* Dimension defaults to 3; Section patterns use 2 and accept XY vector directions.
|
|
973
1170
|
*/
|
|
974
|
-
export declare type LinearPatternOptions = {
|
|
1171
|
+
export declare type LinearPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
975
1172
|
/** Direction of repetition; magnitude is ignored. Defaults to +X. */
|
|
976
|
-
readonly direction?:
|
|
1173
|
+
readonly direction?: Dimension extends 2 ? Vector2Input : Vector3Input;
|
|
977
1174
|
} & (
|
|
978
1175
|
| {
|
|
979
1176
|
/** Positive copy count, including the original. */
|
|
@@ -1079,10 +1276,13 @@ export declare type LoftPlacement =
|
|
|
1079
1276
|
*/
|
|
1080
1277
|
export declare type LoftStation = LoftPlacement & {
|
|
1081
1278
|
/** Filled Section recipe or ordered XY boundary point data. */
|
|
1082
|
-
readonly profile: Section |
|
|
1279
|
+
readonly profile: Section | Path2Input;
|
|
1083
1280
|
};
|
|
1084
1281
|
|
|
1085
|
-
/**
|
|
1282
|
+
/**
|
|
1283
|
+
* Matches a profile family using operation settings over host resolution and limits.
|
|
1284
|
+
* Requires active synchronous model execution. Use Geometry's matchProfiles for standalone preparation.
|
|
1285
|
+
*/
|
|
1086
1286
|
export declare function matchProfiles(
|
|
1087
1287
|
profiles: readonly Profile[],
|
|
1088
1288
|
options?: MatchProfilesOptions,
|
|
@@ -1138,8 +1338,110 @@ export declare interface PartOptions {
|
|
|
1138
1338
|
readonly color?: string;
|
|
1139
1339
|
}
|
|
1140
1340
|
|
|
1141
|
-
/**
|
|
1142
|
-
export declare
|
|
1341
|
+
/** Immutable directed XY polyline. Closure is explicit and does not imply a filled Section. */
|
|
1342
|
+
export declare interface Path2 {
|
|
1343
|
+
/** Coordinate dimension; identifies planar paths even when empty. */
|
|
1344
|
+
readonly dimension: 2;
|
|
1345
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
1346
|
+
readonly closed: boolean;
|
|
1347
|
+
/** Returns complete deeply frozen path data, including dimension and closure. Repeated calls do not allocate. */
|
|
1348
|
+
toData(): Path2Data;
|
|
1349
|
+
/** Total sampled edge length in model units, including the closing edge when closed. */
|
|
1350
|
+
length(): number;
|
|
1351
|
+
/** Immutable axis-aligned bounds, or undefined for an empty path. */
|
|
1352
|
+
bounds(): Bounds2 | undefined;
|
|
1353
|
+
/** Finds the nearest edge location; requires at least two vertices. */
|
|
1354
|
+
closestPoint(point: Vector2Input): PathLocation<Vector2>;
|
|
1355
|
+
/** Applies an XY placement without reordering traversal, including after reflection. */
|
|
1356
|
+
transform(placement: Transform2Input): Path2;
|
|
1357
|
+
/** Reverses vertex order and traversal; neither the source nor its coordinates are mutated. */
|
|
1358
|
+
reverse(): Path2;
|
|
1359
|
+
/** Returns a path sampled at equal arc lengths. Corners may be bridged; closure is preserved. */
|
|
1360
|
+
resample(options?: PathResamplingOptions): Path2;
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
/**
|
|
1364
|
+
* Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.
|
|
1365
|
+
*
|
|
1366
|
+
* Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated
|
|
1367
|
+
* seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed.
|
|
1368
|
+
* Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement
|
|
1369
|
+
* overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError.
|
|
1370
|
+
* A path input retains its closure. Limits bound construction only; resampling takes its own limits.
|
|
1371
|
+
*
|
|
1372
|
+
* Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
|
|
1373
|
+
*/
|
|
1374
|
+
export declare function path2(input: Path2Input, options?: PathOptions): Path2;
|
|
1375
|
+
|
|
1376
|
+
/** Complete plain XY path representation, including topology and empty-path dimensional identity. */
|
|
1377
|
+
export declare interface Path2Data {
|
|
1378
|
+
/** Coordinate dimension, retained even when points is empty. */
|
|
1379
|
+
readonly dimension: 2;
|
|
1380
|
+
/** Frozen or caller-owned XY coordinates; closed paths omit a duplicated seam. */
|
|
1381
|
+
readonly points: readonly Vector2Data[];
|
|
1382
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
1383
|
+
readonly closed: boolean;
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
/** A matching path value, complete plain path data, or a collection of vectors. */
|
|
1387
|
+
export declare type Path2Input = Path2 | Path2Data | readonly Vector2Input[];
|
|
1388
|
+
|
|
1389
|
+
/** Immutable directed XYZ polyline; it represents sampled edges, not an analytic curve. */
|
|
1390
|
+
export declare interface Path3 {
|
|
1391
|
+
/** Coordinate dimension; identifies spatial paths even when empty. */
|
|
1392
|
+
readonly dimension: 3;
|
|
1393
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
1394
|
+
readonly closed: boolean;
|
|
1395
|
+
/** Returns complete deeply frozen path data, including dimension and closure. Repeated calls do not allocate. */
|
|
1396
|
+
toData(): Path3Data;
|
|
1397
|
+
/** Total sampled edge length in model units, including the closing edge when closed. */
|
|
1398
|
+
length(): number;
|
|
1399
|
+
/** Immutable axis-aligned bounds, or undefined for an empty path. */
|
|
1400
|
+
bounds(): Bounds3 | undefined;
|
|
1401
|
+
/** Finds the nearest edge location; requires at least two vertices. */
|
|
1402
|
+
closestPoint(point: Vector3Input): PathLocation<Vector3>;
|
|
1403
|
+
/** Applies an XYZ placement without changing traversal order or closure. */
|
|
1404
|
+
transform(placement: Transform3Input): Path3;
|
|
1405
|
+
/** Reverses vertex order and traversal without mutating the source. */
|
|
1406
|
+
reverse(): Path3;
|
|
1407
|
+
/** Returns a path sampled at equal arc lengths. Corners may be bridged; closure is preserved. */
|
|
1408
|
+
resample(options?: PathResamplingOptions): Path3;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
/**
|
|
1412
|
+
* Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam,
|
|
1413
|
+
* allocation and error rules as path2. Analytic curves must be sampled explicitly first.
|
|
1414
|
+
*
|
|
1415
|
+
* Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
|
|
1416
|
+
*
|
|
1417
|
+
* @see {@link path2} for shared construction rules.
|
|
1418
|
+
*/
|
|
1419
|
+
export declare function path3(input: Path3Input, options?: PathOptions): Path3;
|
|
1420
|
+
|
|
1421
|
+
/** Complete plain XYZ path representation, including topology and empty-path dimensional identity. */
|
|
1422
|
+
export declare interface Path3Data {
|
|
1423
|
+
/** Coordinate dimension, retained even when points is empty. */
|
|
1424
|
+
readonly dimension: 3;
|
|
1425
|
+
/** Frozen or caller-owned XYZ coordinates; closed paths omit a duplicated seam. */
|
|
1426
|
+
readonly points: readonly Vector3Data[];
|
|
1427
|
+
/** Whether traversal includes the last-to-first edge. */
|
|
1428
|
+
readonly closed: boolean;
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
/** A matching path value, complete plain path data, or a collection of vectors. */
|
|
1432
|
+
export declare type Path3Input = Path3 | Path3Data | readonly Vector3Input[];
|
|
1433
|
+
|
|
1434
|
+
/** Nearest location on a sampled boundary, rather than inside a filled shape or on an analytic curve. */
|
|
1435
|
+
export declare interface PathLocation<Point extends Vector2 | Vector3> {
|
|
1436
|
+
/** Immutable position on the selected edge. */
|
|
1437
|
+
readonly point: Point;
|
|
1438
|
+
/** Euclidean distance from the query in model units. */
|
|
1439
|
+
readonly distance: number;
|
|
1440
|
+
/** Starting vertex of the selected edge; ties keep the first edge in traversal order. */
|
|
1441
|
+
readonly edgeIndex: number;
|
|
1442
|
+
/** Clamped fraction along that edge, not the whole path's normalized arc length. */
|
|
1443
|
+
readonly fraction: number;
|
|
1444
|
+
}
|
|
1143
1445
|
|
|
1144
1446
|
/**
|
|
1145
1447
|
* Supplies a profile-X orientation guide for each original normalized sweep station.
|
|
@@ -1149,9 +1451,17 @@ export declare type Path2 = readonly Vector2Tuple[];
|
|
|
1149
1451
|
* @returns A finite guide vector that is not parallel to the local path tangent.
|
|
1150
1452
|
*/
|
|
1151
1453
|
export declare type PathNormalGuide = (
|
|
1152
|
-
point:
|
|
1454
|
+
point: Vector3Data,
|
|
1153
1455
|
index: number,
|
|
1154
|
-
) =>
|
|
1456
|
+
) => Vector3Input;
|
|
1457
|
+
|
|
1458
|
+
/** Topology and allocation ceiling for an immutable sampled path. */
|
|
1459
|
+
export declare interface PathOptions {
|
|
1460
|
+
/** Connects the last vertex to the first; closed paths omit the repeated seam. Defaults to false. */
|
|
1461
|
+
readonly closed?: boolean;
|
|
1462
|
+
/** Construction point ceiling; defaults to package sampling limits. Later sampling has its own options. */
|
|
1463
|
+
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1464
|
+
}
|
|
1155
1465
|
|
|
1156
1466
|
/**
|
|
1157
1467
|
* Physical arc-length copies along a sampled path, with optional tangent orientation.
|
|
@@ -1163,17 +1473,17 @@ export declare type PathNormalGuide = (
|
|
|
1163
1473
|
*/
|
|
1164
1474
|
export declare function pathPattern(
|
|
1165
1475
|
source: PatternSource,
|
|
1166
|
-
path:
|
|
1476
|
+
path: Path3Input,
|
|
1167
1477
|
options: PathPatternOptions,
|
|
1168
1478
|
): readonly Solid[];
|
|
1169
1479
|
|
|
1170
1480
|
/**
|
|
1171
|
-
* Repeats a filled Section along a sampled XY path
|
|
1172
|
-
*
|
|
1481
|
+
* Repeats a filled Section along a sampled XY path. Tangent orientation maps local +X
|
|
1482
|
+
* to the path tangent counterclockwise, preserving the XY plane.
|
|
1173
1483
|
*/
|
|
1174
1484
|
export declare function pathPattern(
|
|
1175
1485
|
source: PatternSource<Section>,
|
|
1176
|
-
path:
|
|
1486
|
+
path: Path2Input,
|
|
1177
1487
|
options: PathPatternOptions,
|
|
1178
1488
|
): readonly Section[];
|
|
1179
1489
|
|
|
@@ -1181,12 +1491,18 @@ export declare function pathPattern(
|
|
|
1181
1491
|
export declare interface PathPatternOptions {
|
|
1182
1492
|
/** Positive number of copies; open paths include both endpoints when greater than one. */
|
|
1183
1493
|
readonly count: number;
|
|
1184
|
-
/**
|
|
1494
|
+
/** Raw point closure defaults to false; a path value supplies closure and rejects conflicts. */
|
|
1185
1495
|
readonly closed?: boolean;
|
|
1186
|
-
/** Preserve
|
|
1496
|
+
/** Preserve orientation, or align local +X for Sections / +Z for Solids to the tangent. Defaults to fixed. */
|
|
1187
1497
|
readonly orientation?: "fixed" | "tangent";
|
|
1188
1498
|
}
|
|
1189
1499
|
|
|
1500
|
+
/** Equal arc-length sampling; the path itself owns whether its closing edge is included. */
|
|
1501
|
+
export declare interface PathResamplingOptions extends CurveSamplingOptions {
|
|
1502
|
+
/** Exact arc-length intervals; closed paths need at least three. Otherwise physical resolution or the effective source edge count controls sampling. */
|
|
1503
|
+
readonly segments?: number;
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1190
1506
|
/**
|
|
1191
1507
|
* One immutable shape, or a synchronous factory called once per copy in index order.
|
|
1192
1508
|
*/
|
|
@@ -1208,13 +1524,14 @@ export declare interface Pivot3Options {
|
|
|
1208
1524
|
/** A world-space cutting plane, retaining the half-space in the normal's direction. */
|
|
1209
1525
|
export declare interface PlaneOptions {
|
|
1210
1526
|
/** Finite nonzero plane normal; magnitude does not affect the plane. */
|
|
1211
|
-
readonly normal:
|
|
1527
|
+
readonly normal: Vector3Input;
|
|
1212
1528
|
/** Signed millimetre distance from the origin along the unit normal. Defaults to zero. */
|
|
1213
1529
|
readonly offset?: number;
|
|
1214
1530
|
}
|
|
1215
1531
|
|
|
1216
1532
|
/**
|
|
1217
1533
|
* Fills one closed millimetre XY outline, explicit outer/hole topology, or compound contours.
|
|
1534
|
+
*
|
|
1218
1535
|
* Closing edges are implicit. Compound contours use nonzero fill unless selected otherwise.
|
|
1219
1536
|
* Explicit topology must be simple and disjoint; compound winding may resolve overlaps.
|
|
1220
1537
|
*
|
|
@@ -1223,14 +1540,17 @@ export declare interface PlaneOptions {
|
|
|
1223
1540
|
* polygon([[0, 0], [20, 0], [10, 12]]).extrude({ height: 3 });
|
|
1224
1541
|
* ```
|
|
1225
1542
|
*/
|
|
1226
|
-
export declare function polygon(input:
|
|
1543
|
+
export declare function polygon(input: Path2Input | PolygonOptions): Section;
|
|
1227
1544
|
|
|
1228
1545
|
/**
|
|
1229
|
-
* One
|
|
1546
|
+
* One filled two-dimensional polygon with an exterior and optional holes.
|
|
1230
1547
|
*
|
|
1231
1548
|
* `outer` is counter-clockwise and each hole is clockwise. Boundary arrays omit
|
|
1232
1549
|
* their duplicated closing point. Holes must lie inside `outer` and must not
|
|
1233
1550
|
* intersect each other or the exterior.
|
|
1551
|
+
*
|
|
1552
|
+
* @see {@link Contour}
|
|
1553
|
+
* @see {@link RegionData}
|
|
1234
1554
|
*/
|
|
1235
1555
|
export declare interface PolygonData {
|
|
1236
1556
|
/** Clockwise interior boundaries, each omitting its duplicated closing point. */
|
|
@@ -1243,9 +1563,9 @@ export declare interface PolygonData {
|
|
|
1243
1563
|
export declare type PolygonOptions =
|
|
1244
1564
|
| {
|
|
1245
1565
|
/** One simple exterior boundary, normalized to counterclockwise winding. */
|
|
1246
|
-
readonly outer:
|
|
1566
|
+
readonly outer: Path2Input;
|
|
1247
1567
|
/** Disjoint simple holes inside the exterior; normalized to clockwise winding. */
|
|
1248
|
-
readonly holes?: readonly
|
|
1568
|
+
readonly holes?: readonly Path2Input[];
|
|
1249
1569
|
/** Explicit topology excludes compound contours. */
|
|
1250
1570
|
readonly contours?: never;
|
|
1251
1571
|
/** Explicit topology determines fill without a winding rule. */
|
|
@@ -1255,7 +1575,7 @@ export declare type PolygonOptions =
|
|
|
1255
1575
|
}
|
|
1256
1576
|
| {
|
|
1257
1577
|
/** Compound boundaries; may overlap or contain holes according to the fill rule. */
|
|
1258
|
-
readonly contours: readonly
|
|
1578
|
+
readonly contours: readonly Path2Input[];
|
|
1259
1579
|
/** Winding interpretation; defaults to nonzero. An empty list creates an empty Section. */
|
|
1260
1580
|
readonly fillRule?: "nonzero" | "evenodd";
|
|
1261
1581
|
/** Compound contours exclude explicit topology. */
|
|
@@ -1278,41 +1598,57 @@ export declare type PolygonOptions =
|
|
|
1278
1598
|
readonly fillRule?: never;
|
|
1279
1599
|
};
|
|
1280
1600
|
|
|
1281
|
-
/**
|
|
1601
|
+
/**
|
|
1602
|
+
* Checks compensated cutter dimensions and conservative mesh estimates against host output limits.
|
|
1603
|
+
*
|
|
1604
|
+
* Requires active synchronous model execution and uses its resolution and limits. Estimates include
|
|
1605
|
+
* the one-pitch extension beyond each requested face, without mesh buffers or native objects.
|
|
1606
|
+
* Mesh validity, native construction, and aggregate output limits are checked later.
|
|
1607
|
+
*
|
|
1608
|
+
* @see {@link internalThreadCutter}
|
|
1609
|
+
*/
|
|
1282
1610
|
export declare function preflightInternalThreadCutter(
|
|
1283
1611
|
options: InternalThreadCutterOptions,
|
|
1284
1612
|
): HelicalThreadSolidMeshPreflight;
|
|
1285
1613
|
|
|
1286
|
-
/**
|
|
1614
|
+
/**
|
|
1615
|
+
* Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
|
|
1616
|
+
*
|
|
1617
|
+
* Requires active synchronous model execution and uses its resolution and limits, without mesh
|
|
1618
|
+
* buffers or native objects. Returned thread estimates cover the cutter, excluding the body and
|
|
1619
|
+
* Boolean result. Mesh validity, native construction, and aggregate output limits are checked later.
|
|
1620
|
+
*
|
|
1621
|
+
* @see {@link threadedNut}
|
|
1622
|
+
*/
|
|
1287
1623
|
export declare function preflightThreadedNut(
|
|
1288
1624
|
options: ThreadedNutOptions,
|
|
1289
1625
|
): ThreadedNutPreflight;
|
|
1290
1626
|
|
|
1291
|
-
/**
|
|
1627
|
+
/**
|
|
1628
|
+
* Checks compensated rod dimensions and conservative mesh estimates against host output limits.
|
|
1629
|
+
*
|
|
1630
|
+
* Requires active synchronous model execution and uses its resolution and limits. Returns selected
|
|
1631
|
+
* sampling and conservative row/triangle estimates without mesh buffers or native objects.
|
|
1632
|
+
* Mesh validity, native construction, and aggregate output limits are checked later.
|
|
1633
|
+
*
|
|
1634
|
+
* @see {@link threadedRod}
|
|
1635
|
+
*/
|
|
1292
1636
|
export declare function preflightThreadedRod(
|
|
1293
1637
|
options: ThreadedRodOptions,
|
|
1294
1638
|
): HelicalThreadSolidMeshPreflight;
|
|
1295
1639
|
|
|
1296
|
-
/**
|
|
1297
|
-
export declare interface
|
|
1298
|
-
/** Applied after local construction; Section
|
|
1299
|
-
readonly
|
|
1640
|
+
/** Anchor attachment shared by solid and filled-section factories. */
|
|
1641
|
+
export declare interface PrimitiveAttachment {
|
|
1642
|
+
/** Applied after local construction; Section attachment must preserve the XY plane. */
|
|
1643
|
+
readonly attachment?: PrimitiveAttachmentOptions;
|
|
1300
1644
|
}
|
|
1301
1645
|
|
|
1302
1646
|
/** Maps an explicit or named shape-local attachment anchor onto a world-space anchor. */
|
|
1303
|
-
export declare interface
|
|
1647
|
+
export declare interface PrimitiveAttachmentOptions extends AttachOptions {
|
|
1304
1648
|
/** Shape-local source frame or a named primitive anchor such as bottom. */
|
|
1305
1649
|
readonly source: Anchor3 | string;
|
|
1306
1650
|
/** World-space target frame in millimetres. */
|
|
1307
1651
|
readonly target: Anchor3;
|
|
1308
|
-
/** Align outward directions face-to-face or in parallel. Defaults to opposed. */
|
|
1309
|
-
readonly alignment?: "opposed" | "same";
|
|
1310
|
-
/** Finite separation along the target direction in millimetres. Defaults to zero. */
|
|
1311
|
-
readonly gap?: number;
|
|
1312
|
-
/** Finite additional roll around the attached direction in degrees. Defaults to zero. */
|
|
1313
|
-
readonly spinDegrees?: number;
|
|
1314
|
-
/** Explicit numeric comparison overrides for anchor normalization. */
|
|
1315
|
-
readonly tolerance?: GeometryToleranceOptions;
|
|
1316
1652
|
}
|
|
1317
1653
|
|
|
1318
1654
|
/**
|
|
@@ -1336,7 +1672,13 @@ export declare interface PrintableThreadFitPolicy {
|
|
|
1336
1672
|
readonly maleRadialInset: number;
|
|
1337
1673
|
}
|
|
1338
1674
|
|
|
1339
|
-
/**
|
|
1675
|
+
/**
|
|
1676
|
+
* An explicit component/contour/span topology, before shared family sampling with matchProfiles.
|
|
1677
|
+
* Component, contour and span identities establish correspondence across a loft or sweep family.
|
|
1678
|
+
*
|
|
1679
|
+
* @see {@link CorrespondingProfile}
|
|
1680
|
+
* @see {@link matchProfiles}
|
|
1681
|
+
*/
|
|
1340
1682
|
export declare interface Profile {
|
|
1341
1683
|
/** Ordered components with explicit contour identities. */
|
|
1342
1684
|
readonly components: readonly ProfileComponent2[];
|
|
@@ -1352,7 +1694,13 @@ export declare interface ProfileComponent2 {
|
|
|
1352
1694
|
readonly holes: readonly ProfileContour2[];
|
|
1353
1695
|
}
|
|
1354
1696
|
|
|
1355
|
-
/**
|
|
1697
|
+
/**
|
|
1698
|
+
* An identified closed boundary of curve spans, before shared family sampling.
|
|
1699
|
+
* Outer winding is CCW and hole winding is CW. matchProfiles retains span identities in sampled contours.
|
|
1700
|
+
*
|
|
1701
|
+
* @see {@link Contour} for sampled point coordinates.
|
|
1702
|
+
* @see {@link CorrespondingContour} for sampled coordinates with correspondence metadata.
|
|
1703
|
+
*/
|
|
1356
1704
|
export declare interface ProfileContour2 {
|
|
1357
1705
|
/** Stable canonical lowercase identity; unique within the containing topology or output. */
|
|
1358
1706
|
readonly id: string;
|
|
@@ -1369,7 +1717,7 @@ export declare interface ProfiledEdgeTreatment {
|
|
|
1369
1717
|
* First coordinates decrease and second coordinates increase. Cylinder/extrusion ends use
|
|
1370
1718
|
* cap inset first, side setback second; planar corners use incoming then outgoing edges.
|
|
1371
1719
|
*/
|
|
1372
|
-
readonly profile: readonly
|
|
1720
|
+
readonly profile: readonly Vector2Data[];
|
|
1373
1721
|
}
|
|
1374
1722
|
|
|
1375
1723
|
/** An identified line, circular arc, or cubic Bézier between corresponding landmarks. */
|
|
@@ -1385,33 +1733,33 @@ export declare type ProfileSpan2 = {
|
|
|
1385
1733
|
/** Selects a straight span. */
|
|
1386
1734
|
readonly kind: "line";
|
|
1387
1735
|
/** Start point in millimetres. */
|
|
1388
|
-
readonly start:
|
|
1736
|
+
readonly start: Vector2Data;
|
|
1389
1737
|
/** End point in millimetres. */
|
|
1390
|
-
readonly end:
|
|
1738
|
+
readonly end: Vector2Data;
|
|
1391
1739
|
}
|
|
1392
1740
|
| {
|
|
1393
1741
|
/** Selects the geometric curve or span family. */
|
|
1394
1742
|
readonly kind: "arc";
|
|
1395
1743
|
/** Center point in millimetres. */
|
|
1396
|
-
readonly center:
|
|
1744
|
+
readonly center: Vector2Data;
|
|
1397
1745
|
/** Circular radius in millimetres. */
|
|
1398
1746
|
readonly radius: number;
|
|
1399
1747
|
/** Initial counterclockwise angle in degrees. */
|
|
1400
|
-
readonly
|
|
1748
|
+
readonly startAngle: number;
|
|
1401
1749
|
/** Signed counterclockwise angular sweep in degrees. */
|
|
1402
|
-
readonly
|
|
1750
|
+
readonly sweepAngle: number;
|
|
1403
1751
|
}
|
|
1404
1752
|
| {
|
|
1405
1753
|
/** Selects a cubic Bézier span with the same coordinates as CubicBezierCurve2. */
|
|
1406
1754
|
readonly kind: "cubic";
|
|
1407
1755
|
/** Start point in millimetres. */
|
|
1408
|
-
readonly start:
|
|
1756
|
+
readonly start: Vector2Data;
|
|
1409
1757
|
/** First control point in millimetres. */
|
|
1410
|
-
readonly control1:
|
|
1758
|
+
readonly control1: Vector2Data;
|
|
1411
1759
|
/** Second control point in millimetres. */
|
|
1412
|
-
readonly control2:
|
|
1760
|
+
readonly control2: Vector2Data;
|
|
1413
1761
|
/** End point in millimetres. */
|
|
1414
|
-
readonly end:
|
|
1762
|
+
readonly end: Vector2Data;
|
|
1415
1763
|
}
|
|
1416
1764
|
);
|
|
1417
1765
|
|
|
@@ -1421,7 +1769,7 @@ export declare type ProfileSpan2 = {
|
|
|
1421
1769
|
* @example Six copies around Z
|
|
1422
1770
|
* ```ts
|
|
1423
1771
|
* const pin = cylinder({ height: 6, radius: 2 }).translate([12, 0, 0]);
|
|
1424
|
-
* radialPattern(pin, { count: 6, axis: [0, 0, 1],
|
|
1772
|
+
* radialPattern(pin, { count: 6, axis: [0, 0, 1], angle: 60 });
|
|
1425
1773
|
* ```
|
|
1426
1774
|
*/
|
|
1427
1775
|
export declare function radialPattern(
|
|
@@ -1429,25 +1777,31 @@ export declare function radialPattern(
|
|
|
1429
1777
|
options: RadialPatternOptions,
|
|
1430
1778
|
): readonly Solid[];
|
|
1431
1779
|
|
|
1432
|
-
/** Repeats a filled Section about
|
|
1780
|
+
/** Repeats a filled Section counterclockwise about a fixed XY pivot, using the implicit +Z axis. */
|
|
1433
1781
|
export declare function radialPattern(
|
|
1434
1782
|
source: PatternSource<Section>,
|
|
1435
|
-
options: RadialPatternOptions
|
|
1783
|
+
options: RadialPatternOptions<2>,
|
|
1436
1784
|
): readonly Section[];
|
|
1437
1785
|
|
|
1438
1786
|
/**
|
|
1439
|
-
*
|
|
1787
|
+
* Degree rotations about a fixed world-space pivot; XY patterns use the implicit +Z axis.
|
|
1440
1788
|
*/
|
|
1441
|
-
export declare
|
|
1442
|
-
/** Number of
|
|
1789
|
+
export declare type RadialPatternOptions<Dimension extends 2 | 3 = 3> = {
|
|
1790
|
+
/** Number of shapes to return, including the original. */
|
|
1443
1791
|
readonly count: number;
|
|
1444
|
-
/** Axis of the right-handed rotation. Its magnitude is ignored. */
|
|
1445
|
-
readonly axis: Vector3Tuple;
|
|
1446
1792
|
/** Signed rotation from one copy to the next, in degrees. */
|
|
1447
|
-
readonly
|
|
1448
|
-
/**
|
|
1449
|
-
readonly
|
|
1450
|
-
}
|
|
1793
|
+
readonly angle: number;
|
|
1794
|
+
/** Fixed world-space rotation pivot; defaults to the coordinate origin. */
|
|
1795
|
+
readonly pivot?: Dimension extends 2 ? Vector2Input : Vector3Input;
|
|
1796
|
+
} & (Dimension extends 2
|
|
1797
|
+
? {
|
|
1798
|
+
/** XY rotation uses +Z; an explicit spatial axis is unavailable. */
|
|
1799
|
+
readonly axis?: never;
|
|
1800
|
+
}
|
|
1801
|
+
: {
|
|
1802
|
+
/** Axis of the right-handed rotation. Its nonzero magnitude is ignored. */
|
|
1803
|
+
readonly axis: Vector3Input;
|
|
1804
|
+
});
|
|
1451
1805
|
|
|
1452
1806
|
/** Radial dimensions refer to polygon vertices or compensate faceting to meet polygon faces. */
|
|
1453
1807
|
export declare type RadialSizing = "vertex" | "face";
|
|
@@ -1462,16 +1816,12 @@ export declare interface RadialSizingOptions {
|
|
|
1462
1816
|
readonly sizing?: RadialSizing;
|
|
1463
1817
|
}
|
|
1464
1818
|
|
|
1465
|
-
/** Copies intersections along the finite directed origin-to-endpoint segment. */
|
|
1466
|
-
export declare function rayCast(
|
|
1467
|
-
solid: Solid,
|
|
1468
|
-
origin: Vector3Tuple,
|
|
1469
|
-
endpoint: Vector3Tuple,
|
|
1470
|
-
): readonly SolidRayHit[];
|
|
1471
|
-
|
|
1472
1819
|
/**
|
|
1473
1820
|
* Filled rectangular section with uniform or independently treated corners.
|
|
1474
1821
|
*
|
|
1822
|
+
* Use [rectangleContour](/docs/reference/geometry/rectangleContour) for sampled boundary coordinates,
|
|
1823
|
+
* or [rectangleProfile](/docs/reference/geometry/rectangleProfile) to retain identified loft landmarks.
|
|
1824
|
+
*
|
|
1475
1825
|
* @example Round the corners
|
|
1476
1826
|
* ```ts
|
|
1477
1827
|
* rectangle({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
|
|
@@ -1484,7 +1834,7 @@ export declare function rectangle(options: RectangleOptions): Section;
|
|
|
1484
1834
|
*/
|
|
1485
1835
|
export declare interface RectangleContourOptions {
|
|
1486
1836
|
/** Positive uniform size or explicit XY extents in millimetres. */
|
|
1487
|
-
readonly size: number |
|
|
1837
|
+
readonly size: number | Vector2Data;
|
|
1488
1838
|
/** Center on XY; otherwise the minimum corner is the origin. Defaults to true. */
|
|
1489
1839
|
readonly center?: boolean;
|
|
1490
1840
|
/** Uniform treatment or four corner treatments. Exact round segments describe a complete circle and must divide by four. */
|
|
@@ -1513,9 +1863,14 @@ export declare type RectangleCornerTreatments = readonly [
|
|
|
1513
1863
|
* Rectangle dimensions, placement and uniform or per-corner treatment.
|
|
1514
1864
|
*/
|
|
1515
1865
|
export declare interface RectangleOptions
|
|
1516
|
-
extends RectangleContourOptions,
|
|
1866
|
+
extends RectangleContourOptions, PrimitiveAttachment {}
|
|
1517
1867
|
|
|
1518
|
-
/**
|
|
1868
|
+
/**
|
|
1869
|
+
* A two-dimensional region represented by disjoint filled polygons.
|
|
1870
|
+
* Each PolygonData owns one exterior and its holes; an empty region contains no material.
|
|
1871
|
+
*
|
|
1872
|
+
* @see {@link PolygonData}
|
|
1873
|
+
*/
|
|
1519
1874
|
export declare type RegionData = readonly PolygonData[];
|
|
1520
1875
|
|
|
1521
1876
|
/**
|
|
@@ -1532,13 +1887,13 @@ export declare function regularPolygon(options: RegularPolygonOptions): Section;
|
|
|
1532
1887
|
* Regular polygon dimensions, radial convention and degree rotation.
|
|
1533
1888
|
*/
|
|
1534
1889
|
export declare type RegularPolygonOptions = RadialSizingOptions &
|
|
1535
|
-
|
|
1890
|
+
PrimitiveAttachment & {
|
|
1536
1891
|
/** Positive nominal radius in millimetres, interpreted according to sizing. */
|
|
1537
1892
|
readonly radius: number;
|
|
1538
1893
|
/** Exact integer side count from three through 100000. */
|
|
1539
1894
|
readonly sides: number;
|
|
1540
1895
|
/** Counterclockwise rotation in degrees; defaults to zero with a vertex on +X. */
|
|
1541
|
-
readonly
|
|
1896
|
+
readonly rotation?: number;
|
|
1542
1897
|
};
|
|
1543
1898
|
|
|
1544
1899
|
/**
|
|
@@ -1552,7 +1907,7 @@ export declare type RegularPolygonOptions = RadialSizingOptions &
|
|
|
1552
1907
|
*
|
|
1553
1908
|
* // Contour coordinates are [radius, Z].
|
|
1554
1909
|
* const [profile] = matchProfiles([rectangleProfile({ size: [4, 16], center: false })]);
|
|
1555
|
-
* revolve(profile!, {
|
|
1910
|
+
* revolve(profile!, { degrees: 270 });
|
|
1556
1911
|
* ```
|
|
1557
1912
|
*/
|
|
1558
1913
|
export declare function revolve(
|
|
@@ -1565,12 +1920,14 @@ export declare function revolve(
|
|
|
1565
1920
|
*/
|
|
1566
1921
|
export declare interface RevolveOptions extends CircularPrimitiveOptions {
|
|
1567
1922
|
/**
|
|
1568
|
-
* Positive
|
|
1923
|
+
* Positive sweep in degrees, no greater than 360. Defaults to a full revolution;
|
|
1924
|
+
* smaller sweeps form partial revolutions with end caps.
|
|
1569
1925
|
* Segment counts describe a complete circle and scale to this angular span. Native filled
|
|
1570
1926
|
* revolutions require at least three sweep intervals: adaptive sampling refines to that floor,
|
|
1571
1927
|
* while exact counts that imply fewer intervals reject. Pure revolveMesh supports one interval.
|
|
1928
|
+
* @defaultValue `360`
|
|
1572
1929
|
*/
|
|
1573
|
-
readonly
|
|
1930
|
+
readonly degrees?: number;
|
|
1574
1931
|
/** Explicit output and sampling allocation ceilings. */
|
|
1575
1932
|
readonly limits?: Partial<ModelingLimits>;
|
|
1576
1933
|
}
|
|
@@ -1586,7 +1943,9 @@ export declare interface RoundedEdgeTreatment extends CircularPrimitiveOptions {
|
|
|
1586
1943
|
}
|
|
1587
1944
|
|
|
1588
1945
|
/**
|
|
1589
|
-
* Immutable deferred filled XY section recipe.
|
|
1946
|
+
* Immutable deferred filled XY section recipe.
|
|
1947
|
+
*
|
|
1948
|
+
* Construction and composition require no engine.
|
|
1590
1949
|
* Ordinary recipes may be reused across sessions regardless of where constructed.
|
|
1591
1950
|
* Observed components and recipes using them can only be evaluated in their originating session.
|
|
1592
1951
|
* Methods leave the source unchanged; observations require a synchronous model execution.
|
|
@@ -1661,11 +2020,7 @@ export declare interface Section {
|
|
|
1661
2020
|
/**
|
|
1662
2021
|
* Sweeps this filled section using the selected frame policy and degree twist.
|
|
1663
2022
|
*/
|
|
1664
|
-
sweep(
|
|
1665
|
-
this: Section,
|
|
1666
|
-
path: readonly Vector3Tuple[],
|
|
1667
|
-
options?: SweepOptions,
|
|
1668
|
-
): Solid;
|
|
2023
|
+
sweep(this: Section, path: Path3Input, options?: SweepOptions): Solid;
|
|
1669
2024
|
}
|
|
1670
2025
|
|
|
1671
2026
|
declare const sectionBrand: unique symbol;
|
|
@@ -1674,7 +2029,7 @@ declare const sectionBrand: unique symbol;
|
|
|
1674
2029
|
export declare type SectionHullOptions =
|
|
1675
2030
|
| {
|
|
1676
2031
|
/** At least three finite millimetre XY points spanning positive area. */
|
|
1677
|
-
readonly points: readonly
|
|
2032
|
+
readonly points: readonly Vector2Input[];
|
|
1678
2033
|
/** Point input excludes section input. */
|
|
1679
2034
|
readonly sections?: never;
|
|
1680
2035
|
}
|
|
@@ -1695,15 +2050,15 @@ export declare interface SectionInspection {
|
|
|
1695
2050
|
/** Filled section area in square millimetres. */
|
|
1696
2051
|
readonly area: number;
|
|
1697
2052
|
/** Number of extracted outer and hole contours. */
|
|
1698
|
-
readonly
|
|
2053
|
+
readonly contourCount: number;
|
|
1699
2054
|
/** Inclusive maximum coordinates in millimetres. */
|
|
1700
|
-
readonly max:
|
|
2055
|
+
readonly max: Vector2Data;
|
|
1701
2056
|
/** Inclusive minimum coordinates in millimetres. */
|
|
1702
|
-
readonly min:
|
|
2057
|
+
readonly min: Vector2Data;
|
|
1703
2058
|
/** Number of disconnected filled section components. */
|
|
1704
|
-
readonly
|
|
2059
|
+
readonly componentCount: number;
|
|
1705
2060
|
/** Number of native section vertices. */
|
|
1706
|
-
readonly
|
|
2061
|
+
readonly vertexCount: number;
|
|
1707
2062
|
}
|
|
1708
2063
|
|
|
1709
2064
|
/** Clipper2 join styles accepted by robust region offsets. */
|
|
@@ -1736,7 +2091,9 @@ export declare interface SmoothEdgeTreatment {
|
|
|
1736
2091
|
}
|
|
1737
2092
|
|
|
1738
2093
|
/**
|
|
1739
|
-
* Immutable deferred solid recipe.
|
|
2094
|
+
* Immutable deferred solid recipe.
|
|
2095
|
+
*
|
|
2096
|
+
* Construction and composition require no engine.
|
|
1740
2097
|
* Ordinary recipes may be reused across sessions regardless of where constructed.
|
|
1741
2098
|
* Explicit resolution settings are captured; unspecified settings inherit the evaluating host's defaults.
|
|
1742
2099
|
* Observed components and recipes using them can only be evaluated in their originating session.
|
|
@@ -1777,6 +2134,8 @@ export declare interface Solid {
|
|
|
1777
2134
|
mirror(this: Solid, normal: Vector3Input): Solid;
|
|
1778
2135
|
/** Applies a reusable XYZ placement or canonical row-major matrix. */
|
|
1779
2136
|
transform(this: Solid, placement: Transform3Input): Solid;
|
|
2137
|
+
/** Copies manufacturing mesh buffers for interchange; requires an active model execution. */
|
|
2138
|
+
toTriangleMesh(this: Solid): TriangleMesh;
|
|
1780
2139
|
/**
|
|
1781
2140
|
* Robust difference; an empty cutter array preserves the source.
|
|
1782
2141
|
*/
|
|
@@ -1801,8 +2160,8 @@ export declare interface Solid {
|
|
|
1801
2160
|
target: Anchor3,
|
|
1802
2161
|
options?: AttachOptions,
|
|
1803
2162
|
): Solid;
|
|
1804
|
-
/**
|
|
1805
|
-
|
|
2163
|
+
/** Returns an immutable copy with this native tolerance; zero selects the kernel minimum. */
|
|
2164
|
+
withTolerance(this: Solid, tolerance: number): Solid;
|
|
1806
2165
|
/** Projects this solid into a filled XY section. */
|
|
1807
2166
|
projectSection(this: Solid): Section;
|
|
1808
2167
|
/** Takes a filled horizontal slice at Z millimetres. */
|
|
@@ -1835,11 +2194,11 @@ export declare interface SolidInspection {
|
|
|
1835
2194
|
/** Whether this native solid contains no material. */
|
|
1836
2195
|
readonly isEmpty: boolean;
|
|
1837
2196
|
/** Inclusive maximum coordinates in millimetres. */
|
|
1838
|
-
readonly max:
|
|
2197
|
+
readonly max: Vector3Data;
|
|
1839
2198
|
/** Inclusive minimum coordinates in millimetres. */
|
|
1840
|
-
readonly min:
|
|
1841
|
-
/** Number of
|
|
1842
|
-
readonly
|
|
2199
|
+
readonly min: Vector3Data;
|
|
2200
|
+
/** Number of disconnected material components, each retaining enclosed cavities. */
|
|
2201
|
+
readonly componentCount: number;
|
|
1843
2202
|
/** Enclosed native solid volume in cubic millimetres. */
|
|
1844
2203
|
readonly volume: number;
|
|
1845
2204
|
/** Total native surface area in square millimetres. */
|
|
@@ -1849,15 +2208,15 @@ export declare interface SolidInspection {
|
|
|
1849
2208
|
}
|
|
1850
2209
|
|
|
1851
2210
|
/** Copied surface intersection from a finite directed segment. Distance is in millimetres. */
|
|
1852
|
-
export declare interface
|
|
2211
|
+
export declare interface SolidSegmentHit {
|
|
1853
2212
|
/** Copied numeric native face identity. */
|
|
1854
2213
|
readonly faceId: number;
|
|
1855
|
-
/** Distance from the
|
|
2214
|
+
/** Distance from the segment origin in millimetres. */
|
|
1856
2215
|
readonly distance: number;
|
|
1857
2216
|
/** Intersection position in millimetres. */
|
|
1858
|
-
readonly position:
|
|
2217
|
+
readonly position: Vector3Data;
|
|
1859
2218
|
/** Outward unit surface normal at the intersection. */
|
|
1860
|
-
readonly normal:
|
|
2219
|
+
readonly normal: Vector3Data;
|
|
1861
2220
|
}
|
|
1862
2221
|
|
|
1863
2222
|
/**
|
|
@@ -1874,7 +2233,7 @@ export declare function sphere(options: SphereOptions): Solid;
|
|
|
1874
2233
|
* Exactly one radius or diameter, placement, and tessellation for an origin-centered sphere.
|
|
1875
2234
|
*/
|
|
1876
2235
|
export declare type SphereOptions = CircularPrimitiveOptions &
|
|
1877
|
-
|
|
2236
|
+
PrimitiveAttachment &
|
|
1878
2237
|
(
|
|
1879
2238
|
| {
|
|
1880
2239
|
/** Positive radius in millimetres; mutually exclusive with diameter. */
|
|
@@ -1960,7 +2319,7 @@ export declare function star(options: StarOptions): Section;
|
|
|
1960
2319
|
/**
|
|
1961
2320
|
* Alternating outer and inner vertices, centered on the XY origin.
|
|
1962
2321
|
*/
|
|
1963
|
-
export declare interface StarOptions extends
|
|
2322
|
+
export declare interface StarOptions extends PrimitiveAttachment {
|
|
1964
2323
|
/** Explicit sampling ceilings, bounded by the host policy. */
|
|
1965
2324
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1966
2325
|
/** Positive outer vertex radius in millimetres. */
|
|
@@ -1970,13 +2329,13 @@ export declare interface StarOptions extends PrimitivePlacement {
|
|
|
1970
2329
|
/** Integer outer point count from three through 50000. */
|
|
1971
2330
|
readonly points: number;
|
|
1972
2331
|
/** Initial counterclockwise rotation in degrees; defaults to zero. */
|
|
1973
|
-
readonly
|
|
2332
|
+
readonly rotation?: number;
|
|
1974
2333
|
}
|
|
1975
2334
|
|
|
1976
2335
|
/**
|
|
1977
2336
|
* Creates a centered-width native Section along a sampled XY path.
|
|
1978
2337
|
*
|
|
1979
|
-
* Shares caps, joins and physical sampling with Geometry's
|
|
2338
|
+
* Shares caps, joins and physical sampling with Geometry's strokeRegionData. Native union
|
|
1980
2339
|
* resolves overlapping stroke primitives. Session resolution and resource ceilings apply;
|
|
1981
2340
|
* closed paths omit the duplicated seam. Returns an immutable deferred recipe.
|
|
1982
2341
|
*
|
|
@@ -1985,30 +2344,33 @@ export declare interface StarOptions extends PrimitivePlacement {
|
|
|
1985
2344
|
* stroke([[0, 0], [20, 0], [20, 10]], { width: 3, join: "round", cap: "round" }).extrude({ height: 2 });
|
|
1986
2345
|
* ```
|
|
1987
2346
|
*/
|
|
1988
|
-
export declare function stroke(
|
|
2347
|
+
export declare function stroke(
|
|
2348
|
+
path: Path2Input,
|
|
2349
|
+
options: StrokeOptions,
|
|
2350
|
+
): Section;
|
|
2351
|
+
|
|
2352
|
+
/** End-cap treatment for an open stroked path. */
|
|
2353
|
+
export declare type StrokeCap = "butt" | "round" | "square";
|
|
2354
|
+
|
|
2355
|
+
/** Join treatment where adjacent stroked path segments meet. */
|
|
2356
|
+
export declare type StrokeJoin = "bevel" | "miter" | "round";
|
|
1989
2357
|
|
|
1990
2358
|
/** Physical stroke and topology controls shared by pure regions and native Sections. */
|
|
1991
2359
|
export declare interface StrokeOptions {
|
|
1992
2360
|
/** Explicit path, circular and expanded-profile allocation ceilings. */
|
|
1993
2361
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
1994
|
-
/**
|
|
2362
|
+
/** Raw point closure defaults to false; a Path2 supplies its closure and rejects conflicts. */
|
|
1995
2363
|
readonly closed?: boolean;
|
|
1996
2364
|
/** End-cap treatment for an open path. Ignored for closed paths. Default: `butt`. */
|
|
1997
|
-
readonly cap?:
|
|
2365
|
+
readonly cap?: StrokeCap;
|
|
1998
2366
|
/** Corner treatment; miters exceeding SVG's default limit of 4 become bevels. Default: `miter`. */
|
|
1999
|
-
readonly join?:
|
|
2367
|
+
readonly join?: StrokeJoin;
|
|
2000
2368
|
/** Physical tessellation policy for round caps and joins. */
|
|
2001
2369
|
readonly resolution?: GeometryResolution;
|
|
2002
2370
|
/** Positive total stroke width in millimetres, centered on the sampled path. */
|
|
2003
2371
|
readonly width: number;
|
|
2004
2372
|
}
|
|
2005
2373
|
|
|
2006
|
-
/** End-cap treatment for an open stroked path. */
|
|
2007
|
-
export declare type StrokePathCap = "butt" | "round" | "square";
|
|
2008
|
-
|
|
2009
|
-
/** Join treatment where adjacent stroked path segments meet. */
|
|
2010
|
-
export declare type StrokePathJoin = "bevel" | "miter" | "round";
|
|
2011
|
-
|
|
2012
2374
|
/** Placement of painted SVG geometry after SVG Y-axis inversion. */
|
|
2013
2375
|
export declare type SvgOrigin = "center" | "document";
|
|
2014
2376
|
|
|
@@ -2086,7 +2448,7 @@ export declare interface SvgSectionOptions {
|
|
|
2086
2448
|
*/
|
|
2087
2449
|
export declare function sweep(
|
|
2088
2450
|
shape: CorrespondingProfile,
|
|
2089
|
-
path:
|
|
2451
|
+
path: Path3Input,
|
|
2090
2452
|
options?: SweepOptions,
|
|
2091
2453
|
): Solid;
|
|
2092
2454
|
|
|
@@ -2094,7 +2456,7 @@ export declare function sweep(
|
|
|
2094
2456
|
* Controls shared by pure mesh construction and filled modeling sweeps.
|
|
2095
2457
|
*/
|
|
2096
2458
|
export declare interface SweepOptions {
|
|
2097
|
-
/**
|
|
2459
|
+
/** Raw point closure defaults to false; a Path3 supplies its closure and rejects conflicts. */
|
|
2098
2460
|
readonly closed?: boolean;
|
|
2099
2461
|
/** Explicit output and sampling allocation ceilings. */
|
|
2100
2462
|
readonly limits?: Partial<ModelingLimits>;
|
|
@@ -2103,11 +2465,11 @@ export declare interface SweepOptions {
|
|
|
2103
2465
|
/** Physical sampling of nonzero twist; inserted stations retain authored station controls. */
|
|
2104
2466
|
readonly resolution?: GeometryResolution;
|
|
2105
2467
|
/** Total additional profile rotation in degrees, with progression selected by twistBy. */
|
|
2106
|
-
readonly
|
|
2468
|
+
readonly twist?: number;
|
|
2107
2469
|
/** Twist advances by physical path length (default), or normalized authored station position, including a closed seam gap. */
|
|
2108
2470
|
readonly twistBy?: "length" | "stations";
|
|
2109
2471
|
/** Positive uniform/XY scale, or one XY pair per path station. Defaults to one. */
|
|
2110
|
-
readonly scale?: number |
|
|
2472
|
+
readonly scale?: number | Vector2Input | readonly Vector2Input[];
|
|
2111
2473
|
/** Corresponding point-index advance at a rotationally equivalent closed seam. */
|
|
2112
2474
|
readonly seamProfileOffset?: number;
|
|
2113
2475
|
}
|
|
@@ -2120,13 +2482,13 @@ export declare type SweepOrientation =
|
|
|
2120
2482
|
/** Minimizes frame rotation by parallel transport. */
|
|
2121
2483
|
readonly kind: "transport";
|
|
2122
2484
|
/** Initial profile +X guide, projected perpendicular to the first tangent. */
|
|
2123
|
-
readonly initialNormal?:
|
|
2485
|
+
readonly initialNormal?: Vector3Input;
|
|
2124
2486
|
}
|
|
2125
2487
|
| {
|
|
2126
2488
|
/** Projects one fixed world-space normal at every path station. */
|
|
2127
2489
|
readonly kind: "fixed-normal";
|
|
2128
2490
|
/** Directed profile +X guide; must not be parallel to any local tangent. */
|
|
2129
|
-
readonly normal:
|
|
2491
|
+
readonly normal: Vector3Input;
|
|
2130
2492
|
}
|
|
2131
2493
|
| {
|
|
2132
2494
|
/** Uses an explicitly directed normal callback at each original normalized station. */
|
|
@@ -2184,9 +2546,9 @@ declare interface ThreadBevelOptions {
|
|
|
2184
2546
|
* @example Threaded nut
|
|
2185
2547
|
* ```ts
|
|
2186
2548
|
* import { threadedNut } from "@metamesh/modeling";
|
|
2187
|
-
* import {
|
|
2549
|
+
* import { threadProfile } from "@metamesh/modeling/geometry";
|
|
2188
2550
|
*
|
|
2189
|
-
* const profile =
|
|
2551
|
+
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
2190
2552
|
* threadedNut({ nominalMajorDiameter: 12, thickness: 8, width: 20, shape: "hex", profile, fit: "normal" });
|
|
2191
2553
|
* ```
|
|
2192
2554
|
*/
|
|
@@ -2219,7 +2581,7 @@ export declare interface ThreadedNutOptions extends Omit<
|
|
|
2219
2581
|
readonly width: number;
|
|
2220
2582
|
}
|
|
2221
2583
|
|
|
2222
|
-
/**
|
|
2584
|
+
/** Resolved body and end-face dimensions plus conservative allocation estimates for the thread cutter. */
|
|
2223
2585
|
export declare interface ThreadedNutPreflight {
|
|
2224
2586
|
/** Polygon segment count used by the nut body. */
|
|
2225
2587
|
readonly bodySegments: number;
|
|
@@ -2231,7 +2593,7 @@ export declare interface ThreadedNutPreflight {
|
|
|
2231
2593
|
readonly minimumBodyFaceInradius: number;
|
|
2232
2594
|
/** Smallest radial wall left between the body and cutter at either requested face. */
|
|
2233
2595
|
readonly minimumFaceWall: number;
|
|
2234
|
-
/** Conservative allocation
|
|
2596
|
+
/** Conservative allocation estimates for the extended cutter; excludes the body and Boolean result. */
|
|
2235
2597
|
readonly thread: HelicalThreadSolidMeshPreflight;
|
|
2236
2598
|
/** Start-aligned circular facet count used by the compensated thread cutter. */
|
|
2237
2599
|
readonly threadCircularSegments: number;
|
|
@@ -2248,9 +2610,9 @@ export declare type ThreadedNutShape = "hex" | "round" | "square";
|
|
|
2248
2610
|
* @example Threaded rod
|
|
2249
2611
|
* ```ts
|
|
2250
2612
|
* import { threadedRod } from "@metamesh/modeling";
|
|
2251
|
-
* import {
|
|
2613
|
+
* import { threadProfile } from "@metamesh/modeling/geometry";
|
|
2252
2614
|
*
|
|
2253
|
-
* const profile =
|
|
2615
|
+
* const profile = threadProfile({ kind: "triangular", pitch: 1.75 });
|
|
2254
2616
|
* threadedRod({ nominalMajorDiameter: 12, length: 24, profile, fit: "normal" });
|
|
2255
2617
|
* ```
|
|
2256
2618
|
*/
|
|
@@ -2333,7 +2695,7 @@ export declare interface ThreadProfile {
|
|
|
2333
2695
|
/** Adjacent axial thread spacing in millimetres. */
|
|
2334
2696
|
readonly pitch: number;
|
|
2335
2697
|
/** Immutable open `[axial, radial]` path spanning one pitch. */
|
|
2336
|
-
readonly points: readonly
|
|
2698
|
+
readonly points: readonly Vector2Data[];
|
|
2337
2699
|
/** Axial width of the flat at the minor envelope. */
|
|
2338
2700
|
readonly rootFlatWidth: number;
|
|
2339
2701
|
}
|
|
@@ -2376,7 +2738,7 @@ export declare function torus(options: TorusOptions): Solid;
|
|
|
2376
2738
|
/**
|
|
2377
2739
|
* Dimensions and independent ring/profile tessellation for a torus around the Z axis.
|
|
2378
2740
|
*/
|
|
2379
|
-
export declare interface TorusOptions extends
|
|
2741
|
+
export declare interface TorusOptions extends PrimitiveAttachment {
|
|
2380
2742
|
/** Explicit sampling ceilings, bounded by the host policy. */
|
|
2381
2743
|
readonly limits?: Partial<GeometrySamplingLimits>;
|
|
2382
2744
|
/** Radius from the Z axis to the profile center, in millimetres; greater than `minorRadius`. */
|
|
@@ -2391,9 +2753,6 @@ export declare interface TorusOptions extends PrimitivePlacement {
|
|
|
2391
2753
|
readonly resolution?: GeometryResolution;
|
|
2392
2754
|
}
|
|
2393
2755
|
|
|
2394
|
-
/** Copies a handle to manufacturing mesh buffers. */
|
|
2395
|
-
export declare function toTriangleMesh(solid: Solid): TriangleMesh;
|
|
2396
|
-
|
|
2397
2756
|
/** Immutable reusable XY placement. Methods apply in written order; angles are degrees. */
|
|
2398
2757
|
export declare interface Transform2 {
|
|
2399
2758
|
/** Applies a translation in model units after this placement. */
|
|
@@ -2413,32 +2772,33 @@ export declare interface Transform2 {
|
|
|
2413
2772
|
/** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
|
|
2414
2773
|
applyNormal(normal: Vector2Input): Vector2;
|
|
2415
2774
|
/** Returns the frozen canonical row-major 3x3 matrix for interchange. */
|
|
2416
|
-
|
|
2775
|
+
toData(): Transform2Data;
|
|
2417
2776
|
/** Embeds this placement in XYZ, leaving Z unchanged, for solids and 3D paths. */
|
|
2418
2777
|
to3D(): Transform3;
|
|
2419
2778
|
}
|
|
2420
2779
|
|
|
2421
2780
|
/**
|
|
2422
|
-
* Creates an immutable XY transform, identity by default.
|
|
2781
|
+
* Creates an immutable XY transform, identity by default.
|
|
2782
|
+
*
|
|
2783
|
+
* Values and data are copied and validated.
|
|
2423
2784
|
* Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ.
|
|
2424
2785
|
* Zero scales and singular matrices throw GeometryError; negative scales reflect.
|
|
2425
2786
|
*
|
|
2787
|
+
* Use `toData()` for frozen matrix interchange.
|
|
2788
|
+
*
|
|
2426
2789
|
* @example
|
|
2427
2790
|
* ```ts
|
|
2428
2791
|
* const placement = transform2().rotate(90).translate([10, 0]);
|
|
2429
|
-
* placement.applyPoint([1, 0]).
|
|
2792
|
+
* placement.applyPoint([1, 0]).toData(); // approximately [10, 1]
|
|
2430
2793
|
* ```
|
|
2431
2794
|
*/
|
|
2432
|
-
export declare function transform2(
|
|
2433
|
-
|
|
2434
|
-
/** An immutable XY transform or its canonical row-major matrix for interchange. */
|
|
2435
|
-
export declare type Transform2Input = Transform2 | Transform2Matrix;
|
|
2795
|
+
export declare function transform2(input?: Transform2Input): Transform2;
|
|
2436
2796
|
|
|
2437
2797
|
/**
|
|
2438
2798
|
* A row-major affine 3x3 XY matrix applied to column vectors.
|
|
2439
2799
|
* Translation occupies indices 2 and 5; the final row is `[0, 0, 1]`.
|
|
2440
2800
|
*/
|
|
2441
|
-
export declare type
|
|
2801
|
+
export declare type Transform2Data = readonly [
|
|
2442
2802
|
m00: number,
|
|
2443
2803
|
m01: number,
|
|
2444
2804
|
m02: number,
|
|
@@ -2450,6 +2810,9 @@ export declare type Transform2Matrix = readonly [
|
|
|
2450
2810
|
m22: number,
|
|
2451
2811
|
];
|
|
2452
2812
|
|
|
2813
|
+
/** An immutable XY transform or its canonical row-major matrix for interchange. */
|
|
2814
|
+
export declare type Transform2Input = Transform2 | Transform2Data;
|
|
2815
|
+
|
|
2453
2816
|
/** Immutable reusable XYZ placement. Methods apply in written order; angles are degrees. */
|
|
2454
2817
|
export declare interface Transform3 {
|
|
2455
2818
|
/** Applies a translation in model units after this placement. */
|
|
@@ -2475,27 +2838,29 @@ export declare interface Transform3 {
|
|
|
2475
2838
|
/** Applies the inverse transpose and normalizes. Ignores translation; rejects zero normals. */
|
|
2476
2839
|
applyNormal(normal: Vector3Input): Vector3;
|
|
2477
2840
|
/** Returns the frozen canonical row-major 4x4 matrix for interchange. */
|
|
2478
|
-
|
|
2841
|
+
toData(): Transform3Data;
|
|
2479
2842
|
/** Restricts to XY; throws GeometryError for a plane change or singular XY restriction. */
|
|
2480
2843
|
to2D(): Transform2;
|
|
2481
2844
|
}
|
|
2482
2845
|
|
|
2483
2846
|
/**
|
|
2484
|
-
* Creates an immutable XYZ transform, identity by default.
|
|
2847
|
+
* Creates an immutable XYZ transform, identity by default.
|
|
2848
|
+
*
|
|
2849
|
+
* Values and data are copied and validated.
|
|
2485
2850
|
* Calls apply in written order; rotations use degrees and pivots use current world coordinates.
|
|
2486
2851
|
* Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
|
|
2487
2852
|
* Use frameTransform3(frame) as the input for existing orthonormal frame placement.
|
|
2488
2853
|
*
|
|
2854
|
+
* Use `toData()` for frozen matrix interchange.
|
|
2855
|
+
* [composeTransform3](/docs/reference/geometry/composeTransform3) takes matrices in after, before order.
|
|
2856
|
+
*
|
|
2489
2857
|
* @example
|
|
2490
2858
|
* ```ts
|
|
2491
2859
|
* const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
|
|
2492
|
-
* placement.applyPoint([1, 0, 0]).
|
|
2860
|
+
* placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
|
|
2493
2861
|
* ```
|
|
2494
2862
|
*/
|
|
2495
|
-
export declare function transform3(
|
|
2496
|
-
|
|
2497
|
-
/** An immutable XYZ transform or its canonical row-major matrix for interchange. */
|
|
2498
|
-
export declare type Transform3Input = Transform3 | Transform3Matrix;
|
|
2863
|
+
export declare function transform3(input?: Transform3Input): Transform3;
|
|
2499
2864
|
|
|
2500
2865
|
/**
|
|
2501
2866
|
* A row-major affine 4x4 matrix applied to column vectors.
|
|
@@ -2503,7 +2868,7 @@ export declare type Transform3Input = Transform3 | Transform3Matrix;
|
|
|
2503
2868
|
* Translation occupies indices 3, 7, and 11. The final row must be
|
|
2504
2869
|
* `[0, 0, 0, 1]` within the active geometry tolerance.
|
|
2505
2870
|
*/
|
|
2506
|
-
export declare type
|
|
2871
|
+
export declare type Transform3Data = readonly [
|
|
2507
2872
|
m00: number,
|
|
2508
2873
|
m01: number,
|
|
2509
2874
|
m02: number,
|
|
@@ -2522,6 +2887,9 @@ export declare type Transform3Matrix = readonly [
|
|
|
2522
2887
|
m33: number,
|
|
2523
2888
|
];
|
|
2524
2889
|
|
|
2890
|
+
/** An immutable XYZ transform or its canonical row-major matrix for interchange. */
|
|
2891
|
+
export declare type Transform3Input = Transform3 | Transform3Data;
|
|
2892
|
+
|
|
2525
2893
|
/** Trapezoidal thread profile with a configurable included angle. */
|
|
2526
2894
|
declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
2527
2895
|
/** Selects the trapezoidal profile family. */
|
|
@@ -2532,10 +2900,11 @@ declare interface TrapezoidalThreadProfileSpec extends ThreadProfileBaseSpec {
|
|
|
2532
2900
|
*/
|
|
2533
2901
|
readonly depth?: number;
|
|
2534
2902
|
/**
|
|
2535
|
-
*
|
|
2903
|
+
* Full angle between the flanks in degrees, from `0` inclusive to `180` exclusive.
|
|
2904
|
+
* Each flank uses half this angle from the radial direction; `90` gives 45-degree slopes.
|
|
2536
2905
|
* @defaultValue `30`
|
|
2537
2906
|
*/
|
|
2538
|
-
readonly
|
|
2907
|
+
readonly includedAngle?: number;
|
|
2539
2908
|
}
|
|
2540
2909
|
|
|
2541
2910
|
/**
|
|
@@ -2552,7 +2921,7 @@ export declare interface TriangleMesh {
|
|
|
2552
2921
|
* Measurements and optional edge-connected topology from one validated mesh traversal.
|
|
2553
2922
|
*/
|
|
2554
2923
|
export declare interface TriangleMeshAnalysis extends TriangleMeshMeasurements {
|
|
2555
|
-
/** Number of referenced edge-connected
|
|
2924
|
+
/** Number of referenced edge-connected boundary shells when `includeTopology` is requested; cavities count separately. */
|
|
2556
2925
|
readonly connectedComponentCount?: number;
|
|
2557
2926
|
/** Number of distinct indexed undirected edges when `includeTopology` is requested. */
|
|
2558
2927
|
readonly edgeCount?: number;
|
|
@@ -2563,7 +2932,7 @@ export declare interface TriangleMeshAnalysis extends TriangleMeshMeasurements {
|
|
|
2563
2932
|
*/
|
|
2564
2933
|
export declare interface TriangleMeshMeasurements {
|
|
2565
2934
|
/** Axis-aligned bounds. */
|
|
2566
|
-
readonly bounds:
|
|
2935
|
+
readonly bounds: Bounds3Data;
|
|
2567
2936
|
/** Signed enclosed volume; positive values correspond to outward winding. */
|
|
2568
2937
|
readonly signedVolume: number;
|
|
2569
2938
|
/** Sum of all triangle areas in squared model units. */
|
|
@@ -2606,7 +2975,7 @@ export declare function tube(options: TubeOptions): Solid;
|
|
|
2606
2975
|
* Dimensions, placement, and tessellation for a hollow Z-axis tube.
|
|
2607
2976
|
*/
|
|
2608
2977
|
export declare interface TubeOptions
|
|
2609
|
-
extends CircularPrimitiveOptions,
|
|
2978
|
+
extends CircularPrimitiveOptions, PrimitiveAttachment {
|
|
2610
2979
|
/**
|
|
2611
2980
|
* Centers the tube on the Z origin when `true`; otherwise its bottom is at `Z = 0`.
|
|
2612
2981
|
* @defaultValue `true`
|
|
@@ -2660,22 +3029,26 @@ export declare interface Vector2 {
|
|
|
2660
3029
|
/** Returns Euclidean distance to another vector in the same coordinate units. */
|
|
2661
3030
|
distance(other: Vector2Input): number;
|
|
2662
3031
|
/** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
|
|
2663
|
-
|
|
3032
|
+
toData(): Vector2Data;
|
|
2664
3033
|
}
|
|
2665
3034
|
|
|
2666
3035
|
/**
|
|
2667
3036
|
* Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
3037
|
+
*
|
|
2668
3038
|
* Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
2669
3039
|
* and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
2670
3040
|
* Use transform2().applyDirection(value) for rotations and nonuniform scaling.
|
|
3041
|
+
*
|
|
3042
|
+
* Use `toData()` for frozen tuple interchange, or
|
|
3043
|
+
* [normalize2](/docs/reference/geometry/normalize2) for tuple-based normalization in numerical loops.
|
|
2671
3044
|
*/
|
|
2672
3045
|
export declare function vector2(input: Vector2Input): Vector2;
|
|
2673
3046
|
|
|
2674
|
-
/** An XY tuple or immutable fluent vector accepted by vector operations. */
|
|
2675
|
-
export declare type Vector2Input = Vector2Tuple | Vector2;
|
|
2676
|
-
|
|
2677
3047
|
/** A two-dimensional Cartesian vector or point. */
|
|
2678
|
-
export declare type
|
|
3048
|
+
export declare type Vector2Data = readonly [x: number, y: number];
|
|
3049
|
+
|
|
3050
|
+
/** An XY tuple or immutable fluent vector accepted by vector operations. */
|
|
3051
|
+
export declare type Vector2Input = Vector2Data | Vector2;
|
|
2679
3052
|
|
|
2680
3053
|
/** Immutable XYZ arithmetic; vector operations return new values and measurements return numbers. */
|
|
2681
3054
|
export declare interface Vector3 {
|
|
@@ -2704,15 +3077,19 @@ export declare interface Vector3 {
|
|
|
2704
3077
|
/** Returns Euclidean distance to another vector in the same coordinate units. */
|
|
2705
3078
|
distance(other: Vector3Input): number;
|
|
2706
3079
|
/** Returns this value's frozen readonly tuple for interchange; repeated calls do not allocate. */
|
|
2707
|
-
|
|
3080
|
+
toData(): Vector3Data;
|
|
2708
3081
|
}
|
|
2709
3082
|
|
|
2710
3083
|
/**
|
|
2711
3084
|
* Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
3085
|
+
*
|
|
2712
3086
|
* Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
2713
3087
|
* and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
2714
3088
|
* Use transform3().applyDirection(value) for rotations and nonuniform scaling.
|
|
2715
3089
|
*
|
|
3090
|
+
* Use `toData()` for frozen tuple interchange, or
|
|
3091
|
+
* [normalize3](/docs/reference/geometry/normalize3) for tuple-based normalization in numerical loops.
|
|
3092
|
+
*
|
|
2716
3093
|
* @example
|
|
2717
3094
|
* ```ts
|
|
2718
3095
|
* const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
@@ -2721,11 +3098,11 @@ export declare interface Vector3 {
|
|
|
2721
3098
|
*/
|
|
2722
3099
|
export declare function vector3(input: Vector3Input): Vector3;
|
|
2723
3100
|
|
|
2724
|
-
/** An XYZ tuple or immutable fluent vector accepted by vector operations. */
|
|
2725
|
-
export declare type Vector3Input = Vector3Tuple | Vector3;
|
|
2726
|
-
|
|
2727
3101
|
/** A three-dimensional Cartesian vector or point. */
|
|
2728
|
-
export declare type
|
|
3102
|
+
export declare type Vector3Data = readonly [x: number, y: number, z: number];
|
|
3103
|
+
|
|
3104
|
+
/** An XYZ tuple or immutable fluent vector accepted by vector operations. */
|
|
3105
|
+
export declare type Vector3Input = Vector3Data | Vector3;
|
|
2729
3106
|
|
|
2730
3107
|
/**
|
|
2731
3108
|
* Immutable vector layout with no browser, font parser, or kernel ownership.
|
|
@@ -2740,7 +3117,7 @@ export declare interface VectorTextLayout {
|
|
|
2740
3117
|
/** Text measurements from the same immutable layout that supplies geometry and SVG outlines. */
|
|
2741
3118
|
export declare interface VectorTextMetrics {
|
|
2742
3119
|
/** Visible curve bounds after alignment, or null when the text has no ink. */
|
|
2743
|
-
readonly bounds:
|
|
3120
|
+
readonly bounds: Bounds2Data | null;
|
|
2744
3121
|
/** Unaligned logical advance and negative baseline displacement in mm; arcs retain [arc length, 0]. */
|
|
2745
3122
|
readonly advance: readonly [number, number];
|
|
2746
3123
|
/** Maximum logical line advance in millimetres, including spaces; arc length on circular baselines. */
|