@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
package/dist/api/text.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export declare interface
|
|
1
|
+
/** Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. */
|
|
2
|
+
export declare interface Bounds2Data {
|
|
3
3
|
/** Inclusive maximum X/Y coordinates. */
|
|
4
|
-
readonly max:
|
|
4
|
+
readonly max: Vector2Data;
|
|
5
5
|
/** Inclusive minimum X/Y coordinates. */
|
|
6
|
-
readonly min:
|
|
6
|
+
readonly min: Vector2Data;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
/** Limits apply before parsing or shaping untrusted font data. */
|
|
@@ -27,7 +27,7 @@ export declare function prepareVectorFont(
|
|
|
27
27
|
): Promise<VectorFont>;
|
|
28
28
|
|
|
29
29
|
/** A two-dimensional Cartesian vector or point. */
|
|
30
|
-
export declare type
|
|
30
|
+
export declare type Vector2Data = readonly [x: number, y: number];
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* A prepared font owns its parsed bytes; keep handles local to their Worker or invocation.
|
|
@@ -93,7 +93,7 @@ export declare interface VectorTextLayoutOptions extends VectorTextOptions {
|
|
|
93
93
|
/** Text measurements from the same immutable layout that supplies geometry and SVG outlines. */
|
|
94
94
|
export declare interface VectorTextMetrics {
|
|
95
95
|
/** Visible curve bounds after alignment, or null when the text has no ink. */
|
|
96
|
-
readonly bounds:
|
|
96
|
+
readonly bounds: Bounds2Data | null;
|
|
97
97
|
/** Unaligned logical advance and negative baseline displacement in mm; arcs retain [arc length, 0]. */
|
|
98
98
|
readonly advance: readonly [number, number];
|
|
99
99
|
/** Maximum logical line advance in millimetres, including spaces; arc length on circular baselines. */
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Geometry API concepts
|
|
2
2
|
|
|
3
|
-
Choose
|
|
3
|
+
Choose shapes, paths, profiles, and modules, then compose immutable geometry with clear sampling and preflight limits.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Use Sections for filled 2D shapes, Solids for 3D material, and paths or profiles for boundaries
|
|
6
|
+
and correspondence. Import modeling functions from the package root:
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
|
|
@@ -13,9 +14,30 @@ import { generate } from "@metamesh/project";
|
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
|
|
16
|
-
Studio supplies
|
|
17
|
-
values in a generation program.
|
|
18
|
-
|
|
17
|
+
Studio supplies the API and runtime to code Projects. Standalone applications use the same
|
|
18
|
+
values in a generation program. Use the [Model API reference](../reference/model.md) for exact
|
|
19
|
+
signatures.
|
|
20
|
+
|
|
21
|
+
## Choose a modeling path
|
|
22
|
+
|
|
23
|
+
| Starting intent | Construction | Main decision |
|
|
24
|
+
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
|
|
25
|
+
| A block, cylinder, sphere, or cone | Primitives and [solid Booleans](fundamentals.md#choose-the-boolean-by-the-material-you-want) | Combine material or remove it with cutters |
|
|
26
|
+
| A plate, gasket, logo, or outline with holes | A filled `Section`, section Booleans or offsets, then [extrusion](recipes.md#section-hole-offset-and-extrusion) | Solve the outline before adding thickness |
|
|
27
|
+
| A hollow sleeve with a flange, cup, or knob | [Revolve a closed radial profile](recipes.md#revolve-a-radial-profile) around +Z | Describe the material, including walls and bores, in radius/height coordinates |
|
|
28
|
+
| A routed strip or tube | [Sweep a section along a path](recipes.md#rotation-minimizing-path-sweep) | Choose section orientation and the closed seam |
|
|
29
|
+
| A transition between different cross sections | [Loft corresponding boundaries](recipes.md#matched-section-loft) | Match landmarks and holes between stations |
|
|
30
|
+
| Repeated holes or features | [Patterns and placement](recipes.md#primitive-booleans-and-repeated-placement) | Position one feature before repeating it |
|
|
31
|
+
| Separate mating parts | [Explicit anchors](recipes.md#named-anchors-and-custom-frames) and [shared thread settings](https://metamesh.studio/docs/develop/printable-threads) | Share a mating datum and clearance decisions |
|
|
32
|
+
|
|
33
|
+
Combine these constructions as needed: join a flange to a sleeve, then bore either with a
|
|
34
|
+
repeated cutter. Prefer an existing primitive when it fits; use `tube` for a concentric straight
|
|
35
|
+
sleeve.
|
|
36
|
+
|
|
37
|
+
Start with synchronous generation and return named parts. Geometry values are immutable recipes
|
|
38
|
+
that the host evaluates. Add `computed` when expensive work stays unchanged across edits. See
|
|
39
|
+
[generation and parameter changes](generation.md#start-with-generate) and the
|
|
40
|
+
[standalone CLI entry contract](https://metamesh.studio/docs/develop/agent-authoring#model-entries).
|
|
19
41
|
|
|
20
42
|
## Choose the module for your host
|
|
21
43
|
|
|
@@ -26,36 +48,33 @@ exact signatures; this guide explains how the concepts fit together.
|
|
|
26
48
|
| [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
|
|
27
49
|
| [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
|
|
28
50
|
|
|
29
|
-
Construct
|
|
30
|
-
synchronous generation.
|
|
31
|
-
geometry helpers for custom calculations.
|
|
51
|
+
Construct shapes, vectors, paths, and transforms in ordinary TypeScript and reuse them in
|
|
52
|
+
synchronous generation. The host owns evaluation, observations, and export.
|
|
32
53
|
|
|
33
54
|
## Use Modeling outside Studio
|
|
34
55
|
|
|
35
|
-
|
|
56
|
+
Start with a [complete standalone model](standalone-model.md), or follow
|
|
57
|
+
[Run Modeling in your application](hosting.md)
|
|
36
58
|
to initialize the engine, build a model, load WASM, and export its completed snapshot.
|
|
37
59
|
For lettering, [prepare exact font bytes](fonts.md) before building.
|
|
38
60
|
|
|
39
61
|
## Geometry vocabulary
|
|
40
62
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- `Vector2` and `Vector3` are immutable arithmetic values created by `vector2` and `vector3`.
|
|
57
|
-
- `Vector2Tuple` and `Vector3Tuple` are fixed numeric tuples for coordinate interchange and kernels.
|
|
58
|
-
- `Bounds2` and `Bounds3` contain finite minimum and maximum tuples for measurements and placement.
|
|
63
|
+
Choose the representation by the information you need to retain:
|
|
64
|
+
|
|
65
|
+
| Representation | Retains | Typical use |
|
|
66
|
+
| -------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------ |
|
|
67
|
+
| `Vector2` / `Vector3` | Immutable finite coordinates and arithmetic methods | Readable calculations |
|
|
68
|
+
| `Path2` / `Path3` | Sampled points, traversal order, and closure | Trajectories and boundary queries |
|
|
69
|
+
| `Contour` | One closed boundary's point tuples, without a repeated endpoint | Custom calculations and meshing |
|
|
70
|
+
| `PolygonData` / `RegionData` | One exterior plus holes / a collection of filled polygons | Serialized filled topology |
|
|
71
|
+
| `Profile` / `ProfileContour2` | Identified family topology / one closed boundary of identified spans | Correspondence across related shapes |
|
|
72
|
+
| `CorrespondingProfile` | Shared sampled landmarks from `matchProfiles` | Loft or sweep stations |
|
|
73
|
+
| `Section` / `Solid` | Immutable filled 2D / 3D recipes | Booleans and model construction |
|
|
74
|
+
| `Vector2Data` / `Vector3Data`, `Path2Data` / `Path3Data` | Vector tuples and complete path records | Interchange and numerical kernels |
|
|
75
|
+
| `Bounds2` / `Bounds3` | Immutable axis-aligned extents and measurement methods | Containment and placement queries |
|
|
76
|
+
| `Bounds2Data` / `Bounds3Data` | Plain min/max coordinates | Measurements and interchange |
|
|
77
|
+
| `Anchor3` | An attachment frame | Relative placement |
|
|
59
78
|
|
|
60
79
|
`Section` and `Solid` are opaque immutable recipes. Construction and composition need no engine;
|
|
61
80
|
ordinary recipes can be reused across sessions regardless of where they were constructed.
|
|
@@ -64,33 +83,28 @@ host's defaults. The host owns evaluation caches and native kernel values. `comp
|
|
|
64
83
|
observation: its selected shapes, and recipes using them, can only be evaluated in the originating
|
|
65
84
|
session because component identity depends on evaluated topology.
|
|
66
85
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
`
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
`polygon(path)` requires a closed planar value and establishes exterior/hole winding. A path's
|
|
90
|
-
transform preserves traversal even after reflection. Individual vector inputs and authored point
|
|
91
|
-
collections accept fluent vectors as well as tuples; serialized data contracts remain tuple-only.
|
|
92
|
-
`toArray()` returns frozen tuples for interchange and does not encode closure. Keep the path value
|
|
93
|
-
when passing closure between operations.
|
|
86
|
+
Use Sections from the root module for Booleans, extrusion, sweeps, and lofts. Use `/geometry`
|
|
87
|
+
contour factories such as `circleContour` and `rectangleContour` when custom calculations or
|
|
88
|
+
meshing need point data. These rectangle factories share size, center, corner treatment, and
|
|
89
|
+
sampling options:
|
|
90
|
+
|
|
91
|
+
| You need | Choose | Result |
|
|
92
|
+
| ------------------------------------------------- | --------------------------------------------------------------- | --------- |
|
|
93
|
+
| Filled material for Booleans or extrusion | [`rectangle`](../reference/model/rectangle.md) | `Section` |
|
|
94
|
+
| Sampled boundary coordinates | [`rectangleContour`](../reference/geometry/rectangleContour.md) | `Contour` |
|
|
95
|
+
| Stable edge and corner identities across stations | [`rectangleProfile`](../reference/geometry/rectangleProfile.md) | `Profile` |
|
|
96
|
+
|
|
97
|
+
[`polygon`](../reference/model/polygon.md) fills boundaries in four forms:
|
|
98
|
+
|
|
99
|
+
- `polygon(points)` fills one contour.
|
|
100
|
+
- `polygon({ outer, holes })` validates exterior/hole topology and normalizes winding.
|
|
101
|
+
- `polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
|
|
102
|
+
explicit `"evenodd"` fill.
|
|
103
|
+
- `polygon({ polygons: data })` accepts existing `RegionData`.
|
|
104
|
+
|
|
105
|
+
Each returns a `Section`, like `circle` or `rectangle`. Later Booleans may produce holes or
|
|
106
|
+
disconnected components. Use `section.toRegionData()` inside synchronous generation to observe
|
|
107
|
+
the evaluated shape; keep serialized point data for interchange or pure preparation.
|
|
94
108
|
|
|
95
109
|
`rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
|
|
96
110
|
identified spans for custom geometry. Prepare a complete explicit family with `matchProfiles`
|
|
@@ -101,16 +115,96 @@ Identified spans also accept cubic Béziers with the same endpoints and controls
|
|
|
101
115
|
grid; physical sampling refines every member before choosing the family count. Collapsed spans
|
|
102
116
|
retain repeated logical slots, while the completed loft removes degenerate faces.
|
|
103
117
|
|
|
104
|
-
## Choose
|
|
118
|
+
## Choose fluent values or standalone algorithms
|
|
119
|
+
|
|
120
|
+
Use methods for ordinary composition and queries on a value, such as `path.transform(...)`,
|
|
121
|
+
`path.closestPoint(...)`, or `vector.normalize()`. Use standalone algorithms for specialized
|
|
122
|
+
outputs, such as [`computeParallelTransportFrames`](../reference/geometry/computeParallelTransportFrames.md),
|
|
123
|
+
[`sweepMesh`](../reference/geometry/sweepMesh.md), or
|
|
124
|
+
[`resolveCylindricalGear`](../reference/geometry/resolveCylindricalGear.md).
|
|
125
|
+
|
|
126
|
+
### Fluent vector and tuple arithmetic
|
|
127
|
+
|
|
128
|
+
Tuple kernels remain useful in numerical loops. The same arithmetic can be written in either form:
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
import { vector3 } from "@metamesh/modeling";
|
|
134
|
+
import { add3, normalize3, scale3 } from "@metamesh/modeling/geometry";
|
|
135
|
+
|
|
136
|
+
export const fluentDirection = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
137
|
+
export const tupleDirection = scale3(normalize3(add3([1, 2, 3], [4, 0, 0])), 10);
|
|
138
|
+
// fluentDirection.toData() and tupleDirection contain the same coordinates.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
Fluent vectors validate finite inputs and results and allocate immutable values. Basic tuple
|
|
144
|
+
arithmetic such as `add3` avoids those wrappers and assumes valid inputs; overflow can produce
|
|
145
|
+
nonfinite results. Individual kernels document additional checks, such as zero-length rejection
|
|
146
|
+
in `normalize3`.
|
|
147
|
+
|
|
148
|
+
## Value and data naming
|
|
149
|
+
|
|
150
|
+
Modeling values use domain names such as `Vector2`, `Transform2`, `Path2`, and `Bounds2`.
|
|
151
|
+
Their plain representations consistently use `Data`: `Vector2Data`, `Transform2Data`,
|
|
152
|
+
`Path2Data`, and `Bounds2Data`. Each value exposes `toData()` for a stable, deeply frozen
|
|
153
|
+
representation, and its factory accepts that data again. `Input` types describe accepted values,
|
|
154
|
+
data, and any supported construction shorthand.
|
|
155
|
+
|
|
156
|
+
Vector data is a coordinate tuple, transform data a canonical matrix, bounds data a min/max record,
|
|
157
|
+
and path data a record with `dimension`, `points`, and `closed`. Use `path.toData().points`
|
|
158
|
+
when a numerical algorithm needs only coordinates; use the full record to retain topology.
|
|
159
|
+
Options, reports, geometry descriptors, and recipes keep their descriptive contracts. Use
|
|
160
|
+
`toTriangleMesh()` or `toRegionData()` during active host execution to evaluate a Solid as a mesh
|
|
161
|
+
or a Section as a region.
|
|
162
|
+
|
|
163
|
+
## Query paths and preserve closure
|
|
164
|
+
|
|
165
|
+
Use `path2(points, { closed: true })` or `path3(points, { closed: true })` for a reusable boundary.
|
|
166
|
+
`length()` includes the closing edge. [`closestPoint`](../reference/geometry/Path3-type.md#closestpoint)
|
|
167
|
+
returns a [`PathLocation`](../reference/geometry/PathLocation.md): a fluent `point`, `distance` in
|
|
168
|
+
millimetres, `edgeIndex`, and clamped `fraction` within that edge. Equal-distance ties select the
|
|
169
|
+
first edge in traversal order. The fraction is local to an edge; it is not a whole-path or analytic
|
|
170
|
+
curve parameter.
|
|
171
|
+
|
|
172
|
+
### Path coordinate round trip
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
import { path3 } from "@metamesh/modeling";
|
|
178
|
+
|
|
179
|
+
export const boundary = path3(
|
|
180
|
+
[
|
|
181
|
+
[0, 0, 0],
|
|
182
|
+
[10, 0, 0],
|
|
183
|
+
[10, 10, 0],
|
|
184
|
+
[0, 10, 0],
|
|
185
|
+
],
|
|
186
|
+
{ closed: true }
|
|
187
|
+
);
|
|
188
|
+
export const nearest = boundary.closestPoint([-2, 5, 0]);
|
|
189
|
+
// point: [0, 5, 0], distance: 2, edgeIndex: 3, fraction: 0.5
|
|
190
|
+
export const restoredPath = path3(boundary.toData());
|
|
191
|
+
// Both paths include the closing edge and have length 40 mm.
|
|
192
|
+
```
|
|
193
|
+
|
|
105
194
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
195
|
+
|
|
196
|
+
`toData()` returns a deeply frozen record with `dimension`, `points`, and `closed`. Pass the path
|
|
197
|
+
value directly where supported, or restore the full record with `path2(data)` or `path3(data)`.
|
|
198
|
+
Closed paths omit the duplicated endpoint. Open paths may be empty; their bounds are `undefined`,
|
|
199
|
+
and nearest-edge queries require at least two vertices. Queries measure the sampled boundary,
|
|
200
|
+
not a filled interior or underlying analytic curve.
|
|
201
|
+
|
|
202
|
+
Chain `transform`, `reverse`, and equal-distance `resample` to create new paths. Transforming a path
|
|
203
|
+
preserves traversal even after reflection. `polygon(path)` requires a closed planar value and
|
|
204
|
+
establishes exterior/hole winding; `stroke`, sweeps, and path patterns accept paths in the matching
|
|
205
|
+
dimension. Authored point collections accept fluent vectors or tuples; serialized data uses tuples.
|
|
206
|
+
|
|
207
|
+
## Compose modeling operations
|
|
114
208
|
|
|
115
209
|
Name meaningful intermediate values and choose a curve tolerance that preserves the required
|
|
116
210
|
shape. Many high-resolution Boolean operands increase generation time.
|
|
@@ -120,30 +214,35 @@ filled Section and `box({ size: [24, 16, 6] })` creates a Solid. `union` and `in
|
|
|
120
214
|
combine same-dimensional arrays. `shape.subtract(cutters)` accepts an array of same-dimensional
|
|
121
215
|
cutters. `section.offset(distance, options)` stays in the filled XY plane.
|
|
122
216
|
|
|
123
|
-
`section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
|
|
124
|
-
`center: true` is requested.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
`correspondence` method (`"direct"`,
|
|
130
|
-
profiles;
|
|
131
|
-
|
|
132
|
-
degree twist, uniform/XY/per-station
|
|
217
|
+
- `section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
|
|
218
|
+
`center: true` is requested.
|
|
219
|
+
- `section.revolve({ degrees })` rotates radial/Z geometry around +Z.
|
|
220
|
+
- `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
|
|
221
|
+
rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. Invertible
|
|
222
|
+
XY transforms must keep consistent handedness. Use corresponding Profile stations for custom
|
|
223
|
+
topology. Boolean Sections and point contours need a `correspondence` method (`"direct"`,
|
|
224
|
+
`"reindex"`, `"fast-distance"`, or `"distance"`) or explicit profiles; contour order alone does
|
|
225
|
+
not establish semantic correspondence.
|
|
226
|
+
- `section.sweep(path, options)` supports open or closed paths, degree twist, uniform/XY/per-station
|
|
227
|
+
scales, and an explicit compatible closed seam.
|
|
133
228
|
|
|
134
229
|
## Coordinates, units, and resolution
|
|
135
230
|
|
|
136
231
|
MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
|
|
137
232
|
tolerances are millimetres; angular arguments such as `rotate` use degrees.
|
|
138
|
-
Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-
|
|
233
|
+
Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-value rotations also take degrees.
|
|
139
234
|
The low-level [`rotationTransform3`](../reference/geometry/rotationTransform3.md) constructor
|
|
140
235
|
requires an explicit `{ degrees }` or `{ radians }` angle.
|
|
141
236
|
|
|
142
|
-
`GeometryResolution` controls sampled curves in physical space.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
237
|
+
`GeometryResolution` controls sampled curves in physical space. Defaults are a `0.05 mm` maximum
|
|
238
|
+
chord error, 16–512 segments per complete circle, and no maximum segment length. Settings apply
|
|
239
|
+
in this order:
|
|
240
|
+
|
|
241
|
+
1. An operation-specific `segments` or `circularSegments` count.
|
|
242
|
+
2. The operation's local `resolution`.
|
|
243
|
+
3. Host session defaults.
|
|
244
|
+
|
|
245
|
+
A shape does not carry its sampling policy into later operations; pass it explicitly where needed.
|
|
147
246
|
|
|
148
247
|
Use an exact segment count for intentionally faceted geometry or when two sampled contours must
|
|
149
248
|
match point for point. Use physical chord and segment limits for ordinary printable curves. If a
|
|
@@ -154,16 +253,17 @@ returning a coarser shape.
|
|
|
154
253
|
`sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
|
|
155
254
|
meet the nominal radius. `circle` and `cylinder` support the same radial convention.
|
|
156
255
|
|
|
157
|
-
Finishing
|
|
158
|
-
`profile` points
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
including holes and twist.
|
|
165
|
-
|
|
166
|
-
|
|
256
|
+
Finishing options share `round` (radius), `chamfer` (setbacks), `smooth` (cubic setbacks), and exact
|
|
257
|
+
`profile` points:
|
|
258
|
+
|
|
259
|
+
- Boxes select disjoint named edges or groups; rectangles select individual corners.
|
|
260
|
+
- Cylinder/frustum and straight convex extrusion rims use independent `ends.bottom` and `ends.top`.
|
|
261
|
+
- Zero radius, zero chamfer/smooth distance, or an all-zero distance pair leaves a feature untreated.
|
|
262
|
+
Other setback pairs require two positive values; negative and nonfinite amounts reject.
|
|
263
|
+
- Disabled extrusion end treatments retain ordinary support, including holes and twist.
|
|
264
|
+
|
|
265
|
+
`attachment` maps a shape-local anchor to a world anchor after construction, using alignment,
|
|
266
|
+
millimetre gap, and degree spin. It accepts named or explicit anchors; Sections must stay in XY.
|
|
167
267
|
|
|
168
268
|
## Reuse a transform across shapes and coordinates
|
|
169
269
|
|
|
@@ -186,7 +286,7 @@ export const placedDirection = placement.applyDirection([10, 0, 0]); // approxim
|
|
|
186
286
|
|
|
187
287
|
|
|
188
288
|
Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
|
|
189
|
-
matching path helpers. `
|
|
289
|
+
matching path helpers. `toData()` supplies a canonical matrix when another system needs it.
|
|
190
290
|
Construct the placement once and reuse it across point collections.
|
|
191
291
|
|
|
192
292
|
`current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
|
|
@@ -196,23 +296,43 @@ return new chains, so shared placements can branch safely.
|
|
|
196
296
|
Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
|
|
197
297
|
the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
|
|
198
298
|
Z; `rotateAxis(axis, degrees, { pivot })` normalizes its nonzero axis. Omitted pivots use the
|
|
199
|
-
coordinate origin. Uniform and per-axis scales
|
|
200
|
-
|
|
201
|
-
matrices throw `GeometryError`.
|
|
299
|
+
coordinate origin. Uniform and per-axis scales must be finite and nonzero; negative factors reflect.
|
|
300
|
+
Nonfinite inputs, invalid axes, and singular matrices throw `GeometryError`.
|
|
202
301
|
|
|
203
302
|
`applyPoint` includes translation. `applyDirection` excludes translation and preserves scale;
|
|
204
303
|
its result is not normalized. `applyNormal` applies the inverse transpose and returns a unit normal,
|
|
205
304
|
including under nonuniform scaling; it rejects zero normals. All three return fluent vectors.
|
|
206
305
|
|
|
207
|
-
`Transform2` works directly with Sections and pure XY helpers; its `
|
|
306
|
+
`Transform2` works directly with Sections and pure XY helpers; its `Transform2Data` is the same
|
|
208
307
|
canonical 3x3 representation throughout. Use `to3D()` when that XY placement
|
|
209
308
|
also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
|
|
210
309
|
that move the XY plane or collapse its dimensions; it does not project 3D points.
|
|
211
310
|
See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
|
|
212
311
|
|
|
312
|
+
### Transform composition order
|
|
313
|
+
|
|
213
314
|
For low-level matrix interoperability, the factories accept existing canonical matrices. Use
|
|
214
315
|
`transform3(frameTransform3(frame))` for an orthonormal frame. The raw constructors and
|
|
215
|
-
`composeTransform3(after, before)` remain available; composition applies `before` first
|
|
316
|
+
`composeTransform3(after, before)` remain available; composition applies `before` first:
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
```ts
|
|
321
|
+
import { transform3 } from "@metamesh/modeling";
|
|
322
|
+
import { applyTransformPoint3, composeTransform3 } from "@metamesh/modeling/geometry";
|
|
323
|
+
|
|
324
|
+
const current = transform3().rotate([0, 0, 90]);
|
|
325
|
+
const next = transform3().translate([20, 0, 5]);
|
|
326
|
+
export const chainedPoint = current.andThen(next).applyPoint([10, 0, 0]);
|
|
327
|
+
export const composedPoint = applyTransformPoint3(
|
|
328
|
+
composeTransform3(next.toData(), current.toData()),
|
|
329
|
+
[10, 0, 0]
|
|
330
|
+
); // Both results are approximately [20, 10, 5].
|
|
331
|
+
export const reversedPoint = next.andThen(current).applyPoint([10, 0, 0]);
|
|
332
|
+
// approximately [0, 30, 5]
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
|
|
216
336
|
|
|
217
337
|
## Calculate with vectors
|
|
218
338
|
|
|
@@ -229,7 +349,7 @@ export const alignment = direction.dot([0, 0, 1]); // number
|
|
|
229
349
|
|
|
230
350
|
|
|
231
351
|
|
|
232
|
-
Values snapshot their input and operations return new values. `
|
|
352
|
+
Values snapshot their input and operations return new values. `toData()` returns the value's
|
|
233
353
|
frozen coordinate tuple without allocating another copy. Normalization rejects zero-length vectors;
|
|
234
354
|
nonfinite coordinates, scalar parameters and overflowing results throw `GeometryError`.
|
|
235
355
|
|
|
@@ -247,11 +367,57 @@ export const perpendicular = normal.dot(tangent); // approximately 0
|
|
|
247
367
|
|
|
248
368
|
|
|
249
369
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
370
|
+
Fluent math, shape transforms, and part placement accept vector values directly. Serialized
|
|
371
|
+
geometry and low-level kernels use tuples. Keep model-specific equations beside the model.
|
|
372
|
+
|
|
373
|
+
## Measure and compare bounds
|
|
374
|
+
|
|
375
|
+
Use [`bounds2`](../reference/geometry/bounds2.md) and
|
|
376
|
+
[`bounds3`](../reference/geometry/bounds3.md) for immutable axis-aligned bounds. `size()` and
|
|
377
|
+
`center()` return fluent vectors. `containsBounds(other)` tests positioned containment in the
|
|
378
|
+
same coordinate frame, including touching boundaries. It does not establish a manufacturing fit.
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
```ts
|
|
383
|
+
import { bounds3 } from "@metamesh/modeling";
|
|
384
|
+
import {
|
|
385
|
+
extrudeMesh,
|
|
386
|
+
fitBounds,
|
|
387
|
+
layoutRow,
|
|
388
|
+
meshBounds,
|
|
389
|
+
rectangleContour,
|
|
390
|
+
} from "@metamesh/modeling/geometry";
|
|
391
|
+
|
|
392
|
+
export const envelope = bounds3({ min: [-10, -5, 0], max: [10, 5, 8] });
|
|
393
|
+
export const size = envelope.size(); // Vector3: [20, 10, 8] mm
|
|
394
|
+
export const center = envelope.center(); // Vector3: [0, 0, 4] mm
|
|
395
|
+
|
|
396
|
+
const mesh = extrudeMesh(rectangleContour({ size: [12, 6] }), { height: 4 });
|
|
397
|
+
// Mesh measurements are plain data. Wrap once for fluent queries.
|
|
398
|
+
export const measured = bounds3(meshBounds(mesh));
|
|
399
|
+
export const fits = envelope.containsBounds(measured); // true
|
|
400
|
+
export const data = measured.toData(); // Frozen { min, max } record for interchange.
|
|
401
|
+
|
|
402
|
+
// Collection and placement algorithms accept bounds values directly.
|
|
403
|
+
export const fitting = fitBounds(measured, envelope, { maxScale: 1 });
|
|
404
|
+
export const positions = layoutRow([measured, envelope], { gap: 2 });
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
Factories snapshot finite, ordered coordinates with finite extents; zero extents are valid.
|
|
410
|
+
`min` and `max` are frozen tuples, and `toData()` returns the value's stable frozen plain record.
|
|
411
|
+
Path `bounds()` queries return matching fluent bounds, or `undefined` for an empty path.
|
|
412
|
+
Mesh and region measurements, inspection results, and engine snapshots retain plain
|
|
413
|
+
`Bounds2Data` or `Bounds3Data`; wrap a measurement when you need fluent queries.
|
|
414
|
+
Compiled Generator packages passing bounds values to host recipes or computed data require
|
|
415
|
+
runtime `8.0.0` or newer in major 8.
|
|
416
|
+
|
|
417
|
+
Keep [`fitBounds`](../reference/geometry/fitBounds.md) and
|
|
418
|
+
[`layoutRow`](../reference/geometry/layoutRow.md) as standalone algorithms: they compute placement
|
|
419
|
+
reports and collection layouts. Both accept values or plain records. Supply bounds after any
|
|
420
|
+
intended rotation; an axis-aligned box alone does not describe the underlying shape.
|
|
255
421
|
|
|
256
422
|
## SVG sections: fills and strokes are different inputs
|
|
257
423
|
|
|
@@ -296,13 +462,36 @@ one profile and fit policy across mating parts, then prove them with a short cal
|
|
|
296
462
|
Follow [Build printable threads](https://metamesh.studio/docs/develop/printable-threads) for the illustrated workflow,
|
|
297
463
|
complete source, profile and fit choices, end treatments, and links into the exact API contracts.
|
|
298
464
|
|
|
465
|
+
## Check preflight guarantees
|
|
466
|
+
|
|
467
|
+
Preflights expose operation-specific checks and reports. Read their return contracts before
|
|
468
|
+
using a successful result as a guarantee:
|
|
469
|
+
|
|
470
|
+
- [`preflightHeightfield`](../reference/geometry/preflightHeightfield.md) checks grid dimensions,
|
|
471
|
+
coordinate precision, and allocation limits. It returns exact output-buffer vertex, triangle,
|
|
472
|
+
and byte counts without evaluating heights.
|
|
473
|
+
- [`preflightHelicalThreadSolidMesh`](../reference/geometry/preflightHelicalThreadSolidMesh.md)
|
|
474
|
+
and related thread preflights check dimensions, sampling, and conservative allocation estimates.
|
|
475
|
+
They return the sampling plan without constructing the final mesh or native solid.
|
|
476
|
+
- [`preflightSvgRegion`](../reference/geometry/preflightSvgRegion.md) parses and samples supported
|
|
477
|
+
SVG geometry, returning a normalized region and import diagnostics. Its counts measure the region
|
|
478
|
+
at the selected resolution; they do not predict later mesh allocation.
|
|
479
|
+
|
|
480
|
+
The `/geometry` preflights run without an engine and use explicit options or package defaults.
|
|
481
|
+
The root [`preflightThreadedRod`](../reference/model/preflightThreadedRod.md),
|
|
482
|
+
[`preflightInternalThreadCutter`](../reference/model/preflightInternalThreadCutter.md), and
|
|
483
|
+
[`preflightThreadedNut`](../reference/model/preflightThreadedNut.md) require active synchronous
|
|
484
|
+
model execution and use the host's resolution and limits.
|
|
485
|
+
|
|
486
|
+
Passing a preflight covers its documented checks. Construction can still fail during callback
|
|
487
|
+
evaluation, meshing, or native evaluation. Constructors enforce their applicable limits even when
|
|
488
|
+
you omit an explicit preflight; preflight is an optional planning and diagnostics step.
|
|
489
|
+
|
|
299
490
|
## Lifecycle and inspection
|
|
300
491
|
|
|
301
|
-
Studio or your standalone
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
`inspectSection()` and `inspectSolid()` for supported bounds, topology counts, area, and volume
|
|
305
|
-
measurements.
|
|
492
|
+
Studio or your standalone host owns initialization, cleanup, finalization, Worker recovery,
|
|
493
|
+
preview, and file delivery. Do not manually delete `Section` or `Solid` values. Use
|
|
494
|
+
`inspectSection()` and `inspectSolid()` for bounds, topology counts, area, and volume.
|
|
306
495
|
|
|
307
496
|
Observations, including `section.toRegionData()`, require the host's active synchronous generation.
|
|
308
497
|
Constructing or composing a recipe outside generation does not evaluate it.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Prepare licensed font bytes and a reusable text layout before building a model outside Studio.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Load font bytes before synchronous generation. Your application supplies bytes for a font you
|
|
6
|
+
are licensed to use and prepares them through the optional `@metamesh/modeling/text` entry point.
|
|
7
|
+
In Studio, use the [Font control recipe](recipes.md#text-from-a-font-parameter).
|
|
8
8
|
|
|
9
9
|
## Install font support
|
|
10
10
|
|
|
@@ -44,11 +44,12 @@ export async function makeLabelLayout(fontBytes: Uint8Array): Promise<{
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
Call `makeLabelLayout(fontBytes)` with
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
Call `makeLabelLayout(fontBytes)` with your font bytes. It returns a `layout` with paths and metrics
|
|
48
|
+
in Y-up millimetres, plus a separate `svg` string.
|
|
49
|
+
|
|
50
|
+
Pass the `layout` to [`textSection`](../reference/model/textSection.md) inside generation, then
|
|
51
|
+
extrude the filled section. Prepare layouts ahead of time, or supply a deterministic text service
|
|
52
|
+
and cache layouts with `computed`.
|
|
52
53
|
|
|
53
54
|
The same layout options support horizontal lines or one circular line through
|
|
54
55
|
[`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). The
|