brepjs 14.1.3 → 14.2.1
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/dist/2d.cjs +5 -5
- package/dist/2d.js +5 -5
- package/dist/{blueprint-C6B--LQ6.cjs → blueprint-C8nlHdUE.cjs} +5 -5
- package/dist/{blueprint-CzFYcmzV.js → blueprint-Dsp-f4De.js} +5 -5
- package/dist/{blueprintFns-B2AvzIXt.cjs → blueprintFns-CvtakKGf.cjs} +2 -2
- package/dist/{blueprintFns-wka8INr_.js → blueprintFns-D1QUp5y4.js} +2 -2
- package/dist/{boolean2D-CfCt_m29.js → boolean2D-D1MYwspP.js} +49 -8
- package/dist/{boolean2D-6bQx64bR.cjs → boolean2D-DE2axG6W.cjs} +54 -7
- package/dist/{booleanFns-B6zxpf96.js → booleanFns-DViuH9nW.js} +32 -16
- package/dist/{booleanFns-C2pjUC6-.cjs → booleanFns-Dmvv9VVT.cjs} +32 -16
- package/dist/brepjs.cjs +23 -19
- package/dist/brepjs.js +20 -20
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/{cornerFinder-DBXma4vL.js → cornerFinder-CyvfiiYv.js} +1 -1
- package/dist/{cornerFinder-DrHIlWCS.cjs → cornerFinder-Du1Q1hgu.cjs} +1 -1
- package/dist/{curveFns-C_vQNb7-.cjs → curveFns--4Nh1ZtB.cjs} +1 -1
- package/dist/{curveFns-DmID8AQO.js → curveFns-D9GbWpcl.js} +1 -1
- package/dist/{drawFns-rLQIZezc.js → drawFns-BDqEWrCy.js} +11 -11
- package/dist/{drawFns-DRG-UpkW.cjs → drawFns-DTqCnYeo.cjs} +11 -11
- package/dist/{extrudeFns-BP7fNL5O.cjs → extrudeFns-CIUq5ZQW.cjs} +44 -1
- package/dist/{extrudeFns-1qcdK9dq.js → extrudeFns-DxS_UOMr.js} +39 -2
- package/dist/{faceFns-BwzwlBjE.cjs → faceFns-D7i9yEts.cjs} +1 -1
- package/dist/{faceFns-BHT5DAOL.js → faceFns-lcEYbLOs.js} +1 -1
- package/dist/{helpers-C4Ajoc6x.cjs → helpers-BK3DVd3M.cjs} +5 -5
- package/dist/{helpers-B94CkHQe.js → helpers-BwzOwHWl.js} +5 -5
- package/dist/{historyFns-CrsjeD69.cjs → historyFns-BO9c4AgQ.cjs} +4 -4
- package/dist/{historyFns-BsSuAQ0m.js → historyFns-C_EoZWD5.js} +4 -4
- package/dist/{importFns-DPwXjtkm.cjs → importFns-Ca7DsY-k.cjs} +2 -2
- package/dist/{importFns-DQsQOpRY.js → importFns-NY1stg0C.js} +2 -2
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/io.cjs +2 -2
- package/dist/io.js +2 -2
- package/dist/kernel/index.d.ts +2 -0
- package/dist/kernel/index.d.ts.map +1 -1
- package/dist/kernel/interfaces/modifierOps.d.ts +16 -0
- package/dist/kernel/interfaces/modifierOps.d.ts.map +1 -1
- package/dist/kernel/interfaces/sweepOps.d.ts +15 -0
- package/dist/kernel/interfaces/sweepOps.d.ts.map +1 -1
- package/dist/kernel/occt/booleanBatchOps.d.ts +13 -0
- package/dist/kernel/occt/booleanBatchOps.d.ts.map +1 -0
- package/dist/kernel/occt/booleanOps.d.ts.map +1 -1
- package/dist/kernel/occt/defaultAdapter.d.ts +6 -0
- package/dist/kernel/occt/defaultAdapter.d.ts.map +1 -1
- package/dist/kernel/occt/meshOps.d.ts.map +1 -1
- package/dist/kernel/occt/modifierOps.d.ts +19 -0
- package/dist/kernel/occt/modifierOps.d.ts.map +1 -1
- package/dist/kernel/occt/sweepOps.d.ts +17 -0
- package/dist/kernel/occt/sweepOps.d.ts.map +1 -1
- package/dist/kernel/occt/transformOps.d.ts.map +1 -1
- package/dist/kernel/perfStats.d.ts +27 -0
- package/dist/kernel/perfStats.d.ts.map +1 -0
- package/dist/kernel/types.d.ts +6 -0
- package/dist/kernel/types.d.ts.map +1 -1
- package/dist/{measureFns-iarjC69-.js → measureFns-Dsan3QcB.js} +2 -2
- package/dist/{measureFns-j1ze9DDM.cjs → measureFns-rVSankqO.cjs} +2 -2
- package/dist/measurement.cjs +1 -1
- package/dist/measurement.js +1 -1
- package/dist/{meshFns-DRl9xnbO.js → meshFns-CKs4H-CH.js} +2 -2
- package/dist/{meshFns-CONktkIA.cjs → meshFns-Z5n8gFAS.cjs} +2 -2
- package/dist/operations/extrudeFns.d.ts +16 -0
- package/dist/operations/extrudeFns.d.ts.map +1 -1
- package/dist/operations/loftFns.d.ts +22 -0
- package/dist/operations/loftFns.d.ts.map +1 -1
- package/dist/operations.cjs +2 -2
- package/dist/operations.js +2 -2
- package/dist/{primitiveFns-CMIscOrN.js → primitiveFns-DmIP-qnU.js} +17 -7
- package/dist/{primitiveFns-CGg6EBKg.cjs → primitiveFns-w2otksRk.cjs} +17 -7
- package/dist/query.cjs +2 -2
- package/dist/query.js +2 -2
- package/dist/{shapeFns-DY7pjzrz.cjs → shapeFns-DZ2c5Nqo.cjs} +2 -2
- package/dist/{shapeFns-Brq2J-mW.js → shapeFns-E3qTx3nN.js} +2 -2
- package/dist/shapeRef.cjs +1 -1
- package/dist/shapeRef.js +1 -1
- package/dist/{shapeRefFns-BqOlRA7C.js → shapeRefFns-CEYgkZ1v.js} +3 -3
- package/dist/{shapeRefFns-BOljxSxd.cjs → shapeRefFns-Dl7v17MC.cjs} +3 -3
- package/dist/{shapeTypes-B3kwoJWf.cjs → shapeTypes-B5Vx1Wsw.cjs} +538 -171
- package/dist/{shapeTypes-CoNj-AHu.js → shapeTypes-DUJg_N3P.js} +527 -172
- package/dist/sketching.cjs +2 -2
- package/dist/sketching.js +2 -2
- package/dist/{solidBuilders-BzIatk9a.js → solidBuilders-0gTTuSxw.js} +2 -2
- package/dist/{solidBuilders-V8qvmW7h.cjs → solidBuilders-Bvq6br4f.cjs} +2 -2
- package/dist/{surfaceBuilders-CoiofY0Y.cjs → surfaceBuilders-CYWopaht.cjs} +2 -2
- package/dist/{surfaceBuilders-Cfo4nH6A.js → surfaceBuilders-DMI0n7Bf.js} +2 -2
- package/dist/topology/booleanFns.d.ts.map +1 -1
- package/dist/topology/modifierFns.d.ts +6 -2
- package/dist/topology/modifierFns.d.ts.map +1 -1
- package/dist/topology.cjs +6 -6
- package/dist/topology.js +6 -6
- package/package.json +2 -2
package/dist/2d.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
2
|
+
const require_shapeTypes = require("./shapeTypes-B5Vx1Wsw.cjs");
|
|
3
3
|
const require_errors = require("./errors-9zQcQK1H.cjs");
|
|
4
|
-
const require_faceFns = require("./faceFns-
|
|
5
|
-
const require_boolean2D = require("./boolean2D-
|
|
6
|
-
const require_blueprint = require("./blueprint-
|
|
7
|
-
const require_blueprintFns = require("./blueprintFns-
|
|
4
|
+
const require_faceFns = require("./faceFns-D7i9yEts.cjs");
|
|
5
|
+
const require_boolean2D = require("./boolean2D-DE2axG6W.cjs");
|
|
6
|
+
const require_blueprint = require("./blueprint-C8nlHdUE.cjs");
|
|
7
|
+
const require_blueprintFns = require("./blueprintFns-CvtakKGf.cjs");
|
|
8
8
|
//#region src/core/curve2dHandle.ts
|
|
9
9
|
/**
|
|
10
10
|
* Wrap a raw kernel 2D curve handle with brand + disposal tracking.
|
package/dist/2d.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { X as getKernel2D, a as createEdge, z as createKernelHandle } from "./shapeTypes-
|
|
1
|
+
import { X as getKernel2D, a as createEdge, z as createKernelHandle } from "./shapeTypes-DUJg_N3P.js";
|
|
2
2
|
import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-C-cgQA3w.js";
|
|
3
|
-
import { C as kernelCallRaw } from "./faceFns-
|
|
4
|
-
import { a as fuseBlueprints, c as roundedRectangleBlueprint, g as
|
|
5
|
-
import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-
|
|
6
|
-
import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-
|
|
3
|
+
import { C as kernelCallRaw } from "./faceFns-lcEYbLOs.js";
|
|
4
|
+
import { _ as Blueprints, a as fuseBlueprints, c as roundedRectangleBlueprint, g as CompoundBlueprint, h as organiseBlueprints, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-D1MYwspP.js";
|
|
5
|
+
import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-Dsp-f4De.js";
|
|
6
|
+
import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-D1QUp5y4.js";
|
|
7
7
|
//#region src/core/curve2dHandle.ts
|
|
8
8
|
/**
|
|
9
9
|
* Wrap a raw kernel 2D curve handle with brand + disposal tracking.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-B5Vx1Wsw.cjs");
|
|
2
2
|
const require_errors = require("./errors-9zQcQK1H.cjs");
|
|
3
|
-
const require_faceFns = require("./faceFns-
|
|
3
|
+
const require_faceFns = require("./faceFns-D7i9yEts.cjs");
|
|
4
4
|
const require_constants = require("./constants-unWN8k4c.cjs");
|
|
5
5
|
const require_types = require("./types-BjDcsS7l.cjs");
|
|
6
6
|
const require_planeOps = require("./planeOps-6Wu7dMDN.cjs");
|
|
7
|
-
const require_curveFns = require("./curveFns
|
|
7
|
+
const require_curveFns = require("./curveFns--4Nh1ZtB.cjs");
|
|
8
8
|
const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
|
|
9
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
10
|
-
const require_helpers = require("./helpers-
|
|
9
|
+
const require_surfaceBuilders = require("./surfaceBuilders-CYWopaht.cjs");
|
|
10
|
+
const require_helpers = require("./helpers-BK3DVd3M.cjs");
|
|
11
11
|
//#region src/2d/lib/definitions.ts
|
|
12
12
|
/** Type guard that checks whether a value is a `Point2D`. */
|
|
13
13
|
function isPoint2D(point) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { H as registerForCleanup, W as unregisterFromCleanup, X as getKernel2D, Y as getKernel, a as createEdge, u as createWire } from "./shapeTypes-
|
|
1
|
+
import { H as registerForCleanup, W as unregisterFromCleanup, X as getKernel2D, Y as getKernel, a as createEdge, u as createWire } from "./shapeTypes-DUJg_N3P.js";
|
|
2
2
|
import { A as ok, R as unwrap, b as err, d as validationError, h as bug, n as computationError } from "./errors-C-cgQA3w.js";
|
|
3
|
-
import { g as cast, m as uvCoordinates, n as faceCenter, p as uvBounds, r as faceGeomType } from "./faceFns-
|
|
3
|
+
import { g as cast, m as uvCoordinates, n as faceCenter, p as uvBounds, r as faceGeomType } from "./faceFns-lcEYbLOs.js";
|
|
4
4
|
import { r as RAD2DEG, t as DEG2RAD } from "./constants-B9u763C3.js";
|
|
5
5
|
import { r as toVec3 } from "./types-BWBlwp6w.js";
|
|
6
6
|
import { r as makePlane } from "./planeOps-gTOEarV2.js";
|
|
7
|
-
import { f as getOrientation } from "./curveFns-
|
|
7
|
+
import { f as getOrientation } from "./curveFns-D9GbWpcl.js";
|
|
8
8
|
import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-xxcB3YNq.js";
|
|
9
|
-
import { r as makeFace } from "./surfaceBuilders-
|
|
10
|
-
import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-
|
|
9
|
+
import { r as makeFace } from "./surfaceBuilders-DMI0n7Bf.js";
|
|
10
|
+
import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-BwzOwHWl.js";
|
|
11
11
|
//#region src/2d/lib/definitions.ts
|
|
12
12
|
/** Type guard that checks whether a value is a `Point2D`. */
|
|
13
13
|
function isPoint2D(point) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_errors = require("./errors-9zQcQK1H.cjs");
|
|
2
|
-
const require_boolean2D = require("./boolean2D-
|
|
3
|
-
const require_blueprint = require("./blueprint-
|
|
2
|
+
const require_boolean2D = require("./boolean2D-DE2axG6W.cjs");
|
|
3
|
+
const require_blueprint = require("./blueprint-C8nlHdUE.cjs");
|
|
4
4
|
//#region src/2d/lib/curve2dFns.ts
|
|
5
5
|
/**
|
|
6
6
|
* Return a reversed copy of the curve (non-mutating).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-C-cgQA3w.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as Blueprint } from "./blueprint-
|
|
2
|
+
import { g as CompoundBlueprint } from "./boolean2D-D1MYwspP.js";
|
|
3
|
+
import { t as Blueprint } from "./blueprint-Dsp-f4De.js";
|
|
4
4
|
//#region src/2d/lib/curve2dFns.ts
|
|
5
5
|
/**
|
|
6
6
|
* Return a reversed copy of the curve (non-mutating).
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { J as _usingCtx, L as DisposalScope, X as getKernel2D, Y as getKernel, a as createEdge, h as isShape3D, o as createFace, t as castShape, u as createWire } from "./shapeTypes-
|
|
1
|
+
import { J as _usingCtx, L as DisposalScope, X as getKernel2D, Y as getKernel, a as createEdge, h as isShape3D, o as createFace, t as castShape, u as createWire } from "./shapeTypes-DUJg_N3P.js";
|
|
2
2
|
import { A as ok, R as unwrap, T as isOk, b as err, d as validationError, h as bug, i as kernelError, l as typeCastError, n as computationError, s as safeIndex } from "./errors-C-cgQA3w.js";
|
|
3
|
-
import { _ as downcast, c as normalAt, p as uvBounds, u as pointOnSurface } from "./faceFns-
|
|
3
|
+
import { _ as downcast, c as normalAt, p as uvBounds, u as pointOnSurface } from "./faceFns-lcEYbLOs.js";
|
|
4
4
|
import { r as RAD2DEG, t as DEG2RAD } from "./constants-B9u763C3.js";
|
|
5
5
|
import { r as toVec3 } from "./types-BWBlwp6w.js";
|
|
6
6
|
import { d as vecNormalize, h as vecScale, r as vecCross } from "./vecOps-D9etjPgV.js";
|
|
7
7
|
import { n as createPlane } from "./planeOps-gTOEarV2.js";
|
|
8
|
-
import { c as curveStartPoint, l as curveTangentAt, r as curveIsClosed } from "./curveFns-
|
|
8
|
+
import { c as curveStartPoint, l as curveTangentAt, r as curveIsClosed } from "./curveFns-D9GbWpcl.js";
|
|
9
9
|
import { r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-xxcB3YNq.js";
|
|
10
|
-
import { _ as zip, i as makeNewFaceWithinFace, r as makeFace, s as assembleWire } from "./surfaceBuilders-
|
|
11
|
-
import { _ as samePoint$1, b as subtract2d, d as cartesianToPolar, f as crossProduct2d, g as rotate2d, h as polarToCartesian, l as add2d, m as polarAngle2d, o as normalize2d, p as distance2d, s as PRECISION_INTERSECTION, v as scalarMultiply2d } from "./helpers-
|
|
12
|
-
import { _ as Curve2D, b as removeDuplicatePoints, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-
|
|
13
|
-
import { c as
|
|
10
|
+
import { _ as zip, i as makeNewFaceWithinFace, r as makeFace, s as assembleWire } from "./surfaceBuilders-DMI0n7Bf.js";
|
|
11
|
+
import { _ as samePoint$1, b as subtract2d, d as cartesianToPolar, f as crossProduct2d, g as rotate2d, h as polarToCartesian, l as add2d, m as polarAngle2d, o as normalize2d, p as distance2d, s as PRECISION_INTERSECTION, v as scalarMultiply2d } from "./helpers-BwzOwHWl.js";
|
|
12
|
+
import { _ as Curve2D, b as removeDuplicatePoints, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-Dsp-f4De.js";
|
|
13
|
+
import { c as sweep, i as complexExtrude, l as twistExtrude, r as revolve, t as extrude } from "./extrudeFns-DxS_UOMr.js";
|
|
14
14
|
//#region node_modules/flatqueue/index.js
|
|
15
15
|
/** @template T */
|
|
16
16
|
var FlatQueue = class {
|
|
@@ -1025,6 +1025,47 @@ function loft(wires, { ruled = true, startPoint, endPoint, tolerance = 1e-6 } =
|
|
|
1025
1025
|
return err(kernelError("LOFT_FAILED", "Loft operation failed", void 0, void 0, "Common causes: wire profiles with different edge counts, self-intersecting result, or profiles too far apart. Ensure profiles are compatible and ordered."));
|
|
1026
1026
|
}
|
|
1027
1027
|
}
|
|
1028
|
+
/**
|
|
1029
|
+
* Batch loft: build N independent lofts in a single kernel call.
|
|
1030
|
+
*
|
|
1031
|
+
* Uses the C++ LoftBatch extractor when available (single WASM call),
|
|
1032
|
+
* falling back to N individual loft operations otherwise.
|
|
1033
|
+
*
|
|
1034
|
+
* @returns Array of 3D shapes, one per entry.
|
|
1035
|
+
*/
|
|
1036
|
+
function loftAll(entries) {
|
|
1037
|
+
if (entries.length === 0) return ok([]);
|
|
1038
|
+
const kernel = getKernel();
|
|
1039
|
+
const verticesToDelete = [];
|
|
1040
|
+
const kernelEntries = entries.map((e) => {
|
|
1041
|
+
const startVertex = e.startPoint ? kernel.makeVertex(...toVec3(e.startPoint)) : void 0;
|
|
1042
|
+
const endVertex = e.endPoint ? kernel.makeVertex(...toVec3(e.endPoint)) : void 0;
|
|
1043
|
+
if (startVertex) verticesToDelete.push(startVertex);
|
|
1044
|
+
if (endVertex) verticesToDelete.push(endVertex);
|
|
1045
|
+
return {
|
|
1046
|
+
wires: e.wires.map((w) => w.wrapped),
|
|
1047
|
+
solid: true,
|
|
1048
|
+
ruled: e.ruled ?? true,
|
|
1049
|
+
tolerance: e.tolerance ?? 1e-6,
|
|
1050
|
+
startVertex,
|
|
1051
|
+
endVertex
|
|
1052
|
+
};
|
|
1053
|
+
});
|
|
1054
|
+
try {
|
|
1055
|
+
const shapes = kernel.loftBatch?.(kernelEntries) ?? kernelEntries.map((e) => kernel.loft(e.wires, e.ruled, e.startVertex, e.endVertex));
|
|
1056
|
+
const results = [];
|
|
1057
|
+
for (const shape of shapes) {
|
|
1058
|
+
const cast = castShape(shape);
|
|
1059
|
+
if (!isShape3D(cast)) return err(typeCastError("LOFT_ALL_NOT_3D", "Batch loft entry did not produce a 3D shape"));
|
|
1060
|
+
results.push(cast);
|
|
1061
|
+
}
|
|
1062
|
+
return ok(results);
|
|
1063
|
+
} catch (e) {
|
|
1064
|
+
return err(kernelError("LOFT_ALL_FAILED", "Batch loft operation failed", e));
|
|
1065
|
+
} finally {
|
|
1066
|
+
for (const v of verticesToDelete) kernel.dispose(v);
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1028
1069
|
//#endregion
|
|
1029
1070
|
//#region src/sketching/sketch.ts
|
|
1030
1071
|
/**
|
|
@@ -2544,4 +2585,4 @@ function intersect2D(first, second) {
|
|
|
2544
2585
|
bug("intersect2D", "Unhandled Shape2D combination");
|
|
2545
2586
|
}
|
|
2546
2587
|
//#endregion
|
|
2547
|
-
export {
|
|
2588
|
+
export { Flatbush as S, Blueprints as _, fuseBlueprints as a, make2dOffset as b, roundedRectangleBlueprint as c, FaceSketcher as d, Sketch as f, CompoundBlueprint as g, organiseBlueprints as h, cutBlueprints as i, BaseSketcher2d as l, loftAll as m, fuse2D as n, intersectBlueprints as o, loft as p, intersect2D as r, polysidesBlueprint as s, cut2D as t, BlueprintSketcher as u, chamferCurves as v, intersectCurves as x, filletCurves as y };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-B5Vx1Wsw.cjs");
|
|
2
2
|
const require_errors = require("./errors-9zQcQK1H.cjs");
|
|
3
|
-
const require_faceFns = require("./faceFns-
|
|
3
|
+
const require_faceFns = require("./faceFns-D7i9yEts.cjs");
|
|
4
4
|
const require_constants = require("./constants-unWN8k4c.cjs");
|
|
5
5
|
const require_types = require("./types-BjDcsS7l.cjs");
|
|
6
6
|
const require_vecOps = require("./vecOps-BXvBYIor.cjs");
|
|
7
7
|
const require_planeOps = require("./planeOps-6Wu7dMDN.cjs");
|
|
8
|
-
const require_curveFns = require("./curveFns
|
|
8
|
+
const require_curveFns = require("./curveFns--4Nh1ZtB.cjs");
|
|
9
9
|
const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
|
|
10
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
11
|
-
const require_helpers = require("./helpers-
|
|
12
|
-
const require_blueprint = require("./blueprint-
|
|
13
|
-
const require_extrudeFns = require("./extrudeFns-
|
|
10
|
+
const require_surfaceBuilders = require("./surfaceBuilders-CYWopaht.cjs");
|
|
11
|
+
const require_helpers = require("./helpers-BK3DVd3M.cjs");
|
|
12
|
+
const require_blueprint = require("./blueprint-C8nlHdUE.cjs");
|
|
13
|
+
const require_extrudeFns = require("./extrudeFns-CIUq5ZQW.cjs");
|
|
14
14
|
//#region node_modules/flatqueue/index.js
|
|
15
15
|
/** @template T */
|
|
16
16
|
var FlatQueue = class {
|
|
@@ -1025,6 +1025,47 @@ function loft(wires, { ruled = true, startPoint, endPoint, tolerance = 1e-6 } =
|
|
|
1025
1025
|
return require_errors.err(require_errors.kernelError("LOFT_FAILED", "Loft operation failed", void 0, void 0, "Common causes: wire profiles with different edge counts, self-intersecting result, or profiles too far apart. Ensure profiles are compatible and ordered."));
|
|
1026
1026
|
}
|
|
1027
1027
|
}
|
|
1028
|
+
/**
|
|
1029
|
+
* Batch loft: build N independent lofts in a single kernel call.
|
|
1030
|
+
*
|
|
1031
|
+
* Uses the C++ LoftBatch extractor when available (single WASM call),
|
|
1032
|
+
* falling back to N individual loft operations otherwise.
|
|
1033
|
+
*
|
|
1034
|
+
* @returns Array of 3D shapes, one per entry.
|
|
1035
|
+
*/
|
|
1036
|
+
function loftAll(entries) {
|
|
1037
|
+
if (entries.length === 0) return require_errors.ok([]);
|
|
1038
|
+
const kernel = require_shapeTypes.getKernel();
|
|
1039
|
+
const verticesToDelete = [];
|
|
1040
|
+
const kernelEntries = entries.map((e) => {
|
|
1041
|
+
const startVertex = e.startPoint ? kernel.makeVertex(...require_types.toVec3(e.startPoint)) : void 0;
|
|
1042
|
+
const endVertex = e.endPoint ? kernel.makeVertex(...require_types.toVec3(e.endPoint)) : void 0;
|
|
1043
|
+
if (startVertex) verticesToDelete.push(startVertex);
|
|
1044
|
+
if (endVertex) verticesToDelete.push(endVertex);
|
|
1045
|
+
return {
|
|
1046
|
+
wires: e.wires.map((w) => w.wrapped),
|
|
1047
|
+
solid: true,
|
|
1048
|
+
ruled: e.ruled ?? true,
|
|
1049
|
+
tolerance: e.tolerance ?? 1e-6,
|
|
1050
|
+
startVertex,
|
|
1051
|
+
endVertex
|
|
1052
|
+
};
|
|
1053
|
+
});
|
|
1054
|
+
try {
|
|
1055
|
+
const shapes = kernel.loftBatch?.(kernelEntries) ?? kernelEntries.map((e) => kernel.loft(e.wires, e.ruled, e.startVertex, e.endVertex));
|
|
1056
|
+
const results = [];
|
|
1057
|
+
for (const shape of shapes) {
|
|
1058
|
+
const cast = require_shapeTypes.castShape(shape);
|
|
1059
|
+
if (!require_shapeTypes.isShape3D(cast)) return require_errors.err(require_errors.typeCastError("LOFT_ALL_NOT_3D", "Batch loft entry did not produce a 3D shape"));
|
|
1060
|
+
results.push(cast);
|
|
1061
|
+
}
|
|
1062
|
+
return require_errors.ok(results);
|
|
1063
|
+
} catch (e) {
|
|
1064
|
+
return require_errors.err(require_errors.kernelError("LOFT_ALL_FAILED", "Batch loft operation failed", e));
|
|
1065
|
+
} finally {
|
|
1066
|
+
for (const v of verticesToDelete) kernel.dispose(v);
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1028
1069
|
//#endregion
|
|
1029
1070
|
//#region src/sketching/sketch.ts
|
|
1030
1071
|
/**
|
|
@@ -2646,6 +2687,12 @@ Object.defineProperty(exports, "loft", {
|
|
|
2646
2687
|
return loft;
|
|
2647
2688
|
}
|
|
2648
2689
|
});
|
|
2690
|
+
Object.defineProperty(exports, "loftAll", {
|
|
2691
|
+
enumerable: true,
|
|
2692
|
+
get: function() {
|
|
2693
|
+
return loftAll;
|
|
2694
|
+
}
|
|
2695
|
+
});
|
|
2649
2696
|
Object.defineProperty(exports, "make2dOffset", {
|
|
2650
2697
|
enumerable: true,
|
|
2651
2698
|
get: function() {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Y as getKernel, h as isShape3D, t as castShape } from "./shapeTypes-
|
|
1
|
+
import { Y as getKernel, h as isShape3D, t as castShape } from "./shapeTypes-DUJg_N3P.js";
|
|
2
2
|
import { A as ok, R as unwrap, b as err, d as validationError, i as kernelError, l as typeCastError, t as BrepErrorCode, w as isErr } from "./errors-C-cgQA3w.js";
|
|
3
3
|
import { n as HASH_CODE_MAX } from "./constants-B9u763C3.js";
|
|
4
4
|
import { h as vecScale, t as vecAdd } from "./vecOps-D9etjPgV.js";
|
|
5
5
|
import { o as resolvePlane } from "./planeOps-gTOEarV2.js";
|
|
6
|
-
import { F as getVertices, I as getWires, M as getEdges, _ as propagateAllMetadata, g as collectInputFaceHashes, v as propagateMetadataByHash } from "./shapeFns-
|
|
6
|
+
import { F as getVertices, I as getWires, M as getEdges, _ as propagateAllMetadata, g as collectInputFaceHashes, v as propagateMetadataByHash } from "./shapeFns-E3qTx3nN.js";
|
|
7
7
|
import { n as getAtOrThrow, t as firstOrThrow } from "./arrayAccess-xxcB3YNq.js";
|
|
8
|
-
import { r as makeFace } from "./surfaceBuilders-
|
|
8
|
+
import { r as makeFace } from "./surfaceBuilders-DMI0n7Bf.js";
|
|
9
9
|
//#region src/topology/booleanFns.ts
|
|
10
10
|
/**
|
|
11
11
|
* Boolean and compound operations — functional replacements for _3DShape boolean methods.
|
|
@@ -35,12 +35,17 @@ function castToShape3D(shape, errorCode, errorMsg, suggestion, diagnostics) {
|
|
|
35
35
|
}
|
|
36
36
|
return ok(wrapped);
|
|
37
37
|
}
|
|
38
|
-
function fuse(a, b, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
38
|
+
function fuse(a, b, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
39
39
|
if (signal?.aborted) throw signal.reason;
|
|
40
40
|
const checkA = validateShape3D(a, "fuse: first operand");
|
|
41
41
|
if (isErr(checkA)) return checkA;
|
|
42
42
|
const checkB = validateShape3D(b, "fuse: second operand");
|
|
43
43
|
if (isErr(checkB)) return checkB;
|
|
44
|
+
if (!trackEvolution) return castToShape3D(getKernel().fuse(a.wrapped, b.wrapped, {
|
|
45
|
+
optimisation,
|
|
46
|
+
simplify,
|
|
47
|
+
fuzzyValue
|
|
48
|
+
}), "FUSE_NOT_3D", "Fuse did not produce a 3D shape");
|
|
44
49
|
const inputFaceHashes = collectInputFaceHashes([a, b]);
|
|
45
50
|
const { shape: resultShape, evolution, diagnostics } = getKernel().fuseWithHistory(a.wrapped, b.wrapped, inputFaceHashes, HASH_CODE_MAX, {
|
|
46
51
|
optimisation,
|
|
@@ -55,12 +60,17 @@ function fuse(a, b, { optimisation = "none", simplify = false, signal, fuzzyValu
|
|
|
55
60
|
if (fuseResult.ok) propagateAllMetadata(evolution, [a, b], fuseResult.value);
|
|
56
61
|
return fuseResult;
|
|
57
62
|
}
|
|
58
|
-
function cut(base, tool, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
63
|
+
function cut(base, tool, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
59
64
|
if (signal?.aborted) throw signal.reason;
|
|
60
65
|
const checkBase = validateShape3D(base, "cut: base");
|
|
61
66
|
if (isErr(checkBase)) return checkBase;
|
|
62
67
|
const checkTool = validateShape3D(tool, "cut: tool");
|
|
63
68
|
if (isErr(checkTool)) return checkTool;
|
|
69
|
+
if (!trackEvolution) return castToShape3D(getKernel().cut(base.wrapped, tool.wrapped, {
|
|
70
|
+
optimisation,
|
|
71
|
+
simplify,
|
|
72
|
+
fuzzyValue
|
|
73
|
+
}), "CUT_NOT_3D", "Cut did not produce a 3D shape");
|
|
64
74
|
const inputFaceHashes = collectInputFaceHashes([base, tool]);
|
|
65
75
|
const { shape: resultShape, evolution, diagnostics } = getKernel().cutWithHistory(base.wrapped, tool.wrapped, inputFaceHashes, HASH_CODE_MAX, {
|
|
66
76
|
optimisation,
|
|
@@ -75,12 +85,16 @@ function cut(base, tool, { optimisation = "none", simplify = false, signal, fuzz
|
|
|
75
85
|
if (cutResult.ok) propagateAllMetadata(evolution, [base, tool], cutResult.value);
|
|
76
86
|
return cutResult;
|
|
77
87
|
}
|
|
78
|
-
function intersect(a, b, { simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
88
|
+
function intersect(a, b, { simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
79
89
|
if (signal?.aborted) throw signal.reason;
|
|
80
90
|
const checkA = validateShape3D(a, "intersect: first operand");
|
|
81
91
|
if (isErr(checkA)) return checkA;
|
|
82
92
|
const checkB = validateShape3D(b, "intersect: second operand");
|
|
83
93
|
if (isErr(checkB)) return checkB;
|
|
94
|
+
if (!trackEvolution) return castToShape3D(getKernel().intersect(a.wrapped, b.wrapped, {
|
|
95
|
+
simplify,
|
|
96
|
+
fuzzyValue
|
|
97
|
+
}), "INTERSECT_NOT_3D", "Intersect did not produce a 3D shape");
|
|
84
98
|
const inputFaceHashes = collectInputFaceHashes([a, b]);
|
|
85
99
|
const { shape: resultShape, evolution, diagnostics } = getKernel().intersectWithHistory(a.wrapped, b.wrapped, inputFaceHashes, HASH_CODE_MAX, {
|
|
86
100
|
simplify,
|
|
@@ -97,31 +111,33 @@ function intersect(a, b, { simplify = false, signal, fuzzyValue, unsafe: _unsafe
|
|
|
97
111
|
/**
|
|
98
112
|
* Internal helper for pairwise fuse using index ranges to avoid array allocations.
|
|
99
113
|
*/
|
|
100
|
-
function fuseAllPairwise(shapes, start, end, optimisation, simplify,
|
|
114
|
+
function fuseAllPairwise(shapes, start, end, optimisation, simplify, trackEvolution, signal, fuzzyValue) {
|
|
101
115
|
if (signal?.aborted) throw signal.reason;
|
|
102
116
|
const count = end - start;
|
|
103
117
|
if (count === 1) return ok(getAtOrThrow(shapes, start));
|
|
104
118
|
if (count === 2) return fuse(getAtOrThrow(shapes, start), getAtOrThrow(shapes, start + 1), {
|
|
105
119
|
optimisation,
|
|
106
|
-
simplify:
|
|
120
|
+
simplify: false,
|
|
121
|
+
trackEvolution,
|
|
107
122
|
fuzzyValue,
|
|
108
123
|
unsafe: true,
|
|
109
124
|
...signal ? { signal } : {}
|
|
110
125
|
});
|
|
111
126
|
const mid = start + Math.ceil(count / 2);
|
|
112
|
-
const leftResult = fuseAllPairwise(shapes, start, mid, optimisation, simplify,
|
|
127
|
+
const leftResult = fuseAllPairwise(shapes, start, mid, optimisation, simplify, trackEvolution, signal, fuzzyValue);
|
|
113
128
|
if (isErr(leftResult)) return leftResult;
|
|
114
|
-
const rightResult = fuseAllPairwise(shapes, mid, end, optimisation, simplify,
|
|
129
|
+
const rightResult = fuseAllPairwise(shapes, mid, end, optimisation, simplify, trackEvolution, signal, fuzzyValue);
|
|
115
130
|
if (isErr(rightResult)) return rightResult;
|
|
116
131
|
return fuse(leftResult.value, rightResult.value, {
|
|
117
132
|
optimisation,
|
|
118
|
-
simplify
|
|
133
|
+
simplify,
|
|
134
|
+
trackEvolution,
|
|
119
135
|
fuzzyValue,
|
|
120
136
|
unsafe: true,
|
|
121
137
|
...signal ? { signal } : {}
|
|
122
138
|
});
|
|
123
139
|
}
|
|
124
|
-
function fuseAll(shapes, { optimisation = "none", simplify = false, strategy = "native", signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
140
|
+
function fuseAll(shapes, { optimisation = "none", simplify = false, strategy = "native", signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
125
141
|
if (signal?.aborted) throw signal.reason;
|
|
126
142
|
if (shapes.length === 0) return err(validationError("FUSE_ALL_EMPTY", "fuseAll requires at least one shape"));
|
|
127
143
|
if (shapes.length === 1) return ok(firstOrThrow(shapes));
|
|
@@ -137,12 +153,12 @@ function fuseAll(shapes, { optimisation = "none", simplify = false, strategy = "
|
|
|
137
153
|
fuzzyValue,
|
|
138
154
|
...signal ? { signal } : {}
|
|
139
155
|
}), "FUSE_ALL_NOT_3D", "fuseAll did not produce a 3D shape");
|
|
140
|
-
if (fuseAllResult.ok) propagateMetadataByHash(shapes, fuseAllResult.value);
|
|
156
|
+
if (fuseAllResult.ok && trackEvolution) propagateMetadataByHash(shapes, fuseAllResult.value);
|
|
141
157
|
return fuseAllResult;
|
|
142
158
|
}
|
|
143
|
-
return fuseAllPairwise(shapes, 0, shapes.length, optimisation, simplify,
|
|
159
|
+
return fuseAllPairwise(shapes, 0, shapes.length, optimisation, simplify, trackEvolution, signal, fuzzyValue);
|
|
144
160
|
}
|
|
145
|
-
function cutAll(base, tools, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
161
|
+
function cutAll(base, tools, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
146
162
|
if (signal?.aborted) throw signal.reason;
|
|
147
163
|
if (tools.length === 0) return ok(base);
|
|
148
164
|
const checkBase = validateShape3D(base, "cutAll: base");
|
|
@@ -157,7 +173,7 @@ function cutAll(base, tools, { optimisation = "none", simplify = false, signal,
|
|
|
157
173
|
simplify,
|
|
158
174
|
fuzzyValue
|
|
159
175
|
}), "CUT_ALL_NOT_3D", "cutAll did not produce a 3D shape");
|
|
160
|
-
if (cutAllResult.ok) propagateMetadataByHash(allInputs, cutAllResult.value);
|
|
176
|
+
if (cutAllResult.ok && trackEvolution) propagateMetadataByHash(allInputs, cutAllResult.value);
|
|
161
177
|
return cutAllResult;
|
|
162
178
|
}
|
|
163
179
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-B5Vx1Wsw.cjs");
|
|
2
2
|
const require_errors = require("./errors-9zQcQK1H.cjs");
|
|
3
3
|
const require_constants = require("./constants-unWN8k4c.cjs");
|
|
4
4
|
const require_vecOps = require("./vecOps-BXvBYIor.cjs");
|
|
5
5
|
const require_planeOps = require("./planeOps-6Wu7dMDN.cjs");
|
|
6
|
-
const require_shapeFns = require("./shapeFns-
|
|
6
|
+
const require_shapeFns = require("./shapeFns-DZ2c5Nqo.cjs");
|
|
7
7
|
const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
|
|
8
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
8
|
+
const require_surfaceBuilders = require("./surfaceBuilders-CYWopaht.cjs");
|
|
9
9
|
//#region src/topology/booleanFns.ts
|
|
10
10
|
/**
|
|
11
11
|
* Boolean and compound operations — functional replacements for _3DShape boolean methods.
|
|
@@ -35,12 +35,17 @@ function castToShape3D(shape, errorCode, errorMsg, suggestion, diagnostics) {
|
|
|
35
35
|
}
|
|
36
36
|
return require_errors.ok(wrapped);
|
|
37
37
|
}
|
|
38
|
-
function fuse(a, b, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
38
|
+
function fuse(a, b, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
39
39
|
if (signal?.aborted) throw signal.reason;
|
|
40
40
|
const checkA = validateShape3D(a, "fuse: first operand");
|
|
41
41
|
if (require_errors.isErr(checkA)) return checkA;
|
|
42
42
|
const checkB = validateShape3D(b, "fuse: second operand");
|
|
43
43
|
if (require_errors.isErr(checkB)) return checkB;
|
|
44
|
+
if (!trackEvolution) return castToShape3D(require_shapeTypes.getKernel().fuse(a.wrapped, b.wrapped, {
|
|
45
|
+
optimisation,
|
|
46
|
+
simplify,
|
|
47
|
+
fuzzyValue
|
|
48
|
+
}), "FUSE_NOT_3D", "Fuse did not produce a 3D shape");
|
|
44
49
|
const inputFaceHashes = require_shapeFns.collectInputFaceHashes([a, b]);
|
|
45
50
|
const { shape: resultShape, evolution, diagnostics } = require_shapeTypes.getKernel().fuseWithHistory(a.wrapped, b.wrapped, inputFaceHashes, require_constants.HASH_CODE_MAX, {
|
|
46
51
|
optimisation,
|
|
@@ -55,12 +60,17 @@ function fuse(a, b, { optimisation = "none", simplify = false, signal, fuzzyValu
|
|
|
55
60
|
if (fuseResult.ok) require_shapeFns.propagateAllMetadata(evolution, [a, b], fuseResult.value);
|
|
56
61
|
return fuseResult;
|
|
57
62
|
}
|
|
58
|
-
function cut(base, tool, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
63
|
+
function cut(base, tool, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
59
64
|
if (signal?.aborted) throw signal.reason;
|
|
60
65
|
const checkBase = validateShape3D(base, "cut: base");
|
|
61
66
|
if (require_errors.isErr(checkBase)) return checkBase;
|
|
62
67
|
const checkTool = validateShape3D(tool, "cut: tool");
|
|
63
68
|
if (require_errors.isErr(checkTool)) return checkTool;
|
|
69
|
+
if (!trackEvolution) return castToShape3D(require_shapeTypes.getKernel().cut(base.wrapped, tool.wrapped, {
|
|
70
|
+
optimisation,
|
|
71
|
+
simplify,
|
|
72
|
+
fuzzyValue
|
|
73
|
+
}), "CUT_NOT_3D", "Cut did not produce a 3D shape");
|
|
64
74
|
const inputFaceHashes = require_shapeFns.collectInputFaceHashes([base, tool]);
|
|
65
75
|
const { shape: resultShape, evolution, diagnostics } = require_shapeTypes.getKernel().cutWithHistory(base.wrapped, tool.wrapped, inputFaceHashes, require_constants.HASH_CODE_MAX, {
|
|
66
76
|
optimisation,
|
|
@@ -75,12 +85,16 @@ function cut(base, tool, { optimisation = "none", simplify = false, signal, fuzz
|
|
|
75
85
|
if (cutResult.ok) require_shapeFns.propagateAllMetadata(evolution, [base, tool], cutResult.value);
|
|
76
86
|
return cutResult;
|
|
77
87
|
}
|
|
78
|
-
function intersect(a, b, { simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
88
|
+
function intersect(a, b, { simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
79
89
|
if (signal?.aborted) throw signal.reason;
|
|
80
90
|
const checkA = validateShape3D(a, "intersect: first operand");
|
|
81
91
|
if (require_errors.isErr(checkA)) return checkA;
|
|
82
92
|
const checkB = validateShape3D(b, "intersect: second operand");
|
|
83
93
|
if (require_errors.isErr(checkB)) return checkB;
|
|
94
|
+
if (!trackEvolution) return castToShape3D(require_shapeTypes.getKernel().intersect(a.wrapped, b.wrapped, {
|
|
95
|
+
simplify,
|
|
96
|
+
fuzzyValue
|
|
97
|
+
}), "INTERSECT_NOT_3D", "Intersect did not produce a 3D shape");
|
|
84
98
|
const inputFaceHashes = require_shapeFns.collectInputFaceHashes([a, b]);
|
|
85
99
|
const { shape: resultShape, evolution, diagnostics } = require_shapeTypes.getKernel().intersectWithHistory(a.wrapped, b.wrapped, inputFaceHashes, require_constants.HASH_CODE_MAX, {
|
|
86
100
|
simplify,
|
|
@@ -97,31 +111,33 @@ function intersect(a, b, { simplify = false, signal, fuzzyValue, unsafe: _unsafe
|
|
|
97
111
|
/**
|
|
98
112
|
* Internal helper for pairwise fuse using index ranges to avoid array allocations.
|
|
99
113
|
*/
|
|
100
|
-
function fuseAllPairwise(shapes, start, end, optimisation, simplify,
|
|
114
|
+
function fuseAllPairwise(shapes, start, end, optimisation, simplify, trackEvolution, signal, fuzzyValue) {
|
|
101
115
|
if (signal?.aborted) throw signal.reason;
|
|
102
116
|
const count = end - start;
|
|
103
117
|
if (count === 1) return require_errors.ok(require_arrayAccess.getAtOrThrow(shapes, start));
|
|
104
118
|
if (count === 2) return fuse(require_arrayAccess.getAtOrThrow(shapes, start), require_arrayAccess.getAtOrThrow(shapes, start + 1), {
|
|
105
119
|
optimisation,
|
|
106
|
-
simplify:
|
|
120
|
+
simplify: false,
|
|
121
|
+
trackEvolution,
|
|
107
122
|
fuzzyValue,
|
|
108
123
|
unsafe: true,
|
|
109
124
|
...signal ? { signal } : {}
|
|
110
125
|
});
|
|
111
126
|
const mid = start + Math.ceil(count / 2);
|
|
112
|
-
const leftResult = fuseAllPairwise(shapes, start, mid, optimisation, simplify,
|
|
127
|
+
const leftResult = fuseAllPairwise(shapes, start, mid, optimisation, simplify, trackEvolution, signal, fuzzyValue);
|
|
113
128
|
if (require_errors.isErr(leftResult)) return leftResult;
|
|
114
|
-
const rightResult = fuseAllPairwise(shapes, mid, end, optimisation, simplify,
|
|
129
|
+
const rightResult = fuseAllPairwise(shapes, mid, end, optimisation, simplify, trackEvolution, signal, fuzzyValue);
|
|
115
130
|
if (require_errors.isErr(rightResult)) return rightResult;
|
|
116
131
|
return fuse(leftResult.value, rightResult.value, {
|
|
117
132
|
optimisation,
|
|
118
|
-
simplify
|
|
133
|
+
simplify,
|
|
134
|
+
trackEvolution,
|
|
119
135
|
fuzzyValue,
|
|
120
136
|
unsafe: true,
|
|
121
137
|
...signal ? { signal } : {}
|
|
122
138
|
});
|
|
123
139
|
}
|
|
124
|
-
function fuseAll(shapes, { optimisation = "none", simplify = false, strategy = "native", signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
140
|
+
function fuseAll(shapes, { optimisation = "none", simplify = false, strategy = "native", signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
125
141
|
if (signal?.aborted) throw signal.reason;
|
|
126
142
|
if (shapes.length === 0) return require_errors.err(require_errors.validationError("FUSE_ALL_EMPTY", "fuseAll requires at least one shape"));
|
|
127
143
|
if (shapes.length === 1) return require_errors.ok(require_arrayAccess.firstOrThrow(shapes));
|
|
@@ -137,12 +153,12 @@ function fuseAll(shapes, { optimisation = "none", simplify = false, strategy = "
|
|
|
137
153
|
fuzzyValue,
|
|
138
154
|
...signal ? { signal } : {}
|
|
139
155
|
}), "FUSE_ALL_NOT_3D", "fuseAll did not produce a 3D shape");
|
|
140
|
-
if (fuseAllResult.ok) require_shapeFns.propagateMetadataByHash(shapes, fuseAllResult.value);
|
|
156
|
+
if (fuseAllResult.ok && trackEvolution) require_shapeFns.propagateMetadataByHash(shapes, fuseAllResult.value);
|
|
141
157
|
return fuseAllResult;
|
|
142
158
|
}
|
|
143
|
-
return fuseAllPairwise(shapes, 0, shapes.length, optimisation, simplify,
|
|
159
|
+
return fuseAllPairwise(shapes, 0, shapes.length, optimisation, simplify, trackEvolution, signal, fuzzyValue);
|
|
144
160
|
}
|
|
145
|
-
function cutAll(base, tools, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe } = {}) {
|
|
161
|
+
function cutAll(base, tools, { optimisation = "none", simplify = false, signal, fuzzyValue, unsafe: _unsafe, trackEvolution = true } = {}) {
|
|
146
162
|
if (signal?.aborted) throw signal.reason;
|
|
147
163
|
if (tools.length === 0) return require_errors.ok(base);
|
|
148
164
|
const checkBase = validateShape3D(base, "cutAll: base");
|
|
@@ -157,7 +173,7 @@ function cutAll(base, tools, { optimisation = "none", simplify = false, signal,
|
|
|
157
173
|
simplify,
|
|
158
174
|
fuzzyValue
|
|
159
175
|
}), "CUT_ALL_NOT_3D", "cutAll did not produce a 3D shape");
|
|
160
|
-
if (cutAllResult.ok) require_shapeFns.propagateMetadataByHash(allInputs, cutAllResult.value);
|
|
176
|
+
if (cutAllResult.ok && trackEvolution) require_shapeFns.propagateMetadataByHash(allInputs, cutAllResult.value);
|
|
161
177
|
return cutAllResult;
|
|
162
178
|
}
|
|
163
179
|
/**
|
package/dist/brepjs.cjs
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_drawFns = require("./drawFns-
|
|
3
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
2
|
+
const require_drawFns = require("./drawFns-DTqCnYeo.cjs");
|
|
3
|
+
const require_shapeTypes = require("./shapeTypes-B5Vx1Wsw.cjs");
|
|
4
4
|
const require_errors = require("./errors-9zQcQK1H.cjs");
|
|
5
|
-
const require_faceFns = require("./faceFns-
|
|
5
|
+
const require_faceFns = require("./faceFns-D7i9yEts.cjs");
|
|
6
6
|
const require_constants = require("./constants-unWN8k4c.cjs");
|
|
7
7
|
const require_types = require("./types-BjDcsS7l.cjs");
|
|
8
8
|
const require_vecOps = require("./vecOps-BXvBYIor.cjs");
|
|
9
9
|
const require_planeOps = require("./planeOps-6Wu7dMDN.cjs");
|
|
10
|
-
const require_shapeFns = require("./shapeFns-
|
|
11
|
-
const require_curveFns = require("./curveFns
|
|
12
|
-
const require_meshFns = require("./meshFns-
|
|
10
|
+
const require_shapeFns = require("./shapeFns-DZ2c5Nqo.cjs");
|
|
11
|
+
const require_curveFns = require("./curveFns--4Nh1ZtB.cjs");
|
|
12
|
+
const require_meshFns = require("./meshFns-Z5n8gFAS.cjs");
|
|
13
13
|
const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
|
|
14
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
15
|
-
const require_booleanFns = require("./booleanFns-
|
|
16
|
-
const require_primitiveFns = require("./primitiveFns-
|
|
17
|
-
const require_historyFns = require("./historyFns-
|
|
18
|
-
const require_boolean2D = require("./boolean2D-
|
|
19
|
-
const require_helpers = require("./helpers-
|
|
20
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
21
|
-
const require_measureFns = require("./measureFns-
|
|
22
|
-
const require_cornerFinder = require("./cornerFinder-
|
|
23
|
-
const require_extrudeFns = require("./extrudeFns-
|
|
24
|
-
const require_blueprintFns = require("./blueprintFns-
|
|
25
|
-
const require_importFns = require("./importFns-
|
|
26
|
-
const require_shapeRefFns = require("./shapeRefFns-
|
|
14
|
+
const require_surfaceBuilders = require("./surfaceBuilders-CYWopaht.cjs");
|
|
15
|
+
const require_booleanFns = require("./booleanFns-Dmvv9VVT.cjs");
|
|
16
|
+
const require_primitiveFns = require("./primitiveFns-w2otksRk.cjs");
|
|
17
|
+
const require_historyFns = require("./historyFns-BO9c4AgQ.cjs");
|
|
18
|
+
const require_boolean2D = require("./boolean2D-DE2axG6W.cjs");
|
|
19
|
+
const require_helpers = require("./helpers-BK3DVd3M.cjs");
|
|
20
|
+
const require_solidBuilders = require("./solidBuilders-Bvq6br4f.cjs");
|
|
21
|
+
const require_measureFns = require("./measureFns-rVSankqO.cjs");
|
|
22
|
+
const require_cornerFinder = require("./cornerFinder-Du1Q1hgu.cjs");
|
|
23
|
+
const require_extrudeFns = require("./extrudeFns-CIUq5ZQW.cjs");
|
|
24
|
+
const require_blueprintFns = require("./blueprintFns-CvtakKGf.cjs");
|
|
25
|
+
const require_importFns = require("./importFns-Ca7DsY-k.cjs");
|
|
26
|
+
const require_shapeRefFns = require("./shapeRefFns-Dl7v17MC.cjs");
|
|
27
27
|
const require_workerHandler = require("./workerHandler-C-7OUJsa.cjs");
|
|
28
28
|
//#region src/topology/shapeBooleans.ts
|
|
29
29
|
var BOPAlgo_GlueShift = 1;
|
|
@@ -2933,6 +2933,7 @@ exports.exportSTEPConfigured = require_importFns.exportSTEPConfigured;
|
|
|
2933
2933
|
exports.exportSTL = require_meshFns.exportSTL;
|
|
2934
2934
|
exports.exportThreeMF = require_importFns.exportThreeMF;
|
|
2935
2935
|
exports.extrude = extrude;
|
|
2936
|
+
exports.extrudeAll = require_extrudeFns.extrudeAll;
|
|
2936
2937
|
exports.face = require_primitiveFns.face;
|
|
2937
2938
|
exports.faceCenter = require_faceFns.faceCenter;
|
|
2938
2939
|
exports.faceFinder = require_helpers.faceFinder;
|
|
@@ -2980,6 +2981,7 @@ exports.getNurbsCurveData = require_primitiveFns.getNurbsCurveData;
|
|
|
2980
2981
|
exports.getNurbsSurfaceData = require_primitiveFns.getNurbsSurfaceData;
|
|
2981
2982
|
exports.getOrientation = require_curveFns.getOrientation;
|
|
2982
2983
|
exports.getOrientation2D = require_blueprintFns.getOrientation2D;
|
|
2984
|
+
exports.getPerformanceStats = require_shapeTypes.getPerformanceStats;
|
|
2983
2985
|
exports.getShapeColor = require_shapeFns.getShapeColor;
|
|
2984
2986
|
exports.getShapeKind = require_shapeTypes.getShapeKind;
|
|
2985
2987
|
exports.getSingleFace = require_helpers.getSingleFace;
|
|
@@ -3068,6 +3070,7 @@ exports.line = require_primitiveFns.line;
|
|
|
3068
3070
|
exports.linearPattern = require_historyFns.linearPattern;
|
|
3069
3071
|
exports.loadFont = require_drawFns.loadFont;
|
|
3070
3072
|
exports.loft = loft;
|
|
3073
|
+
exports.loftAll = require_boolean2D.loftAll;
|
|
3071
3074
|
exports.makeBaseBox = require_drawFns.makeBaseBox;
|
|
3072
3075
|
exports.makePlane = require_planeOps.makePlane;
|
|
3073
3076
|
exports.makeProjectedEdges = require_drawFns.makeProjectedEdges;
|
|
@@ -3163,6 +3166,7 @@ exports.removeHolesFromFace = require_faceFns.removeHolesFromFace;
|
|
|
3163
3166
|
exports.replayFrom = require_historyFns.replayFrom;
|
|
3164
3167
|
exports.replayHistory = require_historyFns.replayHistory;
|
|
3165
3168
|
exports.resetDisposalStats = require_shapeTypes.resetDisposalStats;
|
|
3169
|
+
exports.resetPerformanceStats = require_shapeTypes.resetPerformanceStats;
|
|
3166
3170
|
exports.resize = require_shapeFns.resize;
|
|
3167
3171
|
exports.resolve = resolve;
|
|
3168
3172
|
exports.resolve3D = resolve3D;
|