@metamesh/modeling 0.17.0 → 0.19.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 +186 -0
- package/README.md +147 -157
- package/dist/api/engine.d.ts +106 -83
- package/dist/api/export-3mf.d.ts +2 -0
- package/dist/api/export-glb.d.ts +2 -0
- package/dist/api/export-stl.d.ts +2 -0
- package/dist/api/export.d.ts +160 -0
- package/dist/api/geometry.d.ts +250 -461
- package/dist/api/index.d.ts +470 -445
- package/dist/api/mesh.d.ts +489 -0
- package/dist/api/text.d.ts +1 -1
- package/dist/docs/guides/concepts.md +32 -495
- package/dist/docs/guides/fonts.md +14 -13
- package/dist/docs/guides/fundamentals.md +30 -29
- package/dist/docs/guides/generation.md +84 -64
- package/dist/docs/guides/geometry-values.md +193 -0
- package/dist/docs/guides/hosting.md +147 -48
- package/dist/docs/guides/profiles-and-extrusion.md +252 -0
- package/dist/docs/guides/recipes.md +33 -769
- package/dist/docs/guides/resolution-and-inspection.md +133 -0
- package/dist/docs/guides/solid-joins.md +126 -0
- package/dist/docs/guides/standalone-model.md +8 -7
- package/dist/docs/guides/svg-and-text.md +215 -0
- package/dist/docs/guides/sweeps-and-lofts.md +179 -0
- package/dist/docs/guides/transforms-and-placement.md +313 -0
- package/dist/docs/manifest.json +3224 -4430
- package/dist/docs/reference/engine/GenerationOptions.md +12 -5
- package/dist/docs/reference/engine/GeometryResource.md +19 -13
- package/dist/docs/reference/engine/ModelDependencies.md +9 -3
- package/dist/docs/reference/engine/ModelEngine.md +33 -24
- package/dist/docs/reference/engine/ModelEngineOptions.md +13 -2
- package/dist/docs/reference/engine/ModelPart.md +114 -0
- package/dist/docs/reference/engine/ModelResult.md +181 -0
- package/dist/docs/reference/engine/ModelRunArguments.md +34 -0
- package/dist/docs/reference/engine/ModelRunOptions.md +110 -0
- package/dist/docs/reference/engine/ModelSession.md +22 -16
- package/dist/docs/reference/engine/SessionOptions.md +21 -10
- package/dist/docs/reference/engine/categories/host-lifecycle.md +20 -15
- package/dist/docs/reference/engine/checkModel.md +49 -0
- package/dist/docs/reference/engine/createModelEngine.md +11 -13
- package/dist/docs/reference/engine/defaultModelingLimits.md +15 -2
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
- package/dist/docs/reference/engine.md +8 -15
- package/dist/docs/reference/export/Export3mfOptions.md +24 -0
- package/dist/docs/reference/export/ExportDiagnostic.md +59 -0
- package/dist/docs/reference/export/ExportFormat.md +25 -0
- package/dist/docs/reference/export/ExportGeometry.md +39 -0
- package/dist/docs/reference/export/ExportGlbOptions.md +118 -0
- package/dist/docs/reference/export/ExportLimits.md +83 -0
- package/dist/docs/reference/export/ExportMaterial.md +47 -0
- package/dist/docs/reference/export/ExportOptions.md +94 -0
- package/dist/docs/reference/export/ExportPart.md +88 -0
- package/dist/docs/reference/export/ExportReport.md +82 -0
- package/dist/docs/reference/export/ExportSink.md +39 -0
- package/dist/docs/reference/export/ExportStlOptions.md +24 -0
- package/dist/docs/reference/export/ExportedFile.md +110 -0
- package/dist/docs/reference/export/categories/mesh-serialization.md +47 -0
- package/dist/docs/reference/export/defaultExportLimits.md +20 -0
- package/dist/docs/reference/export/export3mf.md +64 -0
- package/dist/docs/reference/export/exportGlb.md +68 -0
- package/dist/docs/reference/export/exportStl.md +64 -0
- package/dist/docs/reference/export/write3mf.md +71 -0
- package/dist/docs/reference/export/writeGlb.md +75 -0
- package/dist/docs/reference/export/writeStl.md +71 -0
- package/dist/docs/reference/export.md +21 -0
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +7 -1
- package/dist/docs/reference/geometry/Anchor3-type.md +13 -3
- package/dist/docs/reference/geometry/ArcCurve2.md +8 -2
- package/dist/docs/reference/geometry/ArcCurve3.md +8 -2
- package/dist/docs/reference/geometry/AttachOptions.md +13 -3
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +9 -3
- package/dist/docs/reference/geometry/Bevel.md +32 -0
- package/dist/docs/reference/geometry/BevelSize.md +28 -0
- package/dist/docs/reference/geometry/Bounds2-type.md +18 -4
- package/dist/docs/reference/geometry/Bounds2Data.md +22 -4
- package/dist/docs/reference/geometry/Bounds2Input.md +18 -4
- package/dist/docs/reference/geometry/Bounds2Options.md +61 -11
- package/dist/docs/reference/geometry/Bounds3-type.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Data.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Input.md +18 -4
- package/dist/docs/reference/geometry/Bounds3Options.md +61 -11
- package/dist/docs/reference/geometry/BoundsFit2.md +10 -4
- package/dist/docs/reference/geometry/BoundsFit3.md +10 -4
- package/dist/docs/reference/geometry/BoundsFitOptions.md +10 -4
- package/dist/docs/reference/geometry/BoxAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +12 -6
- package/dist/docs/reference/geometry/BoxEdge.md +11 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +11 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +11 -1
- package/dist/docs/reference/geometry/BoxOptions.md +13 -3
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +16 -2
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +12 -2
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +15 -3
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +7 -1
- package/dist/docs/reference/geometry/CircularSampling.md +7 -1
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +7 -1
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +8 -2
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -2
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +8 -2
- package/dist/docs/reference/geometry/Contour.md +12 -2
- package/dist/docs/reference/geometry/ContourCurve.md +8 -2
- package/dist/docs/reference/geometry/ContourPoint.md +8 -2
- package/dist/docs/reference/geometry/ContourSegment.md +8 -2
- package/dist/docs/reference/geometry/CorrespondingComponent.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingContour.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingProfile.md +12 -2
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +12 -2
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +8 -2
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +8 -2
- package/dist/docs/reference/geometry/Curve2.md +8 -2
- package/dist/docs/reference/geometry/Curve3.md +8 -2
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +16 -2
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +9 -3
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +11 -5
- package/dist/docs/reference/geometry/CylinderOptions.md +11 -1
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +8 -2
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +8 -2
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +7 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +14 -4
- package/dist/docs/reference/geometry/EndTreatments.md +12 -2
- package/dist/docs/reference/{model/ExtrudeOptions.md → geometry/ExtrudeMeshOptions.md} +30 -26
- package/dist/docs/reference/geometry/ExtrudeOptions.md +29 -11
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +18 -4
- package/dist/docs/reference/geometry/FittedTextLayout.md +8 -2
- package/dist/docs/reference/geometry/Frame3.md +16 -2
- package/dist/docs/reference/geometry/GeometryError.md +11 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +11 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +11 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +15 -1
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +16 -2
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +15 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +12 -2
- package/dist/docs/reference/geometry/HeightfieldOptions.md +18 -3
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +12 -2
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +9 -3
- package/dist/docs/reference/geometry/ImmutableBuffer-type.md +110 -0
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +57 -0
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +63 -84
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +12 -2
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +8 -2
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +8 -2
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +12 -2
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +12 -2
- package/dist/docs/reference/geometry/LineCurve2.md +8 -2
- package/dist/docs/reference/geometry/LineCurve3.md +8 -2
- package/dist/docs/reference/geometry/LinearPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/LoftCorrespondence.md +16 -2
- package/dist/docs/reference/geometry/LoftMeshStation.md +12 -2
- package/dist/docs/reference/geometry/LoftOptions.md +18 -4
- package/dist/docs/reference/geometry/LoftPlacement.md +16 -2
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +8 -2
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +12 -2
- package/dist/docs/reference/geometry/MetricFastenerSize.md +8 -2
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +8 -2
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +8 -2
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +8 -2
- package/dist/docs/reference/geometry/ModelingLimits.md +19 -1
- package/dist/docs/reference/geometry/NumericArray.md +28 -0
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +8 -2
- package/dist/docs/reference/geometry/Path2-type.md +16 -2
- package/dist/docs/reference/geometry/Path2Data.md +16 -2
- package/dist/docs/reference/geometry/Path2Input.md +16 -2
- package/dist/docs/reference/geometry/Path3-type.md +16 -2
- package/dist/docs/reference/geometry/Path3Data.md +16 -2
- package/dist/docs/reference/geometry/Path3Input.md +16 -2
- package/dist/docs/reference/geometry/PathFrame.md +8 -2
- package/dist/docs/reference/geometry/PathLocation.md +16 -2
- package/dist/docs/reference/geometry/PathNormalGuide.md +16 -2
- package/dist/docs/reference/geometry/PathOptions.md +12 -2
- package/dist/docs/reference/geometry/PathPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/PathPlacement.md +8 -2
- package/dist/docs/reference/geometry/PathResamplingOptions.md +16 -2
- package/dist/docs/reference/geometry/Pivot2Options.md +17 -3
- package/dist/docs/reference/geometry/Pivot3Options.md +17 -3
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +12 -2
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +12 -2
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +12 -2
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +12 -2
- package/dist/docs/reference/geometry/PolygonData.md +12 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +8 -2
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +11 -3
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +11 -1
- package/dist/docs/reference/geometry/PrintableThreadFit.md +12 -2
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +12 -2
- package/dist/docs/reference/geometry/Profile.md +8 -2
- package/dist/docs/reference/geometry/ProfileComponent2.md +12 -2
- package/dist/docs/reference/geometry/ProfileContour2.md +12 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +12 -2
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/RackPitchDimensions.md +8 -2
- package/dist/docs/reference/geometry/RackPitchSpec.md +8 -2
- package/dist/docs/reference/geometry/RadialPatternOptions.md +12 -2
- package/dist/docs/reference/geometry/RadialSizing.md +11 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +11 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +14 -4
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +12 -2
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +12 -2
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +10 -4
- package/dist/docs/reference/geometry/RegionData.md +12 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +8 -2
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +17 -3
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +10 -4
- package/dist/docs/reference/geometry/SampleContourOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleHelixOptions.md +8 -2
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -2
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -2
- package/dist/docs/reference/geometry/SampledThreadHelices.md +8 -2
- package/dist/docs/reference/geometry/SideProfileCurve.md +8 -2
- package/dist/docs/reference/geometry/SideProfilePoint.md +8 -2
- package/dist/docs/reference/geometry/SideProfileSegment.md +8 -2
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +11 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +12 -2
- package/dist/docs/reference/geometry/SphereOptions.md +11 -1
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/StarContourOptions.md +84 -0
- package/dist/docs/reference/geometry/StrokeCap.md +12 -2
- package/dist/docs/reference/geometry/StrokeJoin.md +12 -2
- package/dist/docs/reference/geometry/StrokeOptions.md +12 -2
- package/dist/docs/reference/geometry/SvgImportOptions.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +8 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +8 -2
- package/dist/docs/reference/geometry/SweepOptions.md +16 -2
- package/dist/docs/reference/geometry/SweepOrientation.md +16 -2
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +18 -31
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadEndStyle.md +16 -2
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +16 -2
- package/dist/docs/reference/geometry/ThreadHandedness.md +16 -2
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +8 -2
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +16 -2
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfile-type.md +17 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/{HelicalThreadRidgeMeshOptions.md → ThreadRidgeOptions.md} +19 -5
- package/dist/docs/reference/geometry/ThreadRole.md +8 -2
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshOptions.md → ThreadSolidOptions.md} +29 -66
- package/dist/docs/reference/geometry/{HelicalThreadSolidMeshPreflight.md → ThreadSolidPreflight.md} +17 -3
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +86 -87
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +29 -7
- package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +63 -84
- package/dist/docs/reference/geometry/TorusOptions.md +11 -1
- package/dist/docs/reference/geometry/Transform2-type.md +17 -3
- package/dist/docs/reference/geometry/Transform2Data.md +17 -3
- package/dist/docs/reference/geometry/Transform2Input.md +17 -3
- package/dist/docs/reference/geometry/Transform3-type.md +17 -3
- package/dist/docs/reference/geometry/Transform3Data.md +17 -3
- package/dist/docs/reference/geometry/Transform3Input.md +17 -3
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/TriangleMesh.md +19 -6
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +25 -5
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +13 -3
- package/dist/docs/reference/geometry/TriangleMeshInput.md +29 -0
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +16 -2
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +14 -4
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshTopologyAnalysis.md +145 -0
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/TubeOptions.md +20 -86
- package/dist/docs/reference/geometry/Vector2-type.md +17 -3
- package/dist/docs/reference/geometry/Vector2Data.md +21 -3
- package/dist/docs/reference/geometry/Vector2Input.md +17 -3
- package/dist/docs/reference/geometry/Vector3-type.md +17 -3
- package/dist/docs/reference/geometry/Vector3Data.md +17 -3
- package/dist/docs/reference/geometry/Vector3Input.md +17 -3
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +12 -2
- package/dist/docs/reference/geometry/VectorTextLayout.md +16 -2
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +14 -4
- package/dist/docs/reference/geometry/VectorTextMetrics.md +16 -2
- package/dist/docs/reference/geometry/VectorTextOptions.md +12 -2
- package/dist/docs/reference/geometry/add2.md +9 -3
- package/dist/docs/reference/geometry/add3.md +9 -3
- package/dist/docs/reference/geometry/anchor3.md +9 -3
- package/dist/docs/reference/geometry/anchorFrame3.md +8 -2
- package/dist/docs/reference/geometry/applyTransformDirection3.md +9 -3
- package/dist/docs/reference/geometry/applyTransformPoint3.md +9 -3
- package/dist/docs/reference/geometry/attachmentTransform3.md +9 -3
- package/dist/docs/reference/geometry/bounds2.md +18 -8
- package/dist/docs/reference/geometry/bounds3.md +18 -8
- package/dist/docs/reference/geometry/boundsCenter.md +10 -4
- package/dist/docs/reference/geometry/boundsSize.md +10 -4
- package/dist/docs/reference/geometry/boxAnchor3.md +11 -5
- package/dist/docs/reference/geometry/categories/bounds-layout.md +6 -6
- package/dist/docs/reference/geometry/categories/curves-paths.md +3 -3
- package/dist/docs/reference/geometry/categories/mechanical.md +9 -11
- package/dist/docs/reference/geometry/categories/meshes.md +20 -33
- package/dist/docs/reference/geometry/categories/pattern-placement.md +3 -3
- package/dist/docs/reference/geometry/categories/primitive-options.md +4 -4
- package/dist/docs/reference/geometry/categories/profiles-regions.md +6 -5
- package/dist/docs/reference/geometry/categories/resolution-errors.md +3 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +5 -4
- package/dist/docs/reference/geometry/categories/vector-import.md +4 -4
- package/dist/docs/reference/geometry/circleContour.md +8 -2
- package/dist/docs/reference/geometry/closeToAxis.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +8 -2
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +8 -2
- package/dist/docs/reference/geometry/composeTransform3.md +9 -3
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +8 -2
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +8 -2
- package/dist/docs/reference/geometry/contourContainsPoint.md +8 -2
- package/dist/docs/reference/geometry/cross2.md +9 -3
- package/dist/docs/reference/geometry/cross3.md +9 -3
- package/dist/docs/reference/geometry/cylinderAnchor3.md +10 -4
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/distance2.md +9 -3
- package/dist/docs/reference/geometry/distance3.md +9 -3
- package/dist/docs/reference/geometry/distributeAlongPath.md +8 -2
- package/dist/docs/reference/geometry/dot2.md +9 -3
- package/dist/docs/reference/geometry/dot3.md +9 -3
- package/dist/docs/reference/geometry/ellipseContour.md +8 -2
- package/dist/docs/reference/geometry/eulerTransform3.md +9 -3
- package/dist/docs/reference/geometry/fitBounds.md +10 -4
- package/dist/docs/reference/geometry/fitTextLayout.md +8 -2
- package/dist/docs/reference/geometry/frameTransform3.md +9 -3
- package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +8 -2
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +8 -2
- package/dist/docs/reference/geometry/gridPatternTransforms.md +8 -2
- package/dist/docs/reference/{model → geometry}/immutableBuffer.md +13 -2
- package/dist/docs/reference/geometry/inverseTransform3.md +9 -3
- package/dist/docs/reference/geometry/isGeometryError.md +11 -1
- package/dist/docs/reference/geometry/layoutRow.md +10 -4
- package/dist/docs/reference/geometry/length2.md +9 -3
- package/dist/docs/reference/geometry/length3.md +9 -3
- package/dist/docs/reference/geometry/lerp2.md +9 -3
- package/dist/docs/reference/geometry/lerp3.md +9 -3
- package/dist/docs/reference/geometry/linearPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/matchProfiles.md +8 -2
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +8 -2
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +8 -2
- package/dist/docs/reference/geometry/normalize2.md +9 -3
- package/dist/docs/reference/geometry/normalize3.md +9 -3
- package/dist/docs/reference/geometry/normalizeContour.md +8 -2
- package/dist/docs/reference/geometry/normalizePolygon.md +8 -2
- package/dist/docs/reference/geometry/normalizeRegion.md +8 -2
- package/dist/docs/reference/geometry/path2.md +12 -2
- package/dist/docs/reference/geometry/path3.md +12 -2
- package/dist/docs/reference/geometry/pathPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +25 -26
- package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +31 -27
- package/dist/docs/reference/geometry/preflightThreadedRod.md +25 -26
- package/dist/docs/reference/geometry/projectOntoPlane3.md +9 -3
- package/dist/docs/reference/geometry/radialPatternTransforms.md +8 -2
- package/dist/docs/reference/geometry/rectangleContour.md +17 -6
- package/dist/docs/reference/geometry/rectangleProfile.md +9 -3
- package/dist/docs/reference/geometry/regionArea.md +8 -2
- package/dist/docs/reference/geometry/regionBounds.md +8 -2
- package/dist/docs/reference/geometry/regularPolygonContour.md +9 -3
- package/dist/docs/reference/geometry/resamplePolyline2.md +8 -2
- package/dist/docs/reference/geometry/resamplePolyline3.md +8 -2
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveArcSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSampling.md +7 -1
- package/dist/docs/reference/geometry/resolveCircularSegments.md +7 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +8 -2
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +8 -2
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +8 -2
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +8 -2
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +7 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +8 -2
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +8 -2
- package/dist/docs/reference/geometry/resolveRackPitch.md +8 -2
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +8 -2
- package/dist/docs/reference/geometry/rotate2.md +9 -3
- package/dist/docs/reference/geometry/rotationTransform3.md +9 -3
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -2
- package/dist/docs/reference/geometry/sampleContour.md +8 -2
- package/dist/docs/reference/geometry/sampleCurve2.md +8 -2
- package/dist/docs/reference/geometry/sampleCurve3.md +8 -2
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +8 -2
- package/dist/docs/reference/geometry/sampleHelix.md +8 -2
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +8 -2
- package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -2
- package/dist/docs/reference/geometry/sampleSideProfile.md +8 -2
- package/dist/docs/reference/geometry/sampleTextContours.md +8 -2
- package/dist/docs/reference/geometry/sampleThreadHelices.md +8 -2
- package/dist/docs/reference/geometry/scale2.md +9 -3
- package/dist/docs/reference/geometry/scale3.md +9 -3
- package/dist/docs/reference/geometry/scaleTransform3.md +9 -3
- package/dist/docs/reference/geometry/signedContourArea.md +8 -2
- package/dist/docs/reference/geometry/starContour.md +24 -16
- package/dist/docs/reference/geometry/strokeRegionData.md +8 -2
- package/dist/docs/reference/geometry/subtract2.md +9 -3
- package/dist/docs/reference/geometry/subtract3.md +9 -3
- package/dist/docs/reference/geometry/threadProfile.md +8 -2
- package/dist/docs/reference/geometry/transform2.md +13 -3
- package/dist/docs/reference/geometry/transform3.md +13 -3
- package/dist/docs/reference/geometry/transformDeterminant3.md +9 -3
- package/dist/docs/reference/geometry/transformRegionData.md +8 -2
- package/dist/docs/reference/geometry/translationTransform3.md +9 -3
- package/dist/docs/reference/geometry/triangulateContour.md +8 -2
- package/dist/docs/reference/geometry/validateRigidTransform3.md +41 -0
- package/dist/docs/reference/geometry/validateTransform3.md +9 -3
- package/dist/docs/reference/geometry/vector2.md +13 -3
- package/dist/docs/reference/geometry/vector3.md +13 -3
- package/dist/docs/reference/geometry.md +10 -10
- package/dist/docs/reference/mesh/MeshRenderOptions.md +28 -0
- package/dist/docs/reference/mesh/RenderMesh.md +68 -0
- package/dist/docs/reference/mesh/analyze.md +102 -0
- package/dist/docs/reference/mesh/analyzeQuality.md +62 -0
- package/dist/docs/reference/mesh/bounds.md +45 -0
- package/dist/docs/reference/mesh/categories/operations.md +57 -0
- package/dist/docs/reference/mesh/centroid.md +45 -0
- package/dist/docs/reference/mesh/extrude.md +79 -0
- package/dist/docs/reference/mesh/heightfield.md +57 -0
- package/dist/docs/reference/mesh/immutable.md +51 -0
- package/dist/docs/reference/mesh/join.md +47 -0
- package/dist/docs/reference/mesh/loft.md +83 -0
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +102 -0
- package/dist/docs/reference/mesh/preflightHeightfield.md +48 -0
- package/dist/docs/reference/mesh/preflightThreadSolid.md +96 -0
- package/dist/docs/reference/mesh/render.md +57 -0
- package/dist/docs/reference/mesh/reverse.md +41 -0
- package/dist/docs/reference/{geometry/revolveMesh.md → mesh/revolve.md} +23 -17
- package/dist/docs/reference/mesh/signature.md +70 -0
- package/dist/docs/reference/mesh/sweep.md +92 -0
- package/dist/docs/reference/mesh/threadRidge.md +78 -0
- package/dist/docs/reference/mesh/threadSolid.md +96 -0
- package/dist/docs/reference/mesh/transform.md +53 -0
- package/dist/docs/reference/mesh/validate.md +75 -0
- package/dist/docs/reference/{geometry/validateSolidMesh.md → mesh/validateSolid.md} +23 -11
- package/dist/docs/reference/mesh.md +21 -0
- package/dist/docs/reference/model/CircleOptions.md +13 -7
- package/dist/docs/reference/model/DiagnosticOptions.md +21 -1
- package/dist/docs/reference/model/EllipseOptions.md +13 -7
- package/dist/docs/reference/model/GenerateCallback.md +11 -5
- package/dist/docs/reference/model/GenerateContext.md +26 -99
- package/dist/docs/reference/model/GenerationDiagnostic.md +19 -1
- package/dist/docs/reference/model/GenerationError.md +8 -2
- package/dist/docs/reference/model/HoleCutterOptions.md +17 -10
- package/dist/docs/reference/model/HoleCutterOverrun.md +10 -3
- package/dist/docs/reference/model/HoleCutterRecess.md +10 -3
- package/dist/docs/reference/model/HullOptions.md +13 -6
- package/dist/docs/reference/model/ImmutableValue.md +26 -0
- package/dist/docs/reference/model/ImplicitOptions.md +12 -6
- package/dist/docs/reference/model/JoinOptions.md +76 -0
- package/dist/docs/reference/model/JoinTransition.md +54 -0
- package/dist/docs/reference/model/KnuckleHinge-type.md +9 -3
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +7 -1
- package/dist/docs/reference/model/KnuckleHingeOptions.md +10 -4
- package/dist/docs/reference/model/KnuckleHingeWeb.md +7 -1
- package/dist/docs/reference/model/LoftStation.md +16 -9
- package/dist/docs/reference/model/Memo.md +54 -0
- package/dist/docs/reference/model/ModelProgram.md +8 -2
- package/dist/docs/reference/model/PartDeclaration.md +87 -0
- package/dist/docs/reference/model/PartGeometry.md +10 -4
- package/dist/docs/reference/model/PartOptions.md +16 -22
- package/dist/docs/reference/model/PatternSource.md +10 -4
- package/dist/docs/reference/model/PlaneOptions.md +11 -4
- package/dist/docs/reference/model/PolygonOptions.md +20 -14
- package/dist/docs/reference/model/Profile.md +10 -4
- package/dist/docs/reference/model/RectangleOptions.md +28 -22
- package/dist/docs/reference/model/RegularPolygonOptions.md +13 -7
- package/dist/docs/reference/model/Section.md +196 -77
- package/dist/docs/reference/model/SectionHullOptions.md +13 -6
- package/dist/docs/reference/model/SectionInspection.md +12 -18
- package/dist/docs/reference/model/SectionOffsetJoin.md +10 -4
- package/dist/docs/reference/model/SectionOffsetOptions.md +12 -6
- package/dist/docs/reference/model/Solid.md +339 -54
- package/dist/docs/reference/model/SolidInspection.md +12 -18
- package/dist/docs/reference/model/SolidSegmentHit.md +14 -4
- package/dist/docs/reference/model/StarOptions.md +53 -25
- package/dist/docs/reference/model/SvgOrigin.md +10 -4
- package/dist/docs/reference/model/SvgPathSectionOptions.md +14 -8
- package/dist/docs/reference/model/SvgSectionOptions.md +16 -10
- package/dist/docs/reference/model/TextSectionOptions.md +14 -8
- package/dist/docs/reference/model/box.md +18 -11
- package/dist/docs/reference/model/categories/boolean-operations.md +13 -11
- package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -7
- package/dist/docs/reference/model/categories/explicit-profiles.md +1 -14
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +11 -23
- package/dist/docs/reference/model/categories/generation.md +10 -15
- package/dist/docs/reference/model/categories/hinges.md +1 -4
- package/dist/docs/reference/model/categories/mesh-inspection.md +14 -9
- package/dist/docs/reference/model/categories/primitives.md +8 -24
- package/dist/docs/reference/model/categories/sections.md +6 -16
- package/dist/docs/reference/model/categories/threads.md +3 -30
- package/dist/docs/reference/model/categories/transforms-placement.md +5 -35
- package/dist/docs/reference/model/circle.md +10 -4
- package/dist/docs/reference/model/cylinder.md +13 -6
- package/dist/docs/reference/model/ellipse.md +10 -4
- package/dist/docs/reference/model/extrude.md +28 -20
- package/dist/docs/reference/model/generate.md +10 -4
- package/dist/docs/reference/model/gridPattern.md +15 -9
- package/dist/docs/reference/model/heightfield.md +10 -4
- package/dist/docs/reference/model/holeCutter.md +21 -4
- package/dist/docs/reference/model/hull.md +9 -2
- package/dist/docs/reference/model/implicit.md +9 -3
- package/dist/docs/reference/model/internalThreadCutter.md +31 -33
- package/dist/docs/reference/model/intersect.md +11 -4
- package/dist/docs/reference/model/join.md +89 -0
- package/dist/docs/reference/model/knuckleHinge.md +8 -2
- package/dist/docs/reference/model/linearPattern.md +15 -9
- package/dist/docs/reference/model/loft.md +36 -28
- package/dist/docs/reference/model/matchProfiles.md +14 -8
- package/dist/docs/reference/model/minkowskiSum.md +9 -2
- package/dist/docs/reference/model/pathPattern.md +25 -19
- package/dist/docs/reference/model/polygon.md +13 -7
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +33 -35
- package/dist/docs/reference/model/preflightThreadedNut.md +43 -40
- package/dist/docs/reference/model/preflightThreadedRod.md +33 -35
- package/dist/docs/reference/model/radialPattern.md +15 -9
- package/dist/docs/reference/model/rectangle.md +14 -8
- package/dist/docs/reference/model/regularPolygon.md +10 -4
- package/dist/docs/reference/model/revolve.md +25 -17
- package/dist/docs/reference/model/solidFromMesh.md +16 -9
- package/dist/docs/reference/model/sphere.md +13 -6
- package/dist/docs/reference/model/star.md +17 -11
- package/dist/docs/reference/model/stroke.md +21 -15
- package/dist/docs/reference/model/svgPathSection.md +12 -6
- package/dist/docs/reference/model/svgSection.md +13 -7
- package/dist/docs/reference/model/sweep.md +29 -21
- package/dist/docs/reference/model/textSection.md +15 -9
- package/dist/docs/reference/model/threadRidge.md +21 -15
- package/dist/docs/reference/model/threadedNut.md +41 -38
- package/dist/docs/reference/model/threadedRod.md +31 -33
- package/dist/docs/reference/model/torus.md +20 -13
- package/dist/docs/reference/model/tube.md +13 -41
- package/dist/docs/reference/model/union.md +11 -4
- package/dist/docs/reference/model.md +11 -20
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +8 -2
- package/dist/docs/reference/text/VectorFont.md +39 -33
- package/dist/docs/reference/text/VectorFontOptions.md +7 -1
- package/dist/docs/reference/text/categories/font-preparation.md +3 -15
- package/dist/docs/reference/text/prepareVectorFont.md +7 -1
- package/dist/docs/reference/text.md +4 -4
- package/dist/engine/execution.js +10 -6
- package/dist/engine/finalization.js +2 -74
- package/dist/engine/index.js +24 -30
- package/dist/engine/model-parts.js +8 -0
- package/dist/engine/model-summary.js +5 -5
- package/dist/engine/native/construction-mesh.js +41 -0
- package/dist/engine/native/index.js +1 -1
- package/dist/engine/native/material-components.js +5 -54
- package/dist/engine/native/mesh-observation.js +55 -0
- package/dist/engine/native/operations.js +0 -7
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/native/scoped-primitives.js +5 -4
- package/dist/engine/native/threads.js +14 -14
- package/dist/engine/{construction-operations.js → operations/construction.js} +25 -23
- package/dist/engine/{modeling-context.js → operations/context.js} +12 -10
- package/dist/engine/{operation-environment.js → operations/environment.js} +2 -2
- package/dist/engine/{extrusion-finishing.js → operations/extrusion-finishing.js} +23 -22
- package/dist/engine/{hole-cutter-operation.js → operations/hole-cutter.js} +3 -3
- package/dist/engine/{inspection-operations.js → operations/inspection.js} +6 -6
- package/dist/engine/operations/join-collar-profile.js +120 -0
- package/dist/engine/operations/join.js +508 -0
- package/dist/engine/{knuckle-hinge-operation.js → operations/knuckle-hinge.js} +4 -4
- package/dist/engine/{loft-operations.js → operations/loft.js} +13 -12
- package/dist/engine/{mechanical-operations.js → operations/mechanical.js} +2 -2
- package/dist/engine/{pattern-operations.js → operations/patterns.js} +4 -4
- package/dist/engine/{primitive-anchors.js → operations/primitives/anchors.js} +9 -4
- package/dist/engine/{primitive-operations.js → operations/primitives/construction.js} +18 -19
- package/dist/engine/{primitive-correspondence.js → operations/primitives/correspondence.js} +4 -4
- package/dist/engine/{profile-mesh.js → operations/primitives/profile-mesh.js} +12 -12
- package/dist/engine/{primitive-profiles.js → operations/primitives/profiles.js} +7 -7
- package/dist/engine/{section-operations.js → operations/sections.js} +8 -8
- package/dist/engine/{transform-operations.js → operations/transforms.js} +8 -8
- package/dist/engine/placement.js +3 -4
- package/dist/engine/recipe-realization.js +2 -2
- package/dist/engine/{deferred-context.js → session/deferred-context.js} +4 -4
- package/dist/engine/session/dependencies.js +93 -0
- package/dist/engine/session/graph.js +428 -0
- package/dist/engine/{session-native.js → session/native-cache.js} +2 -2
- package/dist/engine/{session.js → session/session.js} +20 -14
- package/dist/engine/{session-snapshot.js → session/snapshot-cache.js} +30 -60
- package/dist/export/3mf.js +190 -0
- package/dist/export/capture.js +178 -0
- package/dist/export/glb.js +209 -0
- package/dist/export/index.js +5 -0
- package/dist/export/limits.js +18 -0
- package/dist/export/stl.js +105 -0
- package/dist/export/types.js +1 -0
- package/dist/export/writer.js +54 -0
- package/dist/geometry/anchors.js +4 -11
- package/dist/geometry/bounds-value.js +22 -12
- package/dist/geometry/heightfield.js +10 -12
- package/dist/{model → geometry}/immutable-buffer.js +31 -12
- package/dist/geometry/index.js +16 -22
- package/dist/geometry/join-geometry.js +839 -0
- package/dist/geometry/loft/loft.js +11 -6
- package/dist/geometry/mechanical/index.js +5 -5
- package/dist/geometry/mechanical/threads/bevel.js +24 -0
- package/dist/geometry/mechanical/{threads.js → threads/fit.js} +4 -4
- package/dist/geometry/mechanical/{thread-helices.js → threads/helices.js} +3 -3
- package/dist/geometry/mechanical/{thread-mesh-plan.js → threads/mesh-plan.js} +38 -53
- package/dist/geometry/mechanical/{thread-mesh.js → threads/mesh.js} +9 -9
- package/dist/geometry/mechanical/{thread-profiles.js → threads/profiles.js} +3 -3
- package/dist/geometry/mechanical/{thread-solids.js → threads/solids.js} +58 -89
- package/dist/geometry/mechanical/{thread-surface.js → threads/surface.js} +7 -8
- package/dist/geometry/mesh/mesh-centroid.js +3 -2
- package/dist/geometry/mesh/mesh-planar.js +27 -8
- package/dist/geometry/mesh/mesh-quality.js +2 -1
- package/dist/geometry/mesh/mesh-render.js +205 -0
- package/dist/geometry/mesh/mesh-signature.js +7 -6
- package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
- package/dist/geometry/mesh/mesh-solid.js +8 -5
- package/dist/geometry/mesh/mesh-types.js +1 -0
- package/dist/geometry/mesh/mesh.js +13 -22
- package/dist/geometry/mesh-api.js +15 -0
- package/dist/geometry/primitive-resolvers.js +42 -14
- package/dist/geometry/profiles/primitives/circle.js +19 -0
- package/dist/geometry/profiles/{shapes.js → primitives/ellipse.js} +6 -10
- package/dist/geometry/profiles/{rectangle.js → primitives/rectangle.js} +14 -12
- package/dist/geometry/profiles/primitives/regular-polygon.js +33 -0
- package/dist/geometry/profiles/primitives/star.js +28 -0
- package/dist/geometry/region-offset.js +278 -0
- package/dist/geometry/regions.js +11 -1
- package/dist/geometry/revolve/revolve-mesh.js +1 -1
- package/dist/geometry/{svg-import.js → svg/import.js} +10 -10
- package/dist/geometry/sweeps/sweep-mesh.js +1 -1
- package/dist/geometry/transform3.js +29 -0
- package/dist/index.js +2 -1
- package/dist/model/diagnostic-path.js +26 -0
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +9 -3
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/immutable-generation-data.js +45 -14
- package/dist/model/join.js +1 -0
- package/dist/model/operations.js +34 -144
- package/dist/model/recipe-declaration.js +7 -2
- package/dist/model/shape-handles.js +31 -7
- package/dist/text/index.js +1 -1
- package/package.json +38 -11
- package/dist/docs/reference/engine/Export3mfOptions.md +0 -29
- package/dist/docs/reference/engine/ExportMeshPart.md +0 -65
- package/dist/docs/reference/engine/ModelSnapshot.md +0 -184
- package/dist/docs/reference/engine/SnapshotPart.md +0 -133
- package/dist/docs/reference/engine/validateModel.md +0 -48
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +0 -14
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +0 -61
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +0 -56
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +0 -39
- package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +0 -64
- package/dist/docs/reference/geometry/extrudeMesh.md +0 -77
- package/dist/docs/reference/geometry/heightfieldMesh.md +0 -52
- package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +0 -72
- package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +0 -106
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +0 -40
- package/dist/docs/reference/geometry/loftMesh.md +0 -77
- package/dist/docs/reference/geometry/meshBounds.md +0 -39
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +0 -95
- package/dist/docs/reference/geometry/preflightHeightfield.md +0 -43
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +0 -105
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +0 -34
- package/dist/docs/reference/geometry/sweepMesh.md +0 -86
- package/dist/docs/reference/geometry/transformTriangleMesh.md +0 -46
- package/dist/docs/reference/geometry/validateTriangleMesh.md +0 -63
- package/dist/docs/reference/model/Anchor3.md +0 -55
- package/dist/docs/reference/model/AttachOptions.md +0 -69
- package/dist/docs/reference/model/Bounds2-type.md +0 -125
- package/dist/docs/reference/model/Bounds2Data.md +0 -44
- package/dist/docs/reference/model/Bounds2Input.md +0 -19
- package/dist/docs/reference/model/Bounds2Options.md +0 -70
- package/dist/docs/reference/model/Bounds3-type.md +0 -125
- package/dist/docs/reference/model/Bounds3Data.md +0 -44
- package/dist/docs/reference/model/Bounds3Input.md +0 -19
- package/dist/docs/reference/model/Bounds3Options.md +0 -70
- package/dist/docs/reference/model/BoxEdge.md +0 -15
- package/dist/docs/reference/model/BoxEdgeSelection.md +0 -19
- package/dist/docs/reference/model/BoxEdgeTreatments.md +0 -20
- package/dist/docs/reference/model/BoxOptions.md +0 -92
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +0 -35
- package/dist/docs/reference/model/CircleContourOptions.md +0 -21
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +0 -64
- package/dist/docs/reference/model/Computed.md +0 -40
- package/dist/docs/reference/model/ComputedValue.md +0 -24
- package/dist/docs/reference/model/Contour.md +0 -24
- package/dist/docs/reference/model/CorrespondingComponent.md +0 -46
- package/dist/docs/reference/model/CorrespondingContour.md +0 -46
- package/dist/docs/reference/model/CorrespondingProfile.md +0 -22
- package/dist/docs/reference/model/CorrespondingProfileStation.md +0 -27
- package/dist/docs/reference/model/CylinderOptions.md +0 -58
- package/dist/docs/reference/model/EdgeTreatment.md +0 -22
- package/dist/docs/reference/model/EllipseContourOptions.md +0 -21
- package/dist/docs/reference/model/EndTreatments.md +0 -39
- package/dist/docs/reference/model/FinalizedModel.md +0 -131
- package/dist/docs/reference/model/FinalizedPart.md +0 -87
- package/dist/docs/reference/model/Frame3.md +0 -63
- package/dist/docs/reference/model/GeneratedPart.md +0 -97
- package/dist/docs/reference/model/GeometryResolution.md +0 -70
- package/dist/docs/reference/model/GeometrySamplingLimits.md +0 -62
- package/dist/docs/reference/model/GeometryToleranceOptions.md +0 -46
- package/dist/docs/reference/model/GridPatternOptions.md +0 -50
- package/dist/docs/reference/model/HeightfieldOptions.md +0 -67
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +0 -141
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +0 -59
- package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -84
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -38
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -246
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +0 -77
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +0 -47
- package/dist/docs/reference/model/KnuckleHingeSpec.md +0 -18
- package/dist/docs/reference/model/LinearPatternOptions.md +0 -39
- package/dist/docs/reference/model/LoftCorrespondence.md +0 -27
- package/dist/docs/reference/model/LoftOptions.md +0 -91
- package/dist/docs/reference/model/LoftPlacement.md +0 -73
- package/dist/docs/reference/model/MatchProfilesOptions.md +0 -35
- package/dist/docs/reference/model/ModelingLimits.md +0 -126
- package/dist/docs/reference/model/NumericArray.md +0 -14
- package/dist/docs/reference/model/Path2-type.md +0 -196
- package/dist/docs/reference/model/Path2Data.md +0 -50
- package/dist/docs/reference/model/Path2Input.md +0 -20
- package/dist/docs/reference/model/Path3-type.md +0 -196
- package/dist/docs/reference/model/Path3Data.md +0 -50
- package/dist/docs/reference/model/Path3Input.md +0 -20
- package/dist/docs/reference/model/PathLocation.md +0 -69
- package/dist/docs/reference/model/PathNormalGuide.md +0 -46
- package/dist/docs/reference/model/PathOptions.md +0 -38
- package/dist/docs/reference/model/PathPatternOptions.md +0 -48
- package/dist/docs/reference/model/PathResamplingOptions.md +0 -83
- package/dist/docs/reference/model/Pivot2Options.md +0 -28
- package/dist/docs/reference/model/Pivot3Options.md +0 -28
- package/dist/docs/reference/model/PolygonData.md +0 -44
- package/dist/docs/reference/model/PrimitiveAttachment.md +0 -41
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +0 -110
- package/dist/docs/reference/model/PrintableThreadFit.md +0 -15
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +0 -51
- package/dist/docs/reference/model/ProfileComponent2.md +0 -46
- package/dist/docs/reference/model/ProfileContour2.md +0 -36
- package/dist/docs/reference/model/ProfileSpan2.md +0 -47
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +0 -41
- package/dist/docs/reference/model/RadialPatternOptions.md +0 -59
- package/dist/docs/reference/model/RadialSizing.md +0 -15
- package/dist/docs/reference/model/RadialSizingOptions.md +0 -40
- package/dist/docs/reference/model/RectangleContourOptions.md +0 -72
- package/dist/docs/reference/model/RectangleCornerTreatment.md +0 -40
- package/dist/docs/reference/model/RectangleCornerTreatments.md +0 -20
- package/dist/docs/reference/model/RegionData.md +0 -19
- package/dist/docs/reference/model/RevolveOptions.md +0 -94
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +0 -96
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +0 -76
- package/dist/docs/reference/model/SphereOptions.md +0 -20
- package/dist/docs/reference/model/StrokeCap.md +0 -16
- package/dist/docs/reference/model/StrokeJoin.md +0 -16
- package/dist/docs/reference/model/StrokeOptions.md +0 -91
- package/dist/docs/reference/model/SweepOptions.md +0 -116
- package/dist/docs/reference/model/SweepOrientation.md +0 -116
- package/dist/docs/reference/model/ThreadEndStyle.md +0 -15
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +0 -118
- package/dist/docs/reference/model/ThreadHandedness.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +0 -15
- package/dist/docs/reference/model/ThreadLeadInShape.md +0 -15
- package/dist/docs/reference/model/ThreadProfile.md +0 -87
- package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -19
- package/dist/docs/reference/model/ThreadedNutBevel.md +0 -15
- package/dist/docs/reference/model/ThreadedNutOptions.md +0 -274
- package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -99
- package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
- package/dist/docs/reference/model/ThreadedRodOptions.md +0 -246
- package/dist/docs/reference/model/TorusOptions.md +0 -110
- package/dist/docs/reference/model/Transform2-type.md +0 -257
- package/dist/docs/reference/model/Transform2Data.md +0 -16
- package/dist/docs/reference/model/Transform2Input.md +0 -21
- package/dist/docs/reference/model/Transform3-type.md +0 -297
- package/dist/docs/reference/model/Transform3Data.md +0 -19
- package/dist/docs/reference/model/Transform3Input.md +0 -21
- package/dist/docs/reference/model/TriangleMesh.md +0 -42
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -123
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/model/TubeOptions.md +0 -143
- package/dist/docs/reference/model/Vector2-type.md +0 -271
- package/dist/docs/reference/model/Vector2Data.md +0 -15
- package/dist/docs/reference/model/Vector2Input.md +0 -21
- package/dist/docs/reference/model/Vector3-type.md +0 -283
- package/dist/docs/reference/model/Vector3Data.md +0 -15
- package/dist/docs/reference/model/Vector3Input.md +0 -21
- package/dist/docs/reference/model/VectorTextLayout.md +0 -40
- package/dist/docs/reference/model/VectorTextMetrics.md +0 -100
- package/dist/docs/reference/model/anchor.md +0 -47
- package/dist/docs/reference/model/bounds2.md +0 -37
- package/dist/docs/reference/model/bounds3.md +0 -37
- package/dist/docs/reference/model/castSegment.md +0 -40
- package/dist/docs/reference/model/categories/bounds.md +0 -38
- package/dist/docs/reference/model/categories/contracts.md +0 -18
- package/dist/docs/reference/model/categories/core-values-errors.md +0 -30
- package/dist/docs/reference/model/categories/inspection.md +0 -29
- package/dist/docs/reference/model/categories/paths.md +0 -41
- package/dist/docs/reference/model/categories/resolution.md +0 -20
- package/dist/docs/reference/model/components.md +0 -71
- package/dist/docs/reference/model/compose.md +0 -31
- package/dist/docs/reference/model/distance.md +0 -45
- package/dist/docs/reference/model/immutableMesh.md +0 -44
- package/dist/docs/reference/model/inspectSection.md +0 -38
- package/dist/docs/reference/model/inspectSolid.md +0 -38
- package/dist/docs/reference/model/isEmpty.md +0 -39
- package/dist/docs/reference/model/path2.md +0 -54
- package/dist/docs/reference/model/path3.md +0 -49
- package/dist/docs/reference/model/split.md +0 -54
- package/dist/docs/reference/model/splitByPlane.md +0 -66
- package/dist/docs/reference/model/transform2.md +0 -46
- package/dist/docs/reference/model/transform3.md +0 -48
- package/dist/docs/reference/model/vector2.md +0 -40
- package/dist/docs/reference/model/vector3.md +0 -47
- package/dist/docs/reference/text/Bounds2Data.md +0 -34
- package/dist/docs/reference/text/Vector2Data.md +0 -7
- package/dist/docs/reference/text/VectorTextArcBaseline.md +0 -53
- package/dist/docs/reference/text/VectorTextLayout.md +0 -34
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +0 -111
- package/dist/docs/reference/text/VectorTextMetrics.md +0 -94
- package/dist/docs/reference/text/VectorTextOptions.md +0 -50
- package/dist/engine/export-3mf.js +0 -116
- package/dist/engine/model-dependencies.js +0 -46
- package/dist/engine/session-graph.js +0 -449
- package/dist/geometry/profiles/profiles.js +0 -71
- /package/dist/engine/{primitive-profile-types.js → operations/primitives/profile-types.js} +0 -0
- /package/dist/{engine → geometry/mesh}/mesh-view-cache.js +0 -0
- /package/dist/geometry/profiles/{matched.js → match-profiles.js} +0 -0
|
@@ -8,7 +8,7 @@ A prepared font owns its parsed bytes; keep handles local to their Worker or inv
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
`readonly` **layout**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => [`VectorTextLayout`](VectorTextLayout.md)
|
|
11
|
+
`readonly` **layout**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md)) => [`VectorTextLayout`](../geometry/VectorTextLayout.md)
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
@@ -24,33 +24,33 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
24
24
|
|
|
25
25
|
<a id="options"></a>
|
|
26
26
|
|
|
27
|
-
**`options`** · [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md) · Required
|
|
27
|
+
**`options`** · [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md) · Required
|
|
28
28
|
|
|
29
|
-
- [`fontSize`](VectorTextLayoutOptions.md#fontsize) · `number` · Required
|
|
29
|
+
- [`fontSize`](../geometry/VectorTextLayoutOptions.md#fontsize) · `number` · Required
|
|
30
30
|
|
|
31
31
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
32
32
|
|
|
33
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
33
|
+
- [`align`](../geometry/VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
|
|
34
34
|
|
|
35
35
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
36
36
|
|
|
37
|
-
- [`baseline`](VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](VectorTextArcBaseline.md) · Optional
|
|
37
|
+
- [`baseline`](../geometry/VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](../geometry/VectorTextArcBaseline.md) · Optional
|
|
38
38
|
|
|
39
39
|
Omitted uses horizontal lines. Arcs require one line and baseline vertical alignment.
|
|
40
40
|
|
|
41
|
-
- [`lineHeight`](VectorTextLayoutOptions.md#lineheight) · `number` · Optional
|
|
41
|
+
- [`lineHeight`](../geometry/VectorTextLayoutOptions.md#lineheight) · `number` · Optional
|
|
42
42
|
|
|
43
43
|
Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
|
|
44
44
|
|
|
45
|
-
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"
|
|
45
|
+
- [`verticalAlign`](../geometry/VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
|
|
46
46
|
|
|
47
47
|
Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
|
|
48
48
|
|
|
49
|
-
- [`fontWeight`](VectorTextLayoutOptions.md#fontweight) · `number` · Optional
|
|
49
|
+
- [`fontWeight`](../geometry/VectorTextLayoutOptions.md#fontweight) · `number` · Optional
|
|
50
50
|
|
|
51
51
|
Actual static or variable weight, 1–1000; defaults to the prepared face's static weight.
|
|
52
52
|
|
|
53
|
-
- [`letterSpacing`](VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
|
|
53
|
+
- [`letterSpacing`](../geometry/VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
|
|
54
54
|
|
|
55
55
|
Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
|
|
56
56
|
|
|
@@ -58,7 +58,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
58
58
|
|
|
59
59
|
#### Returns
|
|
60
60
|
|
|
61
|
-
[`VectorTextLayout`](VectorTextLayout.md)
|
|
61
|
+
[`VectorTextLayout`](../geometry/VectorTextLayout.md)
|
|
62
62
|
|
|
63
63
|
***
|
|
64
64
|
|
|
@@ -66,7 +66,7 @@ Shape horizontal lines or one circular line; bounded to 512 UTF-16 units and sup
|
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
`readonly` **measure**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => [`VectorTextMetrics`](VectorTextMetrics.md)
|
|
69
|
+
`readonly` **measure**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md)) => [`VectorTextMetrics`](../geometry/VectorTextMetrics.md)
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
|
|
@@ -82,33 +82,33 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
82
82
|
|
|
83
83
|
<a id="options-1"></a>
|
|
84
84
|
|
|
85
|
-
**`options`** · [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md) · Required
|
|
85
|
+
**`options`** · [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md) · Required
|
|
86
86
|
|
|
87
|
-
- [`fontSize`](VectorTextLayoutOptions.md#fontsize) · `number` · Required
|
|
87
|
+
- [`fontSize`](../geometry/VectorTextLayoutOptions.md#fontsize) · `number` · Required
|
|
88
88
|
|
|
89
89
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
90
90
|
|
|
91
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
91
|
+
- [`align`](../geometry/VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
|
|
92
92
|
|
|
93
93
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
94
94
|
|
|
95
|
-
- [`baseline`](VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](VectorTextArcBaseline.md) · Optional
|
|
95
|
+
- [`baseline`](../geometry/VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](../geometry/VectorTextArcBaseline.md) · Optional
|
|
96
96
|
|
|
97
97
|
Omitted uses horizontal lines. Arcs require one line and baseline vertical alignment.
|
|
98
98
|
|
|
99
|
-
- [`lineHeight`](VectorTextLayoutOptions.md#lineheight) · `number` · Optional
|
|
99
|
+
- [`lineHeight`](../geometry/VectorTextLayoutOptions.md#lineheight) · `number` · Optional
|
|
100
100
|
|
|
101
101
|
Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
|
|
102
102
|
|
|
103
|
-
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"
|
|
103
|
+
- [`verticalAlign`](../geometry/VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
|
|
104
104
|
|
|
105
105
|
Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
|
|
106
106
|
|
|
107
|
-
- [`fontWeight`](VectorTextLayoutOptions.md#fontweight) · `number` · Optional
|
|
107
|
+
- [`fontWeight`](../geometry/VectorTextLayoutOptions.md#fontweight) · `number` · Optional
|
|
108
108
|
|
|
109
109
|
Actual static or variable weight, 1–1000; defaults to the prepared face's static weight.
|
|
110
110
|
|
|
111
|
-
- [`letterSpacing`](VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
|
|
111
|
+
- [`letterSpacing`](../geometry/VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
|
|
112
112
|
|
|
113
113
|
Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
|
|
114
114
|
|
|
@@ -116,7 +116,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
116
116
|
|
|
117
117
|
#### Returns
|
|
118
118
|
|
|
119
|
-
[`VectorTextMetrics`](VectorTextMetrics.md)
|
|
119
|
+
[`VectorTextMetrics`](../geometry/VectorTextMetrics.md)
|
|
120
120
|
|
|
121
121
|
***
|
|
122
122
|
|
|
@@ -124,7 +124,7 @@ Measure the same cached vector layout; all returned lengths are in millimetres.
|
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
|
|
127
|
-
`readonly` **toSvg**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md)) => `string`
|
|
127
|
+
`readonly` **toSvg**: (`text`: `string`, `options`: [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md)) => `string`
|
|
128
128
|
|
|
129
129
|
|
|
130
130
|
|
|
@@ -140,33 +140,33 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
140
140
|
|
|
141
141
|
<a id="options-2"></a>
|
|
142
142
|
|
|
143
|
-
**`options`** · [`VectorTextLayoutOptions`](VectorTextLayoutOptions.md) · Required
|
|
143
|
+
**`options`** · [`VectorTextLayoutOptions`](../geometry/VectorTextLayoutOptions.md) · Required
|
|
144
144
|
|
|
145
|
-
- [`fontSize`](VectorTextLayoutOptions.md#fontsize) · `number` · Required
|
|
145
|
+
- [`fontSize`](../geometry/VectorTextLayoutOptions.md#fontsize) · `number` · Required
|
|
146
146
|
|
|
147
147
|
Em size in millimetres, greater than zero and at most 10000; not the visible glyph height.
|
|
148
148
|
|
|
149
|
-
- [`align`](VectorTextLayoutOptions.md#align) · `"
|
|
149
|
+
- [`align`](../geometry/VectorTextLayoutOptions.md#align) · `"left"` \| `"right"` \| `"center"` · Optional
|
|
150
150
|
|
|
151
151
|
Place the advance's start, midpoint or end at the datum; defaults to center on arcs, otherwise left.
|
|
152
152
|
|
|
153
|
-
- [`baseline`](VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](VectorTextArcBaseline.md) · Optional
|
|
153
|
+
- [`baseline`](../geometry/VectorTextLayoutOptions.md#baseline) · [`VectorTextArcBaseline`](../geometry/VectorTextArcBaseline.md) · Optional
|
|
154
154
|
|
|
155
155
|
Omitted uses horizontal lines. Arcs require one line and baseline vertical alignment.
|
|
156
156
|
|
|
157
|
-
- [`lineHeight`](VectorTextLayoutOptions.md#lineheight) · `number` · Optional
|
|
157
|
+
- [`lineHeight`](../geometry/VectorTextLayoutOptions.md#lineheight) · `number` · Optional
|
|
158
158
|
|
|
159
159
|
Baseline spacing in ems, 0.5–5; omitted uses the selected face's natural vertical metrics.
|
|
160
160
|
|
|
161
|
-
- [`verticalAlign`](VectorTextLayoutOptions.md#verticalalign) · `"
|
|
161
|
+
- [`verticalAlign`](../geometry/VectorTextLayoutOptions.md#verticalalign) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
|
|
162
162
|
|
|
163
163
|
Place the first baseline or complete ink bounds at Y=0; arcs only accept baseline.
|
|
164
164
|
|
|
165
|
-
- [`fontWeight`](VectorTextLayoutOptions.md#fontweight) · `number` · Optional
|
|
165
|
+
- [`fontWeight`](../geometry/VectorTextLayoutOptions.md#fontweight) · `number` · Optional
|
|
166
166
|
|
|
167
167
|
Actual static or variable weight, 1–1000; defaults to the prepared face's static weight.
|
|
168
168
|
|
|
169
|
-
- [`letterSpacing`](VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
|
|
169
|
+
- [`letterSpacing`](../geometry/VectorTextLayoutOptions.md#letterspacing) · `number` · Optional
|
|
170
170
|
|
|
171
171
|
Tracking between glyph clusters in millimetres, -100–100; defaults to zero.
|
|
172
172
|
|
|
@@ -179,8 +179,14 @@ Serialize visible horizontal or circular outlines as bounded path-only SVG in ph
|
|
|
179
179
|
|
|
180
180
|
## Related APIs
|
|
181
181
|
|
|
182
|
-
- [VectorTextLayout](VectorTextLayout.md)
|
|
183
|
-
- [VectorTextLayoutOptions](VectorTextLayoutOptions.md)
|
|
184
|
-
- [VectorTextMetrics](VectorTextMetrics.md)
|
|
182
|
+
- [VectorTextLayout](../geometry/VectorTextLayout.md)
|
|
183
|
+
- [VectorTextLayoutOptions](../geometry/VectorTextLayoutOptions.md)
|
|
184
|
+
- [VectorTextMetrics](../geometry/VectorTextMetrics.md)
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
## Supported imports
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
import type { VectorFont } from "@metamesh/modeling/text";
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Package: `@metamesh/modeling@0.19.0`.
|
|
@@ -14,4 +14,10 @@ Identifies the actual weight of a static face, without synthesizing a different
|
|
|
14
14
|
|
|
15
15
|
Actual weight of a static face, 1–1000; defaults to 400.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
## Supported imports
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
import type { VectorFontOptions } from "@metamesh/modeling/text";
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Package: `@metamesh/modeling@0.19.0`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Font preparation
|
|
2
2
|
|
|
3
|
-
Prepare
|
|
3
|
+
Prepare exact font bytes within limits and reuse vector layouts.
|
|
4
4
|
|
|
5
5
|
Prepare fonts before modeling. TTF, OTF, and WOFF are parsed directly; WOFF2 decoding loads lazily. Supply font bytes yourself; this library never fetches fonts.
|
|
6
6
|
|
|
@@ -18,23 +18,11 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
|
|
|
18
18
|
| --- | --- |
|
|
19
19
|
| [VectorFont](../VectorFont.md) | A prepared font owns its parsed bytes; keep handles local to their Worker or invocation. Invalid arguments and bounded-work failures use GeometryError; unexpected dependency errors propagate. |
|
|
20
20
|
| [VectorFontOptions](../VectorFontOptions.md) | Identifies the actual weight of a static face, without synthesizing a different weight. |
|
|
21
|
-
| [VectorTextArcBaseline](../VectorTextArcBaseline.md) | A circular baseline centered at the XY origin, with rigid shaped glyph groups. |
|
|
22
|
-
| [VectorTextLayout](../VectorTextLayout.md) | Immutable vector layout with no browser, font parser, or kernel ownership. |
|
|
23
|
-
| [VectorTextLayoutOptions](../VectorTextLayoutOptions.md) | Text bounded to 512 UTF-16 units: horizontal lines or one circular line without wrapping. |
|
|
24
|
-
| [VectorTextMetrics](../VectorTextMetrics.md) | Text measurements from the same immutable layout that supplies geometry and SVG outlines. |
|
|
25
|
-
| [VectorTextOptions](../VectorTextOptions.md) | Shaping controls for a prepared exact font face; all lengths are in millimetres. |
|
|
26
|
-
| [Bounds2Data](../Bounds2Data.md) | Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. |
|
|
27
|
-
|
|
28
|
-
## Type aliases
|
|
29
|
-
|
|
30
|
-
| API | Summary |
|
|
31
|
-
| --- | --- |
|
|
32
|
-
| [Vector2Data](../Vector2Data.md) | A two-dimensional Cartesian vector or point. |
|
|
33
21
|
|
|
34
22
|
## Values
|
|
35
23
|
|
|
36
24
|
| API | Summary |
|
|
37
25
|
| --- | --- |
|
|
38
|
-
| [MAX_VECTOR_FONT_BYTES](../MAX_VECTOR_FONT_BYTES.md) |
|
|
26
|
+
| [MAX_VECTOR_FONT_BYTES](../MAX_VECTOR_FONT_BYTES.md) | Maximum input font size in bytes, checked before parsing or shaping untrusted font data. |
|
|
39
27
|
|
|
40
|
-
Package: `@metamesh/modeling@0.
|
|
28
|
+
Package: `@metamesh/modeling@0.19.0`.
|
|
@@ -43,4 +43,10 @@ async function prepareLabel(fontBytes: Uint8Array) {
|
|
|
43
43
|
- [VectorFont](VectorFont.md)
|
|
44
44
|
- [VectorFontOptions](VectorFontOptions.md)
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
## Supported imports
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import { prepareVectorFont } from "@metamesh/modeling/text";
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Package: `@metamesh/modeling@0.19.0`.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Prepare exact font bytes and shape reusable vector layouts before entering synchronous modeling.
|
|
4
4
|
|
|
5
|
-
Install `fontkit` for font preparation and `woff2-encoder` for WOFF2 decoding.
|
|
5
|
+
Use the optional `@metamesh/modeling/text` entry point to prepare exact font bytes and reusable vector layouts. Install `fontkit` for font preparation and `woff2-encoder` for WOFF2 decoding.
|
|
6
6
|
|
|
7
|
-
Supply font bytes yourself; this entry point never fetches fonts. Shape once during preparation
|
|
7
|
+
Supply font bytes yourself; this entry point never fetches fonts. Shape text once during preparation, then pass the immutable layout to modeling.
|
|
8
8
|
|
|
9
9
|
```ts
|
|
10
10
|
import { prepareVectorFont } from "@metamesh/modeling/text";
|
|
@@ -18,6 +18,6 @@ Paths and metrics use Y-up millimetres and a baseline origin. Empty layouts can
|
|
|
18
18
|
|
|
19
19
|
## Categories
|
|
20
20
|
|
|
21
|
-
- [Font preparation](text/categories/font-preparation.md) — Prepare
|
|
21
|
+
- [Font preparation](text/categories/font-preparation.md) — Prepare exact font bytes within limits and reuse vector layouts.
|
|
22
22
|
|
|
23
|
-
Package: `@metamesh/modeling@0.
|
|
23
|
+
Package: `@metamesh/modeling@0.19.0`.
|
package/dist/engine/execution.js
CHANGED
|
@@ -3,12 +3,12 @@ import { analyzeTriangleMesh, } from "../geometry/mesh/mesh.js";
|
|
|
3
3
|
import { assertMeshAllocationWithinLimits } from "../geometry/model-limits.js";
|
|
4
4
|
import { assertSamplingCount } from "../geometry/sampling-limits.js";
|
|
5
5
|
import { createSectionHandle, createSolidHandle } from "../model/shape-handles.js";
|
|
6
|
-
import { createModelingContext } from "./modeling-context.js";
|
|
7
6
|
import { ownScopedManifoldValue, scopedManifoldScope, trackScopedManifoldValue, } from "./native/context.js";
|
|
8
7
|
import { copiedFloat32Array, copiedUint32Array } from "./native/copied-views.js";
|
|
9
8
|
import * as kernel from "./native/index.js";
|
|
10
9
|
import { solidMaterialComponents } from "./native/material-components.js";
|
|
11
10
|
import { assertNativeSolidStatus } from "./native/status.js";
|
|
11
|
+
import { createModelingContext } from "./operations/context.js";
|
|
12
12
|
import { createShapeAnchorOwner } from "./shape-anchors.js";
|
|
13
13
|
/** Internal execution owner; no native value or constructor crosses the public facade. */
|
|
14
14
|
export function createExecutionContext(module, scope, limits, initialResolution = {}) {
|
|
@@ -101,8 +101,10 @@ export function createExecutionContext(module, scope, limits, initialResolution
|
|
|
101
101
|
const bounds = native.boundingBox();
|
|
102
102
|
const components = solidComponentsFor(handle);
|
|
103
103
|
const facts = Object.freeze({
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
bounds: Object.freeze({
|
|
105
|
+
min: Object.freeze([...bounds.min]),
|
|
106
|
+
max: Object.freeze([...bounds.max]),
|
|
107
|
+
}),
|
|
106
108
|
isEmpty: native.isEmpty(),
|
|
107
109
|
componentCount: components.length,
|
|
108
110
|
volume: native.volume(),
|
|
@@ -121,8 +123,10 @@ export function createExecutionContext(module, scope, limits, initialResolution
|
|
|
121
123
|
const empty = native.isEmpty();
|
|
122
124
|
const components = sectionComponentsFor(handle);
|
|
123
125
|
const facts = Object.freeze({
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
bounds: Object.freeze({
|
|
127
|
+
min: Object.freeze([...bounds.min]),
|
|
128
|
+
max: Object.freeze([...bounds.max]),
|
|
129
|
+
}),
|
|
126
130
|
isEmpty: empty,
|
|
127
131
|
area: native.area(),
|
|
128
132
|
contourCount: native.numContour(),
|
|
@@ -166,7 +170,7 @@ export function createExecutionContext(module, scope, limits, initialResolution
|
|
|
166
170
|
assertMeshAllocationWithinLimits(vertices, triangles, bytes, operation, limits);
|
|
167
171
|
};
|
|
168
172
|
const copyNativeMesh = (native) => {
|
|
169
|
-
assertNativeSolidStatus(native, "
|
|
173
|
+
assertNativeSolidStatus(native, "toMesh");
|
|
170
174
|
const raw = native.getMesh();
|
|
171
175
|
assertMeshAllocation(raw.numVert, raw.numTri, (raw.numVert + raw.numTri) * 12, "copyMesh");
|
|
172
176
|
const positions = copiedFloat32Array(raw.numVert * 3);
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
+
import { immutableMeshView } from "../geometry/immutable-buffer.js";
|
|
2
3
|
import { optimizePlanarPatches } from "../geometry/mesh/mesh-planar.js";
|
|
3
4
|
import { validateAnalyzedSolidMesh } from "../geometry/mesh/mesh-solid.js";
|
|
5
|
+
import { MeshViewCache } from "../geometry/mesh/mesh-view-cache.js";
|
|
4
6
|
import { analyzeTriangleMesh, } from "../geometry/mesh/mesh.js";
|
|
5
|
-
import { immutableMeshView } from "../model/immutable-buffer.js";
|
|
6
|
-
import { MeshViewCache } from "./mesh-view-cache.js";
|
|
7
7
|
import { copiedMeshViews, copiedUint32Array } from "./native/copied-views.js";
|
|
8
|
-
const isArray = (value) => Array.isArray(value);
|
|
9
|
-
const snapshotMeshes = new WeakMap();
|
|
10
|
-
/** Registers trusted snapshot storage without exposing its shared backing arrays publicly. */
|
|
11
|
-
export function rememberSnapshotPart(part, mesh) {
|
|
12
|
-
snapshotMeshes.set(part, mesh);
|
|
13
|
-
}
|
|
14
8
|
function fitsGeometryLimits(mesh, limits) {
|
|
15
9
|
const buffers = new Set([mesh.positions.buffer, mesh.indices.buffer]);
|
|
16
10
|
let bytes = 0;
|
|
@@ -87,69 +81,3 @@ export function createGeometryFinalizer(execution, limits, options) {
|
|
|
87
81
|
return result;
|
|
88
82
|
};
|
|
89
83
|
}
|
|
90
|
-
/** Captures mutable external buffers once before an asynchronous snapshot export begins. */
|
|
91
|
-
export function captureExportParts(parts, limits) {
|
|
92
|
-
if (!isArray(parts) || parts.length === 0 || parts.length > limits.maxParts)
|
|
93
|
-
throw new GeometryError("COMPLEXITY_LIMIT", `Export requires one through ${limits.maxParts} parts.`, {
|
|
94
|
-
operation: "export3mf",
|
|
95
|
-
});
|
|
96
|
-
const captured = parts.map((part) => {
|
|
97
|
-
if (typeof part !== "object" || part === null)
|
|
98
|
-
throw new GeometryError("INVALID_ARGUMENT", "Export part IDs must be unique canonical identifiers.", { operation: "export3mf" });
|
|
99
|
-
// Access public owned-copy getters exactly once, or retain trusted private sharing for a
|
|
100
|
-
// snapshot created by this engine. Capture still copies before the asynchronous boundary.
|
|
101
|
-
const mesh = snapshotMeshes.get(part) ?? { positions: part.positions, indices: part.indices };
|
|
102
|
-
const id = part.id, color = part.color;
|
|
103
|
-
return {
|
|
104
|
-
id,
|
|
105
|
-
positions: mesh.positions,
|
|
106
|
-
indices: mesh.indices,
|
|
107
|
-
...(color === undefined ? {} : { color }),
|
|
108
|
-
};
|
|
109
|
-
});
|
|
110
|
-
const identifiers = new Set();
|
|
111
|
-
const buffers = new Set();
|
|
112
|
-
let vertexCount = 0, triangleCount = 0, byteCount = 0;
|
|
113
|
-
for (const part of captured) {
|
|
114
|
-
if (typeof part !== "object" ||
|
|
115
|
-
part === null ||
|
|
116
|
-
typeof part.id !== "string" ||
|
|
117
|
-
!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(part.id) ||
|
|
118
|
-
part.id.length > 64 ||
|
|
119
|
-
identifiers.has(part.id))
|
|
120
|
-
throw new GeometryError("INVALID_ARGUMENT", "Export part IDs must be unique canonical identifiers.", { operation: "export3mf" });
|
|
121
|
-
identifiers.add(part.id);
|
|
122
|
-
if (part.color !== undefined &&
|
|
123
|
-
(typeof part.color !== "string" || !/^#[\da-f]{6}$/i.test(part.color)))
|
|
124
|
-
throw new GeometryError("INVALID_ARGUMENT", "Export colors must be six-digit hex strings.", {
|
|
125
|
-
operation: "export3mf",
|
|
126
|
-
});
|
|
127
|
-
if (!(part.positions instanceof Float32Array) ||
|
|
128
|
-
!(part.indices instanceof Uint32Array) ||
|
|
129
|
-
!(part.positions.buffer instanceof ArrayBuffer) ||
|
|
130
|
-
!(part.indices.buffer instanceof ArrayBuffer))
|
|
131
|
-
throw new GeometryError("INVALID_MESH", "Export requires transferable copied mesh arrays.", {
|
|
132
|
-
operation: "export3mf",
|
|
133
|
-
});
|
|
134
|
-
vertexCount += part.positions.length / 3;
|
|
135
|
-
triangleCount += part.indices.length / 3;
|
|
136
|
-
for (const buffer of [part.positions.buffer, part.indices.buffer]) {
|
|
137
|
-
if (!buffers.has(buffer)) {
|
|
138
|
-
buffers.add(buffer);
|
|
139
|
-
byteCount += buffer.byteLength;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (vertexCount > limits.maxVertices ||
|
|
143
|
-
triangleCount > limits.maxTriangles ||
|
|
144
|
-
byteCount > limits.maxBytes)
|
|
145
|
-
throw new GeometryError("COMPLEXITY_LIMIT", "Export snapshot exceeds the execution limits.", {
|
|
146
|
-
operation: "export3mf",
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
const copiedBuffers = new Map();
|
|
150
|
-
return captured.map((part) => ({
|
|
151
|
-
id: part.id,
|
|
152
|
-
...copiedMeshViews(part, copiedBuffers),
|
|
153
|
-
...(part.color === undefined ? {} : { color: part.color }),
|
|
154
|
-
}));
|
|
155
|
-
}
|
package/dist/engine/index.js
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
2
|
import { defaultModelingLimits, resolveModelingLimits } from "../geometry/model-limits.js";
|
|
3
3
|
import { createExecutionContext } from "./execution.js";
|
|
4
|
-
import { captureExportParts } from "./finalization.js";
|
|
5
4
|
import createManifoldModule from "./kernel/manifold.js";
|
|
6
5
|
import { withManifoldScope } from "./native/context.js";
|
|
7
|
-
import { createSession } from "./session.js";
|
|
6
|
+
import { createSession } from "./session/session.js";
|
|
8
7
|
export { defaultModelingLimits };
|
|
9
8
|
/** URL of the package's pinned WASM asset; browser bundlers may replace it with their emitted URL. */
|
|
10
9
|
export const modelingWasmUrl = new URL("./kernel/manifold.wasm", import.meta.url).href;
|
|
11
10
|
/**
|
|
12
11
|
* Runs declaration and immediate assertions without initializing a kernel or finalizing parts.
|
|
13
|
-
*
|
|
12
|
+
* Returns reached assertion errors and warnings; unexpected execution failures throw.
|
|
13
|
+
* Returned geometry is not realized or validated.
|
|
14
|
+
* Geometry observations require an initialized session's `check` method instead.
|
|
14
15
|
*/
|
|
15
|
-
export function
|
|
16
|
-
const
|
|
17
|
-
|
|
16
|
+
export function checkModel(program, ...args) {
|
|
17
|
+
const [parameters, options] = args;
|
|
18
|
+
const session = createSession(program, options ?? {}, defaultModelingLimits, (_options, callback) => callback(() => {
|
|
19
|
+
throw new GeometryError("INVALID_ARGUMENT", "Geometry observations require an initialized model session.", { operation: "checkModel", details: { requiresKernel: true } });
|
|
18
20
|
}));
|
|
19
21
|
try {
|
|
20
|
-
return session.
|
|
22
|
+
return session.check(...[parameters]);
|
|
21
23
|
}
|
|
22
24
|
finally {
|
|
23
25
|
session.dispose();
|
|
@@ -26,20 +28,16 @@ export function validateModel(program, params, ...settings) {
|
|
|
26
28
|
/** Serializes operations over one initialized kernel; sessions own their caches. */
|
|
27
29
|
function engineFromModule(module, engineLimits) {
|
|
28
30
|
let building = false;
|
|
29
|
-
|
|
31
|
+
const engine = Object.freeze({
|
|
30
32
|
limits: engineLimits,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const snapshot = captureExportParts(parts, engineLimits);
|
|
35
|
-
const snapshotOptions = { ...options };
|
|
36
|
-
building = true;
|
|
33
|
+
run(program, ...args) {
|
|
34
|
+
const [parameters, options] = args;
|
|
35
|
+
const session = createSessionForRun(program, { ...options, cache: false });
|
|
37
36
|
try {
|
|
38
|
-
|
|
39
|
-
return meshesTo3mf(snapshot, snapshotOptions);
|
|
37
|
+
return session.run(...[parameters]);
|
|
40
38
|
}
|
|
41
39
|
finally {
|
|
42
|
-
|
|
40
|
+
session.dispose();
|
|
43
41
|
}
|
|
44
42
|
},
|
|
45
43
|
createSession(program, ...settings) {
|
|
@@ -51,8 +49,8 @@ function engineFromModule(module, engineLimits) {
|
|
|
51
49
|
const limits = resolveModelingLimits(options.limits, engineLimits);
|
|
52
50
|
building = true;
|
|
53
51
|
try {
|
|
54
|
-
// The trusted finalizer captures
|
|
55
|
-
//
|
|
52
|
+
// The trusted finalizer captures geometry outside native ownership. Publish its
|
|
53
|
+
// immutable storage only after the native scope's structural escape check.
|
|
56
54
|
let captured;
|
|
57
55
|
withManifoldScope(module, (scope) => {
|
|
58
56
|
let execution;
|
|
@@ -71,6 +69,10 @@ function engineFromModule(module, engineLimits) {
|
|
|
71
69
|
});
|
|
72
70
|
},
|
|
73
71
|
});
|
|
72
|
+
return engine;
|
|
73
|
+
function createSessionForRun(program, options) {
|
|
74
|
+
return engine.createSession(program, ...[options]);
|
|
75
|
+
}
|
|
74
76
|
}
|
|
75
77
|
/**
|
|
76
78
|
* Initializes one host kernel and returns a lifecycle-safe engine. No generator initializes WASM.
|
|
@@ -79,20 +81,12 @@ function engineFromModule(module, engineLimits) {
|
|
|
79
81
|
* ```ts
|
|
80
82
|
* import { box, generate } from "@metamesh/modeling";
|
|
81
83
|
* import { createModelEngine } from "@metamesh/modeling/engine";
|
|
84
|
+
* import { export3mf } from "@metamesh/modeling/export";
|
|
82
85
|
*
|
|
83
86
|
* const engine = await createModelEngine();
|
|
84
87
|
* const model = generate<Record<never, never>>(({ part }) => [part("body", box({ size: [30, 20, 8] }))]);
|
|
85
|
-
* const
|
|
86
|
-
*
|
|
87
|
-
* const snapshot = session.run({});
|
|
88
|
-
* try {
|
|
89
|
-
* await engine.export3mf(snapshot.parts);
|
|
90
|
-
* } finally {
|
|
91
|
-
* snapshot.dispose();
|
|
92
|
-
* }
|
|
93
|
-
* } finally {
|
|
94
|
-
* session.dispose();
|
|
95
|
-
* }
|
|
88
|
+
* const result = engine.run(model);
|
|
89
|
+
* await export3mf(result.parts);
|
|
96
90
|
* ```
|
|
97
91
|
*/
|
|
98
92
|
export async function createModelEngine(options = {}) {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
+
/** Resolves an exact semantic ID without changing output order or retaining another index. */
|
|
3
|
+
export function requireModelPart(parts, id) {
|
|
4
|
+
const part = parts.find((part) => part.id === id);
|
|
5
|
+
if (part !== undefined)
|
|
6
|
+
return part;
|
|
7
|
+
throw new GeometryError("INVALID_ARGUMENT", `Model has no part ${JSON.stringify(id)}. Available parts: ${parts.map((part) => part.id).join(", ")}.`, { operation: "part", details: { partId: id } });
|
|
8
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
2
|
/** Counts manufacturing instances while charging shared backing storage only once. */
|
|
3
3
|
export function createModelSummary(limits) {
|
|
4
|
-
let vertices = 0, triangles = 0, bytes = 0, partCount = 0,
|
|
4
|
+
let vertices = 0, triangles = 0, bytes = 0, partCount = 0, signedVolume = 0;
|
|
5
5
|
const storage = new Set();
|
|
6
6
|
const min = [Infinity, Infinity, Infinity], max = [-Infinity, -Infinity, -Infinity];
|
|
7
7
|
return {
|
|
@@ -10,7 +10,7 @@ export function createModelSummary(limits) {
|
|
|
10
10
|
const measurements = geometry.measurements;
|
|
11
11
|
vertices += measurements.vertexCount;
|
|
12
12
|
triangles += measurements.triangleCount;
|
|
13
|
-
|
|
13
|
+
signedVolume += measurements.signedVolume;
|
|
14
14
|
for (const buffer of [geometry.positions.buffer, geometry.indices.buffer])
|
|
15
15
|
if (!storage.has(buffer)) {
|
|
16
16
|
storage.add(buffer);
|
|
@@ -35,10 +35,10 @@ export function createModelSummary(limits) {
|
|
|
35
35
|
vertexCount: vertices,
|
|
36
36
|
triangleCount: triangles,
|
|
37
37
|
byteCount: bytes,
|
|
38
|
-
|
|
38
|
+
signedVolume,
|
|
39
39
|
buildMs: builtAt - startedAt,
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
finalizeMs: endedAt - builtAt,
|
|
41
|
+
generateMs: endedAt - startedAt,
|
|
42
42
|
}),
|
|
43
43
|
};
|
|
44
44
|
},
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
+
import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
|
|
3
|
+
import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
|
|
4
|
+
import { assertNativeSolidStatus } from "./status.js";
|
|
5
|
+
/** Builds new native geometry with retained Double construction coordinates and proxy topology. */
|
|
6
|
+
export function nativeConstructionMesh(scope, mesh, limits, operation) {
|
|
7
|
+
const vertices = mesh.positions.length / 3;
|
|
8
|
+
assertMeshAllocationWithinLimits(vertices, mesh.indices.length / 3, mesh.positions.byteLength +
|
|
9
|
+
mesh.indices.byteLength +
|
|
10
|
+
mesh.nativePositions.byteLength +
|
|
11
|
+
vertices * 144, operation, limits);
|
|
12
|
+
const fail = (message) => {
|
|
13
|
+
throw new GeometryError("DEGENERATE_GEOMETRY", message, { operation });
|
|
14
|
+
};
|
|
15
|
+
if (mesh.nativePositions.length !== mesh.positions.length)
|
|
16
|
+
fail("Native construction coordinates must cover every proxy vertex.");
|
|
17
|
+
const key = (x, y, z) => `${x},${y},${z}`;
|
|
18
|
+
const coordinates = new Map();
|
|
19
|
+
for (let index = 0; index < mesh.positions.length; index += 3) {
|
|
20
|
+
if (![0, 1, 2].every((axis) => Number.isFinite(mesh.nativePositions[index + axis])))
|
|
21
|
+
fail("Native construction coordinates must be finite.");
|
|
22
|
+
const identity = key(mesh.positions[index], mesh.positions[index + 1], mesh.positions[index + 2]);
|
|
23
|
+
const prior = coordinates.get(identity);
|
|
24
|
+
if (prior !== undefined &&
|
|
25
|
+
[0, 1, 2].some((axis) => mesh.nativePositions[prior + axis] !== mesh.nativePositions[index + axis]))
|
|
26
|
+
fail("A captured construction vertex has ambiguous native coordinates.");
|
|
27
|
+
coordinates.set(identity, index);
|
|
28
|
+
}
|
|
29
|
+
const module = scopedManifoldModule(scope);
|
|
30
|
+
const proxy = ownScopedManifoldValue(scope, new module.Manifold(new module.Mesh({ numProp: 3, vertProperties: mesh.positions, triVerts: mesh.indices })));
|
|
31
|
+
assertNativeSolidStatus(proxy, operation);
|
|
32
|
+
const result = ownScopedManifoldValue(scope, proxy.warpBatch((positions, count) => {
|
|
33
|
+
for (let vertex = 0; vertex < count; vertex++) {
|
|
34
|
+
const offset = vertex * 3;
|
|
35
|
+
const source = coordinates.get(key(positions[offset], positions[offset + 1], positions[offset + 2])) ?? fail("Native construction lost a captured vertex identity.");
|
|
36
|
+
positions.set(mesh.nativePositions.subarray(source, source + 3), offset);
|
|
37
|
+
}
|
|
38
|
+
}));
|
|
39
|
+
assertNativeSolidStatus(result, operation);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { createScopedManifoldContext, withManifoldScope, } from "./context.js";
|
|
7
7
|
export { box, cylinder, sphere, torus, tube, } from "./scoped-primitives.js";
|
|
8
|
-
export {
|
|
8
|
+
export { hull, intersect, minkowskiSum, subtract, union } from "./operations.js";
|
|
9
9
|
export { attach, mirror, rotate, scale, transform, translate, } from "./transforms.js";
|
|
10
10
|
export { internalThreadCutter, preflightInternalThreadCutter, preflightThreadedNut, preflightThreadedRod, threadRidge, threadedNut, threadedRod, } from "./scoped-threads.js";
|
|
11
11
|
export {} from "./threads.js";
|