brepjs 18.118.12 → 18.118.14
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 +6 -6
- package/dist/2d.js +6 -6
- package/dist/{adjacencyFns-BaiFeuKQ.cjs → adjacencyFns-BdxIbZtR.cjs} +2 -2
- package/dist/{adjacencyFns-CRqm5AS0.js → adjacencyFns-qxeJWyj-.js} +2 -2
- package/dist/{blueprint-DI5CF5j9.cjs → blueprint-CN536u9V.cjs} +13 -8
- package/dist/{blueprint-xYq-5XuV.js → blueprint-dqI319c7.js} +13 -8
- package/dist/{blueprintFns-rkE3w33A.cjs → blueprintFns-CF-6WzuR.cjs} +2 -2
- package/dist/{blueprintFns-BIx82gku.js → blueprintFns-Ci1QVESM.js} +2 -2
- package/dist/{blueprintSketcher-CW1MTtqe.cjs → blueprintSketcher-CGnohIOe.cjs} +3 -3
- package/dist/{blueprintSketcher-DuNukkBb.js → blueprintSketcher-CY9DgQqk.js} +3 -3
- package/dist/{boolean2D-D7WPkRuG.js → boolean2D-CaAwVwCR.js} +4 -4
- package/dist/{boolean2D-CstWuqo8.cjs → boolean2D-DnBT9gQ5.cjs} +4 -4
- package/dist/brepjs.cjs +135 -82
- package/dist/brepjs.js +135 -82
- package/dist/{cameraFns-CaG1cMFg.cjs → cameraFns-Ckw5prda.cjs} +30 -14
- package/dist/{cameraFns-B1P5WTCI.js → cameraFns-CythF7Ob.js} +31 -15
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/{cornerFinder-BZqos_kQ.js → cornerFinder-BEe90gzY.js} +1 -1
- package/dist/{cornerFinder-Ivo7aISl.cjs → cornerFinder-Bss_mZV9.cjs} +1 -1
- package/dist/{curveFns-DDLgrGyy.cjs → curveFns-C2zZ7Xuq.cjs} +1 -1
- package/dist/{curveFns-C5qarKS5.js → curveFns-CH6gaGTf.js} +1 -1
- package/dist/{drawFns-BX8bt_LP.cjs → drawFns-CMyY6ED-.cjs} +58 -38
- package/dist/{drawFns-BU7wz6Sh.js → drawFns-hOQecCHR.js} +57 -37
- package/dist/{faceFns-RZFix5VU.cjs → faceFns-BbmIuuFt.cjs} +2 -2
- package/dist/{faceFns-Bkno2HCU.js → faceFns-ClvSac1T.js} +2 -2
- package/dist/{healingFns-DbunvjeU.cjs → healingFns-BZ-TOacm.cjs} +5 -5
- package/dist/{healingFns-D3Yl3-zg.js → healingFns-BhB_G0L0.js} +5 -5
- package/dist/{helpers-DVMbGdiy.cjs → helpers-D0be4TzF.cjs} +6 -6
- package/dist/{helpers-XUoXaD5D.js → helpers-zVYq0h_A.js} +6 -6
- package/dist/{importFns-EwV81J0E.cjs → importFns-CvlUuJ59.cjs} +2 -2
- package/dist/{importFns-C2z-lgvq.js → importFns-TbwuxynG.js} +2 -2
- package/dist/io.cjs +2 -2
- package/dist/io.js +2 -2
- package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
- package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
- package/dist/{loftFns-BWaSzS-2.cjs → loftFns-BTWRncKQ.cjs} +45 -26
- package/dist/{loftFns-DpQTJQgv.js → loftFns-CUg8_4_X.js} +45 -26
- package/dist/{measureFns-D7FLzPAB.js → measureFns-Bbgcgo9U.js} +3 -3
- package/dist/{measureFns-z1j5oyK6.cjs → measureFns-cK6MSs6B.cjs} +3 -3
- package/dist/measurement.cjs +1 -1
- package/dist/measurement.js +1 -1
- package/dist/{meshFns-DqHpJu5I.js → meshFns-CKXYSlFr.js} +3 -3
- package/dist/{meshFns-CKOXvMDj.cjs → meshFns-Df26UzQ9.cjs} +3 -3
- package/dist/{occtWasmAdapter-nqo3wbVj.js → occtWasmAdapter-BgmRCYeD.js} +29 -11
- package/dist/{occtWasmAdapter-8wX1Z2-I.cjs → occtWasmAdapter-CWX5KCl8.cjs} +29 -11
- package/dist/operations.cjs +2 -2
- package/dist/operations.js +2 -2
- package/dist/{primitiveFns-uXoHZuh9.js → primitiveFns-1otQpjcN.js} +50 -19
- package/dist/{primitiveFns-D0k3Absh.cjs → primitiveFns-DZkzMLUq.cjs} +50 -19
- package/dist/projection.cjs +1 -1
- package/dist/projection.js +1 -1
- package/dist/query.cjs +2 -2
- package/dist/query.js +2 -2
- package/dist/{refResolveFns-C1DZyVnQ.cjs → refResolveFns-BLM5XlZR.cjs} +6 -6
- package/dist/{refResolveFns-CEs1EWWI.js → refResolveFns-_niAxNu8.js} +6 -6
- package/dist/{shapeFns-CpopWo8-.js → shapeFns-Gzaax25v.js} +2 -2
- package/dist/{shapeFns-CQVLaU7u.cjs → shapeFns-m5OBBpM4.cjs} +2 -2
- package/dist/shapeRef.cjs +1 -1
- package/dist/shapeRef.js +1 -1
- package/dist/{shapeTypes-BtEERwGK.js → shapeTypes-BalkiKtK.js} +4 -2
- package/dist/{shapeTypes-BsJXkU8g.cjs → shapeTypes-C4gRoPYX.cjs} +4 -2
- package/dist/sketching.cjs +3 -3
- package/dist/sketching.js +3 -3
- package/dist/{solidBuilders-t7TnJXqT.cjs → solidBuilders-CHzmSo67.cjs} +8 -8
- package/dist/{solidBuilders-BRva7VpY.js → solidBuilders-CgEPRock.js} +8 -8
- package/dist/{surfaceBuilders-On9uTEBH.cjs → surfaceBuilders-DWHDogVL.cjs} +13 -4
- package/dist/{surfaceBuilders-Co91_Kh7.js → surfaceBuilders-HAF4Xtow.js} +13 -4
- package/dist/text.cjs +2 -2
- package/dist/text.js +2 -2
- package/dist/{textBlueprints-BoFKAYI9.cjs → textBlueprints-D5mNvqKF.cjs} +7 -7
- package/dist/{textBlueprints-DdCJocI3.js → textBlueprints-DBjpb8G_.js} +7 -7
- package/dist/{textMetrics-DYzW2as_.js → textMetrics-C7pEipGp.js} +1 -1
- package/dist/{textMetrics-CS_JMGf1.cjs → textMetrics-CgyvE6u0.cjs} +1 -1
- package/dist/{threadFns-DwKNCMFx.cjs → threadFns-DDcOeRGs.cjs} +32 -18
- package/dist/{threadFns-BKQNkgT6.js → threadFns-Dsn9lSDD.js} +32 -18
- package/dist/topology.cjs +9 -9
- package/dist/topology.js +9 -9
- package/dist/{topologyQueryFns-5vIsyp4r.cjs → topologyQueryFns-BzIV1jHw.cjs} +1 -1
- package/dist/{topologyQueryFns-BU41SCtU.js → topologyQueryFns-vDjZw1k2.js} +1 -1
- package/package.json +1 -1
package/dist/2d.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
2
|
+
const require_shapeTypes = require("./shapeTypes-C4gRoPYX.cjs");
|
|
3
3
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
4
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
5
|
-
const require_blueprintSketcher = require("./blueprintSketcher-
|
|
6
|
-
const require_blueprint = require("./blueprint-
|
|
7
|
-
const require_boolean2D = require("./boolean2D-
|
|
8
|
-
const require_blueprintFns = require("./blueprintFns-
|
|
4
|
+
const require_topologyQueryFns = require("./topologyQueryFns-BzIV1jHw.cjs");
|
|
5
|
+
const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
|
|
6
|
+
const require_blueprint = require("./blueprint-CN536u9V.cjs");
|
|
7
|
+
const require_boolean2D = require("./boolean2D-DnBT9gQ5.cjs");
|
|
8
|
+
const require_blueprintFns = require("./blueprintFns-CF-6WzuR.cjs");
|
|
9
9
|
//#region src/core/curve2dHandle.ts
|
|
10
10
|
/**
|
|
11
11
|
* Wrap a raw kernel 2D curve handle with brand + disposal tracking.
|
package/dist/2d.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { G as createKernelHandle, rt as getKernel2D, s as createEdge } from "./shapeTypes-
|
|
1
|
+
import { G as createKernelHandle, rt as getKernel2D, s as createEdge } from "./shapeTypes-BalkiKtK.js";
|
|
2
2
|
import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
|
|
3
|
-
import { w as kernelCallRaw } from "./topologyQueryFns-
|
|
4
|
-
import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-
|
|
5
|
-
import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-
|
|
6
|
-
import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-
|
|
7
|
-
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 { w as kernelCallRaw } from "./topologyQueryFns-vDjZw1k2.js";
|
|
4
|
+
import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-CY9DgQqk.js";
|
|
5
|
+
import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-dqI319c7.js";
|
|
6
|
+
import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CaAwVwCR.js";
|
|
7
|
+
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-Ci1QVESM.js";
|
|
8
8
|
//#region src/core/curve2dHandle.ts
|
|
9
9
|
/**
|
|
10
10
|
* Wrap a raw kernel 2D curve handle with brand + disposal tracking.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
2
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-C4gRoPYX.cjs");
|
|
2
|
+
const require_topologyQueryFns = require("./topologyQueryFns-BzIV1jHw.cjs");
|
|
3
3
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
4
4
|
//#region src/topology/adjacencyFns.ts
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as castShapeWithKnownType, n as castResultShapeWithKnownType, nt as getKernel } from "./shapeTypes-
|
|
2
|
-
import { c as getFaces, f as getVertices, l as getOrCreateCache, s as getEdges } from "./topologyQueryFns-
|
|
1
|
+
import { a as castShapeWithKnownType, n as castResultShapeWithKnownType, nt as getKernel } from "./shapeTypes-BalkiKtK.js";
|
|
2
|
+
import { c as getFaces, f as getVertices, l as getOrCreateCache, s as getEdges } from "./topologyQueryFns-vDjZw1k2.js";
|
|
3
3
|
import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
|
|
4
4
|
//#region src/topology/adjacencyFns.ts
|
|
5
5
|
/**
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-C4gRoPYX.cjs");
|
|
2
2
|
const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
|
|
3
3
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
4
4
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
5
5
|
const require_types = require("./types-KjA8tY4Y.cjs");
|
|
6
6
|
const require_planeOps = require("./planeOps-BA4HfgQu.cjs");
|
|
7
|
-
const require_faceFns = require("./faceFns-
|
|
8
|
-
const require_curveFns = require("./curveFns-
|
|
7
|
+
const require_faceFns = require("./faceFns-BbmIuuFt.cjs");
|
|
8
|
+
const require_curveFns = require("./curveFns-C2zZ7Xuq.cjs");
|
|
9
9
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
10
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
11
|
-
const require_helpers = require("./helpers-
|
|
10
|
+
const require_surfaceBuilders = require("./surfaceBuilders-DWHDogVL.cjs");
|
|
11
|
+
const require_helpers = require("./helpers-D0be4TzF.cjs");
|
|
12
12
|
//#region src/2d/lib/definitions.ts
|
|
13
13
|
/** Type guard that checks whether a value is a `Point2D`. */
|
|
14
14
|
function isPoint2D(point) {
|
|
@@ -853,8 +853,11 @@ var Blueprint = class Blueprint {
|
|
|
853
853
|
*/
|
|
854
854
|
sketchOnPlane(inputPlane, origin) {
|
|
855
855
|
const plane = inputPlane && typeof inputPlane !== "string" ? { ...inputPlane } : require_planeOps.makePlane(inputPlane, origin);
|
|
856
|
+
const edges = curvesAsEdgesOnPlane(this.curves, plane);
|
|
857
|
+
const wire = assembleWire(edges);
|
|
858
|
+
for (const e of edges) e[Symbol.dispose]();
|
|
856
859
|
return {
|
|
857
|
-
wire
|
|
860
|
+
wire,
|
|
858
861
|
defaultOrigin: plane.origin,
|
|
859
862
|
defaultDirection: plane.zDir
|
|
860
863
|
};
|
|
@@ -868,10 +871,12 @@ var Blueprint = class Blueprint {
|
|
|
868
871
|
*/
|
|
869
872
|
sketchOnFace(face, scaleMode) {
|
|
870
873
|
const kernel = require_shapeTypes.getKernel();
|
|
871
|
-
const
|
|
874
|
+
const edges = require_errors.unwrap(curvesAsEdgesOnFace(this.curves, face, scaleMode));
|
|
875
|
+
const wire = assembleWire(edges);
|
|
876
|
+
for (const e of edges) e[Symbol.dispose]();
|
|
872
877
|
kernel.buildCurves3d(wire.wrapped);
|
|
873
878
|
const fixedWire = kernel.fixWireOnFace(wire.wrapped, face.wrapped, 1e-9);
|
|
874
|
-
wire.
|
|
879
|
+
wire[Symbol.dispose]();
|
|
875
880
|
return {
|
|
876
881
|
wire: require_shapeTypes.createWire(fixedWire),
|
|
877
882
|
baseFace: face
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { J as registerForCleanup, X as unregisterFromCleanup, f as createWire, nt as getKernel, rt as getKernel2D, s as createEdge } from "./shapeTypes-
|
|
1
|
+
import { J as registerForCleanup, X as unregisterFromCleanup, f as createWire, nt as getKernel, rt as getKernel2D, s as createEdge } from "./shapeTypes-BalkiKtK.js";
|
|
2
2
|
import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
|
|
3
3
|
import { A as ok, R as unwrap, b as err, d as validationError, h as bug, n as computationError } from "./errors-DNWJsfVU.js";
|
|
4
4
|
import { r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
|
|
5
5
|
import { r as toVec3 } from "./types-D24Y27N0.js";
|
|
6
6
|
import { r as makePlane } from "./planeOps-DSjjtrjg.js";
|
|
7
|
-
import { _ as cast, h as uvCoordinates, i as faceGeomType, m as uvBounds, r as faceCenter } from "./faceFns-
|
|
8
|
-
import { p as getOrientation } from "./curveFns-
|
|
7
|
+
import { _ as cast, h as uvCoordinates, i as faceGeomType, m as uvBounds, r as faceCenter } from "./faceFns-ClvSac1T.js";
|
|
8
|
+
import { p as getOrientation } from "./curveFns-CH6gaGTf.js";
|
|
9
9
|
import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
10
|
-
import { r as makeFace } from "./surfaceBuilders-
|
|
11
|
-
import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-
|
|
10
|
+
import { r as makeFace } from "./surfaceBuilders-HAF4Xtow.js";
|
|
11
|
+
import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-zVYq0h_A.js";
|
|
12
12
|
//#region src/2d/lib/definitions.ts
|
|
13
13
|
/** Type guard that checks whether a value is a `Point2D`. */
|
|
14
14
|
function isPoint2D(point) {
|
|
@@ -852,8 +852,11 @@ var Blueprint = class Blueprint {
|
|
|
852
852
|
*/
|
|
853
853
|
sketchOnPlane(inputPlane, origin) {
|
|
854
854
|
const plane = inputPlane && typeof inputPlane !== "string" ? { ...inputPlane } : makePlane(inputPlane, origin);
|
|
855
|
+
const edges = curvesAsEdgesOnPlane(this.curves, plane);
|
|
856
|
+
const wire = assembleWire(edges);
|
|
857
|
+
for (const e of edges) e[Symbol.dispose]();
|
|
855
858
|
return {
|
|
856
|
-
wire
|
|
859
|
+
wire,
|
|
857
860
|
defaultOrigin: plane.origin,
|
|
858
861
|
defaultDirection: plane.zDir
|
|
859
862
|
};
|
|
@@ -867,10 +870,12 @@ var Blueprint = class Blueprint {
|
|
|
867
870
|
*/
|
|
868
871
|
sketchOnFace(face, scaleMode) {
|
|
869
872
|
const kernel = getKernel();
|
|
870
|
-
const
|
|
873
|
+
const edges = unwrap(curvesAsEdgesOnFace(this.curves, face, scaleMode));
|
|
874
|
+
const wire = assembleWire(edges);
|
|
875
|
+
for (const e of edges) e[Symbol.dispose]();
|
|
871
876
|
kernel.buildCurves3d(wire.wrapped);
|
|
872
877
|
const fixedWire = kernel.fixWireOnFace(wire.wrapped, face.wrapped, 1e-9);
|
|
873
|
-
wire.
|
|
878
|
+
wire[Symbol.dispose]();
|
|
874
879
|
return {
|
|
875
880
|
wire: createWire(fixedWire),
|
|
876
881
|
baseFace: face
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
2
|
-
const require_blueprintSketcher = require("./blueprintSketcher-
|
|
3
|
-
const require_blueprint = require("./blueprint-
|
|
2
|
+
const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
|
|
3
|
+
const require_blueprint = require("./blueprint-CN536u9V.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-DNWJsfVU.js";
|
|
2
|
-
import { i as CompoundBlueprint } from "./blueprintSketcher-
|
|
3
|
-
import { t as Blueprint } from "./blueprint-
|
|
2
|
+
import { i as CompoundBlueprint } from "./blueprintSketcher-CY9DgQqk.js";
|
|
3
|
+
import { t as Blueprint } from "./blueprint-dqI319c7.js";
|
|
4
4
|
//#region src/2d/lib/curve2dFns.ts
|
|
5
5
|
/**
|
|
6
6
|
* Return a reversed copy of the curve (non-mutating).
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-C4gRoPYX.cjs");
|
|
2
2
|
const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
|
|
3
3
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
4
4
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
5
5
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
6
|
-
const require_helpers = require("./helpers-
|
|
7
|
-
const require_blueprint = require("./blueprint-
|
|
6
|
+
const require_helpers = require("./helpers-D0be4TzF.cjs");
|
|
7
|
+
const require_blueprint = require("./blueprint-CN536u9V.cjs");
|
|
8
8
|
//#region node_modules/flatqueue/index.js
|
|
9
9
|
/**
|
|
10
10
|
* @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { nt as getKernel, rt as getKernel2D } from "./shapeTypes-
|
|
1
|
+
import { nt as getKernel, rt as getKernel2D } from "./shapeTypes-BalkiKtK.js";
|
|
2
2
|
import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
|
|
3
3
|
import { A as ok, R as unwrap, T as isOk, b as err, h as bug, n as computationError, s as safeIndex } from "./errors-DNWJsfVU.js";
|
|
4
4
|
import { r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
|
|
5
5
|
import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
6
|
-
import { _ as samePoint, 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, v as scalarMultiply2d } from "./helpers-
|
|
7
|
-
import { _ as Curve2D, 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-
|
|
6
|
+
import { _ as samePoint, 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, v as scalarMultiply2d } from "./helpers-zVYq0h_A.js";
|
|
7
|
+
import { _ as Curve2D, 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-dqI319c7.js";
|
|
8
8
|
//#region node_modules/flatqueue/index.js
|
|
9
9
|
/**
|
|
10
10
|
* @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
|
|
2
2
|
import { R as unwrap, h as bug, s as safeIndex } from "./errors-DNWJsfVU.js";
|
|
3
3
|
import { r as lastOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
4
|
-
import { v as zip } from "./surfaceBuilders-
|
|
5
|
-
import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-
|
|
6
|
-
import { _ as samePoint$1, b as subtract2d, f as crossProduct2d, s as PRECISION_INTERSECTION } from "./helpers-
|
|
7
|
-
import { b as removeDuplicatePoints, f as make2dSegmentCurve, t as Blueprint } from "./blueprint-
|
|
4
|
+
import { v as zip } from "./surfaceBuilders-HAF4Xtow.js";
|
|
5
|
+
import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-CY9DgQqk.js";
|
|
6
|
+
import { _ as samePoint$1, b as subtract2d, f as crossProduct2d, s as PRECISION_INTERSECTION } from "./helpers-zVYq0h_A.js";
|
|
7
|
+
import { b as removeDuplicatePoints, f as make2dSegmentCurve, t as Blueprint } from "./blueprint-dqI319c7.js";
|
|
8
8
|
//#region src/2d/blueprints/cannedBlueprints.ts
|
|
9
9
|
/**
|
|
10
10
|
* Create a regular polygon blueprint inscribed in a circle of the given radius.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
|
|
2
2
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
3
3
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
4
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
5
|
-
const require_blueprintSketcher = require("./blueprintSketcher-
|
|
6
|
-
const require_helpers = require("./helpers-
|
|
7
|
-
const require_blueprint = require("./blueprint-
|
|
4
|
+
const require_surfaceBuilders = require("./surfaceBuilders-DWHDogVL.cjs");
|
|
5
|
+
const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
|
|
6
|
+
const require_helpers = require("./helpers-D0be4TzF.cjs");
|
|
7
|
+
const require_blueprint = require("./blueprint-CN536u9V.cjs");
|
|
8
8
|
//#region src/2d/blueprints/cannedBlueprints.ts
|
|
9
9
|
/**
|
|
10
10
|
* Create a regular polygon blueprint inscribed in a circle of the given radius.
|
package/dist/brepjs.cjs
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_textBlueprints = require("./textBlueprints-
|
|
3
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
4
|
-
const require_occtWasmAdapter = require("./occtWasmAdapter-
|
|
2
|
+
const require_textBlueprints = require("./textBlueprints-D5mNvqKF.cjs");
|
|
3
|
+
const require_shapeTypes = require("./shapeTypes-C4gRoPYX.cjs");
|
|
4
|
+
const require_occtWasmAdapter = require("./occtWasmAdapter-CWX5KCl8.cjs");
|
|
5
5
|
const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
|
|
6
6
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
7
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
7
|
+
const require_topologyQueryFns = require("./topologyQueryFns-BzIV1jHw.cjs");
|
|
8
8
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
9
9
|
const require_types = require("./types-KjA8tY4Y.cjs");
|
|
10
10
|
const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
|
|
11
11
|
const require_planeOps = require("./planeOps-BA4HfgQu.cjs");
|
|
12
|
-
const require_faceFns = require("./faceFns-
|
|
13
|
-
const require_shapeFns = require("./shapeFns-
|
|
14
|
-
const require_curveFns = require("./curveFns-
|
|
15
|
-
const require_meshFns = require("./meshFns-
|
|
12
|
+
const require_faceFns = require("./faceFns-BbmIuuFt.cjs");
|
|
13
|
+
const require_shapeFns = require("./shapeFns-m5OBBpM4.cjs");
|
|
14
|
+
const require_curveFns = require("./curveFns-C2zZ7Xuq.cjs");
|
|
15
|
+
const require_meshFns = require("./meshFns-Df26UzQ9.cjs");
|
|
16
16
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
17
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
18
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
19
|
-
const require_healingFns = require("./healingFns-
|
|
20
|
-
const require_threadFns = require("./threadFns-
|
|
21
|
-
const require_blueprintSketcher = require("./blueprintSketcher-
|
|
22
|
-
const require_helpers = require("./helpers-
|
|
23
|
-
const require_drawFns = require("./drawFns-
|
|
24
|
-
const require_measureFns = require("./measureFns-
|
|
25
|
-
const require_cornerFinder = require("./cornerFinder-
|
|
26
|
-
const require_boolean2D = require("./boolean2D-
|
|
27
|
-
const require_blueprintFns = require("./blueprintFns-
|
|
28
|
-
const require_importFns = require("./importFns-
|
|
29
|
-
const require_loftFns = require("./loftFns-
|
|
30
|
-
const require_cameraFns = require("./cameraFns-
|
|
31
|
-
const require_textMetrics = require("./textMetrics-
|
|
32
|
-
const require_adjacencyFns = require("./adjacencyFns-
|
|
33
|
-
const require_refResolveFns = require("./refResolveFns-
|
|
17
|
+
const require_surfaceBuilders = require("./surfaceBuilders-DWHDogVL.cjs");
|
|
18
|
+
const require_solidBuilders = require("./solidBuilders-CHzmSo67.cjs");
|
|
19
|
+
const require_healingFns = require("./healingFns-BZ-TOacm.cjs");
|
|
20
|
+
const require_threadFns = require("./threadFns-DDcOeRGs.cjs");
|
|
21
|
+
const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
|
|
22
|
+
const require_helpers = require("./helpers-D0be4TzF.cjs");
|
|
23
|
+
const require_drawFns = require("./drawFns-CMyY6ED-.cjs");
|
|
24
|
+
const require_measureFns = require("./measureFns-cK6MSs6B.cjs");
|
|
25
|
+
const require_cornerFinder = require("./cornerFinder-Bss_mZV9.cjs");
|
|
26
|
+
const require_boolean2D = require("./boolean2D-DnBT9gQ5.cjs");
|
|
27
|
+
const require_blueprintFns = require("./blueprintFns-CF-6WzuR.cjs");
|
|
28
|
+
const require_importFns = require("./importFns-CvlUuJ59.cjs");
|
|
29
|
+
const require_loftFns = require("./loftFns-BTWRncKQ.cjs");
|
|
30
|
+
const require_cameraFns = require("./cameraFns-Ckw5prda.cjs");
|
|
31
|
+
const require_textMetrics = require("./textMetrics-CgyvE6u0.cjs");
|
|
32
|
+
const require_adjacencyFns = require("./adjacencyFns-BdxIbZtR.cjs");
|
|
33
|
+
const require_refResolveFns = require("./refResolveFns-BLM5XlZR.cjs");
|
|
34
34
|
const require_workerPool = require("./workerPool-D30NsiIW.cjs");
|
|
35
|
-
const require_primitiveFns = require("./primitiveFns-
|
|
35
|
+
const require_primitiveFns = require("./primitiveFns-DZkzMLUq.cjs");
|
|
36
36
|
//#region src/topology/shapeBooleans.ts
|
|
37
37
|
var BOPAlgo_GlueShift = 1;
|
|
38
38
|
var BOPAlgo_GlueFull = 2;
|
|
@@ -241,8 +241,8 @@ function repairMesh(mesh, opts, id) {
|
|
|
241
241
|
if (require_errors.isErr(engine)) return engine;
|
|
242
242
|
try {
|
|
243
243
|
try {
|
|
244
|
-
var _usingCtx$
|
|
245
|
-
const repaired = _usingCtx$
|
|
244
|
+
var _usingCtx$8 = require_shapeTypes._usingCtx();
|
|
245
|
+
const repaired = _usingCtx$8.u(engine.value.repair_mesh(mesh.vertices, mesh.triangles, resolution, padding));
|
|
246
246
|
const vertexCount = repaired.positions.length / 3;
|
|
247
247
|
return require_errors.ok({
|
|
248
248
|
vertices: repaired.positions,
|
|
@@ -256,9 +256,9 @@ function repairMesh(mesh, opts, id) {
|
|
|
256
256
|
}]
|
|
257
257
|
});
|
|
258
258
|
} catch (_) {
|
|
259
|
-
_usingCtx$
|
|
259
|
+
_usingCtx$8.e = _;
|
|
260
260
|
} finally {
|
|
261
|
-
_usingCtx$
|
|
261
|
+
_usingCtx$8.d();
|
|
262
262
|
}
|
|
263
263
|
} catch (cause) {
|
|
264
264
|
return require_errors.err(require_errors.computationError("VOXEL_REPAIR_FAILED", cause instanceof Error ? cause.message : "voxel repair failed (grid too large?).", cause));
|
|
@@ -337,12 +337,12 @@ function offsetMesh(mesh, distance, opts, id) {
|
|
|
337
337
|
if (require_errors.isErr(engine)) return engine;
|
|
338
338
|
try {
|
|
339
339
|
try {
|
|
340
|
-
var _usingCtx$
|
|
341
|
-
return meshFromResult(_usingCtx$
|
|
340
|
+
var _usingCtx$7 = require_shapeTypes._usingCtx();
|
|
341
|
+
return meshFromResult(_usingCtx$7.u(engine.value.offset_mesh(mesh.vertices, mesh.triangles, distance, params.value.resolution, params.value.padding)));
|
|
342
342
|
} catch (_) {
|
|
343
|
-
_usingCtx$
|
|
343
|
+
_usingCtx$7.e = _;
|
|
344
344
|
} finally {
|
|
345
|
-
_usingCtx$
|
|
345
|
+
_usingCtx$7.d();
|
|
346
346
|
}
|
|
347
347
|
} catch (cause) {
|
|
348
348
|
return require_errors.err(require_errors.computationError("VOXEL_OFFSET_FAILED", cause instanceof Error ? cause.message : "voxel offset failed (grid too large?).", cause));
|
|
@@ -467,9 +467,9 @@ function resolveGridParams$1(opts) {
|
|
|
467
467
|
*/
|
|
468
468
|
function meshFromField(field) {
|
|
469
469
|
try {
|
|
470
|
-
var _usingCtx$
|
|
470
|
+
var _usingCtx$6 = require_shapeTypes._usingCtx();
|
|
471
471
|
const rawResult = field.contour();
|
|
472
|
-
const { positions, normals, indices } = _usingCtx$
|
|
472
|
+
const { positions, normals, indices } = _usingCtx$6.u({
|
|
473
473
|
value: rawResult,
|
|
474
474
|
[Symbol.dispose]() {
|
|
475
475
|
rawResult.free();
|
|
@@ -489,9 +489,9 @@ function meshFromField(field) {
|
|
|
489
489
|
}]
|
|
490
490
|
});
|
|
491
491
|
} catch (_) {
|
|
492
|
-
_usingCtx$
|
|
492
|
+
_usingCtx$6.e = _;
|
|
493
493
|
} finally {
|
|
494
|
-
_usingCtx$
|
|
494
|
+
_usingCtx$6.d();
|
|
495
495
|
}
|
|
496
496
|
}
|
|
497
497
|
function fieldDeletable(raw) {
|
|
@@ -1056,12 +1056,12 @@ function latticeInfill(mesh, opts, id) {
|
|
|
1056
1056
|
const { tag, period, thickness, resolution, padding } = resolved.value;
|
|
1057
1057
|
try {
|
|
1058
1058
|
try {
|
|
1059
|
-
var _usingCtx$
|
|
1060
|
-
return require_errors.ok(toMesh(_usingCtx$
|
|
1059
|
+
var _usingCtx$5 = require_shapeTypes._usingCtx();
|
|
1060
|
+
return require_errors.ok(toMesh(_usingCtx$5.u(engine.value.lattice_infill(mesh.vertices, mesh.triangles, resolution, padding, tag, period, thickness))));
|
|
1061
1061
|
} catch (_) {
|
|
1062
|
-
_usingCtx$
|
|
1062
|
+
_usingCtx$5.e = _;
|
|
1063
1063
|
} finally {
|
|
1064
|
-
_usingCtx$
|
|
1064
|
+
_usingCtx$5.d();
|
|
1065
1065
|
}
|
|
1066
1066
|
} catch (cause) {
|
|
1067
1067
|
return require_errors.err(require_errors.computationError("LATTICE_INFILL_FAILED", cause instanceof Error ? cause.message : "lattice infill failed (grid too large?).", cause));
|
|
@@ -2123,7 +2123,9 @@ function roof(w, options) {
|
|
|
2123
2123
|
if (triFaces.length === 0) return require_errors.err(require_errors.kernelError(require_errors.BrepErrorCode.ROOF_FAILED, "No valid triangular faces could be built"));
|
|
2124
2124
|
try {
|
|
2125
2125
|
const solid = kernel.sewAndSolidify(triFaces, 1e-6);
|
|
2126
|
-
|
|
2126
|
+
const fixed = kernel.fixShape(solid);
|
|
2127
|
+
if (fixed !== solid) kernel.dispose(solid);
|
|
2128
|
+
return require_errors.ok(require_shapeTypes.createSolid(fixed));
|
|
2127
2129
|
} catch (solidifyErr) {
|
|
2128
2130
|
try {
|
|
2129
2131
|
const sewn = require_shapeTypes.createSolid(kernel.sew(triFaces, 1e-6));
|
|
@@ -2132,6 +2134,8 @@ function roof(w, options) {
|
|
|
2132
2134
|
} catch (sewErr) {
|
|
2133
2135
|
return require_errors.err(require_errors.kernelError(require_errors.BrepErrorCode.ROOF_FAILED, "Failed to sew roof faces", sewErr));
|
|
2134
2136
|
}
|
|
2137
|
+
} finally {
|
|
2138
|
+
for (const tf of triFaces) kernel.dispose(tf);
|
|
2135
2139
|
}
|
|
2136
2140
|
} catch (e) {
|
|
2137
2141
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -3737,10 +3741,20 @@ function resolveTargetFace(shape, faceSpec) {
|
|
|
3737
3741
|
}
|
|
3738
3742
|
return require_errors.ok(faceSpec);
|
|
3739
3743
|
}
|
|
3740
|
-
/**
|
|
3744
|
+
/**
|
|
3745
|
+
* Convert a DrawingLike or Wire to a ClosedWire & PlanarWire (profiles are always
|
|
3746
|
+
* closed and planar). `owned` is true when we materialised a fresh sketch wire
|
|
3747
|
+
* (the caller must dispose it); false when the caller's own Wire is passed through.
|
|
3748
|
+
*/
|
|
3741
3749
|
function toWire(profile) {
|
|
3742
|
-
if ("sketchOnPlane" in profile && typeof profile.sketchOnPlane === "function") return
|
|
3743
|
-
|
|
3750
|
+
if ("sketchOnPlane" in profile && typeof profile.sketchOnPlane === "function") return {
|
|
3751
|
+
wire: profile.sketchOnPlane("XY").wire,
|
|
3752
|
+
owned: true
|
|
3753
|
+
};
|
|
3754
|
+
return {
|
|
3755
|
+
wire: profile,
|
|
3756
|
+
owned: false
|
|
3757
|
+
};
|
|
3744
3758
|
}
|
|
3745
3759
|
/**
|
|
3746
3760
|
* Drill a hole through a 3D shape.
|
|
@@ -3830,7 +3844,11 @@ function drill(shape, options) {
|
|
|
3830
3844
|
pos[2] + dir[2] * tMin
|
|
3831
3845
|
], dir);
|
|
3832
3846
|
}
|
|
3833
|
-
|
|
3847
|
+
try {
|
|
3848
|
+
return require_solidBuilders.cut(s, tool, { unsafe: true });
|
|
3849
|
+
} finally {
|
|
3850
|
+
tool[Symbol.dispose]();
|
|
3851
|
+
}
|
|
3834
3852
|
}
|
|
3835
3853
|
/**
|
|
3836
3854
|
* Cut a pocket (2D profile extruded inward) into a shape.
|
|
@@ -3839,19 +3857,31 @@ function drill(shape, options) {
|
|
|
3839
3857
|
* inward by the specified depth, then subtracted from the shape.
|
|
3840
3858
|
*/
|
|
3841
3859
|
function pocket(shape, options) {
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3860
|
+
try {
|
|
3861
|
+
var _usingCtx$4 = require_shapeTypes._usingCtx();
|
|
3862
|
+
const s = resolve(shape);
|
|
3863
|
+
const { profile, depth } = options;
|
|
3864
|
+
if (depth <= 0) return require_errors.err(require_errors.validationError("POCKET_INVALID_DEPTH", "Pocket depth must be positive"));
|
|
3865
|
+
const targetResult = resolveTargetFace(s, options.face);
|
|
3866
|
+
if (require_errors.isErr(targetResult)) return targetResult;
|
|
3867
|
+
const targetFace = targetResult.value;
|
|
3868
|
+
const normal = require_faceFns.normalAt(targetFace);
|
|
3869
|
+
const center = require_faceFns.faceCenter(targetFace);
|
|
3870
|
+
const scope = _usingCtx$4.u(new require_shapeTypes.DisposalScope());
|
|
3871
|
+
const { wire: w, owned } = toWire(profile);
|
|
3872
|
+
if (owned) scope.register(w);
|
|
3873
|
+
const faceResult = require_surfaceBuilders.makeFace(w);
|
|
3874
|
+
if (require_errors.isErr(faceResult)) return faceResult;
|
|
3875
|
+
scope.register(faceResult.value);
|
|
3876
|
+
const toolResult = require_loftFns.extrude(scope.register(require_shapeFns.translate(faceResult.value, center)), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), -depth));
|
|
3877
|
+
if (require_errors.isErr(toolResult)) return toolResult;
|
|
3878
|
+
scope.register(toolResult.value);
|
|
3879
|
+
return require_solidBuilders.cut(s, toolResult.value, { unsafe: true });
|
|
3880
|
+
} catch (_) {
|
|
3881
|
+
_usingCtx$4.e = _;
|
|
3882
|
+
} finally {
|
|
3883
|
+
_usingCtx$4.d();
|
|
3884
|
+
}
|
|
3855
3885
|
}
|
|
3856
3886
|
/**
|
|
3857
3887
|
* Add a boss (2D profile extruded outward) onto a shape.
|
|
@@ -3860,19 +3890,31 @@ function pocket(shape, options) {
|
|
|
3860
3890
|
* outward by the specified height, then fused with the shape.
|
|
3861
3891
|
*/
|
|
3862
3892
|
function boss(shape, options) {
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3893
|
+
try {
|
|
3894
|
+
var _usingCtx3 = require_shapeTypes._usingCtx();
|
|
3895
|
+
const s = resolve(shape);
|
|
3896
|
+
const { profile, height } = options;
|
|
3897
|
+
if (height <= 0) return require_errors.err(require_errors.validationError("BOSS_INVALID_HEIGHT", "Boss height must be positive"));
|
|
3898
|
+
const targetResult = resolveTargetFace(s, options.face);
|
|
3899
|
+
if (require_errors.isErr(targetResult)) return targetResult;
|
|
3900
|
+
const targetFace = targetResult.value;
|
|
3901
|
+
const normal = require_faceFns.normalAt(targetFace);
|
|
3902
|
+
const center = require_faceFns.faceCenter(targetFace);
|
|
3903
|
+
const scope = _usingCtx3.u(new require_shapeTypes.DisposalScope());
|
|
3904
|
+
const { wire: w, owned } = toWire(profile);
|
|
3905
|
+
if (owned) scope.register(w);
|
|
3906
|
+
const faceResult = require_surfaceBuilders.makeFace(w);
|
|
3907
|
+
if (require_errors.isErr(faceResult)) return faceResult;
|
|
3908
|
+
scope.register(faceResult.value);
|
|
3909
|
+
const toolResult = require_loftFns.extrude(scope.register(require_shapeFns.translate(faceResult.value, center)), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), height));
|
|
3910
|
+
if (require_errors.isErr(toolResult)) return toolResult;
|
|
3911
|
+
scope.register(toolResult.value);
|
|
3912
|
+
return require_solidBuilders.fuse(s, toolResult.value, { unsafe: true });
|
|
3913
|
+
} catch (_) {
|
|
3914
|
+
_usingCtx3.e = _;
|
|
3915
|
+
} finally {
|
|
3916
|
+
_usingCtx3.d();
|
|
3917
|
+
}
|
|
3876
3918
|
}
|
|
3877
3919
|
/**
|
|
3878
3920
|
* Mirror a shape and fuse it with the original.
|
|
@@ -3880,15 +3922,22 @@ function boss(shape, options) {
|
|
|
3880
3922
|
* Common pattern: model half a part, then mirror-join for symmetry.
|
|
3881
3923
|
*/
|
|
3882
3924
|
function mirrorJoin(shape, options) {
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3925
|
+
try {
|
|
3926
|
+
var _usingCtx4 = require_shapeTypes._usingCtx();
|
|
3927
|
+
const s = resolve(shape);
|
|
3928
|
+
const normal = options?.normal ?? [
|
|
3929
|
+
1,
|
|
3930
|
+
0,
|
|
3931
|
+
0
|
|
3932
|
+
];
|
|
3933
|
+
const planeOrigin = options?.at;
|
|
3934
|
+
if (require_vecOps.vecIsZero(normal)) return require_errors.err(require_errors.validationError("MIRROR_ZERO_NORMAL", "Mirror plane normal cannot be zero"));
|
|
3935
|
+
return require_solidBuilders.fuse(s, _usingCtx4.u(require_shapeFns.mirror(s, normal, planeOrigin)), { unsafe: true });
|
|
3936
|
+
} catch (_) {
|
|
3937
|
+
_usingCtx4.e = _;
|
|
3938
|
+
} finally {
|
|
3939
|
+
_usingCtx4.d();
|
|
3940
|
+
}
|
|
3892
3941
|
}
|
|
3893
3942
|
/**
|
|
3894
3943
|
* Create a rectangular (2D grid) pattern of a shape.
|
|
@@ -4621,8 +4670,11 @@ function makeOuterCircleWire(radius) {
|
|
|
4621
4670
|
function finalizeExternalSolid(wire, thickness, bore, geom, diagnostics) {
|
|
4622
4671
|
try {
|
|
4623
4672
|
var _usingCtx3 = require_shapeTypes._usingCtx();
|
|
4673
|
+
const profileScope = _usingCtx3.u(new require_shapeTypes.DisposalScope());
|
|
4674
|
+
profileScope.register(wire);
|
|
4624
4675
|
const faceResult = require_surfaceBuilders.makeFace(wire);
|
|
4625
4676
|
if (require_errors.isErr(faceResult)) return faceResult;
|
|
4677
|
+
profileScope.register(faceResult.value);
|
|
4626
4678
|
const solidResult = require_loftFns.extrude(faceResult.value, [
|
|
4627
4679
|
0,
|
|
4628
4680
|
0,
|
|
@@ -4631,6 +4683,7 @@ function finalizeExternalSolid(wire, thickness, bore, geom, diagnostics) {
|
|
|
4631
4683
|
if (require_errors.isErr(solidResult)) return solidResult;
|
|
4632
4684
|
if (bore <= 0) return require_errors.ok(buildGearResult(solidResult.value, geom, diagnostics));
|
|
4633
4685
|
const boreScope = _usingCtx3.u(new require_shapeTypes.DisposalScope());
|
|
4686
|
+
boreScope.register(solidResult.value);
|
|
4634
4687
|
const boreFaceResult = makeBoreFace(bore / 2);
|
|
4635
4688
|
if (require_errors.isErr(boreFaceResult)) return boreFaceResult;
|
|
4636
4689
|
boreScope.register(boreFaceResult.value);
|