brepjs 18.124.0 → 18.124.2
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 +10 -8
- package/dist/2d.js +10 -8
- package/dist/{adjacencyFns-BJ6jcQ-N.cjs → adjacencyFns-CpKlADYt.cjs} +3 -3
- package/dist/{adjacencyFns-CnehwLNj.js → adjacencyFns-DECdcer5.js} +3 -3
- package/dist/{blueprint-BGWbpQ-w.js → blueprint-CaY00-X2.js} +16 -11
- package/dist/{blueprint-BSfG0Uik.cjs → blueprint-CpJLcUJV.cjs} +14 -10
- package/dist/{blueprintFns-C0-nGqlW.cjs → blueprintFns-B5nFaJI0.cjs} +2 -2
- package/dist/{blueprintFns-Bt1hKlL7.js → blueprintFns-vgwEIgI0.js} +2 -2
- package/dist/{blueprintSketcher-Bd5ZS9p6.cjs → blueprintSketcher-4e0yYtCY.cjs} +19 -11
- package/dist/{blueprintSketcher-BTGRoQ_G.js → blueprintSketcher-BjBjj2cK.js} +19 -11
- package/dist/{boolean2D-Cr6oLsbf.cjs → boolean2D-7heWA1co.cjs} +12 -8
- package/dist/{boolean2D-zZ9-qR5a.js → boolean2D-Bk-VrRyQ.js} +14 -9
- package/dist/brepjs.cjs +121 -81
- package/dist/brepjs.js +132 -85
- package/dist/{cameraFns-j2I9G3L_.cjs → cameraFns-CGwrxgqB.cjs} +5 -4
- package/dist/{cameraFns-CGMawqfi.js → cameraFns-DKEilV2v.js} +5 -4
- package/dist/core.cjs +2 -2
- package/dist/core.js +2 -2
- package/dist/{cornerFinder-CaXBdZz9.js → cornerFinder-C4s6pVZ-.js} +1 -1
- package/dist/{cornerFinder-CPwSLgpM.cjs → cornerFinder-zEgIFMnk.cjs} +1 -1
- package/dist/{curveFns-BBLaLG1U.cjs → curveFns-BZZYHVow.cjs} +8 -5
- package/dist/{curveFns-BoHbhtqX.js → curveFns-RczIU30U.js} +8 -5
- package/dist/{drawFns-DOkSdo8E.cjs → drawFns-BcXzWFfn.cjs} +59 -30
- package/dist/{drawFns-BrRbAeYB.js → drawFns-BjT3RaeQ.js} +59 -30
- package/dist/{faceFns-UozswcwP.cjs → faceFns-C4xNv2zn.cjs} +4 -3
- package/dist/{faceFns-Ce7Fq6j5.js → faceFns-fvp_zfuI.js} +6 -4
- package/dist/{healingFns-Dn0EFSHm.js → healingFns-AE5182Ds.js} +38 -21
- package/dist/{healingFns-mKogaVOk.cjs → healingFns-SxSiVPQa.cjs} +38 -21
- package/dist/{helpers-DuTAcGVX.cjs → helpers-CHYzwQMk.cjs} +6 -6
- package/dist/{helpers-CZsK8STz.js → helpers-CyLQ07aD.js} +6 -6
- package/dist/{importFns-Ch2YwieP.cjs → importFns-90S7P_7P.cjs} +5 -6
- package/dist/{importFns-CE4byS-8.js → importFns-DdXOAX6k.js} +5 -6
- 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-BYiUcAxk.cjs → loftFns-B3mbh5RA.cjs} +15 -9
- package/dist/{loftFns-DQVg8qxM.js → loftFns-CyY4qfvC.js} +15 -9
- package/dist/{measureFns-BbLLBg5q.js → measureFns-B1uLQugf.js} +3 -3
- package/dist/{measureFns-Cao9gY1L.cjs → measureFns-Cx2XJVVC.cjs} +3 -3
- package/dist/measurement.cjs +1 -1
- package/dist/measurement.js +1 -1
- package/dist/{meshFns-CnYIUU9b.cjs → meshFns-2ZxW-X9I.cjs} +3 -3
- package/dist/{meshFns-B6NveFwc.js → meshFns-DrO3d03M.js} +3 -3
- package/dist/{occtWasmAdapter-BQKQXF63.js → occtWasmAdapter-BEe---7w.js} +3 -1
- package/dist/{occtWasmAdapter-Aubfbks6.cjs → occtWasmAdapter-DEpy64ji.cjs} +3 -1
- package/dist/operations.cjs +2 -2
- package/dist/operations.js +2 -2
- package/dist/{originTrackingFns-uz38yuMp.cjs → originTrackingFns-D3rUK08B.cjs} +2 -2
- package/dist/{originTrackingFns-DXcggmgf.js → originTrackingFns-DIAwMSih.js} +2 -2
- package/dist/{primitiveFns-CmmTWOkO.js → primitiveFns-CDPqVTcc.js} +7 -5
- package/dist/{primitiveFns-DmEPf6av.cjs → primitiveFns-c7wqS-K2.cjs} +7 -5
- 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-CnPEaqHw.cjs → refResolveFns-Cm8ZHPl5.cjs} +10 -8
- package/dist/{refResolveFns-DqY7Cd00.js → refResolveFns-o3-Gdnjn.js} +10 -8
- package/dist/{rolldown-runtime-DakpK96I.cjs → rolldown-runtime-C0BPl7ul.cjs} +1 -1
- package/dist/{shapeFns-BLZ1dDSz.cjs → shapeFns-CJ6mph9b.cjs} +2 -2
- package/dist/{shapeFns-mYczuWOy.js → shapeFns-DEpbxB9Z.js} +2 -2
- package/dist/shapeRef.cjs +1 -1
- package/dist/shapeRef.js +1 -1
- package/dist/{shapeTypes-bHlssytH.js → shapeTypes-BHRboc_x.js} +235 -20
- package/dist/{shapeTypes-DZKuRt24.cjs → shapeTypes-D5Y41q7x.cjs} +219 -12
- package/dist/sketching.cjs +3 -3
- package/dist/sketching.js +3 -3
- package/dist/{solidBuilders-5tA9O1SM.cjs → solidBuilders-CsUkRC69.cjs} +14 -9
- package/dist/{solidBuilders-9s-j-ZiW.js → solidBuilders-DQQ0re9T.js} +14 -9
- package/dist/{surfaceBuilders-0x7j0ibk.cjs → surfaceBuilders-BXNZydNl.cjs} +7 -5
- package/dist/{surfaceBuilders-B7UnwkQz.js → surfaceBuilders-C8k0K7DR.js} +7 -5
- package/dist/text.cjs +2 -2
- package/dist/text.js +2 -2
- package/dist/{textBlueprints-DE3M-E9o.js → textBlueprints-BAyLXffK.js} +36 -21
- package/dist/{textBlueprints-BPbIpA4-.cjs → textBlueprints-t8MdWfki.cjs} +37 -22
- package/dist/{textMetrics-D3Bly1w4.js → textMetrics-CefI-bMN.js} +3 -2
- package/dist/{textMetrics-rRuWxQG_.cjs → textMetrics-DUEI9s5M.cjs} +3 -2
- package/dist/{threadFns-BAjFNk2_.js → threadFns-Bau5Sqad.js} +17 -12
- package/dist/{threadFns-BMT6ziG_.cjs → threadFns-OVYAleOH.cjs} +17 -12
- package/dist/topology.cjs +9 -9
- package/dist/topology.js +9 -9
- package/dist/{topologyQueryFns-DVhWxBwT.js → topologyQueryFns-QvPyCF-7.js} +1 -1
- package/dist/{topologyQueryFns-DZUpJz2p.cjs → topologyQueryFns-gah07J7-.cjs} +1 -1
- package/dist/{validityTypes-19mfqWVv.js → validityTypes-DokbYKzd.js} +1 -1
- package/dist/{validityTypes-CCnRq3A9.cjs → validityTypes-Dx-04qO0.cjs} +1 -1
- package/package.json +7 -7
package/dist/brepjs.cjs
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_rolldown_runtime = require("./rolldown-runtime-
|
|
3
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
4
|
-
const require_occtWasmAdapter = require("./occtWasmAdapter-
|
|
2
|
+
const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
|
|
3
|
+
const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
|
|
4
|
+
const require_occtWasmAdapter = require("./occtWasmAdapter-DEpy64ji.cjs");
|
|
5
5
|
const require_bug = require("./bug-O02CsAmt.cjs");
|
|
6
6
|
const require_errors = require("./errors-RHkKO5bZ.cjs");
|
|
7
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
8
|
-
const require_validityTypes = require("./validityTypes-
|
|
7
|
+
const require_topologyQueryFns = require("./topologyQueryFns-gah07J7-.cjs");
|
|
8
|
+
const require_validityTypes = require("./validityTypes-Dx-04qO0.cjs");
|
|
9
9
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
10
10
|
const require_types = require("./types-KjA8tY4Y.cjs");
|
|
11
11
|
const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
|
|
12
12
|
const require_planeOps = require("./planeOps-VlFxtvzY.cjs");
|
|
13
|
-
const require_faceFns = require("./faceFns-
|
|
14
|
-
const require_originTrackingFns = require("./originTrackingFns-
|
|
15
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
16
|
-
const require_primitiveFns = require("./primitiveFns-
|
|
17
|
-
const require_shapeFns = require("./shapeFns-
|
|
18
|
-
const require_curveFns = require("./curveFns-
|
|
19
|
-
const require_meshFns = require("./meshFns-
|
|
13
|
+
const require_faceFns = require("./faceFns-C4xNv2zn.cjs");
|
|
14
|
+
const require_originTrackingFns = require("./originTrackingFns-D3rUK08B.cjs");
|
|
15
|
+
const require_solidBuilders = require("./solidBuilders-CsUkRC69.cjs");
|
|
16
|
+
const require_primitiveFns = require("./primitiveFns-c7wqS-K2.cjs");
|
|
17
|
+
const require_shapeFns = require("./shapeFns-CJ6mph9b.cjs");
|
|
18
|
+
const require_curveFns = require("./curveFns-BZZYHVow.cjs");
|
|
19
|
+
const require_meshFns = require("./meshFns-2ZxW-X9I.cjs");
|
|
20
20
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
21
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
22
|
-
const require_healingFns = require("./healingFns-
|
|
23
|
-
const require_threadFns = require("./threadFns-
|
|
24
|
-
const require_blueprintSketcher = require("./blueprintSketcher-
|
|
25
|
-
const require_helpers = require("./helpers-
|
|
26
|
-
const require_drawFns = require("./drawFns-
|
|
27
|
-
const require_measureFns = require("./measureFns-
|
|
28
|
-
const require_cornerFinder = require("./cornerFinder-
|
|
29
|
-
const require_boolean2D = require("./boolean2D-
|
|
30
|
-
const require_blueprintFns = require("./blueprintFns-
|
|
31
|
-
const require_importFns = require("./importFns-
|
|
32
|
-
const require_loftFns = require("./loftFns-
|
|
33
|
-
const require_textBlueprints = require("./textBlueprints-
|
|
34
|
-
const require_cameraFns = require("./cameraFns-
|
|
35
|
-
const require_textMetrics = require("./textMetrics-
|
|
36
|
-
const require_adjacencyFns = require("./adjacencyFns-
|
|
37
|
-
const require_refResolveFns = require("./refResolveFns-
|
|
21
|
+
const require_surfaceBuilders = require("./surfaceBuilders-BXNZydNl.cjs");
|
|
22
|
+
const require_healingFns = require("./healingFns-SxSiVPQa.cjs");
|
|
23
|
+
const require_threadFns = require("./threadFns-OVYAleOH.cjs");
|
|
24
|
+
const require_blueprintSketcher = require("./blueprintSketcher-4e0yYtCY.cjs");
|
|
25
|
+
const require_helpers = require("./helpers-CHYzwQMk.cjs");
|
|
26
|
+
const require_drawFns = require("./drawFns-BcXzWFfn.cjs");
|
|
27
|
+
const require_measureFns = require("./measureFns-Cx2XJVVC.cjs");
|
|
28
|
+
const require_cornerFinder = require("./cornerFinder-zEgIFMnk.cjs");
|
|
29
|
+
const require_boolean2D = require("./boolean2D-7heWA1co.cjs");
|
|
30
|
+
const require_blueprintFns = require("./blueprintFns-B5nFaJI0.cjs");
|
|
31
|
+
const require_importFns = require("./importFns-90S7P_7P.cjs");
|
|
32
|
+
const require_loftFns = require("./loftFns-B3mbh5RA.cjs");
|
|
33
|
+
const require_textBlueprints = require("./textBlueprints-t8MdWfki.cjs");
|
|
34
|
+
const require_cameraFns = require("./cameraFns-CGwrxgqB.cjs");
|
|
35
|
+
const require_textMetrics = require("./textMetrics-DUEI9s5M.cjs");
|
|
36
|
+
const require_adjacencyFns = require("./adjacencyFns-CpKlADYt.cjs");
|
|
37
|
+
const require_refResolveFns = require("./refResolveFns-Cm8ZHPl5.cjs");
|
|
38
38
|
const require_workerPool = require("./workerPool-D30NsiIW.cjs");
|
|
39
39
|
//#region src/kernel/types.ts
|
|
40
40
|
/** Check if the kernel supports hidden-line-removal projection. */
|
|
@@ -579,7 +579,8 @@ function voxelField(mesh, opts, id) {
|
|
|
579
579
|
const engine = resolveEngine$1(id);
|
|
580
580
|
if (require_errors.isErr(engine)) return engine;
|
|
581
581
|
try {
|
|
582
|
-
|
|
582
|
+
const raw = new engine.value.VoxelField(mesh.vertices, mesh.triangles, params.value.resolution, params.value.padding);
|
|
583
|
+
return require_errors.ok(makeHandle(raw));
|
|
583
584
|
} catch (cause) {
|
|
584
585
|
return require_errors.err(require_errors.computationError("VOXEL_FIELD_VOXELIZE_FAILED", cause instanceof Error ? cause.message : "voxel field voxelization failed (grid too large or non-dense?).", cause));
|
|
585
586
|
}
|
|
@@ -608,7 +609,8 @@ function voxelBooleanField(a, b, op, opts, id) {
|
|
|
608
609
|
const engine = resolveEngine$1(id);
|
|
609
610
|
if (require_errors.isErr(engine)) return engine;
|
|
610
611
|
try {
|
|
611
|
-
|
|
612
|
+
const raw = engine.value.VoxelField.boolean_of(a.vertices, a.triangles, b.vertices, b.triangles, BOOLEAN_OP_CODES[op], params.value.resolution, params.value.padding);
|
|
613
|
+
return require_errors.ok(makeHandle(raw));
|
|
612
614
|
} catch (cause) {
|
|
613
615
|
return require_errors.err(require_errors.computationError("VOXEL_FIELD_BOOLEAN_FAILED", cause instanceof Error ? cause.message : "voxel field boolean failed (grid too large or non-dense?).", cause));
|
|
614
616
|
}
|
|
@@ -835,7 +837,8 @@ function rasterizeFieldIn(sdf, bounds, opts) {
|
|
|
835
837
|
const invalid = validateBounds(bounds);
|
|
836
838
|
if (invalid) return require_errors.err(invalid);
|
|
837
839
|
try {
|
|
838
|
-
|
|
840
|
+
const field = sdf.rasterize_in(bounds.min[0], bounds.min[1], bounds.min[2], bounds.max[0], bounds.max[1], bounds.max[2], params.value.resolution, params.value.padding);
|
|
841
|
+
return require_errors.ok(makeFieldHandle(field));
|
|
839
842
|
} catch (cause) {
|
|
840
843
|
return rasterizeError(cause);
|
|
841
844
|
}
|
|
@@ -1070,7 +1073,8 @@ function latticeInfill(mesh, opts, id) {
|
|
|
1070
1073
|
try {
|
|
1071
1074
|
try {
|
|
1072
1075
|
var _usingCtx$5 = require_shapeTypes._usingCtx();
|
|
1073
|
-
|
|
1076
|
+
const repaired = _usingCtx$5.u(engine.value.lattice_infill(mesh.vertices, mesh.triangles, resolution, padding, tag, period, thickness));
|
|
1077
|
+
return require_errors.ok(toMesh(repaired));
|
|
1074
1078
|
} catch (_) {
|
|
1075
1079
|
_usingCtx$5.e = _;
|
|
1076
1080
|
} finally {
|
|
@@ -1113,7 +1117,8 @@ function tpmsLattice(bounds, opts, id) {
|
|
|
1113
1117
|
try {
|
|
1114
1118
|
try {
|
|
1115
1119
|
var _usingCtx3 = require_shapeTypes._usingCtx();
|
|
1116
|
-
|
|
1120
|
+
const repaired = _usingCtx3.u(engine.value.tpms_box(minX, minY, minZ, maxX, maxY, maxZ, resolution, padding, tag, period, thickness));
|
|
1121
|
+
return require_errors.ok(toMesh(repaired));
|
|
1117
1122
|
} catch (_) {
|
|
1118
1123
|
_usingCtx3.e = _;
|
|
1119
1124
|
} finally {
|
|
@@ -1241,7 +1246,8 @@ function buildBSplineSurface(heights, rows, cols, dx, dy, scaleZ) {
|
|
|
1241
1246
|
z
|
|
1242
1247
|
]);
|
|
1243
1248
|
}
|
|
1244
|
-
const
|
|
1249
|
+
const faceShape = require_shapeTypes.getKernel().bsplineSurface(points, rows, cols);
|
|
1250
|
+
const shape = require_shapeTypes.castResultShape(faceShape);
|
|
1245
1251
|
if (require_shapeTypes.isFace(shape)) return require_errors.ok(shape);
|
|
1246
1252
|
require_shapeTypes.disposeResultShape(shape);
|
|
1247
1253
|
return require_errors.err(require_errors.kernelError(require_errors.BrepErrorCode.SURFACE_FAILED, "B-spline surface did not produce a face"));
|
|
@@ -1258,7 +1264,8 @@ function buildTriangulatedSurface(heights, rows, cols, dx, dy, scaleZ) {
|
|
|
1258
1264
|
z
|
|
1259
1265
|
]);
|
|
1260
1266
|
}
|
|
1261
|
-
const
|
|
1267
|
+
const resultShape = require_shapeTypes.getKernel().triangulatedSurface(points, rows, cols);
|
|
1268
|
+
const shape = require_shapeTypes.castResultShape(resultShape);
|
|
1262
1269
|
if (require_shapeTypes.isFace(shape)) return require_errors.ok(shape);
|
|
1263
1270
|
if (require_shapeTypes.isShell(shape)) return require_errors.ok(shape);
|
|
1264
1271
|
require_shapeTypes.disposeResultShape(shape);
|
|
@@ -1320,9 +1327,7 @@ async function surfaceFromImage(blob, options = {}) {
|
|
|
1320
1327
|
case "b":
|
|
1321
1328
|
value = b / 255;
|
|
1322
1329
|
break;
|
|
1323
|
-
default:
|
|
1324
|
-
value = (REC601_R * r + REC601_G * g + REC601_B * b) / 255;
|
|
1325
|
-
break;
|
|
1330
|
+
default: value = (REC601_R * r + REC601_G * g + REC601_B * b) / 255;
|
|
1326
1331
|
}
|
|
1327
1332
|
row.push(value);
|
|
1328
1333
|
}
|
|
@@ -1363,7 +1368,8 @@ function hull(shapes, options = {}) {
|
|
|
1363
1368
|
try {
|
|
1364
1369
|
const kernel = require_shapeTypes.getKernel();
|
|
1365
1370
|
const ocShapes = shapes.map((s) => s.wrapped);
|
|
1366
|
-
const
|
|
1371
|
+
const resultOc = kernel.hull(ocShapes, tolerance);
|
|
1372
|
+
const cast = require_shapeTypes.castResultShape(resultOc);
|
|
1367
1373
|
if (!require_shapeTypes.isSolid(cast)) {
|
|
1368
1374
|
require_shapeTypes.disposeResultShape(cast);
|
|
1369
1375
|
return require_errors.err(require_errors.kernelError(require_errors.BrepErrorCode.HULL_NOT_3D, "Hull result is not a solid; input may be degenerate"));
|
|
@@ -1402,7 +1408,8 @@ function convexHull(points) {
|
|
|
1402
1408
|
y: p[1],
|
|
1403
1409
|
z: p[2]
|
|
1404
1410
|
}));
|
|
1405
|
-
const
|
|
1411
|
+
const result = kernel.hullFromPoints(objPoints, .1);
|
|
1412
|
+
const cast = require_shapeTypes.castResultShape(result);
|
|
1406
1413
|
if (!require_shapeTypes.isSolid(cast)) {
|
|
1407
1414
|
require_shapeTypes.disposeResultShape(cast);
|
|
1408
1415
|
return require_errors.err(require_errors.kernelError(require_errors.BrepErrorCode.HULL_NOT_3D, "convexHull result is not a solid; points may be coplanar"));
|
|
@@ -1437,7 +1444,8 @@ function detectSphere(shape) {
|
|
|
1437
1444
|
}
|
|
1438
1445
|
function minkowskiSphere(shape, radius, tolerance) {
|
|
1439
1446
|
try {
|
|
1440
|
-
const
|
|
1447
|
+
const resultShape = require_shapeTypes.getKernel().offset(shape.wrapped, radius, tolerance);
|
|
1448
|
+
const wrapped = require_shapeTypes.castResultShape(resultShape);
|
|
1441
1449
|
if (!require_shapeTypes.isShape3D(wrapped)) {
|
|
1442
1450
|
require_shapeTypes.disposeResultShape(wrapped);
|
|
1443
1451
|
return require_errors.err(require_errors.typeCastError(require_errors.BrepErrorCode.MINKOWSKI_NOT_3D, "Minkowski sphere offset did not produce a 3D shape"));
|
|
@@ -1476,7 +1484,8 @@ function minkowskiGeneral(shape, tool, tolerance) {
|
|
|
1476
1484
|
});
|
|
1477
1485
|
}
|
|
1478
1486
|
}
|
|
1479
|
-
const
|
|
1487
|
+
const hullShape = kernel.hullFromPoints(sumPoints, tolerance);
|
|
1488
|
+
const wrapped = require_shapeTypes.castResultShape(hullShape);
|
|
1480
1489
|
if (!require_shapeTypes.isShape3D(wrapped)) {
|
|
1481
1490
|
require_shapeTypes.disposeResultShape(wrapped);
|
|
1482
1491
|
return require_errors.err(require_errors.typeCastError(require_errors.BrepErrorCode.MINKOWSKI_NOT_3D, "Minkowski hull did not produce a 3D shape"));
|
|
@@ -1534,7 +1543,8 @@ function polyhedron(points, faces, options = {}) {
|
|
|
1534
1543
|
y,
|
|
1535
1544
|
z
|
|
1536
1545
|
}));
|
|
1537
|
-
const
|
|
1546
|
+
const resultOc = kernel.buildSolidFromFaces(ptObjs, triangles, tolerance);
|
|
1547
|
+
const cast = require_shapeTypes.castResultShape(resultOc);
|
|
1538
1548
|
if (!require_shapeTypes.isSolid(cast)) {
|
|
1539
1549
|
require_shapeTypes.disposeResultShape(cast);
|
|
1540
1550
|
return require_errors.err(require_errors.kernelError(require_errors.BrepErrorCode.POLYHEDRON_FAILED, "Polyhedron did not produce a solid"));
|
|
@@ -2405,11 +2415,12 @@ function solveConcentric(ref, dep) {
|
|
|
2405
2415
|
0,
|
|
2406
2416
|
1
|
|
2407
2417
|
];
|
|
2408
|
-
const
|
|
2418
|
+
const dDep = dep.direction ?? [
|
|
2409
2419
|
0,
|
|
2410
2420
|
0,
|
|
2411
2421
|
1
|
|
2412
|
-
]
|
|
2422
|
+
];
|
|
2423
|
+
const rotation = require_threadFns.quatFromTo(dDep, dRef);
|
|
2413
2424
|
const rotatedOrigin = require_threadFns.quatRotate(rotation, dep.origin);
|
|
2414
2425
|
return {
|
|
2415
2426
|
position: sub(ref.origin, rotatedOrigin),
|
|
@@ -2434,13 +2445,14 @@ function solveAngle(ref, dep, angleRad) {
|
|
|
2434
2445
|
]);
|
|
2435
2446
|
const phi = Math.acos(Math.max(-1, Math.min(1, dot(nDep, nRef))));
|
|
2436
2447
|
const c = cross(nDep, nRef);
|
|
2448
|
+
const axis = Math.hypot(c[0], c[1], c[2]) < 1e-9 ? anyPerpendicular(nDep) : c;
|
|
2437
2449
|
return {
|
|
2438
2450
|
position: [
|
|
2439
2451
|
0,
|
|
2440
2452
|
0,
|
|
2441
2453
|
0
|
|
2442
2454
|
],
|
|
2443
|
-
rotation: require_threadFns.quatFromAxisAngle(
|
|
2455
|
+
rotation: require_threadFns.quatFromAxisAngle(axis, phi - angleRad)
|
|
2444
2456
|
};
|
|
2445
2457
|
}
|
|
2446
2458
|
/**
|
|
@@ -2530,11 +2542,12 @@ function solveAxisAxisDistance(ref, dep, extra) {
|
|
|
2530
2542
|
0,
|
|
2531
2543
|
1
|
|
2532
2544
|
]);
|
|
2533
|
-
const
|
|
2545
|
+
const dDep = normalize(dep.direction ?? [
|
|
2534
2546
|
0,
|
|
2535
2547
|
0,
|
|
2536
2548
|
1
|
|
2537
|
-
])
|
|
2549
|
+
]);
|
|
2550
|
+
const rotation = require_threadFns.quatFromTo(dDep, dRef);
|
|
2538
2551
|
const w = sub(require_threadFns.quatRotate(rotation, dep.origin), ref.origin);
|
|
2539
2552
|
const perp = sub(w, scale$2(dRef, dot(dRef, w)));
|
|
2540
2553
|
const plen = Math.hypot(perp[0], perp[1], perp[2]);
|
|
@@ -2945,8 +2958,10 @@ function parseEntities(text) {
|
|
|
2945
2958
|
};
|
|
2946
2959
|
continue;
|
|
2947
2960
|
}
|
|
2948
|
-
if (current)
|
|
2949
|
-
|
|
2961
|
+
if (current) {
|
|
2962
|
+
if (code === 8) current.layer = value;
|
|
2963
|
+
else current.data.set(code, value);
|
|
2964
|
+
}
|
|
2950
2965
|
}
|
|
2951
2966
|
return entities;
|
|
2952
2967
|
}
|
|
@@ -3018,7 +3033,8 @@ async function importDXF(blob, options) {
|
|
|
3018
3033
|
if (edge !== void 0) edges.push(edge);
|
|
3019
3034
|
}
|
|
3020
3035
|
if (edges.length === 0) return require_errors.ok([]);
|
|
3021
|
-
|
|
3036
|
+
const wire = require_shapeTypes.getKernel().makeWire(edges);
|
|
3037
|
+
return require_errors.ok([require_shapeTypes.createWire(wire)]);
|
|
3022
3038
|
} catch (cause) {
|
|
3023
3039
|
return require_errors.err(require_errors.ioError(require_errors.BrepErrorCode.DXF_IMPORT_FAILED, "Failed to convert DXF entities to geometry", cause));
|
|
3024
3040
|
} finally {
|
|
@@ -3054,7 +3070,8 @@ function sewMeshToSolid(triangles, errorCode, tolerance = 1e-6) {
|
|
|
3054
3070
|
}
|
|
3055
3071
|
if (triFaces.length === 0) return require_errors.err(require_errors.ioError(errorCode, "No valid triangular faces could be built"));
|
|
3056
3072
|
try {
|
|
3057
|
-
const
|
|
3073
|
+
const solid = kernel.sewAndSolidify(triFaces, tolerance);
|
|
3074
|
+
const cast = require_shapeTypes.castResultShape(solid);
|
|
3058
3075
|
for (const triFace of triFaces) kernel.dispose(triFace);
|
|
3059
3076
|
return require_errors.ok(cast);
|
|
3060
3077
|
} catch {
|
|
@@ -3367,7 +3384,8 @@ function buildSolidFromMesh(mesh) {
|
|
|
3367
3384
|
}));
|
|
3368
3385
|
const faces = mesh.triangles;
|
|
3369
3386
|
try {
|
|
3370
|
-
|
|
3387
|
+
const solid = kernel.buildSolidFromFaces(points, faces, 1e-6);
|
|
3388
|
+
return require_errors.ok(require_shapeTypes.castResultShape(solid));
|
|
3371
3389
|
} catch {
|
|
3372
3390
|
const triangles = [];
|
|
3373
3391
|
for (const [v1, v2, v3] of mesh.triangles) {
|
|
@@ -3439,7 +3457,8 @@ async function importThreeMF(blob) {
|
|
|
3439
3457
|
async function importGLB(blob) {
|
|
3440
3458
|
try {
|
|
3441
3459
|
const data = await blob.arrayBuffer();
|
|
3442
|
-
|
|
3460
|
+
const shape = require_shapeTypes.getKernel().importGLB(data);
|
|
3461
|
+
return require_errors.ok(require_shapeTypes.castResultShape(shape));
|
|
3443
3462
|
} catch (e) {
|
|
3444
3463
|
const msg = e instanceof Error ? e.message : String(e);
|
|
3445
3464
|
return require_errors.err(require_errors.ioError(require_errors.BrepErrorCode.GLB_IMPORT_FAILED, `Failed to import GLB: ${msg}`, e));
|
|
@@ -3860,11 +3879,13 @@ function drill(shape, options) {
|
|
|
3860
3879
|
const overshoot = 1;
|
|
3861
3880
|
tMin -= overshoot;
|
|
3862
3881
|
tMax += overshoot;
|
|
3863
|
-
|
|
3882
|
+
const depth = tMax - tMin;
|
|
3883
|
+
const startPos = [
|
|
3864
3884
|
pos[0] + dir[0] * tMin,
|
|
3865
3885
|
pos[1] + dir[1] * tMin,
|
|
3866
3886
|
pos[2] + dir[2] * tMin
|
|
3867
|
-
]
|
|
3887
|
+
];
|
|
3888
|
+
tool = require_solidBuilders.makeCylinder(radius, depth, startPos, dir);
|
|
3868
3889
|
}
|
|
3869
3890
|
try {
|
|
3870
3891
|
return require_solidBuilders.cut(s, tool, { unsafe: true });
|
|
@@ -3895,7 +3916,9 @@ function pocket(shape, options) {
|
|
|
3895
3916
|
const faceResult = require_surfaceBuilders.makeFace(w);
|
|
3896
3917
|
if (require_errors.isErr(faceResult)) return faceResult;
|
|
3897
3918
|
scope.register(faceResult.value);
|
|
3898
|
-
const
|
|
3919
|
+
const positioned = scope.register(require_primitiveFns.translate(faceResult.value, center));
|
|
3920
|
+
const extDir = require_vecOps.vecScale(require_vecOps.vecNormalize(normal), -depth);
|
|
3921
|
+
const toolResult = require_textBlueprints.extrude(positioned, extDir);
|
|
3899
3922
|
if (require_errors.isErr(toolResult)) return toolResult;
|
|
3900
3923
|
scope.register(toolResult.value);
|
|
3901
3924
|
return require_solidBuilders.cut(s, toolResult.value, { unsafe: true });
|
|
@@ -3928,7 +3951,9 @@ function boss(shape, options) {
|
|
|
3928
3951
|
const faceResult = require_surfaceBuilders.makeFace(w);
|
|
3929
3952
|
if (require_errors.isErr(faceResult)) return faceResult;
|
|
3930
3953
|
scope.register(faceResult.value);
|
|
3931
|
-
const
|
|
3954
|
+
const positioned = scope.register(require_primitiveFns.translate(faceResult.value, center));
|
|
3955
|
+
const extDir = require_vecOps.vecScale(require_vecOps.vecNormalize(normal), height);
|
|
3956
|
+
const toolResult = require_textBlueprints.extrude(positioned, extDir);
|
|
3932
3957
|
if (require_errors.isErr(toolResult)) return toolResult;
|
|
3933
3958
|
scope.register(toolResult.value);
|
|
3934
3959
|
return require_solidBuilders.fuse(s, toolResult.value, { unsafe: true });
|
|
@@ -3954,7 +3979,8 @@ function mirrorJoin(shape, options) {
|
|
|
3954
3979
|
];
|
|
3955
3980
|
const planeOrigin = options?.at;
|
|
3956
3981
|
if (require_vecOps.vecIsZero(normal)) return require_errors.err(require_errors.validationError("MIRROR_ZERO_NORMAL", "Mirror plane normal cannot be zero"));
|
|
3957
|
-
|
|
3982
|
+
const mirrored = _usingCtx4.u(require_primitiveFns.mirror(s, normal, planeOrigin));
|
|
3983
|
+
return require_solidBuilders.fuse(s, mirrored, { unsafe: true });
|
|
3958
3984
|
} catch (_) {
|
|
3959
3985
|
_usingCtx4.e = _;
|
|
3960
3986
|
} finally {
|
|
@@ -3980,11 +4006,12 @@ function rectangularPattern(shape, options) {
|
|
|
3980
4006
|
const owned = [];
|
|
3981
4007
|
for (let xi = 0; xi < xCount; xi++) for (let yi = 0; yi < yCount; yi++) {
|
|
3982
4008
|
if (xi === 0 && yi === 0) continue;
|
|
3983
|
-
const
|
|
4009
|
+
const offset = [
|
|
3984
4010
|
xNorm[0] * xSpacing * xi + yNorm[0] * ySpacing * yi,
|
|
3985
4011
|
xNorm[1] * xSpacing * xi + yNorm[1] * ySpacing * yi,
|
|
3986
4012
|
xNorm[2] * xSpacing * xi + yNorm[2] * ySpacing * yi
|
|
3987
|
-
]
|
|
4013
|
+
];
|
|
4014
|
+
const c = require_primitiveFns.translate(s, offset);
|
|
3988
4015
|
copies.push(c);
|
|
3989
4016
|
owned.push(c);
|
|
3990
4017
|
}
|
|
@@ -4426,40 +4453,49 @@ function buildToothPeriodEdges(tm, toothIndex, totalTeeth, samples, scope) {
|
|
|
4426
4453
|
edges.push(e);
|
|
4427
4454
|
};
|
|
4428
4455
|
const needsRadialBridge = tm.isInternal ? tm.rb < tm.rRoot : tm.rb > tm.rRoot;
|
|
4429
|
-
if (needsRadialBridge)
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4456
|
+
if (needsRadialBridge) {
|
|
4457
|
+
const rootPt = [
|
|
4458
|
+
tm.rRoot * Math.cos(thetaLeft),
|
|
4459
|
+
tm.rRoot * Math.sin(thetaLeft),
|
|
4460
|
+
0
|
|
4461
|
+
];
|
|
4462
|
+
push(require_surfaceBuilders.makeLine(rootPt, leftBase));
|
|
4463
|
+
}
|
|
4434
4464
|
const interpTol = tm.rPitch * 1e-5;
|
|
4435
4465
|
const leftEdge = require_surfaceBuilders.makeBSplineInterpolation(leftFlank, { tolerance: interpTol });
|
|
4436
4466
|
if (require_errors.isErr(leftEdge)) return leftEdge;
|
|
4437
4467
|
push(leftEdge.value);
|
|
4438
|
-
|
|
4468
|
+
const tipMid = [
|
|
4439
4469
|
tm.rTip * Math.cos(center),
|
|
4440
4470
|
tm.rTip * Math.sin(center),
|
|
4441
4471
|
0
|
|
4442
|
-
]
|
|
4472
|
+
];
|
|
4473
|
+
push(require_surfaceBuilders.makeThreePointArc(leftTip, tipMid, rightTip));
|
|
4443
4474
|
const rightEdge = require_surfaceBuilders.makeBSplineInterpolation(rightFlank, { tolerance: interpTol });
|
|
4444
4475
|
if (require_errors.isErr(rightEdge)) return rightEdge;
|
|
4445
4476
|
push(rightEdge.value);
|
|
4446
|
-
if (needsRadialBridge)
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4477
|
+
if (needsRadialBridge) {
|
|
4478
|
+
const rootPt = [
|
|
4479
|
+
tm.rRoot * Math.cos(thetaRight),
|
|
4480
|
+
tm.rRoot * Math.sin(thetaRight),
|
|
4481
|
+
0
|
|
4482
|
+
];
|
|
4483
|
+
push(require_surfaceBuilders.makeLine(rightBase, rootPt));
|
|
4484
|
+
}
|
|
4451
4485
|
const rootEndAngle = nextCenter - tm.halfToothAngle - invPitch;
|
|
4452
4486
|
let midAngle = .5 * (thetaRight + rootEndAngle);
|
|
4453
4487
|
if (rootEndAngle < thetaRight) midAngle += Math.PI;
|
|
4454
|
-
|
|
4488
|
+
const rootStart = needsRadialBridge ? [
|
|
4455
4489
|
tm.rRoot * Math.cos(thetaRight),
|
|
4456
4490
|
tm.rRoot * Math.sin(thetaRight),
|
|
4457
4491
|
0
|
|
4458
|
-
] : rightBase
|
|
4492
|
+
] : rightBase;
|
|
4493
|
+
const rootMid = [
|
|
4459
4494
|
tm.rRoot * Math.cos(midAngle),
|
|
4460
4495
|
tm.rRoot * Math.sin(midAngle),
|
|
4461
4496
|
0
|
|
4462
|
-
]
|
|
4497
|
+
];
|
|
4498
|
+
const nextLeftStart = needsRadialBridge ? [
|
|
4463
4499
|
tm.rRoot * Math.cos(rootEndAngle),
|
|
4464
4500
|
tm.rRoot * Math.sin(rootEndAngle),
|
|
4465
4501
|
0
|
|
@@ -4467,7 +4503,8 @@ function buildToothPeriodEdges(tm, toothIndex, totalTeeth, samples, scope) {
|
|
|
4467
4503
|
tm.rb * Math.cos(rootEndAngle),
|
|
4468
4504
|
tm.rb * Math.sin(rootEndAngle),
|
|
4469
4505
|
0
|
|
4470
|
-
]
|
|
4506
|
+
];
|
|
4507
|
+
push(require_surfaceBuilders.makeThreePointArc(rootStart, rootMid, nextLeftStart));
|
|
4471
4508
|
return require_errors.ok(edges);
|
|
4472
4509
|
}
|
|
4473
4510
|
function makeExternalGearProfileWire(params) {
|
|
@@ -4678,7 +4715,7 @@ function resolvePlanetaryParams(params) {
|
|
|
4678
4715
|
function makeOuterCircleWire(radius) {
|
|
4679
4716
|
try {
|
|
4680
4717
|
var _usingCtx$2 = require_shapeTypes._usingCtx();
|
|
4681
|
-
const
|
|
4718
|
+
const circleEdge = _usingCtx$2.u(new require_shapeTypes.DisposalScope()).register(require_surfaceBuilders.makeCircle(radius, [
|
|
4682
4719
|
0,
|
|
4683
4720
|
0,
|
|
4684
4721
|
0
|
|
@@ -4686,7 +4723,8 @@ function makeOuterCircleWire(radius) {
|
|
|
4686
4723
|
0,
|
|
4687
4724
|
0,
|
|
4688
4725
|
1
|
|
4689
|
-
]))
|
|
4726
|
+
]));
|
|
4727
|
+
const wireResult = require_surfaceBuilders.assembleWire([circleEdge]);
|
|
4690
4728
|
if (require_errors.isErr(wireResult)) return wireResult;
|
|
4691
4729
|
return require_errors.ok(wireResult.value);
|
|
4692
4730
|
} catch (_) {
|
|
@@ -4767,7 +4805,8 @@ function placePlanets(planetProto, cfg) {
|
|
|
4767
4805
|
try {
|
|
4768
4806
|
for (let i = 0; i < cfg.numPlanets; i++) {
|
|
4769
4807
|
const orbital = i * 2 * Math.PI / cfg.numPlanets;
|
|
4770
|
-
const
|
|
4808
|
+
const selfRot = planetSelfRotationAngle(orbital, cfg.sunTeeth, cfg.planetTeeth);
|
|
4809
|
+
const rotated = require_primitiveFns.rotate(planetProto, selfRot * 180 / Math.PI);
|
|
4771
4810
|
try {
|
|
4772
4811
|
const offset = [
|
|
4773
4812
|
cfg.centerDistance * Math.cos(orbital),
|
|
@@ -7068,6 +7107,7 @@ var csg_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
|
7068
7107
|
vertex: () => vertex$1,
|
|
7069
7108
|
withEvaluator: () => withEvaluator
|
|
7070
7109
|
});
|
|
7110
|
+
/* v8 ignore file */
|
|
7071
7111
|
//#endregion
|
|
7072
7112
|
exports.BaseSketcher2d = require_blueprintSketcher.BaseSketcher2d;
|
|
7073
7113
|
exports.BlueprintSketcher = require_blueprintSketcher.BlueprintSketcher;
|