@metamesh/modeling 0.18.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 +33 -0
- package/README.md +73 -57
- package/dist/api/engine.d.ts +7 -47
- 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 +7 -7
- package/dist/api/index.d.ts +85 -35
- package/dist/api/mesh.d.ts +35 -6
- package/dist/docs/guides/concepts.md +32 -535
- package/dist/docs/guides/fonts.md +4 -4
- package/dist/docs/guides/generation.md +52 -45
- package/dist/docs/guides/geometry-values.md +193 -0
- package/dist/docs/guides/hosting.md +53 -30
- package/dist/docs/guides/profiles-and-extrusion.md +252 -0
- package/dist/docs/guides/recipes.md +33 -780
- 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 +1 -1
- 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 +2818 -5862
- package/dist/docs/reference/engine/GenerationOptions.md +10 -4
- package/dist/docs/reference/engine/GeometryResource.md +8 -2
- package/dist/docs/reference/engine/ModelDependencies.md +9 -3
- package/dist/docs/reference/engine/ModelEngine.md +9 -3
- package/dist/docs/reference/engine/ModelEngineOptions.md +9 -3
- package/dist/docs/reference/engine/ModelPart.md +9 -3
- package/dist/docs/reference/engine/ModelResult.md +8 -2
- package/dist/docs/reference/engine/ModelRunArguments.md +7 -1
- package/dist/docs/reference/engine/ModelRunOptions.md +10 -4
- package/dist/docs/reference/engine/ModelSession.md +7 -1
- package/dist/docs/reference/engine/SessionOptions.md +10 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +3 -8
- package/dist/docs/reference/engine/checkModel.md +7 -1
- package/dist/docs/reference/engine/createModelEngine.md +10 -3
- package/dist/docs/reference/engine/defaultModelingLimits.md +9 -3
- package/dist/docs/reference/engine/modelingWasmUrl.md +7 -1
- package/dist/docs/reference/engine.md +7 -7
- 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 +16 -2
- package/dist/docs/reference/geometry/BevelSize.md +16 -2
- 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 +14 -4
- 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 +14 -4
- 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 +9 -3
- 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 +11 -1
- 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 -1
- 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 +9 -3
- 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 +12 -2
- package/dist/docs/reference/geometry/EndTreatments.md +12 -2
- package/dist/docs/reference/geometry/ExtrudeMeshOptions.md +16 -2
- package/dist/docs/reference/geometry/ExtrudeOptions.md +13 -3
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +16 -2
- 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 +16 -2
- 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 +16 -14
- package/dist/docs/reference/geometry/ImmutableTriangleMesh.md +17 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +12 -2
- 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 +16 -2
- 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 +16 -2
- 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 -1
- 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 +12 -2
- 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 +8 -2
- 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 +16 -2
- 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 +12 -2
- 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 +12 -2
- 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 +16 -2
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +16 -2
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +16 -2
- package/dist/docs/reference/geometry/ThreadRidgeOptions.md +16 -2
- package/dist/docs/reference/geometry/ThreadRole.md +8 -2
- package/dist/docs/reference/geometry/ThreadSolidOptions.md +12 -2
- package/dist/docs/reference/geometry/ThreadSolidPreflight.md +16 -2
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +12 -2
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +12 -2
- package/dist/docs/reference/geometry/ThreadedNutShape.md +12 -2
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +12 -2
- 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 +20 -2
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +16 -2
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +12 -2
- package/dist/docs/reference/geometry/TriangleMeshInput.md +12 -2
- 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 +12 -2
- 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 +16 -2
- 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 +11 -1
- 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 +12 -2
- 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 +16 -6
- package/dist/docs/reference/geometry/bounds3.md +16 -6
- 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 +9 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +4 -4
- package/dist/docs/reference/geometry/categories/curves-paths.md +2 -2
- package/dist/docs/reference/geometry/categories/mechanical.md +2 -2
- package/dist/docs/reference/geometry/categories/meshes.md +3 -3
- package/dist/docs/reference/geometry/categories/pattern-placement.md +2 -2
- package/dist/docs/reference/geometry/categories/primitive-options.md +2 -2
- package/dist/docs/reference/geometry/categories/profiles-regions.md +2 -2
- package/dist/docs/reference/geometry/categories/resolution-errors.md +1 -1
- package/dist/docs/reference/geometry/categories/transforms-math.md +3 -3
- package/dist/docs/reference/geometry/categories/vector-import.md +2 -2
- 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 +9 -3
- 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/geometry/immutableBuffer.md +12 -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 +8 -2
- package/dist/docs/reference/geometry/preflightSvgRegion.md +8 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +8 -2
- package/dist/docs/reference/geometry/preflightThreadedRod.md +8 -2
- 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 +8 -2
- package/dist/docs/reference/geometry/rectangleProfile.md +8 -2
- 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 +8 -2
- 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 +8 -2
- 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 +9 -3
- 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 +2 -2
- 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 +12 -6
- package/dist/docs/reference/mesh/analyzeQuality.md +11 -5
- package/dist/docs/reference/mesh/bounds.md +10 -4
- package/dist/docs/reference/mesh/categories/operations.md +5 -95
- package/dist/docs/reference/mesh/centroid.md +10 -4
- package/dist/docs/reference/mesh/extrude.md +11 -5
- package/dist/docs/reference/mesh/heightfield.md +11 -5
- package/dist/docs/reference/mesh/immutable.md +13 -9
- package/dist/docs/reference/mesh/join.md +10 -4
- package/dist/docs/reference/mesh/loft.md +11 -5
- package/dist/docs/reference/mesh/optimizePlanarPatches.md +11 -5
- package/dist/docs/reference/mesh/preflightHeightfield.md +11 -5
- package/dist/docs/reference/mesh/preflightThreadSolid.md +10 -4
- package/dist/docs/reference/mesh/render.md +57 -0
- package/dist/docs/reference/mesh/reverse.md +10 -4
- package/dist/docs/reference/mesh/revolve.md +11 -5
- package/dist/docs/reference/mesh/signature.md +11 -5
- package/dist/docs/reference/mesh/sweep.md +12 -6
- package/dist/docs/reference/mesh/threadRidge.md +10 -4
- package/dist/docs/reference/mesh/threadSolid.md +10 -4
- package/dist/docs/reference/mesh/transform.md +11 -5
- package/dist/docs/reference/mesh/validate.md +10 -4
- package/dist/docs/reference/mesh/validateSolid.md +10 -4
- package/dist/docs/reference/mesh.md +1 -1
- package/dist/docs/reference/model/CircleOptions.md +13 -7
- package/dist/docs/reference/model/DiagnosticOptions.md +7 -1
- package/dist/docs/reference/model/EllipseOptions.md +13 -7
- package/dist/docs/reference/model/GenerateCallback.md +7 -1
- package/dist/docs/reference/model/GenerateContext.md +14 -39
- package/dist/docs/reference/model/GenerationDiagnostic.md +7 -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 +7 -1
- 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 +7 -1
- package/dist/docs/reference/model/PartDeclaration.md +11 -6
- package/dist/docs/reference/model/PartGeometry.md +10 -4
- package/dist/docs/reference/model/PartOptions.md +11 -6
- 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 +68 -74
- package/dist/docs/reference/model/SectionHullOptions.md +13 -6
- package/dist/docs/reference/model/SectionInspection.md +10 -4
- 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 +101 -53
- package/dist/docs/reference/model/SolidInspection.md +10 -4
- package/dist/docs/reference/model/SolidSegmentHit.md +11 -5
- package/dist/docs/reference/model/StarOptions.md +24 -18
- 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 +8 -2
- 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 +6 -20
- package/dist/docs/reference/model/categories/generation.md +5 -10
- package/dist/docs/reference/model/categories/hinges.md +1 -4
- package/dist/docs/reference/model/categories/mesh-inspection.md +2 -6
- package/dist/docs/reference/model/categories/primitives.md +5 -21
- package/dist/docs/reference/model/categories/sections.md +4 -15
- package/dist/docs/reference/model/categories/threads.md +2 -39
- package/dist/docs/reference/model/categories/transforms-placement.md +4 -33
- 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 +26 -19
- package/dist/docs/reference/model/generate.md +8 -2
- 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 +10 -3
- 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 +23 -17
- package/dist/docs/reference/model/intersect.md +9 -2
- package/dist/docs/reference/model/join.md +89 -0
- package/dist/docs/reference/model/knuckleHinge.md +7 -1
- package/dist/docs/reference/model/linearPattern.md +15 -9
- package/dist/docs/reference/model/loft.md +31 -24
- 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 +25 -19
- package/dist/docs/reference/model/preflightThreadedNut.md +29 -23
- package/dist/docs/reference/model/preflightThreadedRod.md +25 -19
- 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 +22 -15
- package/dist/docs/reference/model/solidFromMesh.md +12 -6
- package/dist/docs/reference/model/sphere.md +13 -6
- package/dist/docs/reference/model/star.md +12 -6
- 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 +27 -20
- 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 +27 -21
- package/dist/docs/reference/model/threadedRod.md +23 -17
- package/dist/docs/reference/model/torus.md +20 -13
- package/dist/docs/reference/model/tube.md +13 -6
- package/dist/docs/reference/model/union.md +9 -2
- package/dist/docs/reference/model.md +3 -8
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +7 -1
- 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 +1 -13
- package/dist/docs/reference/text/prepareVectorFont.md +7 -1
- package/dist/docs/reference/text.md +1 -1
- package/dist/engine/finalization.js +2 -74
- package/dist/engine/index.js +2 -2
- package/dist/engine/native/construction-mesh.js +41 -0
- package/dist/engine/native/material-components.js +2 -51
- package/dist/engine/native/mesh-observation.js +55 -0
- package/dist/engine/native/regions.js +2 -1
- package/dist/engine/operations/context.js +2 -0
- package/dist/engine/operations/extrusion-finishing.js +17 -16
- package/dist/engine/operations/join-collar-profile.js +120 -0
- package/dist/engine/operations/join.js +508 -0
- package/dist/engine/recipe-realization.js +1 -1
- package/dist/engine/session/dependencies.js +89 -42
- package/dist/engine/session/graph.js +319 -342
- package/dist/engine/session/native-cache.js +1 -1
- package/dist/engine/session/session.js +5 -5
- package/dist/engine/session/snapshot-cache.js +2 -2
- 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/bounds-value.js +4 -4
- package/dist/geometry/immutable-buffer.js +4 -6
- package/dist/geometry/join-geometry.js +839 -0
- package/dist/geometry/mesh/mesh-render.js +205 -0
- package/dist/geometry/mesh/mesh-solid-intersections.js +43 -17
- package/dist/geometry/mesh/mesh-solid.js +6 -2
- package/dist/geometry/mesh-api.js +1 -0
- package/dist/geometry/region-offset.js +278 -0
- package/dist/geometry/regions.js +11 -1
- package/dist/model/execution-binding.js +3 -3
- package/dist/model/generation.js +2 -2
- package/dist/model/immutable-generation-data.js +13 -13
- package/dist/model/join.js +1 -0
- package/dist/model/operations.js +20 -0
- package/dist/model/recipe-declaration.js +1 -0
- package/dist/model/shape-handles.js +1 -0
- package/package.json +18 -1
- package/dist/docs/reference/engine/Export3mfOptions.md +0 -46
- package/dist/docs/reference/engine/ExportMeshPart.md +0 -31
- package/dist/docs/reference/engine/ModelingLimits.md +0 -121
- package/dist/docs/reference/engine/export3mf.md +0 -55
- package/dist/docs/reference/mesh/AcmeThreadProfileSpec.md +0 -79
- package/dist/docs/reference/mesh/Bevel.md +0 -18
- package/dist/docs/reference/mesh/BevelSize.md +0 -14
- package/dist/docs/reference/mesh/Bounds2.md +0 -125
- package/dist/docs/reference/mesh/Bounds2Data.md +0 -43
- package/dist/docs/reference/mesh/Bounds2Input.md +0 -19
- package/dist/docs/reference/mesh/Bounds3.md +0 -125
- package/dist/docs/reference/mesh/Bounds3Data.md +0 -43
- package/dist/docs/reference/mesh/Bounds3Input.md +0 -19
- package/dist/docs/reference/mesh/ButtressPressureFlankSide.md +0 -14
- package/dist/docs/reference/mesh/ButtressThreadProfileSpec.md +0 -97
- package/dist/docs/reference/mesh/CircularPrimitiveOptions.md +0 -60
- package/dist/docs/reference/mesh/CurveSamplingOptions.md +0 -69
- package/dist/docs/reference/mesh/CustomThreadProfileSpec.md +0 -77
- package/dist/docs/reference/mesh/ExtrudeMeshOptions.md +0 -129
- package/dist/docs/reference/mesh/ExtrusionSamplingOptions.md +0 -81
- package/dist/docs/reference/mesh/Frame3.md +0 -62
- package/dist/docs/reference/mesh/GeometryResolution.md +0 -74
- package/dist/docs/reference/mesh/GeometrySamplingLimits.md +0 -66
- package/dist/docs/reference/mesh/GeometryToleranceOptions.md +0 -46
- package/dist/docs/reference/mesh/HeightfieldMeshLimits.md +0 -18
- package/dist/docs/reference/mesh/HeightfieldOptions.md +0 -72
- package/dist/docs/reference/mesh/HeightfieldPreflight.md +0 -58
- package/dist/docs/reference/mesh/ImmutableBuffer.md +0 -108
- package/dist/docs/reference/mesh/ImmutableTriangleMesh.md +0 -43
- package/dist/docs/reference/mesh/LoftCorrespondence.md +0 -24
- package/dist/docs/reference/mesh/LoftMeshStation.md +0 -31
- package/dist/docs/reference/mesh/LoftOptions.md +0 -88
- package/dist/docs/reference/mesh/LoftPlacement.md +0 -70
- package/dist/docs/reference/mesh/ModelingLimits.md +0 -130
- package/dist/docs/reference/mesh/NumericArray.md +0 -14
- package/dist/docs/reference/mesh/Path2.md +0 -197
- package/dist/docs/reference/mesh/Path2Data.md +0 -50
- package/dist/docs/reference/mesh/Path2Input.md +0 -20
- package/dist/docs/reference/mesh/Path3.md +0 -197
- package/dist/docs/reference/mesh/Path3Data.md +0 -50
- package/dist/docs/reference/mesh/Path3Input.md +0 -20
- package/dist/docs/reference/mesh/PathLocation.md +0 -69
- package/dist/docs/reference/mesh/PathNormalGuide.md +0 -43
- package/dist/docs/reference/mesh/PathResamplingOptions.md +0 -84
- package/dist/docs/reference/mesh/Pivot2Options.md +0 -26
- package/dist/docs/reference/mesh/Pivot3Options.md +0 -26
- package/dist/docs/reference/mesh/PlanarMeshOptimizationFallbackReason.md +0 -14
- package/dist/docs/reference/mesh/PlanarMeshOptimizationOptions.md +0 -160
- package/dist/docs/reference/mesh/PlanarMeshOptimizationResult.md +0 -124
- package/dist/docs/reference/mesh/PlanarPatchQuality.md +0 -194
- package/dist/docs/reference/mesh/RevolveOptions.md +0 -91
- package/dist/docs/reference/mesh/SolidMeshValidationOptions.md +0 -38
- package/dist/docs/reference/mesh/SquareThreadProfileSpec.md +0 -79
- package/dist/docs/reference/mesh/SweepOptions.md +0 -113
- package/dist/docs/reference/mesh/SweepOrientation.md +0 -113
- package/dist/docs/reference/mesh/ThreadEndStyle.md +0 -14
- package/dist/docs/reference/mesh/ThreadEndTreatmentOptions.md +0 -117
- package/dist/docs/reference/mesh/ThreadHandedness.md +0 -14
- package/dist/docs/reference/mesh/ThreadLeadInEnvelope.md +0 -14
- package/dist/docs/reference/mesh/ThreadLeadInShape.md +0 -14
- package/dist/docs/reference/mesh/ThreadProfile.md +0 -86
- package/dist/docs/reference/mesh/ThreadProfileBaseSpec.md +0 -53
- package/dist/docs/reference/mesh/ThreadProfileSpec.md +0 -23
- package/dist/docs/reference/mesh/ThreadRidgeOptions.md +0 -145
- package/dist/docs/reference/mesh/ThreadSolidOptions.md +0 -222
- package/dist/docs/reference/mesh/ThreadSolidPreflight.md +0 -58
- package/dist/docs/reference/mesh/Transform2.md +0 -256
- package/dist/docs/reference/mesh/Transform2Data.md +0 -14
- package/dist/docs/reference/mesh/Transform2Input.md +0 -19
- package/dist/docs/reference/mesh/Transform3.md +0 -296
- package/dist/docs/reference/mesh/Transform3Data.md +0 -17
- package/dist/docs/reference/mesh/Transform3Input.md +0 -19
- package/dist/docs/reference/mesh/TrapezoidalThreadProfileSpec.md +0 -96
- package/dist/docs/reference/mesh/TriangleMesh.md +0 -34
- package/dist/docs/reference/mesh/TriangleMeshAnalysis.md +0 -129
- package/dist/docs/reference/mesh/TriangleMeshAnalysisOptions.md +0 -79
- package/dist/docs/reference/mesh/TriangleMeshInput.md +0 -19
- package/dist/docs/reference/mesh/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/mesh/TriangleMeshQualityOptions.md +0 -43
- package/dist/docs/reference/mesh/TriangleMeshQualityReport.md +0 -194
- package/dist/docs/reference/mesh/TriangleMeshSignature.md +0 -111
- package/dist/docs/reference/mesh/TriangleMeshSignatureOptions.md +0 -46
- package/dist/docs/reference/mesh/TriangleMeshSignatureTolerances.md +0 -34
- package/dist/docs/reference/mesh/TriangleMeshTopologyAnalysis.md +0 -131
- package/dist/docs/reference/mesh/TriangleMeshValidationOptions.md +0 -55
- package/dist/docs/reference/mesh/TriangularThreadProfileSpec.md +0 -95
- package/dist/docs/reference/mesh/Vector2.md +0 -270
- package/dist/docs/reference/mesh/Vector2Data.md +0 -14
- package/dist/docs/reference/mesh/Vector2Input.md +0 -19
- package/dist/docs/reference/mesh/Vector3.md +0 -282
- package/dist/docs/reference/mesh/Vector3Data.md +0 -14
- package/dist/docs/reference/mesh/Vector3Input.md +0 -19
- package/dist/docs/reference/model/AcmeThreadProfileSpec.md +0 -80
- package/dist/docs/reference/model/Anchor3.md +0 -55
- package/dist/docs/reference/model/AttachOptions.md +0 -69
- package/dist/docs/reference/model/Bevel.md +0 -19
- package/dist/docs/reference/model/BevelSize.md +0 -15
- 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 -110
- 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 -110
- 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/ButtressPressureFlankSide.md +0 -15
- package/dist/docs/reference/model/ButtressThreadProfileSpec.md +0 -98
- 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 -62
- package/dist/docs/reference/model/Computed.md +0 -44
- 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/CurveSamplingOptions.md +0 -68
- package/dist/docs/reference/model/CustomThreadProfileSpec.md +0 -78
- 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/ExtrudeMeshOptions.md +0 -133
- package/dist/docs/reference/model/ExtrudeOptions.md +0 -149
- package/dist/docs/reference/model/ExtrusionSamplingOptions.md +0 -84
- package/dist/docs/reference/model/Frame3.md +0 -63
- package/dist/docs/reference/model/GeometryError.md +0 -102
- package/dist/docs/reference/model/GeometryErrorCode.md +0 -15
- package/dist/docs/reference/model/GeometryErrorContext.md +0 -35
- 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 -68
- package/dist/docs/reference/model/ImmutableBuffer-type.md +0 -108
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +0 -43
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +0 -216
- 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 -84
- 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 -39
- 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/SquareThreadProfileSpec.md +0 -80
- package/dist/docs/reference/model/StarContourOptions.md +0 -81
- 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/ThreadBevelOptions.md +0 -35
- 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/ThreadProfileBaseSpec.md +0 -54
- package/dist/docs/reference/model/ThreadProfileSpec.md +0 -24
- package/dist/docs/reference/model/ThreadRidgeOptions.md +0 -141
- package/dist/docs/reference/model/ThreadSolidPreflight.md +0 -59
- package/dist/docs/reference/model/ThreadedNutOptions.md +0 -263
- package/dist/docs/reference/model/ThreadedNutPreflight.md +0 -111
- package/dist/docs/reference/model/ThreadedNutShape.md +0 -15
- package/dist/docs/reference/model/ThreadedRodOptions.md +0 -216
- 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/TrapezoidalThreadProfileSpec.md +0 -97
- package/dist/docs/reference/model/TriangleMesh.md +0 -34
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +0 -129
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +0 -79
- package/dist/docs/reference/model/TriangleMeshTopologyAnalysis.md +0 -131
- package/dist/docs/reference/model/TriangularThreadProfileSpec.md +0 -96
- package/dist/docs/reference/model/TubeOptions.md +0 -67
- 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/bounds2.md +0 -37
- package/dist/docs/reference/model/bounds3.md +0 -37
- package/dist/docs/reference/model/categories/bounds.md +0 -38
- package/dist/docs/reference/model/categories/contracts.md +0 -16
- package/dist/docs/reference/model/categories/core-values-errors.md +0 -44
- package/dist/docs/reference/model/categories/paths.md +0 -42
- package/dist/docs/reference/model/categories/resolution.md +0 -20
- package/dist/docs/reference/model/immutableBuffer.md +0 -49
- package/dist/docs/reference/model/isGeometryError.md +0 -34
- package/dist/docs/reference/model/path2.md +0 -54
- package/dist/docs/reference/model/path3.md +0 -49
- 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 -23
- package/dist/engine/serialize-3mf.js +0 -116
- /package/dist/{engine → geometry/mesh}/mesh-view-cache.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) · `"left"` \| `"right"` \| `"center"` · Optional
|
|
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) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
|
|
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) · `"left"` \| `"right"` \| `"center"` · Optional
|
|
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) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
|
|
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) · `"left"` \| `"right"` \| `"center"` · Optional
|
|
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) · `"top"` \| `"bottom"` \| `"center"` \| `"baseline"` · Optional
|
|
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`.
|
|
@@ -18,18 +18,6 @@ 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
|
|
|
@@ -37,4 +25,4 @@ Layout returns immutable paths and metrics in Y-up millimetres. Pass the prepare
|
|
|
37
25
|
| --- | --- |
|
|
38
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`.
|
|
@@ -20,4 +20,4 @@ Paths and metrics use Y-up millimetres and a baseline origin. Empty layouts can
|
|
|
20
20
|
|
|
21
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`.
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { GeometryError } from "../geometry/errors.js";
|
|
2
|
-
import { immutableMeshView
|
|
2
|
+
import { immutableMeshView } from "../geometry/immutable-buffer.js";
|
|
3
3
|
import { optimizePlanarPatches } from "../geometry/mesh/mesh-planar.js";
|
|
4
4
|
import { validateAnalyzedSolidMesh } from "../geometry/mesh/mesh-solid.js";
|
|
5
|
+
import { MeshViewCache } from "../geometry/mesh/mesh-view-cache.js";
|
|
5
6
|
import { analyzeTriangleMesh, } from "../geometry/mesh/mesh.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
8
|
function fitsGeometryLimits(mesh, limits) {
|
|
10
9
|
const buffers = new Set([mesh.positions.buffer, mesh.indices.buffer]);
|
|
11
10
|
let bytes = 0;
|
|
@@ -82,74 +81,3 @@ export function createGeometryFinalizer(execution, limits, options) {
|
|
|
82
81
|
return result;
|
|
83
82
|
};
|
|
84
83
|
}
|
|
85
|
-
/** Captures mutable external buffers once before an asynchronous snapshot export begins. */
|
|
86
|
-
export function captureExportParts(parts, limits) {
|
|
87
|
-
if (!isArray(parts) || parts.length === 0 || parts.length > limits.maxParts)
|
|
88
|
-
throw new GeometryError("COMPLEXITY_LIMIT", `Export requires one through ${limits.maxParts} parts.`, {
|
|
89
|
-
operation: "export3mf",
|
|
90
|
-
});
|
|
91
|
-
const captured = parts.map((part) => {
|
|
92
|
-
if (typeof part !== "object" || part === null)
|
|
93
|
-
throw new GeometryError("INVALID_ARGUMENT", "Export part IDs must be unique canonical identifiers.", { operation: "export3mf" });
|
|
94
|
-
// Trusted immutable storage can outlive the asynchronous export directly. Mutable external
|
|
95
|
-
// input is captured once below, preserving shared backing buffers before the first await.
|
|
96
|
-
const { positions, indices } = part;
|
|
97
|
-
const immutable = isImmutableBuffer(positions) && isImmutableBuffer(indices);
|
|
98
|
-
const mesh = immutableMeshView({ positions, indices });
|
|
99
|
-
const id = part.id, color = part.color;
|
|
100
|
-
return {
|
|
101
|
-
id,
|
|
102
|
-
immutable,
|
|
103
|
-
positions: mesh.positions,
|
|
104
|
-
indices: mesh.indices,
|
|
105
|
-
...(color === undefined ? {} : { color }),
|
|
106
|
-
};
|
|
107
|
-
});
|
|
108
|
-
const identifiers = new Set();
|
|
109
|
-
const buffers = new Set();
|
|
110
|
-
let vertexCount = 0, triangleCount = 0, byteCount = 0;
|
|
111
|
-
for (const part of captured) {
|
|
112
|
-
if (typeof part !== "object" ||
|
|
113
|
-
part === null ||
|
|
114
|
-
typeof part.id !== "string" ||
|
|
115
|
-
!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(part.id) ||
|
|
116
|
-
part.id.length > 64 ||
|
|
117
|
-
identifiers.has(part.id))
|
|
118
|
-
throw new GeometryError("INVALID_ARGUMENT", "Export part IDs must be unique canonical identifiers.", { operation: "export3mf" });
|
|
119
|
-
identifiers.add(part.id);
|
|
120
|
-
if (part.color !== undefined &&
|
|
121
|
-
(typeof part.color !== "string" || !/^#[\da-f]{6}$/i.test(part.color)))
|
|
122
|
-
throw new GeometryError("INVALID_ARGUMENT", "Export colors must be six-digit hex strings.", {
|
|
123
|
-
operation: "export3mf",
|
|
124
|
-
});
|
|
125
|
-
if (!(part.positions instanceof Float32Array) ||
|
|
126
|
-
!(part.indices instanceof Uint32Array) ||
|
|
127
|
-
!(part.positions.buffer instanceof ArrayBuffer) ||
|
|
128
|
-
!(part.indices.buffer instanceof ArrayBuffer))
|
|
129
|
-
throw new GeometryError("INVALID_MESH", "Export requires transferable copied mesh arrays.", {
|
|
130
|
-
operation: "export3mf",
|
|
131
|
-
});
|
|
132
|
-
vertexCount += part.positions.length / 3;
|
|
133
|
-
triangleCount += part.indices.length / 3;
|
|
134
|
-
for (const buffer of [part.positions.buffer, part.indices.buffer]) {
|
|
135
|
-
if (!buffers.has(buffer)) {
|
|
136
|
-
buffers.add(buffer);
|
|
137
|
-
byteCount += buffer.byteLength;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
if (vertexCount > limits.maxVertices ||
|
|
141
|
-
triangleCount > limits.maxTriangles ||
|
|
142
|
-
byteCount > limits.maxBytes)
|
|
143
|
-
throw new GeometryError("COMPLEXITY_LIMIT", "Export snapshot exceeds the execution limits.", {
|
|
144
|
-
operation: "export3mf",
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
const copiedBuffers = new Map();
|
|
148
|
-
return captured.map((part) => ({
|
|
149
|
-
id: part.id,
|
|
150
|
-
...(part.immutable
|
|
151
|
-
? { positions: part.positions, indices: part.indices }
|
|
152
|
-
: copiedMeshViews(part, copiedBuffers)),
|
|
153
|
-
...(part.color === undefined ? {} : { color: part.color }),
|
|
154
|
-
}));
|
|
155
|
-
}
|
package/dist/engine/index.js
CHANGED
|
@@ -5,7 +5,6 @@ import createManifoldModule from "./kernel/manifold.js";
|
|
|
5
5
|
import { withManifoldScope } from "./native/context.js";
|
|
6
6
|
import { createSession } from "./session/session.js";
|
|
7
7
|
export { defaultModelingLimits };
|
|
8
|
-
export { export3mf } from "./export-3mf.js";
|
|
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
|
/**
|
|
@@ -81,7 +80,8 @@ function engineFromModule(module, engineLimits) {
|
|
|
81
80
|
* @example Build a box in a host application
|
|
82
81
|
* ```ts
|
|
83
82
|
* import { box, generate } from "@metamesh/modeling";
|
|
84
|
-
* import { createModelEngine
|
|
83
|
+
* import { createModelEngine } from "@metamesh/modeling/engine";
|
|
84
|
+
* import { export3mf } from "@metamesh/modeling/export";
|
|
85
85
|
*
|
|
86
86
|
* const engine = await createModelEngine();
|
|
87
87
|
* const model = generate<Record<never, never>>(({ part }) => [part("body", box({ size: [30, 20, 8] }))]);
|
|
@@ -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
|
+
}
|
|
@@ -2,6 +2,7 @@ import { GeometryError } from "../../geometry/errors.js";
|
|
|
2
2
|
import { triangleSolidAngle } from "../../geometry/mesh/mesh-solid-intersections.js";
|
|
3
3
|
import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
|
|
4
4
|
import { ownScopedManifoldValue, scopedManifoldModule, } from "./context.js";
|
|
5
|
+
import { observeNativeMesh, } from "./mesh-observation.js";
|
|
5
6
|
import { assertNativeSolidStatus } from "./status.js";
|
|
6
7
|
const MAXIMUM_CONTAINMENT_TESTS = 2_000_000;
|
|
7
8
|
/** Certifies the native sign only when its floating-point error cannot reach zero. */
|
|
@@ -34,56 +35,6 @@ function certifiedNativeOrientation(volume, bounds, triangles) {
|
|
|
34
35
|
return undefined;
|
|
35
36
|
return Math.abs(volume) > error ? (volume < 0 ? -1 : 1) : undefined;
|
|
36
37
|
}
|
|
37
|
-
/** Observes native coordinates and topology without converting geometry to Float32. */
|
|
38
|
-
function nativeShellMesh(scope, shell, limits) {
|
|
39
|
-
const vertices = shell.numVert();
|
|
40
|
-
const properties = shell.numPropVert();
|
|
41
|
-
const triangles = shell.numTri();
|
|
42
|
-
// Both native observation work and copied topology stay within the host's mesh limits.
|
|
43
|
-
// Charge the Float64 coordinates, Float32 property mesh, index map and triangle indices.
|
|
44
|
-
assertMeshAllocationWithinLimits(Math.max(vertices, properties), triangles, vertices * 24 + properties * (shell.numProp() + 4) * 4 + triangles * 12, "components", limits);
|
|
45
|
-
const coordinates = new Float64Array(vertices * 3);
|
|
46
|
-
const encoded = ownScopedManifoldValue(scope, shell.warpBatch((positions, count) => {
|
|
47
|
-
coordinates.set(positions);
|
|
48
|
-
for (let vertex = 0; vertex < count; vertex++) {
|
|
49
|
-
// Exact Float32-safe IDs recover native indices even when property vertices
|
|
50
|
-
// are duplicated or reordered by getMesh(). The original coordinates stay Float64.
|
|
51
|
-
positions[vertex * 3] = vertex % 65536;
|
|
52
|
-
positions[vertex * 3 + 1] = Math.floor(vertex / 65536);
|
|
53
|
-
positions[vertex * 3 + 2] = 0;
|
|
54
|
-
}
|
|
55
|
-
}));
|
|
56
|
-
assertNativeSolidStatus(encoded, "components");
|
|
57
|
-
if (encoded.numVert() !== vertices || encoded.numTri() !== triangles)
|
|
58
|
-
throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed shell topology.", {
|
|
59
|
-
operation: "components",
|
|
60
|
-
});
|
|
61
|
-
const mesh = encoded.getMesh();
|
|
62
|
-
if (mesh.numVert !== properties || mesh.numTri !== triangles)
|
|
63
|
-
throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed property topology.", {
|
|
64
|
-
operation: "components",
|
|
65
|
-
});
|
|
66
|
-
const indices = new Uint32Array(properties);
|
|
67
|
-
for (let vertex = 0; vertex < properties; vertex++) {
|
|
68
|
-
const offset = vertex * mesh.numProp;
|
|
69
|
-
const low = mesh.vertProperties[offset];
|
|
70
|
-
const high = mesh.vertProperties[offset + 1];
|
|
71
|
-
const index = low + high * 65536;
|
|
72
|
-
if (!Number.isInteger(low) ||
|
|
73
|
-
low < 0 ||
|
|
74
|
-
low >= 65536 ||
|
|
75
|
-
!Number.isInteger(high) ||
|
|
76
|
-
high < 0 ||
|
|
77
|
-
!Number.isSafeInteger(index) ||
|
|
78
|
-
index >= vertices ||
|
|
79
|
-
mesh.vertProperties[offset + 2] !== 0)
|
|
80
|
-
throw new GeometryError("INVALID_TOPOLOGY", "Native observation lost a vertex identity.", {
|
|
81
|
-
operation: "components",
|
|
82
|
-
});
|
|
83
|
-
indices[vertex] = index;
|
|
84
|
-
}
|
|
85
|
-
return { coordinates, vertexIndices: indices, triangles: mesh.triVerts };
|
|
86
|
-
}
|
|
87
38
|
/** Computes signed enclosed volume without rounding, including folded contact boundaries. */
|
|
88
39
|
function nativeShellOrientation(mesh) {
|
|
89
40
|
const { coordinates, vertexIndices, triangles } = mesh;
|
|
@@ -186,7 +137,7 @@ export function solidMaterialComponents(scope, solid, limits) {
|
|
|
186
137
|
shell.numPropVert() * (shell.numProp() + 4) * 4 +
|
|
187
138
|
shell.numTri() * 12;
|
|
188
139
|
assertMeshAllocationWithinLimits(Math.max(vertices, properties), triangles, bytes, "components", limits);
|
|
189
|
-
const mesh =
|
|
140
|
+
const mesh = observeNativeMesh(scope, shell, limits, "components");
|
|
190
141
|
meshes.set(shell, mesh);
|
|
191
142
|
observedVertices = vertices;
|
|
192
143
|
observedProperties = properties;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { GeometryError } from "../../geometry/errors.js";
|
|
2
|
+
import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
|
|
3
|
+
import { ownScopedManifoldValue } from "./context.js";
|
|
4
|
+
import { assertNativeSolidStatus } from "./status.js";
|
|
5
|
+
/** Observes native coordinates and topology without a Float32 geometry round trip. */
|
|
6
|
+
export function observeNativeMesh(scope, solid, limits, operation) {
|
|
7
|
+
const vertices = solid.numVert();
|
|
8
|
+
const properties = solid.numPropVert();
|
|
9
|
+
const triangles = solid.numTri();
|
|
10
|
+
assertMeshAllocationWithinLimits(Math.max(vertices, properties), triangles, vertices * 24 + properties * (solid.numProp() + 4) * 4 + triangles * 20 + 4, operation, limits);
|
|
11
|
+
const coordinates = new Float64Array(vertices * 3);
|
|
12
|
+
const encoded = ownScopedManifoldValue(scope, solid.warpBatch((positions, count) => {
|
|
13
|
+
coordinates.set(positions);
|
|
14
|
+
for (let vertex = 0; vertex < count; vertex++) {
|
|
15
|
+
// Float32-safe IDs preserve native identity through property-vertex duplication/reordering.
|
|
16
|
+
positions[vertex * 3] = vertex % 65536;
|
|
17
|
+
positions[vertex * 3 + 1] = Math.floor(vertex / 65536);
|
|
18
|
+
positions[vertex * 3 + 2] = 0;
|
|
19
|
+
}
|
|
20
|
+
}));
|
|
21
|
+
assertNativeSolidStatus(encoded, operation);
|
|
22
|
+
if (encoded.numVert() !== vertices || encoded.numTri() !== triangles)
|
|
23
|
+
throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed shell topology.", {
|
|
24
|
+
operation,
|
|
25
|
+
});
|
|
26
|
+
const mesh = encoded.getMesh();
|
|
27
|
+
if (mesh.numVert !== properties || mesh.numTri !== triangles)
|
|
28
|
+
throw new GeometryError("INVALID_TOPOLOGY", "Native observation changed property topology.", {
|
|
29
|
+
operation,
|
|
30
|
+
});
|
|
31
|
+
const indices = new Uint32Array(properties);
|
|
32
|
+
for (let vertex = 0; vertex < properties; vertex++) {
|
|
33
|
+
const offset = vertex * mesh.numProp;
|
|
34
|
+
const low = mesh.vertProperties[offset];
|
|
35
|
+
const high = mesh.vertProperties[offset + 1];
|
|
36
|
+
const index = low + high * 65536;
|
|
37
|
+
if (!Number.isInteger(low) ||
|
|
38
|
+
low < 0 ||
|
|
39
|
+
low >= 65536 ||
|
|
40
|
+
!Number.isInteger(high) ||
|
|
41
|
+
high < 0 ||
|
|
42
|
+
!Number.isSafeInteger(index) ||
|
|
43
|
+
index >= vertices ||
|
|
44
|
+
mesh.vertProperties[offset + 2] !== 0)
|
|
45
|
+
throw new GeometryError("INVALID_TOPOLOGY", "Native observation lost a vertex identity.", {
|
|
46
|
+
operation,
|
|
47
|
+
});
|
|
48
|
+
indices[vertex] = index;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
coordinates,
|
|
52
|
+
vertexIndices: indices,
|
|
53
|
+
triangles: mesh.triVerts,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -82,7 +82,8 @@ export function regionToCrossSection(context, region, limits = {}) {
|
|
|
82
82
|
return ownScopedManifoldValue(context, module.CrossSection.union([]));
|
|
83
83
|
return ownScopedManifoldValue(context, new module.CrossSection(contoursFromRegion(normalized)));
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
/** Internal filled-loop classification shared by native Section and exact collar observations. */
|
|
86
|
+
export const regionFromLoops = (loops) => {
|
|
86
87
|
const outers = loops
|
|
87
88
|
.filter((loop) => signedContourArea(loop) > 0)
|
|
88
89
|
.map((outer) => ({ outer: normalizeContour(outer, true), holes: [] }));
|
|
@@ -3,6 +3,7 @@ import { createConstructionOperations } from "./construction.js";
|
|
|
3
3
|
import { createOperationEnvironment } from "./environment.js";
|
|
4
4
|
import { createHoleCutterOperation } from "./hole-cutter.js";
|
|
5
5
|
import { createInspectionOperations } from "./inspection.js";
|
|
6
|
+
import { createJoinOperation } from "./join.js";
|
|
6
7
|
import { createMechanicalOperations } from "./mechanical.js";
|
|
7
8
|
import { createPatternOperations } from "./patterns.js";
|
|
8
9
|
import { createPrimitiveOperations } from "./primitives/construction.js";
|
|
@@ -39,6 +40,7 @@ export function createModelingContext(owner, initialResolution) {
|
|
|
39
40
|
...sections,
|
|
40
41
|
...primitives,
|
|
41
42
|
...construction,
|
|
43
|
+
join: createJoinOperation(environment),
|
|
42
44
|
holeCutter: createHoleCutterOperation(environment, {
|
|
43
45
|
cylinder: primitives.cylinder,
|
|
44
46
|
extrude: construction.extrude,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { convexContourOffsets } from "../../geometry/convex-offset.js";
|
|
2
1
|
import { edgeTreatmentPointCount, edgeTreatmentSetbacks, sampleEdgeTreatment, } from "../../geometry/edge-finishing.js";
|
|
3
2
|
import { GeometryError } from "../../geometry/errors.js";
|
|
4
3
|
import { resolveExtrusionControls } from "../../geometry/extrusion.js";
|
|
5
4
|
import { assertMeshAllocationWithinLimits, } from "../../geometry/model-limits.js";
|
|
5
|
+
import { planRegionOffsets } from "../../geometry/region-offset.js";
|
|
6
6
|
import { assertSamplingCount } from "../../geometry/sampling-limits.js";
|
|
7
7
|
import { buildProfileLoftMesh } from "./primitives/profile-mesh.js";
|
|
8
8
|
const fail = (message) => {
|
|
9
9
|
throw new GeometryError("INVALID_ARGUMENT", message, { operation: "extrude" });
|
|
10
10
|
};
|
|
11
|
-
/** Finishes
|
|
11
|
+
/** Finishes every material rim through one source-corresponding regular offset family. */
|
|
12
12
|
export function buildFinishedExtrusion(module, profile, options) {
|
|
13
13
|
const controls = resolveExtrusionControls(options.height, options, "extrude");
|
|
14
14
|
if (controls.twist !== 0 ||
|
|
@@ -17,15 +17,6 @@ export function buildFinishedExtrusion(module, profile, options) {
|
|
|
17
17
|
fail("End treatments require a straight extrusion without twist, top scaling or divisions.");
|
|
18
18
|
if (typeof options.ends !== "object" || options.ends === null || Array.isArray(options.ends))
|
|
19
19
|
fail("ends must be an object.");
|
|
20
|
-
if (profile.components.length !== 1 || profile.components[0].holes.length !== 0)
|
|
21
|
-
fail("End treatments require one convex contour without holes; use explicit loft profiles for other topology.");
|
|
22
|
-
const contour = profile.components[0].outer, points = contour.points;
|
|
23
|
-
const { magnification, offset } = convexContourOffsets(points, "extrude");
|
|
24
|
-
const sampling = {
|
|
25
|
-
resolution: options.resolution,
|
|
26
|
-
limits: options.limits,
|
|
27
|
-
magnification,
|
|
28
|
-
};
|
|
29
20
|
const bottom = options.ends.bottom, top = options.ends.top;
|
|
30
21
|
const bottomSize = bottom === undefined
|
|
31
22
|
? [0, 0]
|
|
@@ -33,10 +24,23 @@ export function buildFinishedExtrusion(module, profile, options) {
|
|
|
33
24
|
const topSize = top === undefined ? [0, 0] : edgeTreatmentSetbacks(top, "extrude", Math.PI / 2, options.limits);
|
|
34
25
|
if (bottomSize[1] + topSize[1] >= options.height)
|
|
35
26
|
fail("End treatments must leave positive length between their side setbacks.");
|
|
27
|
+
const plan = planRegionOffsets(profile, [0, Math.max(bottomSize[0], topSize[0])], "extrude", options.limits);
|
|
28
|
+
const sampling = {
|
|
29
|
+
resolution: options.resolution,
|
|
30
|
+
limits: options.limits,
|
|
31
|
+
magnification: plan.magnification,
|
|
32
|
+
};
|
|
36
33
|
const rowCount = (bottom === undefined ? 1 : edgeTreatmentPointCount(bottom, "extrude", sampling)) +
|
|
37
34
|
(top === undefined ? 1 : edgeTreatmentPointCount(top, "extrude", sampling));
|
|
38
35
|
assertSamplingCount(rowCount, "extrude", options.limits.maxPathPoints);
|
|
39
|
-
|
|
36
|
+
let pointCount = 0, contourCount = 0;
|
|
37
|
+
for (const component of profile.components) {
|
|
38
|
+
for (const contour of [component.outer, ...component.holes]) {
|
|
39
|
+
pointCount += contour.points.length;
|
|
40
|
+
contourCount++;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const vertexCount = rowCount * pointCount, triangleCount = 2 * vertexCount + 4 * contourCount;
|
|
40
44
|
assertMeshAllocationWithinLimits(vertexCount, triangleCount, 12 * (vertexCount + triangleCount), "extrude", options.limits);
|
|
41
45
|
const bottomPoints = bottom === undefined ? [[0, 0]] : sampleEdgeTreatment(bottom, "extrude", sampling);
|
|
42
46
|
const topPoints = top === undefined ? [[0, 0]] : sampleEdgeTreatment(top, "extrude", sampling);
|
|
@@ -44,12 +48,9 @@ export function buildFinishedExtrusion(module, profile, options) {
|
|
|
44
48
|
...bottomPoints.map(([inset, depth]) => ({ inset, z: depth })),
|
|
45
49
|
...[...topPoints].reverse().map(([inset, depth]) => ({ inset, z: options.height - depth })),
|
|
46
50
|
];
|
|
47
|
-
offset(Math.max(bottomSize[0], topSize[0])); // fit fails before allocating the full station family
|
|
48
51
|
const stations = rows.map(({ inset, z }) => ({
|
|
49
52
|
z: controls.center ? z - options.height / 2 : z,
|
|
50
|
-
profile:
|
|
51
|
-
components: [{ ...profile.components[0], outer: { ...contour, points: offset(inset) } }],
|
|
52
|
-
},
|
|
53
|
+
profile: plan.profileAt(inset),
|
|
53
54
|
}));
|
|
54
55
|
return buildProfileLoftMesh(module, stations, options.limits);
|
|
55
56
|
}
|