@metamesh/modeling 0.15.0 → 0.17.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 +59 -0
- package/README.md +54 -6
- package/dist/api/engine.d.ts +4 -3
- package/dist/api/geometry.d.ts +608 -266
- package/dist/api/index.d.ts +516 -110
- package/dist/api/text.d.ts +6 -6
- package/dist/docs/guides/concepts.md +298 -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 +68 -36
- package/dist/docs/guides/standalone-model.md +42 -0
- package/dist/docs/manifest.json +1034 -296
- 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/Bounds2Options.md +72 -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/Bounds3Options.md +72 -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/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/CircularSampling.md +41 -0
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +14 -0
- 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 +20 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +21 -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 +7 -3
- 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 +39 -0
- package/dist/docs/reference/geometry/bounds3.md +39 -0
- package/dist/docs/reference/geometry/boundsCenter.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 +25 -9
- 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 +8 -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/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 +24 -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/resolveCircularSampling.md +40 -0
- 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/Bounds2Options.md +70 -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/Bounds3Options.md +70 -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/HoleCutterOptions.md +77 -0
- package/dist/docs/reference/model/HoleCutterOverrun.md +35 -0
- package/dist/docs/reference/model/HoleCutterRecess.md +87 -0
- 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 +38 -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 +14 -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 +37 -0
- package/dist/docs/reference/model/bounds3.md +37 -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 +38 -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 +14 -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/holeCutter.md +45 -0
- 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 +5 -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 +7 -7
- 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 +3 -3
- 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/extrusion-finishing.js +2 -29
- package/dist/engine/hole-cutter-operation.js +148 -0
- package/dist/engine/knuckle-hinge-operation.js +128 -0
- package/dist/engine/loft-operations.js +1 -1
- package/dist/engine/mechanical-operations.js +3 -1
- package/dist/engine/modeling-context.js +20 -1
- package/dist/engine/primitive-operations.js +19 -6
- package/dist/engine/recipe-realization.js +4 -2
- package/dist/engine/section-operations.js +2 -2
- package/dist/engine/transform-operations.js +3 -3
- package/dist/geometry/bounds-value.js +121 -0
- package/dist/geometry/bounds.js +10 -25
- package/dist/geometry/circular-sampling.js +45 -0
- package/dist/geometry/convex-offset.js +41 -0
- 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 +5 -2
- 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/profiles.js +3 -23
- package/dist/geometry/profiles/rectangle.js +10 -1
- package/dist/geometry/profiles/side-profile.js +2 -0
- package/dist/geometry/svg/matrix.js +21 -0
- package/dist/geometry/svg-import.js +140 -52
- 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/hole-cutter.js +1 -0
- package/dist/model/immutable-generation-data.js +4 -12
- package/dist/model/knuckle-hinge.js +1 -0
- package/dist/model/operations.js +78 -3
- package/dist/model/recipe-declaration.js +11 -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/BoundsFromSizeOptions.md +0 -23
- 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/boundsFromSize.md +0 -83
- package/dist/docs/reference/geometry/containsBounds.md +0 -72
- 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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# transform3
|
|
2
2
|
|
|
3
|
-
Creates an immutable XYZ transform, identity by default.
|
|
3
|
+
Creates an immutable XYZ transform, identity by default.
|
|
4
4
|
|
|
5
|
-
**transform3**(`
|
|
5
|
+
**transform3**(`input?`: [`Transform3Input`](Transform3Input.md)): [`Transform3`](Transform3-type.md)
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -10,14 +10,22 @@ Creates an immutable XYZ transform, identity by default. Matrices are copied and
|
|
|
10
10
|
|
|
11
11
|
```ts
|
|
12
12
|
const placement = transform3().rotate([0, 0, 90]).translate([10, 0, 0]);
|
|
13
|
-
placement.applyPoint([1, 0, 0]).
|
|
13
|
+
placement.applyPoint([1, 0, 0]).toData(); // approximately [10, 1, 0]
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
Values and data are copied and validated.
|
|
17
|
+
Calls apply in written order; rotations use degrees and pivots use current world coordinates.
|
|
18
|
+
Zero scales, singular matrices, nonfinite inputs and zero rotation axes throw GeometryError.
|
|
19
|
+
Use frameTransform3(frame) as the input for existing orthonormal frame placement.
|
|
20
|
+
|
|
21
|
+
Use `toData()` for frozen matrix interchange.
|
|
22
|
+
[composeTransform3](../geometry/composeTransform3.md) takes matrices in after, before order.
|
|
23
|
+
|
|
16
24
|
## Parameters
|
|
17
25
|
|
|
18
|
-
<a id="
|
|
26
|
+
<a id="input"></a>
|
|
19
27
|
|
|
20
|
-
**`
|
|
28
|
+
**`input`** · [`Transform3Input`](Transform3Input.md) · Optional
|
|
21
29
|
|
|
22
30
|
|
|
23
31
|
|
|
@@ -29,11 +37,12 @@ placement.applyPoint([1, 0, 0]).toArray(); // approximately [10, 1, 0]
|
|
|
29
37
|
## Related APIs
|
|
30
38
|
|
|
31
39
|
- [Transform3](Transform3-type.md)
|
|
32
|
-
- [
|
|
40
|
+
- [Transform3Input](Transform3Input.md)
|
|
33
41
|
|
|
34
42
|
## Guides
|
|
35
43
|
|
|
36
44
|
- [Named anchors and custom frames](../../guides/recipes.md#named-anchors-and-custom-frames)
|
|
37
45
|
- [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
|
|
46
|
+
- [Fluent values and standalone algorithms](../../guides/concepts.md#choose-fluent-values-or-standalone-algorithms)
|
|
38
47
|
|
|
39
|
-
Package: `@metamesh/modeling@0.
|
|
48
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -74,4 +74,4 @@ tube({ height: 20, outerRadius: 10, innerRadius: 6 });
|
|
|
74
74
|
- [Choose a primitive](../../guides/recipes.md#choose-a-primitive)
|
|
75
75
|
- [Treated boxes, frustums, and mirrored arrays](../../guides/recipes.md#treated-boxes-frustums-and-mirrored-arrays)
|
|
76
76
|
|
|
77
|
-
Package: `@metamesh/modeling@0.
|
|
77
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -69,4 +69,4 @@ Native filled section union; dimensions cannot be mixed.
|
|
|
69
69
|
- [Choose the Boolean by the material you want](../../guides/fundamentals.md#choose-the-boolean-by-the-material-you-want)
|
|
70
70
|
- [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
|
|
71
71
|
|
|
72
|
-
Package: `@metamesh/modeling@0.
|
|
72
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
# vector2
|
|
2
2
|
|
|
3
|
-
Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
3
|
+
Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
4
4
|
|
|
5
5
|
**vector2**(`input`: [`Vector2Input`](Vector2Input.md)): [`Vector2`](Vector2-type.md)
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
10
|
+
and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
11
|
+
Use transform2().applyDirection(value) for rotations and nonuniform scaling.
|
|
12
|
+
|
|
13
|
+
Use `toData()` for frozen tuple interchange, or
|
|
14
|
+
[normalize2](../geometry/normalize2.md) for tuple-based normalization in numerical loops.
|
|
15
|
+
|
|
9
16
|
## Parameters
|
|
10
17
|
|
|
11
18
|
<a id="input"></a>
|
|
@@ -28,5 +35,6 @@ Creates immutable XY arithmetic from a finite tuple or vector, snapshotting the
|
|
|
28
35
|
|
|
29
36
|
- [Named anchors and custom frames](../../guides/recipes.md#named-anchors-and-custom-frames)
|
|
30
37
|
- [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
|
|
38
|
+
- [Fluent values and standalone algorithms](../../guides/concepts.md#choose-fluent-values-or-standalone-algorithms)
|
|
31
39
|
|
|
32
|
-
Package: `@metamesh/modeling@0.
|
|
40
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# vector3
|
|
2
2
|
|
|
3
|
-
Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
3
|
+
Creates immutable XYZ arithmetic from a finite tuple or vector, snapshotting the coordinates.
|
|
4
4
|
|
|
5
5
|
**vector3**(`input`: [`Vector3Input`](Vector3Input.md)): [`Vector3`](Vector3-type.md)
|
|
6
6
|
|
|
@@ -13,6 +13,13 @@ const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
|
13
13
|
const alignment = direction.dot([0, 0, 1]);
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
Values and results are finite. Invalid dimensions throw `INVALID_ARGUMENT`; nonfinite coordinates
|
|
17
|
+
and overflow throw `NON_FINITE_VALUE` GeometryError.
|
|
18
|
+
Use transform3().applyDirection(value) for rotations and nonuniform scaling.
|
|
19
|
+
|
|
20
|
+
Use `toData()` for frozen tuple interchange, or
|
|
21
|
+
[normalize3](../geometry/normalize3.md) for tuple-based normalization in numerical loops.
|
|
22
|
+
|
|
16
23
|
## Parameters
|
|
17
24
|
|
|
18
25
|
<a id="input"></a>
|
|
@@ -35,5 +42,6 @@ const alignment = direction.dot([0, 0, 1]);
|
|
|
35
42
|
|
|
36
43
|
- [Named anchors and custom frames](../../guides/recipes.md#named-anchors-and-custom-frames)
|
|
37
44
|
- [Primitive booleans and repeated placement](../../guides/recipes.md#primitive-booleans-and-repeated-placement)
|
|
45
|
+
- [Fluent values and standalone algorithms](../../guides/concepts.md#choose-fluent-values-or-standalone-algorithms)
|
|
38
46
|
|
|
39
|
-
Package: `@metamesh/modeling@0.
|
|
47
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -15,7 +15,12 @@ snapshot.dispose();
|
|
|
15
15
|
session.dispose();
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
Computed data and recipes reuse unchanged work. Part placement and color are separate from local geometry. Section recipes preserve holes through Boolean and offset chains.
|
|
18
|
+
Computed data and recipes reuse unchanged work. Part placement and color are separate from local geometry. Section recipes preserve holes through Boolean and offset chains.
|
|
19
|
+
|
|
20
|
+
- **Construction:** recipes and composition require no engine. Ordinary recipes can be reused across sessions, wherever constructed.
|
|
21
|
+
- **Resolution:** explicit settings are captured; unspecified settings inherit the evaluating host's defaults.
|
|
22
|
+
- **Observation:** synchronous host execution is required. Observed component selections stay restricted to their originating session.
|
|
23
|
+
- **Ownership:** the current transaction owns temporary native allocations; sessions may retain bounded evaluated geometry privately. Copied snapshots remain valid after session disposal until you dispose them.
|
|
19
24
|
|
|
20
25
|
See [host lifecycle](engine.md) and [pure foundations](geometry.md).
|
|
21
26
|
|
|
@@ -23,18 +28,20 @@ See [host lifecycle](engine.md) and [pure foundations](geometry.md).
|
|
|
23
28
|
|
|
24
29
|
- [Primitives](model/categories/primitives.md) — Create foundational solid geometry and configure its dimensions and tessellation.
|
|
25
30
|
- [Local resolution](model/categories/resolution.md) — Choose physical curve sampling and explicit native tolerance.
|
|
26
|
-
- [2D
|
|
31
|
+
- [2D sections](model/categories/sections.md) — Create immutable filled XY shapes, including prepared text and bounded painted SVG.
|
|
27
32
|
- [Sampled paths](model/categories/paths.md) — Reusable immutable planar and spatial trajectories.
|
|
28
|
-
- [Boolean
|
|
29
|
-
- [Transforms,
|
|
30
|
-
- [Extrude,
|
|
33
|
+
- [Boolean operations](model/categories/boolean-operations.md) — Combine, intersect and subtract same-dimensional shapes; construct solid envelopes and sums.
|
|
34
|
+
- [Transforms, vectors, and placement](model/categories/transforms-placement.md) — Calculate with immutable vectors, reuse transforms, and arrange geometry with explicit placement contracts.
|
|
35
|
+
- [Extrude, revolve, and sweep](model/categories/extrude-revolve-sweep.md) — Turn sections and paths into extruded, lofted, revolved, or swept solids.
|
|
36
|
+
- [Knuckle joints](model/categories/hinges.md) — Compose reusable knuckle joints with independent mounting attachments.
|
|
31
37
|
- [Printable threads](model/categories/threads.md) — Construct compensated thread forms and inspect bounded preflight facts.
|
|
32
|
-
- [Mesh
|
|
33
|
-
- [Core
|
|
38
|
+
- [Mesh and inspection](model/categories/mesh-inspection.md) — Convert validated meshes and inspect stable section or solid measurements.
|
|
39
|
+
- [Core values](model/categories/core-values-errors.md) — Use shared coordinate, path, polygon, and bounds data.
|
|
40
|
+
- [Bounds](model/categories/bounds.md) — Measure immutable axis-aligned extents and test positioned containment.
|
|
34
41
|
- [Explicit matching profiles](model/categories/explicit-profiles.md) — Build hollow or multicomponent lofts and sweeps using stable landmarks.
|
|
35
42
|
- [Sampled surfaces](model/categories/bounded-surfaces.md) — Construct bounded heightfields and positive-inside implicit fields.
|
|
36
43
|
- [Solid inspection](model/categories/inspection.md) — Evaluate recipes and copy observations while the host owns native resources.
|
|
37
44
|
- [Model generation](model/categories/generation.md) — Declare typed programs, optional computations, semantic parts and structured diagnostics.
|
|
38
45
|
- [Model contracts](model/categories/contracts.md) — Describe opaque handles, dimensions, manufacturing parts, and completed snapshots.
|
|
39
46
|
|
|
40
|
-
Package: `@metamesh/modeling@0.
|
|
47
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Bounds2Data
|
|
2
|
+
|
|
3
|
+
Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
### max
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
`readonly` **max**: [`Vector2Data`](Vector2Data.md)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
Inclusive maximum X/Y coordinates.
|
|
16
|
+
|
|
17
|
+
***
|
|
18
|
+
|
|
19
|
+
### min
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
`readonly` **min**: [`Vector2Data`](Vector2Data.md)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Inclusive minimum X/Y coordinates.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## Related APIs
|
|
31
|
+
|
|
32
|
+
- [Vector2Data](Vector2Data.md)
|
|
33
|
+
|
|
34
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -30,7 +30,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
30
30
|
|
|
31
31
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
32
32
|
|
|
33
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
33
|
+
- [`align`](VectorTextLayoutOptions.md#align) · `"center"` \| `"left"` \| `"right"` · Optional
|
|
34
34
|
|
|
35
35
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
36
36
|
|
|
@@ -42,7 +42,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
42
42
|
|
|
43
43
|
Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
|
|
44
44
|
|
|
45
|
-
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"
|
|
45
|
+
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"center"` \| `"top"` \| `"bottom"` \| `"baseline"` · Optional
|
|
46
46
|
|
|
47
47
|
Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
|
|
48
48
|
|
|
@@ -88,7 +88,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
88
88
|
|
|
89
89
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
90
90
|
|
|
91
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
91
|
+
- [`align`](VectorTextLayoutOptions.md#align) · `"center"` \| `"left"` \| `"right"` · Optional
|
|
92
92
|
|
|
93
93
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
94
94
|
|
|
@@ -100,7 +100,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
100
100
|
|
|
101
101
|
Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
|
|
102
102
|
|
|
103
|
-
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"
|
|
103
|
+
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"center"` \| `"top"` \| `"bottom"` \| `"baseline"` · Optional
|
|
104
104
|
|
|
105
105
|
Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
|
|
106
106
|
|
|
@@ -146,7 +146,7 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
146
146
|
|
|
147
147
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
148
148
|
|
|
149
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
149
|
+
- [`align`](VectorTextLayoutOptions.md#align) · `"center"` \| `"left"` \| `"right"` · Optional
|
|
150
150
|
|
|
151
151
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
152
152
|
|
|
@@ -158,7 +158,7 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
158
158
|
|
|
159
159
|
Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
|
|
160
160
|
|
|
161
|
-
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"
|
|
161
|
+
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"center"` \| `"top"` \| `"bottom"` \| `"baseline"` · Optional
|
|
162
162
|
|
|
163
163
|
Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
|
|
164
164
|
|
|
@@ -183,4 +183,4 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
183
183
|
- [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
|
|
184
184
|
- [VectorTextMetrics](VectorTextMetrics.md)
|
|
185
185
|
|
|
186
|
-
Package: `@metamesh/modeling@0.
|
|
186
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -12,7 +12,7 @@ Text bounded to 512 UTF-16 units: horizontal lines or one circular line without
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
`readonly` `optional` **align?**: `"
|
|
15
|
+
`readonly` `optional` **align?**: `"center"` \| `"left"` \| `"right"`
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
@@ -48,7 +48,7 @@ Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural verti
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
`readonly` `optional` **verticalAlign?**: `"
|
|
51
|
+
`readonly` `optional` **verticalAlign?**: `"center"` \| `"top"` \| `"bottom"` \| `"baseline"`
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
|
|
@@ -108,4 +108,4 @@ Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
|
|
|
108
108
|
- [VectorTextArcBaseline](VectorTextArcBaseline.md)
|
|
109
109
|
- [VectorTextOptions](VectorTextOptions.md)
|
|
110
110
|
|
|
111
|
-
Package: `@metamesh/modeling@0.
|
|
111
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -8,7 +8,7 @@ Text measurements from the same immutable layout that supplies geometry and SVG
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
`readonly` **bounds**: [`
|
|
11
|
+
`readonly` **bounds**: [`Bounds2Data`](Bounds2Data.md) \| `null`
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
@@ -89,6 +89,6 @@ Number of lines, including empty and trailing lines; empty text occupies one lin
|
|
|
89
89
|
|
|
90
90
|
## Related APIs
|
|
91
91
|
|
|
92
|
-
- [
|
|
92
|
+
- [Bounds2Data](Bounds2Data.md)
|
|
93
93
|
|
|
94
|
-
Package: `@metamesh/modeling@0.
|
|
94
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Prepare bounded exact font bytes and reusable vector layouts.
|
|
4
4
|
|
|
5
|
-
Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 decoding loads lazily.
|
|
5
|
+
Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 decoding loads lazily. Supply font bytes yourself; this library never fetches fonts.
|
|
6
|
+
|
|
7
|
+
Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepared layout to `textSection` inside a build without shaping again.
|
|
6
8
|
|
|
7
9
|
## Functions
|
|
8
10
|
|
|
@@ -21,13 +23,13 @@ Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 dec
|
|
|
21
23
|
| [VectorTextLayoutOptions](../VectorTextLayoutOptions.md) | Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping. |
|
|
22
24
|
| [VectorTextMetrics](../VectorTextMetrics.md) | Text measurements from the same immutable layout that supplies geometry and SVG outlines. |
|
|
23
25
|
| [VectorTextOptions](../VectorTextOptions.md) | Shaping controls for a prepared exact font face; all lengths are in millimetres. |
|
|
24
|
-
| [
|
|
26
|
+
| [Bounds2Data](../Bounds2Data.md) | Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. |
|
|
25
27
|
|
|
26
28
|
## Type aliases
|
|
27
29
|
|
|
28
30
|
| API | Summary |
|
|
29
31
|
| --- | --- |
|
|
30
|
-
| [
|
|
32
|
+
| [Vector2Data](../Vector2Data.md) | A two-dimensional Cartesian vector or point. |
|
|
31
33
|
|
|
32
34
|
## Values
|
|
33
35
|
|
|
@@ -35,4 +37,4 @@ Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 dec
|
|
|
35
37
|
| --- | --- |
|
|
36
38
|
| [MAX_VECTOR_FONT_BYTES](../MAX_VECTOR_FONT_BYTES.md) | Limits apply before parsing or shaping untrusted font data. |
|
|
37
39
|
|
|
38
|
-
Package: `@metamesh/modeling@0.
|
|
40
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Prepare exact font bytes and shape reusable vector layouts before entering synchronous modeling.
|
|
4
4
|
|
|
5
|
-
Install `fontkit` for font preparation and `woff2-encoder` for WOFF2 decoding. Import optional exact-font preparation from `@metamesh/modeling/text`.
|
|
5
|
+
Install `fontkit` for font preparation and `woff2-encoder` for WOFF2 decoding. Import optional exact-font preparation from `@metamesh/modeling/text`.
|
|
6
|
+
|
|
7
|
+
Supply font bytes yourself; this entry point never fetches fonts. Shape once during preparation and pass the immutable layout to modeling.
|
|
6
8
|
|
|
7
9
|
```ts
|
|
8
10
|
import { prepareVectorFont } from "@metamesh/modeling/text";
|
|
@@ -18,4 +20,4 @@ Paths and metrics use Y-up millimetres and a baseline origin. Empty layouts can
|
|
|
18
20
|
|
|
19
21
|
- [Font preparation](text/categories/font-preparation.md) — Prepare bounded exact font bytes and reusable vector layouts.
|
|
20
22
|
|
|
21
|
-
Package: `@metamesh/modeling@0.
|
|
23
|
+
Package: `@metamesh/modeling@0.17.0`.
|
|
@@ -141,7 +141,7 @@ export function createConstructionOperations(environment, sections) {
|
|
|
141
141
|
assertSamplingCount(value.points.length, "hull", 100_000);
|
|
142
142
|
}
|
|
143
143
|
const first = value.points?.[0];
|
|
144
|
-
const coordinates = typeof first === "object" && first !== null && "
|
|
144
|
+
const coordinates = typeof first === "object" && first !== null && "toData" in first ? first.toData() : first;
|
|
145
145
|
if (value.points !== undefined && coordinates?.length === 2) {
|
|
146
146
|
const points = value.points;
|
|
147
147
|
if (!Array.isArray(points) || points.length < 3)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { convexContourOffsets } from "../geometry/convex-offset.js";
|
|
1
2
|
import { edgeTreatmentPointCount, edgeTreatmentSetbacks, sampleEdgeTreatment, } from "../geometry/edge-finishing.js";
|
|
2
3
|
import { GeometryError } from "../geometry/errors.js";
|
|
3
4
|
import { resolveExtrusionControls } from "../geometry/extrusion.js";
|
|
@@ -19,22 +20,7 @@ export function buildFinishedExtrusion(module, profile, options) {
|
|
|
19
20
|
if (profile.components.length !== 1 || profile.components[0].holes.length !== 0)
|
|
20
21
|
fail("End treatments require one convex contour without holes; use explicit loft profiles for other topology.");
|
|
21
22
|
const contour = profile.components[0].outer, points = contour.points;
|
|
22
|
-
const
|
|
23
|
-
const next = points[(index + 1) % points.length], dx = next[0] - point[0], dy = next[1] - point[1];
|
|
24
|
-
const length = Math.hypot(dx, dy);
|
|
25
|
-
if (!(length > 0) || !Number.isFinite(length))
|
|
26
|
-
fail("End treatment contours must have distinct finite vertices.");
|
|
27
|
-
return [dx / length, dy / length];
|
|
28
|
-
});
|
|
29
|
-
const miters = edges.map((edge, index) => {
|
|
30
|
-
const previous = edges[(index + edges.length - 1) % edges.length];
|
|
31
|
-
const turn = previous[0] * edge[1] - previous[1] * edge[0];
|
|
32
|
-
if (!(turn > 1e-12))
|
|
33
|
-
fail("End treatments require a strictly convex counterclockwise contour without collinear vertices.");
|
|
34
|
-
const denominator = 1 + previous[0] * edge[0] + previous[1] * edge[1];
|
|
35
|
-
return [(-previous[1] - edge[1]) / denominator, (previous[0] + edge[0]) / denominator];
|
|
36
|
-
});
|
|
37
|
-
const magnification = miters.reduce((maximum, [x, y]) => Math.max(maximum, Math.hypot(x, y)), 1);
|
|
23
|
+
const { magnification, offset } = convexContourOffsets(points, "extrude");
|
|
38
24
|
const sampling = {
|
|
39
25
|
resolution: options.resolution,
|
|
40
26
|
limits: options.limits,
|
|
@@ -58,19 +44,6 @@ export function buildFinishedExtrusion(module, profile, options) {
|
|
|
58
44
|
...bottomPoints.map(([inset, depth]) => ({ inset, z: depth })),
|
|
59
45
|
...[...topPoints].reverse().map(([inset, depth]) => ({ inset, z: options.height - depth })),
|
|
60
46
|
];
|
|
61
|
-
const offset = (inset) => {
|
|
62
|
-
const result = points.map(([x, y], index) => [
|
|
63
|
-
x + miters[index][0] * inset,
|
|
64
|
-
y + miters[index][1] * inset,
|
|
65
|
-
]);
|
|
66
|
-
for (let index = 0; index < result.length; index++) {
|
|
67
|
-
const point = result[index], next = result[(index + 1) % result.length], edge = edges[index];
|
|
68
|
-
if (!point.every(Number.isFinite) ||
|
|
69
|
-
!((next[0] - point[0]) * edge[0] + (next[1] - point[1]) * edge[1] > 0))
|
|
70
|
-
fail("End treatment inset collapses or reverses a contour edge.");
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
};
|
|
74
47
|
offset(Math.max(bottomSize[0], topSize[0])); // fit fails before allocating the full station family
|
|
75
48
|
const stations = rows.map(({ inset, z }) => ({
|
|
76
49
|
z: controls.center ? z - options.height / 2 : z,
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { convexContourOffsets } from "../geometry/convex-offset.js";
|
|
2
|
+
import { GeometryError } from "../geometry/errors.js";
|
|
3
|
+
import { assertPrimitiveOptions } from "../geometry/primitive-resolvers.js";
|
|
4
|
+
/** Composes cutters inside the evaluating host, retaining deferred Section and sampling ownership. */
|
|
5
|
+
export function createHoleCutterOperation(environment, operations) {
|
|
6
|
+
return (options) => {
|
|
7
|
+
environment.assertActive();
|
|
8
|
+
assertPrimitiveOptions(options, "holeCutter");
|
|
9
|
+
const fail = (message) => {
|
|
10
|
+
throw new GeometryError("INVALID_ARGUMENT", message, { operation: "holeCutter" });
|
|
11
|
+
};
|
|
12
|
+
const positive = (value, name) => {
|
|
13
|
+
if (!Number.isFinite(value) || value <= 0)
|
|
14
|
+
fail(`${name} must be finite and positive.`);
|
|
15
|
+
return value;
|
|
16
|
+
};
|
|
17
|
+
const nonnegative = (value, name) => {
|
|
18
|
+
if (!Number.isFinite(value) || value < 0)
|
|
19
|
+
fail(`${name} must be finite and nonnegative.`);
|
|
20
|
+
return value;
|
|
21
|
+
};
|
|
22
|
+
const height = positive(options.height, "height");
|
|
23
|
+
const circular = options.diameter !== undefined;
|
|
24
|
+
if (circular === (options.profile !== undefined))
|
|
25
|
+
fail("Specify exactly one diameter or Section profile.");
|
|
26
|
+
if (!circular &&
|
|
27
|
+
(options.recess !== undefined ||
|
|
28
|
+
options.segments !== undefined ||
|
|
29
|
+
options.sizing !== undefined))
|
|
30
|
+
fail("Circular recess, segments and sizing options require a diameter.");
|
|
31
|
+
if (options.recess !== undefined && options.entryChamfer !== undefined)
|
|
32
|
+
fail("A recess and entryChamfer are mutually exclusive.");
|
|
33
|
+
const face = options.face ?? "top";
|
|
34
|
+
if (face !== "top" && face !== "bottom")
|
|
35
|
+
fail("face must be top or bottom.");
|
|
36
|
+
if (options.overrun !== undefined)
|
|
37
|
+
assertPrimitiveOptions(options.overrun, "holeCutter");
|
|
38
|
+
const bottom = nonnegative(options.overrun?.bottom ?? 0, "overrun.bottom");
|
|
39
|
+
const top = nonnegative(options.overrun?.top ?? 0, "overrun.top");
|
|
40
|
+
const length = positive(height + bottom + top, "extended height");
|
|
41
|
+
const chamfer = nonnegative(options.entryChamfer ?? 0, "entryChamfer");
|
|
42
|
+
if (chamfer >= height)
|
|
43
|
+
fail("entryChamfer must be smaller than height.");
|
|
44
|
+
const selected = environment.withResolutionDefaults(options);
|
|
45
|
+
const sampling = { resolution: selected.resolution, limits: selected.limits };
|
|
46
|
+
if (circular)
|
|
47
|
+
positive(options.diameter, "diameter");
|
|
48
|
+
if (options.recess !== undefined) {
|
|
49
|
+
const recess = options.recess;
|
|
50
|
+
assertPrimitiveOptions(recess, "holeCutter");
|
|
51
|
+
positive(recess.diameter, "recess.diameter");
|
|
52
|
+
if (recess.diameter <= options.diameter)
|
|
53
|
+
fail("The recess diameter must exceed the bore diameter.");
|
|
54
|
+
let depth;
|
|
55
|
+
if (recess.kind === "counterbore")
|
|
56
|
+
depth = positive(recess.depth, "recess.depth");
|
|
57
|
+
else if (recess.kind === "countersink") {
|
|
58
|
+
if (!Number.isFinite(recess.includedAngle) ||
|
|
59
|
+
recess.includedAngle <= 0 ||
|
|
60
|
+
recess.includedAngle >= 180)
|
|
61
|
+
fail("Countersink includedAngle must be between zero and 180 degrees.");
|
|
62
|
+
depth = positive((recess.diameter - options.diameter) /
|
|
63
|
+
(2 * Math.tan((recess.includedAngle * Math.PI) / 360)), "recess depth");
|
|
64
|
+
}
|
|
65
|
+
else
|
|
66
|
+
return fail("Unsupported recess kind.");
|
|
67
|
+
if (depth > height)
|
|
68
|
+
fail("The recess must fit within height.");
|
|
69
|
+
const segments = environment.resolveCircularSegments(recess.diameter / 2, options);
|
|
70
|
+
const common = { ...sampling, segments, sizing: options.sizing ?? "vertex", center: false };
|
|
71
|
+
const bore = operations.translate(operations.cylinder({ ...common, diameter: options.diameter, height: length }), [0, 0, -bottom]);
|
|
72
|
+
const seat = operations.translate(operations.cylinder({
|
|
73
|
+
...common,
|
|
74
|
+
diameter: recess.kind === "counterbore"
|
|
75
|
+
? recess.diameter
|
|
76
|
+
: face === "top"
|
|
77
|
+
? [options.diameter, recess.diameter]
|
|
78
|
+
: [recess.diameter, options.diameter],
|
|
79
|
+
height: depth,
|
|
80
|
+
}), [0, 0, face === "top" ? height - depth : 0]);
|
|
81
|
+
const excess = face === "top" ? top : bottom;
|
|
82
|
+
return operations.union([
|
|
83
|
+
bore,
|
|
84
|
+
seat,
|
|
85
|
+
...(excess === 0
|
|
86
|
+
? []
|
|
87
|
+
: [
|
|
88
|
+
operations.translate(operations.cylinder({
|
|
89
|
+
...common,
|
|
90
|
+
diameter: recess.diameter,
|
|
91
|
+
height: excess,
|
|
92
|
+
}), [0, 0, face === "top" ? height : -bottom]),
|
|
93
|
+
]),
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
if (circular) {
|
|
97
|
+
const openingOverrun = face === "top" ? top : bottom;
|
|
98
|
+
const segments = environment.resolveCircularSegments(options.diameter / 2 + chamfer + (chamfer === 0 ? 0 : openingOverrun), options);
|
|
99
|
+
const common = { ...sampling, segments, sizing: options.sizing ?? "vertex", center: false };
|
|
100
|
+
const bore = operations.translate(operations.cylinder({
|
|
101
|
+
...common,
|
|
102
|
+
diameter: options.diameter,
|
|
103
|
+
height: length,
|
|
104
|
+
}), [0, 0, -bottom]);
|
|
105
|
+
if (chamfer === 0)
|
|
106
|
+
return bore;
|
|
107
|
+
// Circular entries retain nominal radial dimensions. Section entries below instead
|
|
108
|
+
// offset their supplied polygon edges; their faceted envelope remains authoritative.
|
|
109
|
+
const mouth = options.diameter + 2 * (chamfer + openingOverrun);
|
|
110
|
+
const entry = operations.translate(operations.cylinder({
|
|
111
|
+
...common,
|
|
112
|
+
diameter: face === "top" ? [options.diameter, mouth] : [mouth, options.diameter],
|
|
113
|
+
height: chamfer + openingOverrun,
|
|
114
|
+
}), [0, 0, face === "top" ? height - chamfer : -bottom]);
|
|
115
|
+
return operations.union([bore, entry]);
|
|
116
|
+
}
|
|
117
|
+
const profile = options.profile;
|
|
118
|
+
if (chamfer === 0)
|
|
119
|
+
return operations.translate(operations.extrude(profile, { ...sampling, height: length }), [
|
|
120
|
+
0,
|
|
121
|
+
0,
|
|
122
|
+
-bottom,
|
|
123
|
+
]);
|
|
124
|
+
const source = environment.sectionProfileFor(profile);
|
|
125
|
+
if (source.components.length !== 1 || source.components[0].holes.length !== 0)
|
|
126
|
+
fail("Entry chamfers require one strictly convex contour without holes.");
|
|
127
|
+
const component = source.components[0];
|
|
128
|
+
const offset = convexContourOffsets(component.outer.points, "holeCutter").offset;
|
|
129
|
+
const rows = face === "top"
|
|
130
|
+
? [
|
|
131
|
+
{ z: -bottom, inset: 0 },
|
|
132
|
+
{ z: height - chamfer, inset: 0 },
|
|
133
|
+
{ z: height + top, inset: -chamfer - top },
|
|
134
|
+
]
|
|
135
|
+
: [
|
|
136
|
+
{ z: -bottom, inset: -chamfer - bottom },
|
|
137
|
+
{ z: chamfer, inset: 0 },
|
|
138
|
+
{ z: height + top, inset: 0 },
|
|
139
|
+
];
|
|
140
|
+
const stations = rows.map(({ z, inset }) => ({
|
|
141
|
+
z,
|
|
142
|
+
profile: {
|
|
143
|
+
components: [{ ...component, outer: { ...component.outer, points: offset(inset) } }],
|
|
144
|
+
},
|
|
145
|
+
}));
|
|
146
|
+
return operations.loft(stations, sampling);
|
|
147
|
+
};
|
|
148
|
+
}
|