@metamesh/modeling 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/README.md +67 -9
- package/dist/api/engine.d.ts +14 -7
- package/dist/api/geometry.d.ts +787 -447
- package/dist/api/index.d.ts +637 -250
- package/dist/api/text.d.ts +6 -4
- package/dist/docs/guides/concepts.md +135 -17
- package/dist/docs/guides/fonts.md +8 -0
- package/dist/docs/guides/fundamentals.md +8 -3
- package/dist/docs/guides/generation.md +6 -4
- package/dist/docs/guides/hosting.md +27 -14
- package/dist/docs/guides/recipes.md +82 -11
- package/dist/docs/manifest.json +1911 -856
- package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
- package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
- package/dist/docs/reference/engine/GenerationOptions.md +1 -1
- package/dist/docs/reference/engine/GeometryResource.md +1 -1
- package/dist/docs/reference/engine/ModelDependencies.md +1 -1
- package/dist/docs/reference/engine/ModelEngine.md +1 -1
- package/dist/docs/reference/engine/ModelEngineOptions.md +4 -8
- package/dist/docs/reference/engine/ModelSession.md +1 -1
- package/dist/docs/reference/engine/ModelSnapshot.md +20 -9
- package/dist/docs/reference/engine/SessionOptions.md +1 -1
- package/dist/docs/reference/engine/SnapshotPart.md +4 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +2 -2
- package/dist/docs/reference/engine/createModelEngine.md +3 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
- package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
- package/dist/docs/reference/engine/validateModel.md +1 -1
- package/dist/docs/reference/engine.md +2 -2
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +17 -4
- package/dist/docs/reference/geometry/{Anchor3.md → Anchor3-type.md} +9 -5
- package/dist/docs/reference/geometry/ArcCurve2.md +7 -7
- package/dist/docs/reference/geometry/ArcCurve3.md +9 -9
- package/dist/docs/reference/geometry/{AttachTransformOptions.md → AttachOptions.md} +14 -5
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +6 -1
- package/dist/docs/reference/geometry/Bounds2.md +4 -4
- package/dist/docs/reference/geometry/Bounds3.md +4 -4
- package/dist/docs/reference/geometry/BoundsFit2.md +3 -3
- package/dist/docs/reference/geometry/BoundsFit3.md +3 -3
- package/dist/docs/reference/geometry/BoundsFitOptions.md +1 -1
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +1 -1
- package/dist/docs/reference/geometry/BoxAnchorFace.md +8 -1
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +8 -4
- package/dist/docs/reference/geometry/BoxEdge.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/geometry/BoxOptions.md +10 -10
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +1 -1
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +107 -0
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +1 -1
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +1 -1
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +1 -1
- package/dist/docs/reference/geometry/Contour.md +3 -3
- package/dist/docs/reference/geometry/ContourCurve.md +1 -1
- package/dist/docs/reference/geometry/ContourPoint.md +1 -1
- package/dist/docs/reference/geometry/ContourSegment.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingContour.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +6 -6
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +6 -6
- package/dist/docs/reference/geometry/Curve2.md +1 -1
- package/dist/docs/reference/geometry/Curve3.md +1 -1
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +5 -3
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +3 -3
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +8 -1
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +9 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +3 -3
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +6 -6
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +3 -3
- package/dist/docs/reference/geometry/EndTreatments.md +1 -1
- package/dist/docs/reference/geometry/ExtrudeOptions.md +6 -6
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -5
- package/dist/docs/reference/geometry/FittedTextLayout.md +1 -1
- package/dist/docs/reference/geometry/Frame3.md +6 -6
- package/dist/docs/reference/geometry/GeometryError.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +14 -5
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +11 -5
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +1 -1
- package/dist/docs/reference/geometry/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +1 -1
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +5 -5
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +6 -6
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +1 -1
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +7 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +6 -6
- package/dist/docs/reference/geometry/LineCurve2.md +4 -4
- package/dist/docs/reference/geometry/LineCurve3.md +4 -4
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -5
- package/dist/docs/reference/geometry/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +4 -4
- package/dist/docs/reference/geometry/LoftOptions.md +1 -1
- package/dist/docs/reference/geometry/LoftPlacement.md +1 -1
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +1 -1
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/geometry/MetricFastenerSize.md +1 -1
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +1 -1
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +1 -1
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +1 -1
- package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +1 -1
- package/dist/docs/reference/geometry/Path2-type.md +192 -0
- package/dist/docs/reference/geometry/Path2Data.md +14 -0
- package/dist/docs/reference/geometry/Path2Input.md +15 -0
- package/dist/docs/reference/geometry/Path3-type.md +192 -0
- package/dist/docs/reference/geometry/Path3Data.md +14 -0
- package/dist/docs/reference/geometry/Path3Input.md +15 -0
- package/dist/docs/reference/geometry/PathFrame.md +5 -5
- package/dist/docs/reference/geometry/PathLocation.md +65 -0
- package/dist/docs/reference/geometry/PathNormalGuide.md +6 -5
- package/dist/docs/reference/geometry/PathOptions.md +34 -0
- package/dist/docs/reference/geometry/PathPatternOptions.md +3 -3
- package/dist/docs/reference/geometry/PathPlacement.md +4 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +80 -0
- package/dist/docs/reference/geometry/Pivot2Options.md +26 -0
- package/dist/docs/reference/geometry/Pivot3Options.md +26 -0
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +1 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +22 -22
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +1 -1
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +3 -3
- package/dist/docs/reference/geometry/{Polygon.md → PolygonData.md} +2 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +4 -4
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +31 -0
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +104 -0
- package/dist/docs/reference/geometry/PrintableThreadFit.md +1 -1
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/geometry/Profile.md +1 -1
- package/dist/docs/reference/geometry/ProfileComponent2.md +1 -1
- package/dist/docs/reference/geometry/ProfileContour2.md +1 -1
- package/dist/docs/reference/geometry/ProfileSpan2.md +3 -3
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/geometry/RackPitchDimensions.md +1 -1
- package/dist/docs/reference/geometry/RackPitchSpec.md +5 -5
- package/dist/docs/reference/geometry/RadialPatternOptions.md +17 -22
- package/dist/docs/reference/geometry/RadialSizing.md +1 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +3 -3
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/RegionData.md +14 -0
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +3 -3
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +9 -4
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +1 -1
- package/dist/docs/reference/geometry/SampleContourOptions.md +3 -3
- package/dist/docs/reference/geometry/SampleHelixOptions.md +1 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +3 -3
- package/dist/docs/reference/geometry/SampledCurve2.md +4 -4
- package/dist/docs/reference/geometry/SampledCurve3.md +4 -4
- package/dist/docs/reference/geometry/SampledThreadHelices.md +3 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +1 -1
- package/dist/docs/reference/geometry/SideProfilePoint.md +1 -1
- package/dist/docs/reference/geometry/SideProfileSegment.md +1 -1
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +3 -3
- package/dist/docs/reference/geometry/SphereOptions.md +3 -3
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/StrokeCap.md +7 -0
- package/dist/docs/reference/geometry/StrokeJoin.md +7 -0
- package/dist/docs/reference/geometry/{StrokePathRegionOptions.md → StrokeOptions.md} +8 -8
- package/dist/docs/reference/geometry/SvgImportOptions.md +1 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +3 -3
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +13 -13
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +11 -11
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +9 -9
- package/dist/docs/reference/geometry/SweepOptions.md +6 -6
- package/dist/docs/reference/geometry/SweepOrientation.md +7 -7
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -5
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadEndStyle.md +1 -1
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +1 -1
- package/dist/docs/reference/geometry/ThreadHandedness.md +1 -1
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +3 -3
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +1 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +1 -1
- package/dist/docs/reference/geometry/{ThreadProfile.md → ThreadProfile-type.md} +3 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +1 -1
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/ThreadRole.md +1 -1
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +1 -1
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +6 -6
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +1 -1
- package/dist/docs/reference/geometry/ThreadedNutShape.md +1 -1
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +6 -6
- package/dist/docs/reference/geometry/TorusOptions.md +8 -8
- package/dist/docs/reference/geometry/Transform2-type.md +255 -0
- package/dist/docs/reference/geometry/Transform2Input.md +19 -0
- package/dist/docs/reference/geometry/Transform2Matrix.md +14 -0
- package/dist/docs/reference/geometry/Transform3-type.md +295 -0
- package/dist/docs/reference/geometry/Transform3Input.md +19 -0
- package/dist/docs/reference/geometry/Transform3Matrix.md +17 -0
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +5 -4
- package/dist/docs/reference/geometry/TriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +2 -2
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +3 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +2 -2
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +3 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +1 -1
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +1 -1
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +1 -1
- package/dist/docs/reference/geometry/TubeOptions.md +8 -8
- package/dist/docs/reference/geometry/Vector2-type.md +269 -0
- package/dist/docs/reference/geometry/Vector2Input.md +19 -0
- package/dist/docs/reference/geometry/Vector2Tuple.md +14 -0
- package/dist/docs/reference/geometry/Vector3-type.md +281 -0
- package/dist/docs/reference/geometry/Vector3Input.md +19 -0
- package/dist/docs/reference/geometry/Vector3Tuple.md +14 -0
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +3 -3
- package/dist/docs/reference/geometry/VectorTextLayout.md +1 -1
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +1 -1
- package/dist/docs/reference/geometry/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/geometry/VectorTextOptions.md +1 -1
- package/dist/docs/reference/geometry/add2.md +36 -0
- package/dist/docs/reference/geometry/add3.md +10 -6
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +2 -2
- package/dist/docs/reference/geometry/{createAnchor3.md → anchor3.md} +13 -9
- package/dist/docs/reference/geometry/anchorFrame3.md +5 -5
- package/dist/docs/reference/geometry/applyTransformDirection3.md +11 -7
- package/dist/docs/reference/geometry/applyTransformPoint3.md +11 -7
- package/dist/docs/reference/geometry/attachmentTransform3.md +77 -0
- package/dist/docs/reference/geometry/boundsCenter.md +7 -7
- package/dist/docs/reference/geometry/boundsFromSize.md +7 -7
- package/dist/docs/reference/geometry/boundsSize.md +7 -7
- package/dist/docs/reference/geometry/boxAnchor3.md +10 -6
- package/dist/docs/reference/geometry/categories/bounds-layout.md +1 -1
- package/dist/docs/reference/geometry/categories/curves-paths.md +15 -10
- package/dist/docs/reference/geometry/categories/mechanical.md +6 -6
- package/dist/docs/reference/geometry/categories/meshes.md +3 -4
- package/dist/docs/reference/geometry/categories/pattern-placement.md +7 -7
- package/dist/docs/reference/geometry/categories/primitive-options.md +4 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +5 -6
- package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -2
- package/dist/docs/reference/geometry/categories/transforms-math.md +41 -12
- package/dist/docs/reference/geometry/categories/vector-import.md +5 -5
- package/dist/docs/reference/geometry/circleContour.md +1 -1
- package/dist/docs/reference/geometry/closeToAxis.md +4 -4
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +1 -1
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +5 -5
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -5
- package/dist/docs/reference/geometry/composeTransform3.md +10 -6
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +10 -6
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -7
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +4 -4
- package/dist/docs/reference/geometry/{createTriangleMeshSignature.md → computeTriangleMeshSignature.md} +4 -4
- package/dist/docs/reference/geometry/containsBounds.md +1 -1
- package/dist/docs/reference/geometry/contourContainsPoint.md +4 -4
- package/dist/docs/reference/geometry/cross2.md +36 -0
- package/dist/docs/reference/geometry/cross3.md +10 -6
- package/dist/docs/reference/geometry/cylinderAnchor3.md +10 -6
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/distance2.md +36 -0
- package/dist/docs/reference/geometry/distance3.md +36 -0
- package/dist/docs/reference/geometry/distributeAlongPath.md +8 -6
- package/dist/docs/reference/geometry/dot2.md +36 -0
- package/dist/docs/reference/geometry/dot3.md +9 -5
- package/dist/docs/reference/geometry/ellipseContour.md +1 -1
- package/dist/docs/reference/geometry/eulerTransform3.md +10 -6
- package/dist/docs/reference/geometry/extrudeMesh.md +8 -8
- package/dist/docs/reference/geometry/fitBounds.md +1 -1
- package/dist/docs/reference/geometry/fitTextLayout.md +1 -1
- package/dist/docs/reference/geometry/frameTransform3.md +8 -4
- package/dist/docs/reference/geometry/{getMetricClearanceHole.md → getMetricClearanceHoleDiameter.md} +3 -3
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +1 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/heightfieldMesh.md +1 -1
- package/dist/docs/reference/geometry/{buildHelicalThreadRidgeMesh.md → helicalThreadRidgeMesh.md} +5 -5
- package/dist/docs/reference/geometry/{buildHelicalThreadSolidMesh.md → helicalThreadSolidMesh.md} +5 -5
- package/dist/docs/reference/geometry/inverseTransform3.md +9 -5
- package/dist/docs/reference/geometry/isGeometryError.md +1 -1
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +1 -1
- package/dist/docs/reference/geometry/layoutRow.md +4 -4
- package/dist/docs/reference/geometry/length2.md +30 -0
- package/dist/docs/reference/geometry/length3.md +8 -4
- package/dist/docs/reference/geometry/lerp2.md +42 -0
- package/dist/docs/reference/geometry/lerp3.md +10 -6
- package/dist/docs/reference/geometry/linearPatternTransforms.md +5 -5
- package/dist/docs/reference/geometry/loftMesh.md +2 -1
- package/dist/docs/reference/geometry/matchProfiles.md +1 -1
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +3 -2
- package/dist/docs/reference/geometry/meshBounds.md +1 -1
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +3 -3
- package/dist/docs/reference/geometry/normalize2.md +36 -0
- package/dist/docs/reference/geometry/normalize3.md +10 -6
- package/dist/docs/reference/geometry/normalizeContour.md +4 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -5
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -5
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +11 -11
- package/dist/docs/reference/geometry/path2.md +42 -0
- package/dist/docs/reference/geometry/path3.md +42 -0
- package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -8
- package/dist/docs/reference/geometry/preflightHeightfield.md +1 -1
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +3 -3
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +3 -3
- package/dist/docs/reference/geometry/preflightSvgRegion.md +1 -1
- package/dist/docs/reference/geometry/preflightThreadedNut.md +3 -3
- package/dist/docs/reference/geometry/preflightThreadedRod.md +3 -3
- package/dist/docs/reference/geometry/projectOntoPlane3.md +10 -6
- package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -20
- package/dist/docs/reference/geometry/rectangleContour.md +2 -2
- package/dist/docs/reference/geometry/rectangleProfile.md +2 -2
- package/dist/docs/reference/geometry/regionArea.md +4 -4
- package/dist/docs/reference/geometry/regionBounds.md +4 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +5 -5
- package/dist/docs/reference/geometry/resamplePolyline2.md +5 -5
- package/dist/docs/reference/geometry/resamplePolyline3.md +5 -5
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +8 -4
- package/dist/docs/reference/geometry/resolveArcSegments.md +6 -6
- package/dist/docs/reference/geometry/resolveCircularSegments.md +6 -5
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +1 -1
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +6 -6
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/geometry/resolveRackPitch.md +1 -1
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +4 -4
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/revolveMesh.md +10 -10
- package/dist/docs/reference/geometry/rotate2.md +36 -0
- package/dist/docs/reference/geometry/rotationTransform3.md +10 -6
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -6
- package/dist/docs/reference/geometry/sampleContour.md +3 -3
- package/dist/docs/reference/geometry/sampleCurve2.md +3 -3
- package/dist/docs/reference/geometry/sampleCurve3.md +2 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +1 -1
- package/dist/docs/reference/geometry/sampleHelix.md +5 -5
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +1 -1
- package/dist/docs/reference/geometry/sampleRackToothPath.md +4 -4
- package/dist/docs/reference/geometry/sampleSideProfile.md +6 -6
- package/dist/docs/reference/geometry/sampleTextContours.md +1 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +2 -2
- package/dist/docs/reference/geometry/scale2.md +36 -0
- package/dist/docs/reference/geometry/scale3.md +9 -5
- package/dist/docs/reference/geometry/scaleTransform3.md +10 -6
- package/dist/docs/reference/geometry/signedContourArea.md +1 -1
- package/dist/docs/reference/geometry/starContour.md +4 -4
- package/dist/docs/reference/geometry/strokeRegionData.md +63 -0
- package/dist/docs/reference/geometry/subtract2.md +36 -0
- package/dist/docs/reference/geometry/subtract3.md +10 -6
- package/dist/docs/reference/geometry/sweepMesh.md +9 -9
- package/dist/docs/reference/geometry/{createThreadProfile.md → threadProfile.md} +6 -6
- package/dist/docs/reference/geometry/transform2.md +38 -0
- package/dist/docs/reference/geometry/transform3.md +38 -0
- package/dist/docs/reference/geometry/transformDeterminant3.md +8 -4
- package/dist/docs/reference/geometry/transformRegionData.md +40 -0
- package/dist/docs/reference/geometry/transformTriangleMesh.md +6 -6
- package/dist/docs/reference/geometry/translationTransform3.md +10 -6
- package/dist/docs/reference/geometry/triangulateContour.md +1 -1
- package/dist/docs/reference/geometry/validateSolidMesh.md +2 -2
- package/dist/docs/reference/geometry/validateTransform3.md +9 -5
- package/dist/docs/reference/geometry/validateTriangleMesh.md +1 -1
- package/dist/docs/reference/geometry/vector2.md +31 -0
- package/dist/docs/reference/geometry/vector3.md +38 -0
- package/dist/docs/reference/geometry.md +3 -3
- package/dist/docs/reference/model/Anchor3.md +5 -5
- package/dist/docs/reference/model/AttachOptions.md +10 -5
- package/dist/docs/reference/model/Bounds2.md +4 -4
- package/dist/docs/reference/model/Bounds3.md +4 -4
- package/dist/docs/reference/model/BoxEdge.md +1 -1
- package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/model/BoxOptions.md +10 -10
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/CircleContourOptions.md +1 -1
- package/dist/docs/reference/model/CircleOptions.md +3 -3
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/model/Computed.md +1 -1
- package/dist/docs/reference/model/ComputedValue.md +1 -1
- package/dist/docs/reference/model/Contour.md +3 -3
- package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/model/CorrespondingContour.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/model/CylinderOptions.md +3 -3
- package/dist/docs/reference/model/DiagnosticOptions.md +1 -1
- package/dist/docs/reference/model/EdgeTreatment.md +1 -1
- package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
- package/dist/docs/reference/model/EllipseOptions.md +3 -3
- package/dist/docs/reference/model/EndTreatments.md +1 -1
- package/dist/docs/reference/model/ExtrudeOptions.md +6 -6
- package/dist/docs/reference/model/FinalizedModel.md +18 -8
- package/dist/docs/reference/model/FinalizedPart.md +1 -1
- package/dist/docs/reference/model/Frame3.md +6 -6
- package/dist/docs/reference/model/GenerateCallback.md +1 -1
- package/dist/docs/reference/model/GenerateContext.md +5 -5
- package/dist/docs/reference/model/GeneratedPart.md +6 -6
- package/dist/docs/reference/model/GenerationDiagnostic.md +1 -1
- package/dist/docs/reference/model/GenerationError.md +1 -1
- package/dist/docs/reference/model/GeometryResolution.md +5 -5
- package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/model/GridPatternOptions.md +11 -5
- package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +3 -3
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +1 -1
- package/dist/docs/reference/model/HullOptions.md +7 -7
- package/dist/docs/reference/model/ImmutableBuffer-type.md +1 -1
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +1 -1
- package/dist/docs/reference/model/ImplicitOptions.md +4 -4
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +4 -4
- package/dist/docs/reference/model/LinearPatternOptions.md +12 -5
- package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/model/LoftOptions.md +1 -1
- package/dist/docs/reference/model/LoftPlacement.md +1 -1
- package/dist/docs/reference/model/LoftStation.md +4 -4
- package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/model/ModelProgram.md +1 -1
- package/dist/docs/reference/model/ModelingLimits.md +1 -1
- package/dist/docs/reference/model/NumericArray.md +1 -1
- package/dist/docs/reference/model/PartGeometry.md +1 -1
- package/dist/docs/reference/model/PartOptions.md +6 -6
- package/dist/docs/reference/model/Path2-type.md +192 -0
- package/dist/docs/reference/model/Path2Data.md +14 -0
- package/dist/docs/reference/model/Path2Input.md +15 -0
- package/dist/docs/reference/model/Path3-type.md +192 -0
- package/dist/docs/reference/model/Path3Data.md +14 -0
- package/dist/docs/reference/model/Path3Input.md +15 -0
- package/dist/docs/reference/model/PathLocation.md +65 -0
- package/dist/docs/reference/model/PathNormalGuide.md +6 -5
- package/dist/docs/reference/model/PathOptions.md +34 -0
- package/dist/docs/reference/model/PathPatternOptions.md +3 -3
- package/dist/docs/reference/model/PathResamplingOptions.md +79 -0
- package/dist/docs/reference/model/PatternSource.md +2 -2
- package/dist/docs/reference/model/Pivot2Options.md +27 -0
- package/dist/docs/reference/model/Pivot3Options.md +27 -0
- package/dist/docs/reference/model/PlaneOptions.md +3 -3
- package/dist/docs/reference/model/{Polygon-type.md → PolygonData.md} +2 -2
- package/dist/docs/reference/model/PolygonOptions.md +85 -8
- package/dist/docs/reference/model/{PrimitivePlacement.md → PrimitiveAttachment.md} +7 -7
- package/dist/docs/reference/model/{PrimitivePlacementOptions.md → PrimitiveAttachmentOptions.md} +41 -20
- package/dist/docs/reference/model/PrintableThreadFit.md +1 -1
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +1 -1
- package/dist/docs/reference/model/Profile.md +1 -1
- package/dist/docs/reference/model/ProfileComponent2.md +1 -1
- package/dist/docs/reference/model/ProfileContour2.md +1 -1
- package/dist/docs/reference/model/ProfileSpan2.md +3 -3
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/model/RadialPatternOptions.md +17 -22
- package/dist/docs/reference/model/RadialSizing.md +1 -1
- package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
- package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/model/RectangleOptions.md +10 -10
- package/dist/docs/reference/model/{Region.md → RegionData.md} +4 -4
- package/dist/docs/reference/model/RegularPolygonOptions.md +5 -5
- package/dist/docs/reference/model/RevolveOptions.md +9 -4
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Section.md +81 -40
- package/dist/docs/reference/model/SectionHullOptions.md +7 -7
- package/dist/docs/reference/model/SectionInspection.md +10 -10
- package/dist/docs/reference/model/{RegionOffsetJoin.md → SectionOffsetJoin.md} +3 -3
- package/dist/docs/reference/model/{RegionOffsetOptions.md → SectionOffsetOptions.md} +4 -4
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Solid.md +66 -26
- package/dist/docs/reference/model/SolidInspection.md +7 -7
- package/dist/docs/reference/model/{SolidRayHit.md → SolidSegmentHit.md} +6 -6
- package/dist/docs/reference/model/SphereOptions.md +3 -3
- package/dist/docs/reference/model/StarOptions.md +10 -10
- package/dist/docs/reference/model/StrokeCap.md +16 -0
- package/dist/docs/reference/model/StrokeJoin.md +16 -0
- package/dist/docs/reference/model/StrokeOptions.md +91 -0
- package/dist/docs/reference/model/SvgOrigin.md +1 -1
- package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
- package/dist/docs/reference/model/SvgSectionOptions.md +1 -1
- package/dist/docs/reference/model/SweepOptions.md +6 -6
- package/dist/docs/reference/model/SweepOrientation.md +7 -7
- package/dist/docs/reference/model/TextSectionOptions.md +1 -1
- package/dist/docs/reference/model/ThreadEndStyle.md +1 -1
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +1 -1
- package/dist/docs/reference/model/ThreadHandedness.md +1 -1
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +1 -1
- package/dist/docs/reference/model/ThreadLeadInShape.md +1 -1
- package/dist/docs/reference/model/ThreadProfile.md +3 -3
- package/dist/docs/reference/model/ThreadRidgeOptions.md +1 -1
- package/dist/docs/reference/model/ThreadedNutBevel.md +1 -1
- package/dist/docs/reference/model/ThreadedNutOptions.md +4 -4
- package/dist/docs/reference/model/ThreadedNutPreflight.md +1 -1
- package/dist/docs/reference/model/ThreadedNutShape.md +1 -1
- package/dist/docs/reference/model/ThreadedRodOptions.md +4 -4
- package/dist/docs/reference/model/TorusOptions.md +8 -8
- package/dist/docs/reference/model/Transform2-type.md +256 -0
- package/dist/docs/reference/model/Transform2Input.md +20 -0
- package/dist/docs/reference/model/Transform2Matrix.md +15 -0
- package/dist/docs/reference/model/Transform3-type.md +296 -0
- package/dist/docs/reference/model/Transform3Input.md +20 -0
- package/dist/docs/reference/model/{Transform3.md → Transform3Matrix.md} +3 -3
- package/dist/docs/reference/model/TriangleMesh.md +1 -1
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +2 -2
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +1 -1
- package/dist/docs/reference/model/TubeOptions.md +8 -8
- package/dist/docs/reference/model/Vector2-type.md +270 -0
- package/dist/docs/reference/model/Vector2Input.md +20 -0
- package/dist/docs/reference/model/{Vector2.md → Vector2Tuple.md} +3 -3
- package/dist/docs/reference/model/Vector3-type.md +282 -0
- package/dist/docs/reference/model/Vector3Input.md +20 -0
- package/dist/docs/reference/model/{Vector3.md → Vector3Tuple.md} +3 -3
- package/dist/docs/reference/model/VectorTextLayout.md +1 -1
- package/dist/docs/reference/model/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/model/anchor.md +1 -1
- package/dist/docs/reference/model/box.md +4 -4
- package/dist/docs/reference/model/castSegment.md +40 -0
- package/dist/docs/reference/model/categories/boolean-operations.md +4 -4
- package/dist/docs/reference/model/categories/bounded-surfaces.md +3 -3
- package/dist/docs/reference/model/categories/contracts.md +2 -2
- package/dist/docs/reference/model/categories/core-values-errors.md +5 -5
- package/dist/docs/reference/model/categories/explicit-profiles.md +3 -3
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +2 -2
- package/dist/docs/reference/model/categories/generation.md +1 -1
- package/dist/docs/reference/model/categories/inspection.md +7 -8
- package/dist/docs/reference/model/categories/mesh-inspection.md +2 -2
- package/dist/docs/reference/model/categories/paths.md +33 -0
- package/dist/docs/reference/model/categories/primitives.md +3 -3
- package/dist/docs/reference/model/categories/resolution.md +2 -2
- package/dist/docs/reference/model/categories/sections.md +10 -8
- package/dist/docs/reference/model/categories/threads.md +5 -5
- package/dist/docs/reference/model/categories/transforms-placement.md +27 -13
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/components.md +10 -7
- package/dist/docs/reference/model/compose.md +1 -1
- package/dist/docs/reference/model/cylinder.md +1 -1
- package/dist/docs/reference/model/distance.md +2 -2
- package/dist/docs/reference/model/ellipse.md +1 -1
- package/dist/docs/reference/model/extrude.md +3 -3
- package/dist/docs/reference/model/generate.md +1 -1
- package/dist/docs/reference/model/gridPattern.md +4 -4
- package/dist/docs/reference/model/heightfield.md +2 -2
- package/dist/docs/reference/model/hull.md +2 -2
- package/dist/docs/reference/model/immutableBuffer.md +1 -1
- package/dist/docs/reference/model/immutableMesh.md +1 -1
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/inspectSection.md +1 -1
- package/dist/docs/reference/model/inspectSolid.md +1 -1
- package/dist/docs/reference/model/internalThreadCutter.md +4 -4
- package/dist/docs/reference/model/intersect.md +1 -1
- package/dist/docs/reference/model/isEmpty.md +2 -2
- package/dist/docs/reference/model/linearPattern.md +4 -4
- package/dist/docs/reference/model/loft.md +1 -1
- package/dist/docs/reference/model/matchProfiles.md +2 -2
- package/dist/docs/reference/model/minkowskiSum.md +1 -1
- package/dist/docs/reference/model/path2.md +42 -0
- package/dist/docs/reference/model/path3.md +42 -0
- package/dist/docs/reference/model/pathPattern.md +13 -12
- package/dist/docs/reference/model/polygon.md +4 -4
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +3 -3
- package/dist/docs/reference/model/preflightThreadedNut.md +3 -3
- package/dist/docs/reference/model/preflightThreadedRod.md +3 -3
- package/dist/docs/reference/model/radialPattern.md +5 -37
- package/dist/docs/reference/model/rectangle.md +4 -4
- package/dist/docs/reference/model/regularPolygon.md +1 -1
- package/dist/docs/reference/model/revolve.md +5 -4
- package/dist/docs/reference/model/solidFromMesh.md +1 -1
- package/dist/docs/reference/model/sphere.md +1 -1
- package/dist/docs/reference/model/split.md +1 -1
- package/dist/docs/reference/model/splitByPlane.md +1 -1
- package/dist/docs/reference/model/star.md +4 -4
- package/dist/docs/reference/model/stroke.md +74 -0
- package/dist/docs/reference/model/svgPathSection.md +1 -1
- package/dist/docs/reference/model/svgSection.md +1 -1
- package/dist/docs/reference/model/sweep.md +7 -7
- package/dist/docs/reference/model/textSection.md +1 -1
- package/dist/docs/reference/model/threadRidge.md +2 -2
- package/dist/docs/reference/model/threadedNut.md +4 -4
- package/dist/docs/reference/model/threadedRod.md +4 -4
- package/dist/docs/reference/model/torus.md +3 -3
- package/dist/docs/reference/model/transform2.md +39 -0
- package/dist/docs/reference/model/transform3.md +39 -0
- package/dist/docs/reference/model/tube.md +3 -3
- package/dist/docs/reference/model/union.md +1 -1
- package/dist/docs/reference/model/vector2.md +32 -0
- package/dist/docs/reference/model/vector3.md +39 -0
- package/dist/docs/reference/model.md +9 -8
- package/dist/docs/reference/text/Bounds2.md +4 -4
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
- package/dist/docs/reference/text/Vector2Tuple.md +7 -0
- package/dist/docs/reference/text/VectorFont.md +2 -2
- package/dist/docs/reference/text/VectorFontOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +3 -3
- package/dist/docs/reference/text/VectorTextLayout.md +1 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextMetrics.md +1 -1
- package/dist/docs/reference/text/VectorTextOptions.md +1 -1
- package/dist/docs/reference/text/categories/font-preparation.md +4 -4
- package/dist/docs/reference/text/prepareVectorFont.md +2 -2
- package/dist/docs/reference/text.md +1 -1
- package/dist/engine/construction-operations.js +31 -14
- package/dist/engine/deferred-context.js +11 -181
- package/dist/engine/execution.js +39 -8
- package/dist/engine/extrusion-finishing.js +1 -1
- package/dist/engine/index.js +6 -1
- package/dist/engine/inspection-operations.js +13 -11
- package/dist/engine/loft-operations.js +35 -14
- package/dist/engine/model-summary.js +8 -5
- package/dist/engine/native/material-components.js +305 -0
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/native/threads.js +3 -3
- package/dist/engine/native/transforms.js +11 -8
- package/dist/engine/operation-environment.js +2 -2
- package/dist/engine/pattern-operations.js +3 -3
- package/dist/engine/placement.js +2 -2
- package/dist/engine/primitive-anchors.js +17 -17
- package/dist/engine/primitive-operations.js +1 -1
- package/dist/engine/primitive-profiles.js +8 -7
- package/dist/engine/profile-mesh.js +7 -7
- package/dist/engine/recipe-realization.js +35 -21
- package/dist/engine/section-operations.js +52 -11
- package/dist/engine/session-graph.js +1 -1
- package/dist/engine/session-native.js +1 -1
- package/dist/engine/session-snapshot.js +17 -6
- package/dist/engine/session.js +13 -8
- package/dist/engine/shape-anchors.js +5 -11
- package/dist/engine/transform-operations.js +66 -49
- package/dist/geometry/anchors.js +40 -33
- package/dist/geometry/curves/sampling.js +14 -14
- package/dist/geometry/edge-finishing.js +1 -1
- package/dist/geometry/extrusion.js +13 -16
- package/dist/geometry/index.js +13 -10
- package/dist/geometry/loft/loft-simple-mesh.js +6 -6
- package/dist/geometry/loft/loft.js +22 -13
- package/dist/geometry/math/immutable-value.js +20 -0
- package/dist/geometry/math/vector-value.js +168 -0
- package/dist/geometry/math/vector2.js +80 -0
- package/dist/geometry/math/vector3.js +37 -7
- package/dist/geometry/mechanical/gear-motion.js +8 -5
- package/dist/geometry/mechanical/gears.js +38 -38
- package/dist/geometry/mechanical/index.js +3 -3
- package/dist/geometry/mechanical/standards.js +1 -1
- package/dist/geometry/mechanical/thread-helices.js +2 -3
- package/dist/geometry/mechanical/thread-mesh-plan.js +4 -5
- package/dist/geometry/mechanical/thread-mesh.js +7 -7
- package/dist/geometry/mechanical/thread-profiles.js +5 -5
- package/dist/geometry/mechanical/thread-solids.js +2 -2
- package/dist/geometry/mechanical/thread-surface.js +1 -1
- package/dist/geometry/mechanical/threads.js +8 -8
- package/dist/geometry/mesh/mesh-planar.js +25 -27
- package/dist/geometry/mesh/mesh-quality.js +5 -5
- package/dist/geometry/mesh/mesh-signature.js +13 -13
- package/dist/geometry/mesh/mesh-solid-intersections.js +5 -1
- package/dist/geometry/mesh/mesh-solid.js +7 -7
- package/dist/geometry/mesh/mesh.js +4 -15
- package/dist/geometry/paths/closest-point.js +63 -0
- package/dist/geometry/paths/frames.js +44 -14
- package/dist/geometry/paths/helix.js +16 -6
- package/dist/geometry/paths/path-value.js +252 -0
- package/dist/geometry/paths/planar.js +36 -23
- package/dist/geometry/paths/resampling.js +27 -5
- package/dist/geometry/patterns/placements.js +100 -27
- package/dist/geometry/patterns.js +2 -2
- package/dist/geometry/polygon-clipping.js +17 -0
- package/dist/geometry/primitive-resolution.js +4 -1
- package/dist/geometry/profiles/contour.js +6 -6
- package/dist/geometry/profiles/matched.js +4 -4
- package/dist/geometry/profiles/profiles.js +4 -4
- package/dist/geometry/profiles/rectangle.js +4 -4
- package/dist/geometry/profiles/side-profile.js +7 -7
- package/dist/geometry/profiles/span-sampling.js +1 -1
- package/dist/geometry/resolution.js +51 -39
- package/dist/geometry/revolve/revolve-mesh.js +12 -7
- package/dist/geometry/stroke-path.js +57 -68
- package/dist/geometry/svg/fill.js +7 -21
- package/dist/geometry/svg-import.js +23 -23
- package/dist/geometry/sweeps/options.js +5 -4
- package/dist/geometry/sweeps/orientation.js +5 -5
- package/dist/geometry/sweeps/stations.js +14 -14
- package/dist/geometry/sweeps/sweep-closed.js +5 -5
- package/dist/geometry/sweeps/sweep-mesh.js +9 -3
- package/dist/geometry/sweeps/sweep-open.js +4 -4
- package/dist/geometry/sweeps/validation.js +4 -7
- package/dist/geometry/transform-chain.js +172 -0
- package/dist/geometry/transform-geometry.js +27 -30
- package/dist/geometry/transform-matrix.js +14 -0
- package/dist/geometry/transform2.js +60 -0
- package/dist/geometry/transform3.js +70 -26
- package/dist/index.js +4 -0
- package/dist/model/execution-binding.js +10 -5
- package/dist/model/geometry-recipes.js +15 -0
- package/dist/{engine → model}/immutable-generation-data.js +88 -6
- package/dist/model/operation-dispatch.js +10 -3
- package/dist/model/operations.js +45 -35
- package/dist/model/recipe-declaration.js +199 -0
- package/dist/model/shape-handles.js +17 -5
- package/dist/text/index.js +15 -9
- package/dist/text/vector-text-layout.js +31 -26
- package/package.json +1 -1
- package/dist/docs/reference/geometry/Path2.md +0 -14
- package/dist/docs/reference/geometry/Path3.md +0 -14
- package/dist/docs/reference/geometry/PrimitivePlacement.md +0 -31
- package/dist/docs/reference/geometry/PrimitivePlacementOptions.md +0 -83
- package/dist/docs/reference/geometry/Region.md +0 -14
- package/dist/docs/reference/geometry/StrokePathCap.md +0 -7
- package/dist/docs/reference/geometry/StrokePathJoin.md +0 -7
- package/dist/docs/reference/geometry/Transform3.md +0 -12
- package/dist/docs/reference/geometry/Vector2.md +0 -7
- package/dist/docs/reference/geometry/Vector3.md +0 -7
- package/dist/docs/reference/geometry/attachTransform.md +0 -73
- package/dist/docs/reference/geometry/cumulativePathLengths.md +0 -33
- package/dist/docs/reference/geometry/measureTriangleMesh.md +0 -55
- package/dist/docs/reference/geometry/pathLength.md +0 -33
- package/dist/docs/reference/geometry/rotateAroundAxis3.md +0 -38
- package/dist/docs/reference/geometry/strokePathRegion.md +0 -63
- package/dist/docs/reference/geometry/transformContour.md +0 -42
- package/dist/docs/reference/geometry/transformPath2.md +0 -40
- package/dist/docs/reference/geometry/transformPath3.md +0 -33
- package/dist/docs/reference/geometry/transformRegion.md +0 -40
- package/dist/docs/reference/model/Transform2.md +0 -15
- package/dist/docs/reference/model/fromRegion.md +0 -33
- package/dist/docs/reference/model/rayCast.md +0 -40
- package/dist/docs/reference/model/toRegion.md +0 -33
- package/dist/docs/reference/model/toTriangleMesh.md +0 -27
- package/dist/docs/reference/text/Vector2.md +0 -7
- package/dist/engine/geometry-recipes.js +0 -12
- package/dist/engine/pattern-transform.js +0 -9
- package/dist/geometry/paths/path.js +0 -32
package/dist/api/text.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/** Axis-aligned bounds in two-dimensional model space. */
|
|
2
2
|
export declare interface Bounds2 {
|
|
3
3
|
/** Inclusive maximum X/Y coordinates. */
|
|
4
|
-
readonly max:
|
|
4
|
+
readonly max: Vector2Tuple;
|
|
5
5
|
/** Inclusive minimum X/Y coordinates. */
|
|
6
|
-
readonly min:
|
|
6
|
+
readonly min: Vector2Tuple;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
/** Limits apply before parsing or shaping untrusted font data. */
|
|
@@ -11,6 +11,7 @@ export declare const MAX_VECTOR_FONT_BYTES: number;
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Parses bounded font bytes using optional fontkit and WOFF2 peers; no font fetching occurs here.
|
|
14
|
+
* Argument and resource failures use GeometryError; parser and decoder exceptions propagate unchanged.
|
|
14
15
|
*
|
|
15
16
|
* @example Prepare a label before building geometry
|
|
16
17
|
* ```ts
|
|
@@ -26,10 +27,11 @@ export declare function prepareVectorFont(
|
|
|
26
27
|
): Promise<VectorFont>;
|
|
27
28
|
|
|
28
29
|
/** A two-dimensional Cartesian vector or point. */
|
|
29
|
-
export declare type
|
|
30
|
+
export declare type Vector2Tuple = readonly [x: number, y: number];
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* A prepared font owns its parsed bytes; keep handles local to their Worker or invocation.
|
|
34
|
+
* Invalid arguments and bounded-work failures use GeometryError; unexpected dependency errors propagate.
|
|
33
35
|
*/
|
|
34
36
|
export declare interface VectorFont {
|
|
35
37
|
/** Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and supports blank text. */
|
|
@@ -59,7 +61,7 @@ export declare interface VectorTextArcBaseline {
|
|
|
59
61
|
/** Baseline radius in millimetres, greater than zero and at most 10000. */
|
|
60
62
|
readonly radius: number;
|
|
61
63
|
/** Alignment datum in degrees counterclockwise from +X; defaults to 90. */
|
|
62
|
-
readonly
|
|
64
|
+
readonly centerAngle?: number;
|
|
63
65
|
/** Reading direction around the circle; defaults to clockwise. */
|
|
64
66
|
readonly direction?: "clockwise" | "counterclockwise";
|
|
65
67
|
}
|
|
@@ -14,7 +14,7 @@ import { generate } from "@metamesh/project";
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
Studio supplies this API and its runtime to code Projects. Standalone applications use the same
|
|
17
|
-
|
|
17
|
+
values in a generation program. The [Model API reference](../reference/model.md) provides
|
|
18
18
|
exact signatures; this guide explains how the concepts fit together.
|
|
19
19
|
|
|
20
20
|
## Choose the module for your host
|
|
@@ -26,8 +26,9 @@ exact signatures; this guide explains how the concepts fit together.
|
|
|
26
26
|
| [`@metamesh/modeling/engine`](../reference/engine.md) | Standalone initialization, model finalization, and 3MF export | Your Node application or browser Worker |
|
|
27
27
|
| [`@metamesh/modeling/text`](../reference/text.md) | Prepare exact font bytes and vector layouts outside Studio | Your host acquires the font bytes |
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
Construct immutable shapes, vectors, paths, and transforms in ordinary TypeScript and reuse them in
|
|
30
|
+
synchronous generation. A host evaluates geometry and owns observations and export. Add pure
|
|
31
|
+
geometry helpers for custom calculations.
|
|
31
32
|
|
|
32
33
|
## Use Modeling outside Studio
|
|
33
34
|
|
|
@@ -39,11 +40,12 @@ For lettering, [prepare exact font bytes](fonts.md) before building.
|
|
|
39
40
|
|
|
40
41
|
The public API names values by modeling role:
|
|
41
42
|
|
|
42
|
-
-
|
|
43
|
-
|
|
43
|
+
- `Path2` and `Path3` are immutable sampled trajectories created by `path2` and `path3`.
|
|
44
|
+
Each owns its closure, traversal order, and finite coordinates.
|
|
45
|
+
- `Path2Data` and `Path3Data` are tuple collections for path interchange.
|
|
44
46
|
- A `Contour` is plain point data for a closed 2D boundary, without a repeated closing point.
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
+
- `PolygonData` contains one outer contour and its holes. `RegionData` is the plain serialized
|
|
48
|
+
representation of filled 2D geometry, including disconnected polygons.
|
|
47
49
|
- A `Profile` specifies identified components, contours and spans for a related shape family.
|
|
48
50
|
- A `CorrespondingProfile` contains the shared sampled landmarks produced by `matchProfiles`.
|
|
49
51
|
- A `Section` is a filled 2D shape used for section Booleans, offsets, extrusion, revolution,
|
|
@@ -51,11 +53,16 @@ The public API names values by modeling role:
|
|
|
51
53
|
- A `Solid` is a valid three-dimensional result that can participate in solid Booleans and become
|
|
52
54
|
model output.
|
|
53
55
|
- An `Anchor3` is an explicit local frame used to place one solid against another.
|
|
54
|
-
- `Vector2` and `Vector3` are
|
|
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.
|
|
55
58
|
- `Bounds2` and `Bounds3` contain finite minimum and maximum tuples for measurements and placement.
|
|
56
59
|
|
|
57
|
-
`Section` and `Solid` are opaque
|
|
58
|
-
|
|
60
|
+
`Section` and `Solid` are opaque immutable recipes. Construction and composition need no engine;
|
|
61
|
+
ordinary recipes can be reused across sessions regardless of where they were constructed.
|
|
62
|
+
Explicitly supplied resolution settings are captured; unspecified settings inherit the evaluating
|
|
63
|
+
host's defaults. The host owns evaluation caches and native kernel values. `components()` is an
|
|
64
|
+
observation: its selected shapes, and recipes using them, can only be evaluated in the originating
|
|
65
|
+
session because component identity depends on evaluated topology.
|
|
59
66
|
|
|
60
67
|
Ordinary models use root Sections for shapes, Booleans, extrusion, sweeps, and lofts. The pure
|
|
61
68
|
`/geometry` entry supplies point data through `circleContour`, `rectangleContour`, and other contour factories
|
|
@@ -66,8 +73,24 @@ reflects the operation's role.
|
|
|
66
73
|
Use [`polygon(points)`](../reference/model/polygon.md) to fill one contour. The explicit
|
|
67
74
|
`polygon({ outer, holes })` form validates exterior/hole topology and normalizes winding.
|
|
68
75
|
`polygon({ contours, fillRule })` resolves compound paths with `"nonzero"` fill by default or
|
|
69
|
-
explicit `"evenodd"` fill.
|
|
70
|
-
`rectangle`; subsequent Booleans may
|
|
76
|
+
explicit `"evenodd"` fill. Use `polygon({ polygons: data })` for existing `RegionData`.
|
|
77
|
+
Every form returns the same `Section` type as `circle` or `rectangle`; subsequent Booleans may
|
|
78
|
+
produce holes or disconnected components. `section.toRegionData()` observes the evaluated shape
|
|
79
|
+
inside synchronous generation. Keep serialized point data for interchange or pure preparation.
|
|
80
|
+
|
|
81
|
+
Use `path2(points, { closed: true })` for a reusable boundary. Its `length()` includes the closing
|
|
82
|
+
edge, and `closestPoint(query)` returns a fluent point, distance, edge index, and fraction within
|
|
83
|
+
that edge. Queries measure the sampled boundary; they do not measure a filled interior or an
|
|
84
|
+
underlying analytic curve. Chain `transform`, `reverse`, and equal-distance `resample` to create
|
|
85
|
+
new paths. Closed paths omit the duplicated endpoint. Open paths may be empty; their bounds are
|
|
86
|
+
`undefined`, and closest-point queries need at least two points.
|
|
87
|
+
|
|
88
|
+
Pass paths directly to `polygon`, `stroke`, sweeps, and path patterns in the matching dimension.
|
|
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.
|
|
71
94
|
|
|
72
95
|
`rectangleProfile({ size: [width, height], treatment: { kind: "round", radius }, id })` describes
|
|
73
96
|
identified spans for custom geometry. Prepare a complete explicit family with `matchProfiles`
|
|
@@ -97,8 +120,8 @@ filled Section and `box({ size: [24, 16, 6] })` creates a Solid. `union` and `in
|
|
|
97
120
|
combine same-dimensional arrays. `shape.subtract(cutters)` accepts an array of same-dimensional
|
|
98
121
|
cutters. `section.offset(distance, options)` stays in the filled XY plane.
|
|
99
122
|
|
|
100
|
-
`section.extrude({ height,
|
|
101
|
-
`center: true` is requested. `section.revolve({
|
|
123
|
+
`section.extrude({ height, twist, scaleTop })` adds +Z depth, with its bottom at zero unless
|
|
124
|
+
`center: true` is requested. `section.revolve({ degrees })` rotates radial/Z geometry around
|
|
102
125
|
+Z. `loft` pairs retained landmarks in compatible primitive Sections, including zero and fully
|
|
103
126
|
rounded rectangle corners, and circle/ellipse stations transitioning to rectangles. This also works
|
|
104
127
|
after invertible XY transforms with consistent handedness. It accepts explicit corresponding
|
|
@@ -112,6 +135,9 @@ degree twist, uniform/XY/per-station scales and an explicit compatible closed se
|
|
|
112
135
|
|
|
113
136
|
MetaMesh uses a right-handed coordinate system with **+Z up**. Authored dimensions and curve
|
|
114
137
|
tolerances are millimetres; angular arguments such as `rotate` use degrees.
|
|
138
|
+
Pure [`rotate2`](../reference/geometry/rotate2.md) and transform-chain rotations also take degrees.
|
|
139
|
+
The low-level [`rotationTransform3`](../reference/geometry/rotationTransform3.md) constructor
|
|
140
|
+
requires an explicit `{ degrees }` or `{ radians }` angle.
|
|
115
141
|
|
|
116
142
|
`GeometryResolution` controls sampled curves in physical space. The default maximum chord error is
|
|
117
143
|
`0.05 mm`, with 16–512 segments for a complete circle and no default maximum segment length. An
|
|
@@ -124,7 +150,7 @@ match point for point. Use physical chord and segment limits for ordinary printa
|
|
|
124
150
|
requested tolerance cannot fit within the safety cap, the operation fails instead of silently
|
|
125
151
|
returning a coarser shape.
|
|
126
152
|
|
|
127
|
-
`regularPolygon({ radius, sides,
|
|
153
|
+
`regularPolygon({ radius, sides, rotation, sizing })` makes a filled regular polygon.
|
|
128
154
|
`sizing: "vertex"` uses the specified vertex radius; `"face"` compensates faceting so the faces
|
|
129
155
|
meet the nominal radius. `circle` and `cylinder` support the same radial convention.
|
|
130
156
|
|
|
@@ -136,9 +162,97 @@ Zero rounding radius, zero chamfer/smooth distance, or an all-zero distance pair
|
|
|
136
162
|
selected feature untreated. Other setback pairs must have two positive values; negative and
|
|
137
163
|
nonfinite amounts reject. Disabled extrusion end treatments retain ordinary extrusion support,
|
|
138
164
|
including holes and twist.
|
|
139
|
-
`
|
|
165
|
+
`attachment` maps a named or explicit shape-local anchor to a world anchor after local
|
|
140
166
|
construction, using alignment, millimetre gap and degree spin. Section placement must stay in XY.
|
|
141
167
|
|
|
168
|
+
## Reuse a transform across shapes and coordinates
|
|
169
|
+
|
|
170
|
+
Use [`transform2`](../reference/geometry/transform2.md) and
|
|
171
|
+
[`transform3`](../reference/geometry/transform3.md) chains for reusable placements. They are immutable
|
|
172
|
+
and pure; no engine initialization is needed. Calls apply in written order. A rotation followed
|
|
173
|
+
by a translation rotates around the origin, then moves the result:
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
import { transform3, vector3 } from "@metamesh/modeling";
|
|
179
|
+
|
|
180
|
+
// Calls apply in written order: rotate, then translate.
|
|
181
|
+
const placement = transform3().rotate([0, 0, 90]).translate([20, 0, 5]);
|
|
182
|
+
export const placedPoint = placement.applyPoint([10, 0, 0]); // approximately [20, 10, 5]
|
|
183
|
+
export const placedDirection = placement.applyDirection([10, 0, 0]); // approximately [0, 10, 0]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
Pass a transform directly to `solid.transform(placement)`, `section.transform(placement)` and
|
|
189
|
+
matching path helpers. `toMatrix()` supplies a canonical matrix when another system needs it.
|
|
190
|
+
Construct the placement once and reuse it across point collections.
|
|
191
|
+
|
|
192
|
+
`current.andThen(next)` applies `current` first and `next` second, accepting another chain or a
|
|
193
|
+
same-dimensional matrix. `inverse()` returns the reverse placement. Transform-building operations
|
|
194
|
+
return new chains, so shared placements can branch safely.
|
|
195
|
+
|
|
196
|
+
Use `rotate(degrees, { pivot })` or `scale(factors, { pivot })` to work around a world-space pivot after
|
|
197
|
+
the preceding operations. In 3D, `rotate` takes XYZ Euler degrees, applied about global X, Y, then
|
|
198
|
+
Z; `rotateAxis(axis, degrees, { pivot })` normalizes its nonzero axis. Omitted pivots use the
|
|
199
|
+
coordinate origin. Uniform and per-axis scales
|
|
200
|
+
must be finite and nonzero; negative factors reflect. Nonfinite inputs, invalid axes, and singular
|
|
201
|
+
matrices throw `GeometryError`.
|
|
202
|
+
|
|
203
|
+
`applyPoint` includes translation. `applyDirection` excludes translation and preserves scale;
|
|
204
|
+
its result is not normalized. `applyNormal` applies the inverse transpose and returns a unit normal,
|
|
205
|
+
including under nonuniform scaling; it rejects zero normals. All three return fluent vectors.
|
|
206
|
+
|
|
207
|
+
`Transform2` works directly with Sections and pure XY helpers; its `Transform2Matrix` is the same
|
|
208
|
+
canonical 3x3 representation throughout. Use `to3D()` when that XY placement
|
|
209
|
+
also needs to position a Solid or 3D path. The reverse `to2D()` conversion rejects transforms
|
|
210
|
+
that move the XY plane or collapse its dimensions; it does not project 3D points.
|
|
211
|
+
See the [2D placement recipe](recipes.md#reuse-a-2d-placement).
|
|
212
|
+
|
|
213
|
+
For low-level matrix interoperability, the factories accept existing canonical matrices. Use
|
|
214
|
+
`transform3(frameTransform3(frame))` for an orthonormal frame. The raw constructors and
|
|
215
|
+
`composeTransform3(after, before)` remain available; composition applies `before` first.
|
|
216
|
+
|
|
217
|
+
## Calculate with vectors
|
|
218
|
+
|
|
219
|
+
Use [`vector2`](../reference/geometry/vector2.md) and [`vector3`](../reference/geometry/vector3.md)
|
|
220
|
+
for readable arithmetic chains. Operands accept tuples or vectors; `dot`, `length` and `distance`
|
|
221
|
+
return numbers. `cross` returns a signed scalar in 2D and a right-handed vector in 3D.
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
```ts
|
|
226
|
+
export const direction = vector3([1, 2, 3]).add([4, 0, 0]).normalize().scale(10);
|
|
227
|
+
export const alignment = direction.dot([0, 0, 1]); // number
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
Values snapshot their input and operations return new values. `toArray()` returns the value's
|
|
233
|
+
frozen coordinate tuple without allocating another copy. Normalization rejects zero-length vectors;
|
|
234
|
+
nonfinite coordinates, scalar parameters and overflowing results throw `GeometryError`.
|
|
235
|
+
|
|
236
|
+
For rotations and nonuniform scaling, use a reusable transform's `applyDirection`. Use
|
|
237
|
+
`applyNormal` for surface normals:
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
```ts
|
|
242
|
+
const stretched = transform3().scale([2, 1, 1]);
|
|
243
|
+
export const normal = stretched.applyNormal([1, 1, 0]);
|
|
244
|
+
export const tangent = stretched.applyDirection([1, -1, 0]);
|
|
245
|
+
export const perpendicular = normal.dot(tangent); // approximately 0
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
The tuple arithmetic kernels remain available for dense numerical loops. Fluent values add
|
|
251
|
+
validation and immutable object allocation; they are an authoring convenience, not a speedup.
|
|
252
|
+
Fluent math, shape transforms and part placement accept vector values directly; geometry
|
|
253
|
+
specifications and point collections use canonical tuples.
|
|
254
|
+
Keep simple coordinate expressions and equations intrinsic to the model beside the model.
|
|
255
|
+
|
|
142
256
|
## SVG sections: fills and strokes are different inputs
|
|
143
257
|
|
|
144
258
|
[`svgSection`](../reference/model/svgSection.md) converts a bounded complete SVG document into one
|
|
@@ -169,7 +283,8 @@ ambient font provider or repeated shaping during export. Declare a Text control
|
|
|
169
283
|
and a Font control for the face and weight.
|
|
170
284
|
|
|
171
285
|
Font size is the em size in millimetres, not the height of a particular letter. Layout supports
|
|
172
|
-
|
|
286
|
+
horizontal lines, spacing, and alignment, or a single circular baseline through
|
|
287
|
+
[`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). Follow the
|
|
173
288
|
[text recipe](recipes.md#text-from-a-font-parameter) for the control setup,
|
|
174
289
|
layout conventions, and font availability limits.
|
|
175
290
|
|
|
@@ -189,6 +304,9 @@ values. Use
|
|
|
189
304
|
`inspectSection()` and `inspectSolid()` for supported bounds, topology counts, area, and volume
|
|
190
305
|
measurements.
|
|
191
306
|
|
|
307
|
+
Observations, including `section.toRegionData()`, require the host's active synchronous generation.
|
|
308
|
+
Constructing or composing a recipe outside generation does not evaluate it.
|
|
309
|
+
|
|
192
310
|
An inspection result describes the generated geometry; it does not certify wall thickness,
|
|
193
311
|
overhangs, fits, loads, or manufacturability. Keep those product decisions in parameters,
|
|
194
312
|
validation, and your downstream manufacturing checks.
|
|
@@ -18,6 +18,9 @@ pnpm add woff2-encoder
|
|
|
18
18
|
TTF, OTF, and WOFF input use fontkit directly. WOFF2 decoding loads only when needed. The library
|
|
19
19
|
does not fetch fonts; your application supplies their bytes.
|
|
20
20
|
|
|
21
|
+
For a static face whose actual weight is not 400, pass that weight through `staticWeight` when
|
|
22
|
+
preparing it. This identifies the supplied face; it does not synthesize another weight.
|
|
23
|
+
|
|
21
24
|
## Prepare one reusable layout
|
|
22
25
|
|
|
23
26
|
|
|
@@ -47,5 +50,10 @@ Call `makeLabelLayout(fontBytes)` with the acquired bytes. It returns a `layout`
|
|
|
47
50
|
section with the ordinary modeling operations. A host can prepare layouts ahead of time or inject
|
|
48
51
|
a deterministic text service and cache layouts with `computed`.
|
|
49
52
|
|
|
53
|
+
The same layout options support horizontal lines or one circular line through
|
|
54
|
+
[`VectorTextArcBaseline`](../reference/text/VectorTextArcBaseline.md). The
|
|
55
|
+
[text recipe](recipes.md#text-from-a-font-parameter) explains units, alignment,
|
|
56
|
+
metrics, and circular-text constraints.
|
|
57
|
+
|
|
50
58
|
Use the [Font preparation reference](../reference/text.md) for font and layout options, or
|
|
51
59
|
[Run Modeling in your application](hosting.md) for the host lifecycle.
|
|
@@ -118,9 +118,14 @@ Geometry values allocate resources outside ordinary JavaScript objects. Studio's
|
|
|
118
118
|
those resources for each run and cleans them up deterministically. Authored code should never
|
|
119
119
|
initialize the kernel or manually delete a `Section` or `Solid`.
|
|
120
120
|
|
|
121
|
-
Use `inspectSection()` or `inspectSolid()`
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
Use `inspectSection()` or `inspectSolid()` for measurements such as bounds, area, volume, and
|
|
122
|
+
`componentCount`. `components()` returns disconnected material pieces, preserving holes and
|
|
123
|
+
enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
|
|
124
|
+
makes two. Recombining the pieces preserves the original material.
|
|
125
|
+
|
|
126
|
+
Snapshot `stats.partCount` counts the named output parts declared with `part(...)`. One output
|
|
127
|
+
part may contain several material components. Return one declaration or an array of them to hand
|
|
128
|
+
the result back to Studio for preview and export.
|
|
124
129
|
|
|
125
130
|
|
|
126
131
|
|
|
@@ -199,10 +199,12 @@ instance limits, including cache hits. Empty output is invalid.
|
|
|
199
199
|
|
|
200
200
|
## Ownership and recovery
|
|
201
201
|
|
|
202
|
-
Solids and Sections describe deferred recipes
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
202
|
+
Solids and Sections describe immutable deferred recipes. Ordinary recipes are reusable across
|
|
203
|
+
sessions regardless of where constructed; unspecified resolution settings inherit the evaluating
|
|
204
|
+
host's defaults. Observations such as `inspectSolid` realize required geometry synchronously and
|
|
205
|
+
return copied facts. `components()` selections, and recipes using them, can only be evaluated in
|
|
206
|
+
the originating session because their identity depends on evaluated topology. The host owns
|
|
207
|
+
native allocations and cleanup on success and failure. Nested or asynchronous execution rejects.
|
|
206
208
|
Apply local resolution explicitly to each affected constructor or Section operation.
|
|
207
209
|
|
|
208
210
|
Source/control-definition changes invalidate the program session. Parameter edits reuse it.
|
|
@@ -32,12 +32,15 @@ export async function makePlate3mf(): Promise<ArrayBuffer> {
|
|
|
32
32
|
return [part("plate", { geometry: plate.subtract([bore]), color: "#67e8f9" })];
|
|
33
33
|
})
|
|
34
34
|
);
|
|
35
|
-
const model = session.run({});
|
|
36
|
-
// Generation already disposed native handles. These finalized meshes remain usable.
|
|
37
35
|
try {
|
|
38
|
-
|
|
36
|
+
const model = session.run({});
|
|
37
|
+
// Generation already disposed native handles. These finalized meshes remain usable.
|
|
38
|
+
try {
|
|
39
|
+
return await engine.export3mf(model.parts, { name: "Plate" });
|
|
40
|
+
} finally {
|
|
41
|
+
model.dispose();
|
|
42
|
+
}
|
|
39
43
|
} finally {
|
|
40
|
-
model.dispose();
|
|
41
44
|
session.dispose();
|
|
42
45
|
}
|
|
43
46
|
}
|
|
@@ -50,27 +53,37 @@ move engine initialization out of the function and reuse that engine and its mod
|
|
|
50
53
|
|
|
51
54
|
## Keep execution synchronous
|
|
52
55
|
|
|
53
|
-
Acquire assets before generation.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
Acquire assets before generation. Ordinary immutable Solid/Section recipes, vectors, paths and
|
|
57
|
+
transforms can be constructed without an engine and reused across sessions. Explicit resolution
|
|
58
|
+
settings stay with a recipe; omitted settings inherit the evaluating host's defaults. Computed
|
|
59
|
+
readers and geometry observations require active synchronous generation and cannot cross an async
|
|
60
|
+
boundary. Sessions cannot execute nested runs in one realm. Services are explicit synchronous
|
|
61
|
+
capabilities supplied at session creation.
|
|
56
62
|
|
|
57
|
-
A session owns optional computed caches and
|
|
63
|
+
A session owns evaluation, optional computed caches and native resources. It may retain evaluated
|
|
58
64
|
computed shapes privately for later cuts or Booleans; temporary native allocations are cleaned after
|
|
59
|
-
each run. Separate expensive base geometry from finishing operations to reuse it.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
each run. Separate expensive base geometry from finishing operations to reuse it. Observed
|
|
66
|
+
`components()` selections depend on evaluated topology and remain restricted to their originating
|
|
67
|
+
session; ordinary recipes remain portable.
|
|
68
|
+
|
|
69
|
+
A returned snapshot retains captured manufacturing buffers independently of its session. Accessing
|
|
70
|
+
a part's `positions` or `indices`, including through its local `geometry` resource, returns a fresh
|
|
71
|
+
owned copy on every read. Read each field once when processing its buffer. `session.dispose()`
|
|
72
|
+
releases caches while captured snapshots remain usable. `snapshot.dispose()` releases its references
|
|
73
|
+
and makes subsequent `parts`, `bounds` and `stats` access invalid; diagnostics, dependencies and parts
|
|
74
|
+
already obtained remain usable. Disposing a snapshot does not affect another snapshot or an export
|
|
75
|
+
already in progress. Release captured output when its consumer is done.
|
|
63
76
|
|
|
64
77
|
## Load WASM in a browser Worker
|
|
65
78
|
|
|
66
79
|
The package includes its matching JS/WASM kernel. Node and unbundled browser modules resolve the
|
|
67
80
|
installed WASM asset automatically. A browser bundler must retain or emit that relative asset;
|
|
68
81
|
[`modelingWasmUrl`](../reference/engine/modelingWasmUrl.md) can supply the emitted URL through
|
|
69
|
-
`createModelEngine({
|
|
82
|
+
`createModelEngine({ wasmUrl: modelingWasmUrl })`.
|
|
70
83
|
|
|
71
84
|
Your application owns Worker creation and message handling. Separate Workers have independent
|
|
72
85
|
execution scopes. Transfer owned copies of completed buffers; transferring cache backing storage
|
|
73
|
-
would detach it. Native
|
|
86
|
+
would detach it. Native handles remain private to their engine.
|
|
74
87
|
|
|
75
88
|
## Set resource limits
|
|
76
89
|
|
|
@@ -101,7 +101,7 @@ export default generate(({ part }) => {
|
|
|
101
101
|
`);
|
|
102
102
|
// Check the imported topology before using it in the manufacturing solid.
|
|
103
103
|
const measurements = inspectSection(badge);
|
|
104
|
-
if (measurements.
|
|
104
|
+
if (measurements.componentCount !== 1 || measurements.contourCount !== 2) {
|
|
105
105
|
throw new Error("Expected one badge with one rectangular opening.");
|
|
106
106
|
}
|
|
107
107
|
return [part("model", badge.extrude({ height: 4, center: true }))];
|
|
@@ -160,7 +160,7 @@ One radial wall profile revolved around +Z creates the floor and tapered cup wal
|
|
|
160
160
|
|
|
161
161
|
[`polygon`](../reference/model/polygon.md) fills the ordered contour.
|
|
162
162
|
[`Section.revolve`](../reference/model/Section.md#revolve) defaults to a complete `360°` turn. Set
|
|
163
|
-
`
|
|
163
|
+
`degrees: 270` for a capped partial turn that exposes the cross section. Keep the closed
|
|
164
164
|
profile free of self-intersections and never repeat its first point at the end.
|
|
165
165
|
|
|
166
166
|
For an open side outline, [`sampleSideProfile`](../reference/geometry/sampleSideProfile.md)
|
|
@@ -240,7 +240,7 @@ export default generate(({ part }) => {
|
|
|
240
240
|
const arms = radialPattern(arm.translate([18, 0, 0]).rotate([0, 0, 30]), {
|
|
241
241
|
count: 6,
|
|
242
242
|
axis: [0, 0, 1],
|
|
243
|
-
|
|
243
|
+
angle: 60,
|
|
244
244
|
});
|
|
245
245
|
// Both shapes are Z-centered; extra cutter height clears both hub faces.
|
|
246
246
|
const bore = cylinder({ height: 16, radius: 4 });
|
|
@@ -261,6 +261,70 @@ Exact signatures: [`box`](../reference/model/box.md),
|
|
|
261
261
|
[`cylinder`](../reference/model/cylinder.md), and
|
|
262
262
|
[`radialPattern`](../reference/model/radialPattern.md).
|
|
263
263
|
|
|
264
|
+
## Reuse a 2D placement
|
|
265
|
+
|
|
266
|
+
Build one [`transform2`](../reference/geometry/transform2.md) chain when the same placement applies
|
|
267
|
+
to a Section and its plain point data. This placement rotates around `[2, 1]`, then translates:
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
```ts
|
|
272
|
+
import { path2, pathPattern, polygon, rectangle, transform2, union } from "@metamesh/modeling";
|
|
273
|
+
|
|
274
|
+
const planarPlacement = transform2()
|
|
275
|
+
.rotate(90, { pivot: [2, 1] })
|
|
276
|
+
.translate([10, 0]);
|
|
277
|
+
const outline = [
|
|
278
|
+
[0, 0],
|
|
279
|
+
[4, 0],
|
|
280
|
+
[0, 2],
|
|
281
|
+
] as const;
|
|
282
|
+
|
|
283
|
+
// Shape construction and composition are pure; the host evaluates the finished body.
|
|
284
|
+
export const placedBody = polygon({ outer: outline, holes: [] })
|
|
285
|
+
.transform(planarPlacement)
|
|
286
|
+
.extrude({ height: 8 });
|
|
287
|
+
|
|
288
|
+
// Paths accept the same placement. Matrices and tuples remain available for interchange.
|
|
289
|
+
export const sectionMatrix = planarPlacement.toMatrix();
|
|
290
|
+
export const placedContour = path2(outline, { closed: true }).transform(planarPlacement);
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
Pass the placement directly to `section.transform(planarPlacement)` or `path.transform(planarPlacement)`.
|
|
296
|
+
Fill the transformed closed path with `polygon(placedContour)` when you need material.
|
|
297
|
+
[`transformRegionData`](../reference/geometry/transformRegionData.md) serves serialized filled data.
|
|
298
|
+
|
|
299
|
+
A negative scale factor reflects the placement. Paths retain traversal order, including closed
|
|
300
|
+
paths; filled Sections and serialized regions restore outer and hole winding. `andThen(next)`
|
|
301
|
+
composes another placement in execution order;
|
|
302
|
+
reuse the placement instead of building a chain inside each point iteration. `toMatrix()` is
|
|
303
|
+
available for matrix interchange.
|
|
304
|
+
|
|
305
|
+
Section path patterns consume `Path2` values directly. Tangent orientation aligns the Section's
|
|
306
|
+
local +X direction with the path while preserving its XY plane:
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
```ts
|
|
311
|
+
const guide = path2([
|
|
312
|
+
[0, 0],
|
|
313
|
+
[12, 0],
|
|
314
|
+
[12, 12],
|
|
315
|
+
]);
|
|
316
|
+
const tabs = pathPattern(rectangle({ size: [4, 2] }), guide, {
|
|
317
|
+
count: 5,
|
|
318
|
+
orientation: "tangent",
|
|
319
|
+
});
|
|
320
|
+
export const patternedTabs = union(tabs).extrude({ height: 3 });
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
Linear Section patterns use XY directions. Radial Section patterns rotate about an optional XY
|
|
326
|
+
`pivot` using the implicit +Z axis; spatial Solid patterns retain their explicit rotation axis.
|
|
327
|
+
|
|
264
328
|
## Rotation-minimizing path sweep
|
|
265
329
|
|
|
266
330
|
|
|
@@ -299,7 +363,7 @@ The asymmetric section makes its transported orientation visible as the path tur
|
|
|
299
363
|
`section.sweep(path, options)` transports the filled shape along the path. Choose the starting profile-X direction with
|
|
300
364
|
`orientation: { kind: "transport", initialNormal: [0, 1, 0] }`. Fixed normals, directed normal guides
|
|
301
365
|
and discrete Frenet frames are explicit alternative policies; singular selected policies reject.
|
|
302
|
-
`
|
|
366
|
+
`twist` adds total rotation, following physical path length by default; `twistBy: "stations"`
|
|
303
367
|
uses the authored station schedule. `scale` accepts a positive uniform size, XY pair or one XY pair
|
|
304
368
|
per normalized station. `closed: true` joins an implicitly closed path without repeated endpoints;
|
|
305
369
|
orientation, scales and `seamProfileOffset` must describe a compatible closing seam.
|
|
@@ -338,7 +402,7 @@ and placement. `pin.attach("bottom", anchor(base, "top"))` mates opposed directi
|
|
|
338
402
|
patterns carry those frames with the shape, with outward normals preserved under nonuniform scale
|
|
339
403
|
and reflection. The axis names are `left/right` (−X/+X), `back/front` (−Y/+Y) and `bottom/top` (−Z/+Z).
|
|
340
404
|
|
|
341
|
-
Use `shape.withAnchors({ mount:
|
|
405
|
+
Use `shape.withAnchors({ mount: anchor3(position, direction, up) })` to define a custom datum
|
|
342
406
|
on a new handle. Existing names remain unless replaced; definitions are copied and immutable.
|
|
343
407
|
Boolean and other constructed shapes need explicit definitions because their surfaces may change.
|
|
344
408
|
Anchor names use lowercase kebab-case, with at most 64 characters and 128 definitions per shape.
|
|
@@ -349,8 +413,8 @@ move them. Tube and torus axial datums may lie over an opening; a cone has no ca
|
|
|
349
413
|
Regular polygons and stars expose only `center`. Custom `Anchor3` frames, including pure
|
|
350
414
|
`boxAnchor3` and `cylinderAnchor3` helpers, work wherever a source or target frame is required.
|
|
351
415
|
|
|
352
|
-
Primitive `
|
|
353
|
-
vocabulary as `attach`, including a named `source`. It applies after local shape construction. Filled Section
|
|
416
|
+
Primitive `attachment` uses the same source/target anchor, `alignment`, `gap` and `spin`
|
|
417
|
+
vocabulary as `attach`, including a named `source`. It applies after local shape construction. Filled Section attachment must
|
|
354
418
|
preserve the XY plane.
|
|
355
419
|
|
|
356
420
|
The `gap` here separates the two pieces along the target normal; it is a placement distance, not
|
|
@@ -451,7 +515,7 @@ The two rounded rectangles retain matching corner identities while their size an
|
|
|
451
515
|
This [`loft`](../reference/model/loft.md) example places a rounded rectangle at two heights. Use
|
|
452
516
|
`scale`, `rotate` and `translate` to pose the top profile in XY; `rotate` takes degrees. Each
|
|
453
517
|
station uses `z` for an ordinary horizontal plane. To tilt a station, pass
|
|
454
|
-
`frame: anchorFrame3(
|
|
518
|
+
`frame: anchorFrame3(anchor3(position, direction, up))` instead; the direction chooses its
|
|
455
519
|
normal and a nonparallel `up` vector chooses its roll.
|
|
456
520
|
|
|
457
521
|
The primitive retains its corner identities, so `loft` pairs corresponding landmarks without
|
|
@@ -599,10 +663,17 @@ export function fitLabel(layout: VectorTextLayout): FittedTextLayout {
|
|
|
599
663
|
| `font` | The complete Font control value, including the exact face revision and weight |
|
|
600
664
|
| `fontSize` | Em size in millimetres; visible capital height depends on the font |
|
|
601
665
|
| `letterSpacing` | Extra millimetres between shaped glyph clusters |
|
|
602
|
-
| `align` | Left, center, or right alignment using
|
|
666
|
+
| `align` | Left, center, or right alignment using the text's advance |
|
|
603
667
|
| `verticalAlign` | First-line baseline by default, or top, center, or bottom using visible bounds |
|
|
604
668
|
| `lineHeight` | Baseline-spacing multiplier; omitted uses the font's natural line spacing |
|
|
605
669
|
|
|
670
|
+
For a circular label, add a [`baseline`](../reference/text/VectorTextArcBaseline.md) with
|
|
671
|
+
`kind: "arc"` and a positive `radius` in millimetres to the layout options. The baseline is centered
|
|
672
|
+
at the XY origin; `centerAngle` chooses its alignment datum and `direction` chooses the
|
|
673
|
+
reading direction. Each shaped glyph group rotates without bending. Circular text requires one
|
|
674
|
+
line and baseline vertical alignment; its default horizontal alignment is centered. Arbitrary
|
|
675
|
+
path text and automatic wrapping are outside this API.
|
|
676
|
+
|
|
606
677
|
Text uses positive Y upward and supports line breaks, with at most 512 UTF-16 units and 16 lines.
|
|
607
678
|
Empty or whitespace-only text can be measured but cannot create a section. Return a parameter error
|
|
608
679
|
for that expected input; a missing glyph also requires different wording or a font that supports it.
|
|
@@ -612,7 +683,7 @@ Studio loads declared fonts before generation. Export uses the captured visible
|
|
|
612
683
|
preserves the exact selection, including its revision, without embedding font bytes. Fonts beyond
|
|
613
684
|
the bundled starters can require internet; ordinary browser caching does not guarantee them offline.
|
|
614
685
|
If loading fails, Studio preserves the selection and last valid model so you can retry or choose a
|
|
615
|
-
replacement.
|
|
686
|
+
replacement. Studio does not support custom font uploads.
|
|
616
687
|
|
|
617
688
|
## Solid inspection
|
|
618
689
|
|
|
@@ -626,7 +697,7 @@ export default generate(({ part }) => {
|
|
|
626
697
|
const result = box({ size: [40, 30, 5] });
|
|
627
698
|
const measurements = inspectSolid(result);
|
|
628
699
|
|
|
629
|
-
if (measurements.min[2] < -2.5 || measurements.
|
|
700
|
+
if (measurements.min[2] < -2.5 || measurements.componentCount !== 1) {
|
|
630
701
|
throw new Error("Unexpected placement or disconnected result.");
|
|
631
702
|
}
|
|
632
703
|
|