@metamesh/modeling 0.15.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 +19 -0
- package/README.md +33 -6
- package/dist/api/engine.d.ts +4 -3
- package/dist/api/geometry.d.ts +529 -242
- package/dist/api/index.d.ts +363 -104
- package/dist/api/text.d.ts +6 -6
- package/dist/docs/guides/concepts.md +295 -106
- package/dist/docs/guides/fonts.md +9 -8
- package/dist/docs/guides/fundamentals.md +17 -21
- package/dist/docs/guides/generation.md +24 -23
- package/dist/docs/guides/hosting.md +25 -20
- package/dist/docs/guides/recipes.md +35 -30
- package/dist/docs/guides/standalone-model.md +42 -0
- package/dist/docs/manifest.json +846 -243
- 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 +1 -1
- package/dist/docs/reference/engine/ModelSession.md +1 -1
- package/dist/docs/reference/engine/ModelSnapshot.md +2 -2
- package/dist/docs/reference/engine/SessionOptions.md +1 -1
- package/dist/docs/reference/engine/SnapshotPart.md +7 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +8 -3
- package/dist/docs/reference/engine/createModelEngine.md +1 -1
- 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 +1 -1
- package/dist/docs/reference/geometry/Anchor3-type.md +6 -5
- package/dist/docs/reference/geometry/ArcCurve2.md +7 -3
- package/dist/docs/reference/geometry/ArcCurve3.md +9 -5
- package/dist/docs/reference/geometry/AttachOptions.md +2 -1
- 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 +3 -3
- 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 +1 -1
- 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 +5 -1
- 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 +4 -3
- package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +6 -1
- 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 +5 -1
- 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 +6 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -1
- 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 +1 -1
- 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 +4 -4
- 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 +5 -1
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +5 -1
- 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 +5 -1
- 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 +1 -1
- package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +5 -1
- 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 +12 -8
- package/dist/docs/reference/geometry/Path2Data.md +40 -4
- package/dist/docs/reference/geometry/Path2Input.md +8 -3
- package/dist/docs/reference/geometry/Path3-type.md +12 -8
- package/dist/docs/reference/geometry/Path3Data.md +40 -4
- package/dist/docs/reference/geometry/Path3Input.md +8 -3
- package/dist/docs/reference/geometry/PathFrame.md +9 -5
- package/dist/docs/reference/geometry/PathLocation.md +5 -1
- package/dist/docs/reference/geometry/PathNormalGuide.md +8 -4
- package/dist/docs/reference/geometry/PathOptions.md +5 -1
- package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/PathPlacement.md +8 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +5 -1
- 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 +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -1
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
- 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 +6 -1
- package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/SphereOptions.md +1 -1
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/StrokeCap.md +8 -1
- package/dist/docs/reference/geometry/StrokeJoin.md +8 -1
- package/dist/docs/reference/geometry/StrokeOptions.md +5 -1
- 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 +7 -3
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +6 -1
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +6 -1
- package/dist/docs/reference/geometry/SweepOptions.md +5 -1
- package/dist/docs/reference/geometry/SweepOrientation.md +5 -1
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
- package/dist/docs/reference/geometry/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 +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/TorusOptions.md +1 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +7 -3
- 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 +5 -1
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +6 -1
- 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 +1 -1
- 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 +6 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/anchor3.md +2 -1
- package/dist/docs/reference/geometry/anchorFrame3.md +5 -1
- package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
- package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
- package/dist/docs/reference/geometry/attachmentTransform3.md +5 -4
- 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 +4 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +23 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +21 -9
- package/dist/docs/reference/geometry/categories/mechanical.md +22 -10
- package/dist/docs/reference/geometry/categories/meshes.md +16 -7
- package/dist/docs/reference/geometry/categories/pattern-placement.md +6 -4
- package/dist/docs/reference/geometry/categories/primitive-options.md +8 -2
- package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -12
- package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +21 -12
- package/dist/docs/reference/geometry/categories/vector-import.md +11 -5
- 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 +5 -1
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -1
- package/dist/docs/reference/geometry/composeTransform3.md +7 -6
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +5 -1
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +11 -2
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
- package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +5 -1
- 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 +3 -2
- 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 +5 -1
- 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 +5 -1
- 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/getMetricClearanceHoleDiameter.md +5 -1
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +4 -4
- package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
- package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +5 -1
- package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +5 -1
- 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 +4 -4
- package/dist/docs/reference/geometry/loftMesh.md +5 -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 +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/path2.md +14 -2
- package/dist/docs/reference/geometry/path3.md +8 -1
- package/dist/docs/reference/geometry/pathPatternTransforms.md +9 -5
- package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +11 -2
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +13 -2
- package/dist/docs/reference/geometry/preflightSvgRegion.md +15 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +12 -2
- package/dist/docs/reference/geometry/preflightThreadedRod.md +12 -2
- package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
- package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -4
- 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 +8 -4
- package/dist/docs/reference/geometry/resamplePolyline2.md +8 -4
- package/dist/docs/reference/geometry/resamplePolyline3.md +8 -4
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveArcSegments.md +1 -1
- 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 +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/revolveMesh.md +5 -1
- 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 +8 -4
- package/dist/docs/reference/geometry/sampleContour.md +12 -2
- package/dist/docs/reference/geometry/sampleCurve2.md +6 -3
- package/dist/docs/reference/geometry/sampleCurve3.md +5 -1
- 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 +15 -5
- package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +5 -1
- 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 +5 -1
- 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 +5 -1
- package/dist/docs/reference/geometry/threadProfile.md +5 -1
- 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 +5 -1
- 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 +9 -2
- 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 +7 -5
- package/dist/docs/reference/model/Anchor3.md +6 -5
- package/dist/docs/reference/model/AttachOptions.md +2 -1
- 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 +3 -3
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/docs/reference/model/EndTreatments.md +1 -1
- package/dist/docs/reference/model/ExtrudeOptions.md +1 -1
- package/dist/docs/reference/model/FinalizedModel.md +3 -3
- 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 +1 -1
- 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 +5 -4
- package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +2 -1
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
- package/dist/docs/reference/model/HullOptions.md +1 -1
- 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 +2 -1
- 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 +2 -1
- 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 +1 -1
- 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 +12 -8
- package/dist/docs/reference/model/Path2Data.md +40 -4
- package/dist/docs/reference/model/Path2Input.md +8 -3
- package/dist/docs/reference/model/Path3-type.md +12 -8
- package/dist/docs/reference/model/Path3Data.md +40 -4
- package/dist/docs/reference/model/Path3Input.md +8 -3
- package/dist/docs/reference/model/PathLocation.md +5 -1
- package/dist/docs/reference/model/PathNormalGuide.md +4 -4
- package/dist/docs/reference/model/PathOptions.md +5 -1
- package/dist/docs/reference/model/PathPatternOptions.md +2 -1
- package/dist/docs/reference/model/PathResamplingOptions.md +5 -1
- 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 +1 -1
- package/dist/docs/reference/model/PolygonData.md +3 -2
- package/dist/docs/reference/model/PolygonOptions.md +1 -1
- package/dist/docs/reference/model/PrimitiveAttachment.md +2 -1
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +2 -1
- 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 +2 -1
- 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 +3 -3
- package/dist/docs/reference/model/RegionData.md +2 -2
- package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
- package/dist/docs/reference/model/RevolveOptions.md +1 -1
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Section.md +9 -2
- package/dist/docs/reference/model/SectionHullOptions.md +1 -1
- package/dist/docs/reference/model/SectionInspection.md +4 -4
- 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 +9 -2
- package/dist/docs/reference/model/SolidInspection.md +4 -4
- package/dist/docs/reference/model/SolidSegmentHit.md +4 -4
- package/dist/docs/reference/model/SphereOptions.md +1 -1
- package/dist/docs/reference/model/StarOptions.md +1 -1
- package/dist/docs/reference/model/StrokeCap.md +1 -1
- package/dist/docs/reference/model/StrokeJoin.md +1 -1
- package/dist/docs/reference/model/StrokeOptions.md +1 -1
- 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 +1 -1
- package/dist/docs/reference/model/SweepOrientation.md +1 -1
- 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 +2 -1
- 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 +2 -1
- package/dist/docs/reference/model/TorusOptions.md +1 -1
- 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 +3 -3
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
- package/dist/docs/reference/model/TubeOptions.md +1 -1
- 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 +2 -2
- package/dist/docs/reference/model/castSegment.md +1 -1
- 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 +6 -4
- 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 +9 -2
- package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
- package/dist/docs/reference/model/categories/paths.md +15 -7
- 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 +10 -5
- package/dist/docs/reference/model/categories/threads.md +10 -7
- package/dist/docs/reference/model/categories/transforms-placement.md +17 -9
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/components.md +1 -1
- 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 +1 -1
- package/dist/docs/reference/model/generate.md +5 -1
- package/dist/docs/reference/model/gridPattern.md +2 -1
- 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 +2 -1
- 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 +2 -1
- package/dist/docs/reference/model/loft.md +1 -1
- package/dist/docs/reference/model/matchProfiles.md +1 -1
- package/dist/docs/reference/model/minkowskiSum.md +1 -1
- package/dist/docs/reference/model/path2.md +14 -2
- package/dist/docs/reference/model/path3.md +8 -1
- package/dist/docs/reference/model/pathPattern.md +2 -1
- package/dist/docs/reference/model/polygon.md +5 -2
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +8 -2
- package/dist/docs/reference/model/preflightThreadedNut.md +8 -2
- package/dist/docs/reference/model/preflightThreadedRod.md +8 -2
- package/dist/docs/reference/model/radialPattern.md +2 -1
- package/dist/docs/reference/model/rectangle.md +5 -2
- package/dist/docs/reference/model/regularPolygon.md +1 -1
- package/dist/docs/reference/model/revolve.md +1 -1
- 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 +1 -1
- package/dist/docs/reference/model/stroke.md +1 -1
- 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 +1 -1
- package/dist/docs/reference/model/textSection.md +1 -1
- package/dist/docs/reference/model/threadRidge.md +2 -1
- package/dist/docs/reference/model/threadedNut.md +2 -1
- package/dist/docs/reference/model/threadedRod.md +2 -1
- package/dist/docs/reference/model/torus.md +1 -1
- 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 +1 -1
- 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 +15 -8
- 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 +1 -1
- package/dist/docs/reference/text/VectorFontOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
- 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 +6 -4
- package/dist/docs/reference/text/prepareVectorFont.md +1 -1
- package/dist/docs/reference/text.md +4 -2
- package/dist/engine/construction-operations.js +1 -1
- package/dist/engine/knuckle-hinge-operation.js +85 -0
- package/dist/engine/loft-operations.js +1 -1
- package/dist/engine/mechanical-operations.js +3 -1
- package/dist/engine/modeling-context.js +8 -1
- package/dist/engine/recipe-realization.js +4 -2
- package/dist/engine/section-operations.js +1 -1
- package/dist/engine/transform-operations.js +3 -3
- package/dist/geometry/bounds-value.js +93 -0
- package/dist/geometry/bounds.js +10 -8
- package/dist/geometry/curves/sampling.js +1 -2
- package/dist/geometry/errors.js +1 -0
- package/dist/geometry/heightfield.js +12 -1
- package/dist/geometry/index.js +3 -1
- 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/index.js +1 -0
- package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
- package/dist/geometry/mechanical/thread-mesh-plan.js +7 -2
- package/dist/geometry/mechanical/thread-solids.js +29 -4
- package/dist/geometry/mesh/mesh-centroid.js +1 -0
- package/dist/geometry/mesh/mesh-solid.js +1 -0
- package/dist/geometry/paths/frames.js +1 -0
- package/dist/geometry/paths/helix.js +1 -0
- package/dist/geometry/paths/path-value.js +43 -27
- package/dist/geometry/paths/resampling.js +2 -2
- package/dist/geometry/patterns/placements.js +3 -3
- package/dist/geometry/patterns.js +3 -1
- package/dist/geometry/profiles/contour.js +1 -0
- package/dist/geometry/profiles/matched.js +1 -0
- package/dist/geometry/profiles/rectangle.js +10 -1
- package/dist/geometry/profiles/side-profile.js +2 -0
- package/dist/geometry/svg-import.js +8 -2
- package/dist/geometry/sweeps/options.js +1 -1
- package/dist/geometry/text-fitting.js +1 -0
- package/dist/geometry/transform-matrix.js +1 -1
- package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
- package/dist/index.js +2 -1
- package/dist/model/execution-binding.js +1 -1
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +4 -12
- package/dist/model/knuckle-hinge.js +1 -0
- package/dist/model/operations.js +57 -3
- package/dist/model/recipe-declaration.js +10 -2
- 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/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/model/Bounds2.md +0 -39
- package/dist/docs/reference/model/Bounds3.md +0 -39
- package/dist/docs/reference/model/Transform2Matrix.md +0 -15
- package/dist/docs/reference/model/Transform3Matrix.md +0 -18
- package/dist/docs/reference/text/Bounds2.md +0 -34
- package/dist/docs/reference/text/Vector2Tuple.md +0 -7
|
@@ -96,11 +96,30 @@ export const resolveCompensatedThreadSolidMesh = (options, role) => {
|
|
|
96
96
|
});
|
|
97
97
|
};
|
|
98
98
|
const preflightCompensatedThreadSolid = (options, role) => preflightHelicalThreadSolidMesh(resolveCompensatedThreadSolidMesh(options, role).meshOptions);
|
|
99
|
-
/**
|
|
99
|
+
/**
|
|
100
|
+
* Resolves compensated rod dimensions and checks conservative mesh estimates against output limits.
|
|
101
|
+
*
|
|
102
|
+
* This pure operation uses explicit resolution and limits or package defaults, without an active
|
|
103
|
+
* host execution. It creates planning data without mesh buffers or native objects; returned row
|
|
104
|
+
* and triangle counts are estimates. Mesh validity and native construction are checked later.
|
|
105
|
+
*
|
|
106
|
+
* @see {@link preflightHelicalThreadSolidMesh}
|
|
107
|
+
* @see {@link helicalThreadSolidMesh}
|
|
108
|
+
*/
|
|
100
109
|
export function preflightThreadedRodSolid(options) {
|
|
101
110
|
return preflightCompensatedThreadSolid(options, "male");
|
|
102
111
|
}
|
|
103
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Resolves compensated cutter dimensions and checks extended mesh estimates against output limits.
|
|
114
|
+
*
|
|
115
|
+
* This pure operation uses explicit resolution and limits or package defaults, without an active
|
|
116
|
+
* host execution. It includes the cutter's one-pitch extension beyond each requested face and
|
|
117
|
+
* creates planning data without mesh buffers or native objects. Row and triangle counts are
|
|
118
|
+
* estimates; mesh validity and native construction are checked later.
|
|
119
|
+
*
|
|
120
|
+
* @see {@link preflightHelicalThreadSolidMesh}
|
|
121
|
+
* @see {@link helicalThreadSolidMesh}
|
|
122
|
+
*/
|
|
104
123
|
export function preflightInternalThreadCutterSolid(options) {
|
|
105
124
|
return preflightCompensatedThreadSolid(options, "female");
|
|
106
125
|
}
|
|
@@ -222,8 +241,14 @@ export const resolveThreadedNutSolid = (options, operation) => {
|
|
|
222
241
|
});
|
|
223
242
|
};
|
|
224
243
|
/**
|
|
225
|
-
*
|
|
226
|
-
*
|
|
244
|
+
* Checks nut dimensions, chamfers, end-face wall, and the extended compensated cutter's allocation plan.
|
|
245
|
+
*
|
|
246
|
+
* This pure operation uses explicit resolution and limits or package defaults, without an active
|
|
247
|
+
* host execution. It resolves body/cutter dimensions without mesh buffers or native objects.
|
|
248
|
+
* `thread` contains conservative cutter estimates, excluding the body and Boolean result.
|
|
249
|
+
* Successful preflight leaves mesh validity, native construction, and manufacturing fit to later checks.
|
|
250
|
+
*
|
|
251
|
+
* @see {@link preflightHelicalThreadSolidMesh}
|
|
227
252
|
*/
|
|
228
253
|
export function preflightThreadedNutSolid(options) {
|
|
229
254
|
return resolveThreadedNutSolid(options, "preflightThreadedNutSolid").preflight;
|
|
@@ -2,6 +2,7 @@ import { GeometryError } from "../errors.js";
|
|
|
2
2
|
import { analyzeTriangleMesh } from "./mesh.js";
|
|
3
3
|
/**
|
|
4
4
|
* Computes the uniform-density volume centroid of an oriented closed solid, including cavity shells.
|
|
5
|
+
*
|
|
5
6
|
* Coordinates are millimetres. Indexed closure and positive aggregate volume are required; callers
|
|
6
7
|
* may use validateSolidMesh first when geometric intersections and shell orientation are untrusted.
|
|
7
8
|
* Fresh mutable input is inspected on every call, and buffers are never changed.
|
|
@@ -7,6 +7,7 @@ const MAXIMUM_TRIANGLES = 200_000;
|
|
|
7
7
|
const MAXIMUM_TESTS = 2_000_000;
|
|
8
8
|
/**
|
|
9
9
|
* Checks closed indexed topology, triangle intersections, and alternating nested shell orientation.
|
|
10
|
+
*
|
|
10
11
|
* Outward exterior shells and inward cavity shells are accepted. Separate shells must not touch,
|
|
11
12
|
* intersect, or overlap as material. Indexed neighbours may share their own vertex or edge.
|
|
12
13
|
*
|
|
@@ -50,6 +50,7 @@ const transportNormal = (normal, previousTangent, tangent) => {
|
|
|
50
50
|
};
|
|
51
51
|
/**
|
|
52
52
|
* Builds rotation-minimizing frames by parallel-transporting the previous normal.
|
|
53
|
+
*
|
|
53
54
|
* This avoids the sudden profile flips produced by picking a fresh up-vector per ring.
|
|
54
55
|
* Paths exceeding maxPathPoints (default 100000) reject before frame allocation or guide evaluation.
|
|
55
56
|
* Requires open path values; raw tuples are interpreted as an open path. Invalid paths throw GeometryError.
|
|
@@ -2,6 +2,7 @@ import { GeometryError } from "../errors.js";
|
|
|
2
2
|
import { assertSamplingCount, resolveGeometrySamplingLimits, } from "../sampling-limits.js";
|
|
3
3
|
/**
|
|
4
4
|
* Creates `segments + 1` points including exact helix endpoints from finite positive dimensions.
|
|
5
|
+
*
|
|
5
6
|
* Integrated weights must remain finite. The maxPathPoints ceiling defaults to 100000; excessive
|
|
6
7
|
* exact counts reject before evaluating axial weights or allocating sample arrays.
|
|
7
8
|
* Invalid inputs use GeometryError; exceptions thrown by axialWeight propagate unchanged.
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { bounds2, bounds3 } from "../bounds-value.js";
|
|
1
2
|
import { GeometryError } from "../errors.js";
|
|
2
3
|
import { immutableMathClass } from "../math/immutable-value.js";
|
|
3
4
|
import { vector2, vector2Data, vector3, vector3Data, } from "../math/vector-value.js";
|
|
4
5
|
import { assertSamplingCount, resolveGeometrySamplingLimits, } from "../sampling-limits.js";
|
|
5
6
|
import { transformPath2, transformPath3 } from "../transform-geometry.js";
|
|
6
7
|
import { closestPointOnValidatedPath } from "./closest-point.js";
|
|
7
|
-
import {
|
|
8
|
+
import { resamplePath2Points, resamplePath3Points } from "./resampling.js";
|
|
8
9
|
const fail = (message, code = "INVALID_ARGUMENT") => {
|
|
9
10
|
throw new GeometryError(code, message, { operation: "path" });
|
|
10
11
|
};
|
|
@@ -19,9 +20,13 @@ function freezePoints(points) {
|
|
|
19
20
|
Object.freeze(point);
|
|
20
21
|
return Object.freeze(points);
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
+
function frozenData(owner) {
|
|
23
24
|
const state = stateOf(owner);
|
|
24
|
-
return (state.
|
|
25
|
+
return (state.data ??= Object.freeze({
|
|
26
|
+
dimension: owner.dimension,
|
|
27
|
+
closed: owner.closed,
|
|
28
|
+
points: freezePoints(state.points.map((point) => [...point])),
|
|
29
|
+
}));
|
|
25
30
|
}
|
|
26
31
|
function closedOption(closed) {
|
|
27
32
|
if (closed !== undefined && typeof closed !== "boolean")
|
|
@@ -60,23 +65,25 @@ function validateClosure(points, closed) {
|
|
|
60
65
|
function pathSource(input, closed, dimension) {
|
|
61
66
|
if (Array.isArray(input))
|
|
62
67
|
return { points: input, closed: closedOption(closed) };
|
|
63
|
-
if (typeof input !== "object" ||
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
if (typeof input !== "object" || input === null)
|
|
69
|
+
return fail("Expected a path value, path data, or an array of vectors.");
|
|
70
|
+
const own = pathStates.get(input);
|
|
71
|
+
const method = Reflect.get(input, "toData");
|
|
72
|
+
const data = own !== undefined
|
|
73
|
+
? input
|
|
74
|
+
: typeof method === "function"
|
|
75
|
+
? Reflect.apply(method, input, [])
|
|
76
|
+
: input;
|
|
77
|
+
if (typeof data !== "object" || data === null)
|
|
78
|
+
return fail("Expected complete path data.");
|
|
79
|
+
const sourceDimension = Reflect.get(data, "dimension");
|
|
80
|
+
const sourceClosed = Reflect.get(data, "closed");
|
|
81
|
+
const points = own?.points ?? Reflect.get(data, "points");
|
|
82
|
+
if (sourceDimension !== dimension || typeof sourceClosed !== "boolean" || !Array.isArray(points))
|
|
83
|
+
return fail("Path data requires matching dimension, boolean closure, and an array of vectors.");
|
|
74
84
|
if (closed !== undefined && closedOption(closed) !== sourceClosed)
|
|
75
85
|
fail("The closed option conflicts with the path's closure.");
|
|
76
|
-
|
|
77
|
-
if (!Array.isArray(points))
|
|
78
|
-
fail("Path points must be an array of coordinate tuples or vectors.");
|
|
79
|
-
return { points, closed: sourceClosed };
|
|
86
|
+
return { points: points, closed: sourceClosed };
|
|
80
87
|
}
|
|
81
88
|
function measuredLength(owner) {
|
|
82
89
|
const state = stateOf(owner);
|
|
@@ -106,7 +113,9 @@ function measuredBounds(points) {
|
|
|
106
113
|
max[axis] = Math.max(max[axis], point[axis]);
|
|
107
114
|
}
|
|
108
115
|
}
|
|
109
|
-
return
|
|
116
|
+
return min.length === 2
|
|
117
|
+
? bounds2({ min: [min[0], min[1]], max: [max[0], max[1]] })
|
|
118
|
+
: bounds3({ min: [min[0], min[1], min[2]], max: [max[0], max[1], max[2]] });
|
|
110
119
|
}
|
|
111
120
|
function samplingOptions(options, closed) {
|
|
112
121
|
if (typeof options !== "object" || options === null || Array.isArray(options))
|
|
@@ -123,8 +132,8 @@ const PlanarPath = /* @__PURE__ */ immutableMathClass(class PlanarPath {
|
|
|
123
132
|
pathStates.set(this, { points });
|
|
124
133
|
Object.freeze(this);
|
|
125
134
|
}
|
|
126
|
-
|
|
127
|
-
return
|
|
135
|
+
toData() {
|
|
136
|
+
return frozenData(this);
|
|
128
137
|
}
|
|
129
138
|
length() {
|
|
130
139
|
return measuredLength(this);
|
|
@@ -144,7 +153,7 @@ const PlanarPath = /* @__PURE__ */ immutableMathClass(class PlanarPath {
|
|
|
144
153
|
}
|
|
145
154
|
resample(options = {}) {
|
|
146
155
|
const policy = samplingOptions(options, this.closed);
|
|
147
|
-
return new PlanarPath(
|
|
156
|
+
return new PlanarPath(resamplePath2Points(points2(this), policy), this.closed);
|
|
148
157
|
}
|
|
149
158
|
});
|
|
150
159
|
const SpatialPath = /* @__PURE__ */ immutableMathClass(class SpatialPath {
|
|
@@ -155,8 +164,8 @@ const SpatialPath = /* @__PURE__ */ immutableMathClass(class SpatialPath {
|
|
|
155
164
|
pathStates.set(this, { points });
|
|
156
165
|
Object.freeze(this);
|
|
157
166
|
}
|
|
158
|
-
|
|
159
|
-
return
|
|
167
|
+
toData() {
|
|
168
|
+
return frozenData(this);
|
|
160
169
|
}
|
|
161
170
|
length() {
|
|
162
171
|
return measuredLength(this);
|
|
@@ -176,16 +185,19 @@ const SpatialPath = /* @__PURE__ */ immutableMathClass(class SpatialPath {
|
|
|
176
185
|
}
|
|
177
186
|
resample(options = {}) {
|
|
178
187
|
const policy = samplingOptions(options, this.closed);
|
|
179
|
-
return new SpatialPath(
|
|
188
|
+
return new SpatialPath(resamplePath3Points(points3(this), policy), this.closed);
|
|
180
189
|
}
|
|
181
190
|
});
|
|
182
191
|
/**
|
|
183
192
|
* Snapshots finite XY coordinates as an immutable sampled path, independent of engine initialization.
|
|
193
|
+
*
|
|
184
194
|
* Open paths may be empty or have one point; closed paths need three vertices and omit a duplicated
|
|
185
195
|
* seam. Repeated adjacent vertices are retained. No winding normalization or filling is performed.
|
|
186
196
|
* Malformed dimensions or topology throw INVALID_ARGUMENT; nonfinite coordinates or measurement
|
|
187
197
|
* overflow throw NON_FINITE_VALUE; exhausted allocation ceilings throw COMPLEXITY_LIMIT GeometryError.
|
|
188
198
|
* A path input retains its closure. Limits bound construction only; resampling takes its own limits.
|
|
199
|
+
*
|
|
200
|
+
* Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
|
|
189
201
|
*/
|
|
190
202
|
export function path2(input, options = {}) {
|
|
191
203
|
validateOptions(options);
|
|
@@ -198,6 +210,10 @@ export function path2(input, options = {}) {
|
|
|
198
210
|
/**
|
|
199
211
|
* Snapshots finite XYZ coordinates as an immutable sampled path with the same closure, seam,
|
|
200
212
|
* allocation and error rules as path2. Analytic curves must be sampled explicitly first.
|
|
213
|
+
*
|
|
214
|
+
* Use `toData()` for a frozen record that restores coordinates, closure, and dimension together.
|
|
215
|
+
*
|
|
216
|
+
* @see {@link path2} for shared construction rules.
|
|
201
217
|
*/
|
|
202
218
|
export function path3(input, options = {}) {
|
|
203
219
|
validateOptions(options);
|
|
@@ -233,7 +249,7 @@ export function path2InputData(input, closed, limits) {
|
|
|
233
249
|
assertSamplingCount(source.points.length, "path", policy.maxPathPoints);
|
|
234
250
|
return {
|
|
235
251
|
points: input instanceof PlanarPath
|
|
236
|
-
? input.
|
|
252
|
+
? input.toData().points
|
|
237
253
|
: freezePoints(snapshot(source.points, 2, policy)),
|
|
238
254
|
closed: source.closed,
|
|
239
255
|
};
|
|
@@ -245,7 +261,7 @@ export function path3InputData(input, closed, limits) {
|
|
|
245
261
|
assertSamplingCount(source.points.length, "path", policy.maxPathPoints);
|
|
246
262
|
return {
|
|
247
263
|
points: input instanceof SpatialPath
|
|
248
|
-
? input.
|
|
264
|
+
? input.toData().points
|
|
249
265
|
: freezePoints(snapshot(source.points, 3, policy)),
|
|
250
266
|
closed: source.closed,
|
|
251
267
|
};
|
|
@@ -126,7 +126,7 @@ export function resamplePolyline2(path, options = {}) {
|
|
|
126
126
|
return resamplePolyline(path, 2, options, createPlanarSampleWriter);
|
|
127
127
|
}
|
|
128
128
|
/** Internal points-only writer; Path2 owns these mutable coordinates and freezes public interchange. */
|
|
129
|
-
export function
|
|
129
|
+
export function resamplePath2Points(path, options) {
|
|
130
130
|
const points = [];
|
|
131
131
|
return resamplePolyline(path, 2, options, () => ({
|
|
132
132
|
append: (point) => {
|
|
@@ -136,7 +136,7 @@ export function resamplePath2Data(path, options) {
|
|
|
136
136
|
}), false);
|
|
137
137
|
}
|
|
138
138
|
/** Internal points-only writer; avoids calculating and allocating tangents discarded by Path3. */
|
|
139
|
-
export function
|
|
139
|
+
export function resamplePath3Points(path, options) {
|
|
140
140
|
const points = [];
|
|
141
141
|
return resamplePolyline(path, 3, options, () => ({
|
|
142
142
|
append: (point) => {
|
|
@@ -28,9 +28,9 @@ const finite = (value, operation) => {
|
|
|
28
28
|
const coordinates = (input, operation) => {
|
|
29
29
|
const value = typeof input === "object" &&
|
|
30
30
|
input !== null &&
|
|
31
|
-
"
|
|
32
|
-
typeof input.
|
|
33
|
-
? input.
|
|
31
|
+
"toData" in input &&
|
|
32
|
+
typeof input.toData === "function"
|
|
33
|
+
? input.toData()
|
|
34
34
|
: input;
|
|
35
35
|
if (!Array.isArray(value) || (value.length !== 2 && value.length !== 3))
|
|
36
36
|
fail(operation, "Pattern vectors require exact XY or XYZ coordinates.");
|
|
@@ -16,7 +16,9 @@ export function gridPatternTransforms(options) {
|
|
|
16
16
|
return transforms(gridPatternPlan(options));
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* Equal physical arc-length placements along a sampled XYZ path.
|
|
19
|
+
* Equal physical arc-length placements along a sampled XYZ path.
|
|
20
|
+
*
|
|
21
|
+
* Tangent orientation maps +Z
|
|
20
22
|
* onto the local path tangent; fixed orientation only translates. Closed paths omit a repeated seam.
|
|
21
23
|
* Explicit sampling ceilings bound both input points and output placements.
|
|
22
24
|
*/
|
|
@@ -9,6 +9,7 @@ function invalid(message) {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Samples 2–32 connected line/cubic segments into a simple, nonzero-area, immutable CCW XY loop.
|
|
12
|
+
*
|
|
12
13
|
* Physical scaling precedes adaptive curve sampling; the final end must repeat start exactly.
|
|
13
14
|
* Shared anchors and the closing seam are emitted once. Winding normalization may change the
|
|
14
15
|
* starting vertex. The sampled loop is checked for self-intersection and degeneracy by
|
|
@@ -64,6 +64,7 @@ const contours = (component) => [
|
|
|
64
64
|
];
|
|
65
65
|
/**
|
|
66
66
|
* Explicitly matches identified component/contour/span topology across a family.
|
|
67
|
+
*
|
|
67
68
|
* Every paired span uses the maximum physical subdivision count requested by any member.
|
|
68
69
|
* Cubics share a checked uniform parameter grid, including grids selected by exact paired requests.
|
|
69
70
|
* Input order and winding are preserved. Collapsed spans retain repeated logical slots, which
|
|
@@ -79,7 +79,11 @@ export function rectangleCornerSegments(corner, limits) {
|
|
|
79
79
|
}) / 4);
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
* Creates an immutable CCW rectangle
|
|
82
|
+
* Creates an immutable sampled CCW rectangle boundary. Round radius zero is square; tangent saturated endpoints occur once.
|
|
83
|
+
*
|
|
84
|
+
* Use [rectangle](/docs/reference/model/rectangle) for a filled Section.
|
|
85
|
+
*
|
|
86
|
+
* @see {@link rectangleProfile} for identified edge/corner spans used by matchProfiles.
|
|
83
87
|
*
|
|
84
88
|
* @example Rounded rectangle outline
|
|
85
89
|
* ```ts
|
|
@@ -148,6 +152,11 @@ export function rectangleContour(options) {
|
|
|
148
152
|
/**
|
|
149
153
|
* Creates an identified rectangle whose edge/corner spans survive zero and saturated round radii. Outer winding is CCW.
|
|
150
154
|
*
|
|
155
|
+
* Use [rectangle](/docs/reference/model/rectangle) for a filled Section.
|
|
156
|
+
*
|
|
157
|
+
* @see {@link matchProfiles} to sample a family with shared landmark correspondence.
|
|
158
|
+
* @see {@link rectangleContour} for sampled boundary coordinates.
|
|
159
|
+
*
|
|
151
160
|
* @example Retain rectangle landmarks
|
|
152
161
|
* ```ts
|
|
153
162
|
* rectangleProfile({ size: [30, 20], treatment: { kind: "round", radius: 3 } });
|
|
@@ -23,6 +23,7 @@ function distanceToChord(point, start, end) {
|
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Samples 1–31 line/cubic segments into a deeply immutable open [radius,height] polyline.
|
|
26
|
+
*
|
|
26
27
|
* Anchors must progress strictly upward; nonnegative-radius cubic controls must have ordered
|
|
27
28
|
* heights between their endpoints. Cubics use de Casteljau subdivision with a conservative
|
|
28
29
|
* control-hull chord-error bound. Lines also obey the optional physical edge-length ceiling.
|
|
@@ -138,6 +139,7 @@ export function sampleSideProfile(curve, options = {}) {
|
|
|
138
139
|
}
|
|
139
140
|
/**
|
|
140
141
|
* Closes an open, strictly upward [radius, height] side outline to the radius-zero axis.
|
|
142
|
+
*
|
|
141
143
|
* Adds horizontal bottom/top edges at the endpoint heights, retaining axis endpoints once.
|
|
142
144
|
* Returns a counterclockwise filled-boundary contour without a repeated seam vertex.
|
|
143
145
|
* Radii must be nonnegative; the result must enclose nonzero area without touching itself.
|
|
@@ -476,7 +476,7 @@ function measureSvgRegion(region) {
|
|
|
476
476
|
*
|
|
477
477
|
* @param svg - Complete SVG XML source, limited to 256 KiB of UTF-8.
|
|
478
478
|
* @param options - Physical flattening and viewport-origin controls.
|
|
479
|
-
* @returns The
|
|
479
|
+
* @returns The normalized sampled region plus bounded review metrics and repairs.
|
|
480
480
|
* @throws {@link GeometryError} When XML, supported-feature, geometry, or complexity checks fail.
|
|
481
481
|
*/
|
|
482
482
|
function createSvgRegionPreflight(svg, options = {}) {
|
|
@@ -643,11 +643,17 @@ function createSvgRegionPreflight(svg, options = {}) {
|
|
|
643
643
|
});
|
|
644
644
|
}
|
|
645
645
|
/**
|
|
646
|
-
*
|
|
646
|
+
* Parses and validates bounded SVG input, constructing its normalized sampled region and diagnostics.
|
|
647
|
+
*
|
|
648
|
+
* This pure operation performs curve flattening, fill and stroke construction, and polygon union;
|
|
649
|
+
* it needs no browser or engine. Geometry counts measure the returned region at the selected
|
|
650
|
+
* resolution, rather than predicting later mesh allocation. The region may be empty; tiny-island
|
|
651
|
+
* and short-edge indicators do not establish manufacturability or later solid validity.
|
|
647
652
|
*
|
|
648
653
|
* @param svg - Complete SVG XML source, limited to 256 KiB of UTF-8.
|
|
649
654
|
* @param options - Physical flattening and viewport-origin controls.
|
|
650
655
|
* @returns The canonical normalized region plus bounded source, topology, and safe-repair facts.
|
|
656
|
+
* @throws {@link GeometryError} When XML, supported-feature, geometry, or complexity checks fail.
|
|
651
657
|
*/
|
|
652
658
|
export function preflightSvgRegion(svg, options = {}) {
|
|
653
659
|
return createSvgRegionPreflight(svg, options);
|
|
@@ -18,7 +18,7 @@ export function resolveSweepScales(scale, stationCount) {
|
|
|
18
18
|
};
|
|
19
19
|
if (scale === undefined ||
|
|
20
20
|
typeof scale === "number" ||
|
|
21
|
-
(typeof scale === "object" && scale !== null && "
|
|
21
|
+
(typeof scale === "object" && scale !== null && "toData" in scale) ||
|
|
22
22
|
(Array.isArray(scale) && typeof scale[0] === "number")) {
|
|
23
23
|
const value = pair(scale ?? 1);
|
|
24
24
|
return Array.from({ length: stationCount }, () => value);
|
|
@@ -6,6 +6,7 @@ function fail(message) {
|
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Uniformly fits visible text ink inside finite XY bounds, centering it on the target.
|
|
9
|
+
*
|
|
9
10
|
* Transforms retained vector paths before sampling, so later textSection/sampleTextContours
|
|
10
11
|
* resolution remains in final millimetres. Logical advances scale without translation;
|
|
11
12
|
* line count is unchanged. The input layout is preserved.
|
|
@@ -2,7 +2,7 @@ import { GeometryError } from "./errors.js";
|
|
|
2
2
|
export function readTransformMatrix(input, dimension) {
|
|
3
3
|
let matrix = input;
|
|
4
4
|
if (typeof input === "object" && input !== null && !Array.isArray(input)) {
|
|
5
|
-
const method = Reflect.get(input, "
|
|
5
|
+
const method = Reflect.get(input, "toData");
|
|
6
6
|
if (typeof method === "function")
|
|
7
7
|
matrix = Reflect.apply(method, input, []);
|
|
8
8
|
}
|
|
@@ -89,7 +89,7 @@ const Placement3 = /* @__PURE__ */ immutableMathClass(class Placement3 {
|
|
|
89
89
|
applyNormal(normal) {
|
|
90
90
|
return vector3(applyNormal(this, this.matrix, vector3Data(normal)));
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
toData() {
|
|
93
93
|
return this.matrix;
|
|
94
94
|
}
|
|
95
95
|
to2D() {
|
|
@@ -101,7 +101,7 @@ const Placement2 = /* @__PURE__ */ immutableMathClass(class Placement2 {
|
|
|
101
101
|
matrix;
|
|
102
102
|
constructor(spatial) {
|
|
103
103
|
this.spatial = spatial;
|
|
104
|
-
this.matrix = restrictTransform3(spatial.
|
|
104
|
+
this.matrix = restrictTransform3(spatial.toData());
|
|
105
105
|
Object.freeze(this);
|
|
106
106
|
}
|
|
107
107
|
translate(offset) {
|
|
@@ -124,15 +124,15 @@ const Placement2 = /* @__PURE__ */ immutableMathClass(class Placement2 {
|
|
|
124
124
|
return new Placement2(this.spatial.inverse());
|
|
125
125
|
}
|
|
126
126
|
applyPoint(point) {
|
|
127
|
-
return vector2(xy(applyValidatedTransformPoint3(this.spatial.
|
|
127
|
+
return vector2(xy(applyValidatedTransformPoint3(this.spatial.toData(), xyz(vector2Data(point)))));
|
|
128
128
|
}
|
|
129
129
|
applyDirection(direction) {
|
|
130
|
-
return vector2(xy(applyValidatedTransformDirection3(this.spatial.
|
|
130
|
+
return vector2(xy(applyValidatedTransformDirection3(this.spatial.toData(), xyz(vector2Data(direction)))));
|
|
131
131
|
}
|
|
132
132
|
applyNormal(normal) {
|
|
133
|
-
return vector2(xy(applyNormal(this, this.spatial.
|
|
133
|
+
return vector2(xy(applyNormal(this, this.spatial.toData(), xyz(vector2Data(normal)))));
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
toData() {
|
|
136
136
|
return this.matrix;
|
|
137
137
|
}
|
|
138
138
|
to3D() {
|
|
@@ -140,33 +140,42 @@ const Placement2 = /* @__PURE__ */ immutableMathClass(class Placement2 {
|
|
|
140
140
|
}
|
|
141
141
|
});
|
|
142
142
|
/**
|
|
143
|
-
* Creates an immutable XY transform, identity by default.
|
|
143
|
+
* Creates an immutable XY transform, identity by default.
|
|
144
|
+
*
|
|
145
|
+
* Values and data are copied and validated.
|
|
144
146
|
* Pass it directly to Section.transform() and planar data helpers; to3D() explicitly crosses into XYZ.
|
|
145
147
|
* Zero scales and singular matrices throw GeometryError; negative scales reflect.
|
|
146
148
|
*
|
|
149
|
+
* Use `toData()` for frozen matrix interchange.
|
|
150
|
+
*
|
|
147
151
|
* @example
|
|
148
152
|
* ```ts
|
|
149
153
|
* const placement = transform2().rotate(90).translate([10, 0]);
|
|
150
|
-
* placement.applyPoint([1, 0]).
|
|
154
|
+
* placement.applyPoint([1, 0]).toData(); // approximately [10, 1]
|
|
151
155
|
* ```
|
|
152
156
|
*/
|
|
153
|
-
export function transform2(
|
|
154
|
-
return new Placement2(
|
|
157
|
+
export function transform2(input) {
|
|
158
|
+
return new Placement2(input === undefined
|
|
155
159
|
? new Placement3(IDENTITY_TRANSFORM3)
|
|
156
|
-
: new Placement3(embedTransform2(
|
|
160
|
+
: new Placement3(embedTransform2(readTransformMatrix(input, 2))));
|
|
157
161
|
}
|
|
158
162
|
/**
|
|
159
|
-
* Creates an immutable XYZ transform, identity by default.
|
|
163
|
+
* Creates an immutable XYZ transform, identity by default.
|
|
164
|
+
*
|
|
165
|
+
* Values and data are copied and validated.
|
|
160
166
|
* Calls apply in written order; rotations use degrees and pivots use current world coordinates.
|
|
161
167
|
* Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
|
|
162
168
|
* Use frameTransform3(frame) as the input for existing orthonormal frame placement.
|
|
163
169
|
*
|
|
170
|
+
* Use `toData()` for frozen matrix interchange.
|
|
171
|
+
* [composeTransform3](/docs/reference/geometry/composeTransform3) takes matrices in after, before order.
|
|
172
|
+
*
|
|
164
173
|
* @example
|
|
165
174
|
* ```ts
|
|
166
175
|
* const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
|
|
167
|
-
* placement.applyPoint([1, 0, 0]).
|
|
176
|
+
* placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
|
|
168
177
|
* ```
|
|
169
178
|
*/
|
|
170
|
-
export function transform3(
|
|
171
|
-
return new Placement3(snapshotTransform3(
|
|
179
|
+
export function transform3(input = IDENTITY_TRANSFORM3) {
|
|
180
|
+
return new Placement3(snapshotTransform3(readTransformMatrix(input, 3)));
|
|
172
181
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Immutable modeling recipes and math values; the host owns geometry evaluation. @packageDocumentation */
|
|
2
|
-
export {
|
|
2
|
+
export { bounds2, bounds3, } from "./geometry/bounds-value.js";
|
|
3
|
+
export { transform2, transform3, } from "./geometry/transform-value.js";
|
|
3
4
|
export { vector2, vector3, } from "./geometry/math/vector-value.js";
|
|
4
5
|
export { path2, path3, } from "./geometry/paths/path-value.js";
|
|
5
6
|
export * from "./model/operations.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
2
|
// One protocol key lets locally bundled operation wrappers resolve the host's execution
|
|
3
3
|
// without depending on package instances, class identity, or initializing a native runtime.
|
|
4
|
-
const executionKey = Symbol.for("@metamesh/modeling/execution/
|
|
4
|
+
const executionKey = Symbol.for("@metamesh/modeling/execution/8");
|
|
5
5
|
const bindings = globalThis;
|
|
6
6
|
/** Internal host binding. Executable callbacks are synchronous and may not nest executions. */
|
|
7
7
|
export function bindModelContext(context, build) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createSectionHandle, createSolidHandle } from "./shape-handles.js";
|
|
2
2
|
// One realm protocol lets bundled authoring code declare recipes before a host is initialized.
|
|
3
3
|
// The payload contains no native handles and the engine remains responsible for realization.
|
|
4
|
-
const recipeKey = Symbol.for("@metamesh/modeling/recipe/
|
|
4
|
+
const recipeKey = Symbol.for("@metamesh/modeling/recipe/8");
|
|
5
5
|
/** Reads private recipe metadata without requiring an execution context. */
|
|
6
6
|
export const geometryRecipe = (value) => Object.getOwnPropertyDescriptor(value, recipeKey)?.value;
|
|
7
7
|
/** Recognizes only opaque recipe handles issued by this engine. */
|
|
@@ -185,18 +185,10 @@ export function compareGenerationValues(left, right) {
|
|
|
185
185
|
return compare(left, right);
|
|
186
186
|
}
|
|
187
187
|
function mathValueData(value) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
// Closure and dimension change path behavior; tuple interchange omits both for empty paths.
|
|
193
|
-
const closed = Reflect.get(value, "closed");
|
|
194
|
-
return typeof closed === "boolean"
|
|
195
|
-
? { dimension: Reflect.get(value, "dimension"), points: data, closed }
|
|
196
|
-
: data;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
throw new TypeError("Immutable math values must expose their canonical numeric data.");
|
|
188
|
+
const method = Reflect.get(value, "toData");
|
|
189
|
+
if (typeof method !== "function")
|
|
190
|
+
throw new TypeError("Immutable math values must expose canonical data through toData().");
|
|
191
|
+
return Reflect.apply(method, value, []);
|
|
200
192
|
}
|
|
201
193
|
function captureValue(value, mode, readerAllowed = () => false, validated) {
|
|
202
194
|
const recipeInputs = mode === "recipe";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|