brepjs 8.8.2 → 8.8.4

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.
Files changed (113) hide show
  1. package/dist/2d/curves.d.ts.map +1 -1
  2. package/dist/2d/lib/Curve2D.d.ts.map +1 -1
  3. package/dist/2d/lib/approximations.d.ts.map +1 -1
  4. package/dist/2d/lib/makeCurves.d.ts.map +1 -1
  5. package/dist/2d/lib/ocWrapper.d.ts.map +1 -1
  6. package/dist/2d.cjs +2 -2
  7. package/dist/2d.js +3 -3
  8. package/dist/Blueprint-C4Rx89oe.js +1440 -0
  9. package/dist/Blueprint-D1Dik12C.cjs +1439 -0
  10. package/dist/{boolean2D-q5FOdOQW.cjs → boolean2D-BZnkU_aH.cjs} +215 -130
  11. package/dist/{boolean2D-Dgnuy63w.js → boolean2D-D4j89vF_.js} +215 -130
  12. package/dist/{booleanFns-CFit7JYt.cjs → booleanFns-Cf_0aWNe.cjs} +214 -133
  13. package/dist/{booleanFns--Orezl-b.js → booleanFns-D6SeHoCv.js} +214 -133
  14. package/dist/brepjs.cjs +478 -314
  15. package/dist/brepjs.js +574 -410
  16. package/dist/core/disposal.d.ts +44 -3
  17. package/dist/core/disposal.d.ts.map +1 -1
  18. package/dist/core/errors.d.ts +2 -0
  19. package/dist/core/errors.d.ts.map +1 -1
  20. package/dist/core/geometryHelpers.d.ts.map +1 -1
  21. package/dist/core/kernelCall.d.ts +20 -0
  22. package/dist/core/kernelCall.d.ts.map +1 -1
  23. package/dist/core/memory.d.ts +1 -1
  24. package/dist/core/memory.d.ts.map +1 -1
  25. package/dist/core.cjs +7 -4
  26. package/dist/core.d.ts +1 -1
  27. package/dist/core.d.ts.map +1 -1
  28. package/dist/core.js +14 -11
  29. package/dist/{cornerFinder-KNTFoGrm.js → cornerFinder-CypY3T_w.js} +1 -1
  30. package/dist/{cornerFinder-v4un1Fr9.cjs → cornerFinder-DbRL42YI.cjs} +1 -1
  31. package/dist/{curveFns-6ovDM_sR.cjs → curveFns-KDpL9iyo.cjs} +139 -38
  32. package/dist/curveFns-VDZEhY97.js +281 -0
  33. package/dist/{drawFns-WgXeXHH1.cjs → drawFns-B52K-9DJ.cjs} +184 -104
  34. package/dist/{drawFns-XwroLxdb.js → drawFns-CVPwl2No.js} +184 -104
  35. package/dist/{errors-NNmTtM5u.cjs → errors-BYb4tL5h.cjs} +3 -0
  36. package/dist/{errors-DJ92ermb.js → errors-CHfaHQSt.js} +3 -0
  37. package/dist/faceFns-B8xnZw-f.cjs +358 -0
  38. package/dist/faceFns-DG4bu-QB.js +359 -0
  39. package/dist/{helpers-CRfqaW0Y.cjs → helpers-Cfibxk7U.cjs} +15 -12
  40. package/dist/{helpers-CtBCzEqs.js → helpers-zsENdJlc.js} +15 -12
  41. package/dist/index.d.ts +2 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/io/importFns.d.ts.map +1 -1
  44. package/dist/io.cjs +133 -65
  45. package/dist/io.js +133 -65
  46. package/dist/kernel/booleanOps.d.ts.map +1 -1
  47. package/dist/loft-Bhnw5Rfr.cjs +530 -0
  48. package/dist/loft-fSnlFn-j.js +531 -0
  49. package/dist/measurement-C4Ofuy_y.cjs +200 -0
  50. package/dist/measurement-DzRb6oYN.js +201 -0
  51. package/dist/measurement.cjs +1 -1
  52. package/dist/measurement.js +1 -1
  53. package/dist/{meshFns-CPNNlpbw.cjs → meshFns-C-6Cq3V-.cjs} +3 -3
  54. package/dist/{meshFns-DAmWVyEp.js → meshFns-Cw3IFJjg.js} +3 -3
  55. package/dist/{occtBoundary-Cqfsau2c.cjs → occtBoundary-CN_uQJtA.cjs} +4 -3
  56. package/dist/{occtBoundary-DvBywHyU.js → occtBoundary-Ct0tN8cs.js} +4 -3
  57. package/dist/operations/exporterFns.d.ts.map +1 -1
  58. package/dist/operations/exporterUtils.d.ts +3 -3
  59. package/dist/operations/exporterUtils.d.ts.map +1 -1
  60. package/dist/operations/exporters.d.ts.map +1 -1
  61. package/dist/operations/extrude.d.ts.map +1 -1
  62. package/dist/operations/extrudeFns.d.ts.map +1 -1
  63. package/dist/operations/loft.d.ts.map +1 -1
  64. package/dist/operations/multiSweepFns.d.ts.map +1 -1
  65. package/dist/{operations-BQ25CPI8.cjs → operations-DvwWDqIp.cjs} +263 -168
  66. package/dist/{operations-vN0tcoaU.js → operations-PYuj8GLd.js} +263 -168
  67. package/dist/operations.cjs +2 -2
  68. package/dist/operations.js +2 -2
  69. package/dist/query/shapeDistanceFilter.d.ts.map +1 -1
  70. package/dist/query.cjs +67 -15
  71. package/dist/query.js +68 -16
  72. package/dist/result.cjs +1 -1
  73. package/dist/result.js +1 -1
  74. package/dist/{shapeFns-C785aeVn.cjs → shapeFns-ByLUl6KE.cjs} +63 -9
  75. package/dist/{shapeFns-ClpALED4.js → shapeFns-QL3zx6uW.js} +63 -9
  76. package/dist/{shapeTypes-DnwCo942.js → shapeTypes-D34s68Xi.js} +51 -20
  77. package/dist/{shapeTypes-CIijJxCz.cjs → shapeTypes-sXITvFkF.cjs} +33 -2
  78. package/dist/sketching/CompoundSketch.d.ts.map +1 -1
  79. package/dist/sketching/Sketch.d.ts.map +1 -1
  80. package/dist/sketching/Sketcher.d.ts.map +1 -1
  81. package/dist/sketching/Sketcher2d.d.ts.map +1 -1
  82. package/dist/sketching/cannedSketches.d.ts.map +1 -1
  83. package/dist/sketching/draw.d.ts.map +1 -1
  84. package/dist/sketching.cjs +2 -2
  85. package/dist/sketching.js +2 -2
  86. package/dist/surfaceBuilders-DYX6h68y.js +436 -0
  87. package/dist/surfaceBuilders-hupjYn0W.cjs +435 -0
  88. package/dist/topology/booleanFns.d.ts.map +1 -1
  89. package/dist/topology/compoundOpsFns.d.ts.map +1 -1
  90. package/dist/topology/curveBuilders.d.ts.map +1 -1
  91. package/dist/topology/shapeFns.d.ts.map +1 -1
  92. package/dist/topology/solidBuilders.d.ts.map +1 -1
  93. package/dist/topology/surfaceBuilders.d.ts.map +1 -1
  94. package/dist/{topology-zG8maSDK.cjs → topology-DWe9SYAy.cjs} +8 -8
  95. package/dist/{topology-CqyxpmEh.js → topology-psR8Hqiz.js} +8 -8
  96. package/dist/topology.cjs +6 -6
  97. package/dist/topology.js +6 -6
  98. package/dist/{vectors-CGLqemPY.cjs → vectors-9rrStq8t.cjs} +2 -2
  99. package/dist/{vectors-2lOjaa8N.js → vectors-Dp5Iu1KH.js} +2 -2
  100. package/dist/vectors.cjs +2 -2
  101. package/dist/vectors.js +2 -2
  102. package/package.json +4 -1
  103. package/dist/Blueprint-BmbNUnGI.cjs +0 -1185
  104. package/dist/Blueprint-C-JJkkwL.js +0 -1186
  105. package/dist/curveFns-BhQECv8e.js +0 -180
  106. package/dist/faceFns-3PDjBeW7.js +0 -272
  107. package/dist/faceFns-CxaLWOjc.cjs +0 -271
  108. package/dist/loft-CVb-IjEI.cjs +0 -372
  109. package/dist/loft-DMFjK6lk.js +0 -373
  110. package/dist/measurement-CecYIt3s.cjs +0 -134
  111. package/dist/measurement-DHDLAH7-.js +0 -135
  112. package/dist/surfaceBuilders-CC0ZQGix.cjs +0 -289
  113. package/dist/surfaceBuilders-CrJtFu2a.js +0 -290
@@ -1,11 +1,56 @@
1
1
  "use strict";
2
- const occtBoundary = require("./occtBoundary-Cqfsau2c.cjs");
3
- const shapeTypes = require("./shapeTypes-CIijJxCz.cjs");
4
- const errors = require("./errors-NNmTtM5u.cjs");
5
- const vectors = require("./vectors-CGLqemPY.cjs");
2
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
3
+ var __typeError = (msg) => {
4
+ throw TypeError(msg);
5
+ };
6
+ var __using = (stack, value, async) => {
7
+ if (value != null) {
8
+ if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
9
+ var dispose, inner;
10
+ if (async) dispose = value[__knownSymbol("asyncDispose")];
11
+ if (dispose === void 0) {
12
+ dispose = value[__knownSymbol("dispose")];
13
+ if (async) inner = dispose;
14
+ }
15
+ if (typeof dispose !== "function") __typeError("Object not disposable");
16
+ if (inner) dispose = function() {
17
+ try {
18
+ inner.call(this);
19
+ } catch (e) {
20
+ return Promise.reject(e);
21
+ }
22
+ };
23
+ stack.push([async, dispose, value]);
24
+ } else if (async) {
25
+ stack.push([async]);
26
+ }
27
+ return value;
28
+ };
29
+ var __callDispose = (stack, error, hasError) => {
30
+ var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
31
+ return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
32
+ };
33
+ var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
34
+ var next = (it) => {
35
+ while (it = stack.pop()) {
36
+ try {
37
+ var result = it[1] && it[1].call(it[2]);
38
+ if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
39
+ } catch (e) {
40
+ fail(e);
41
+ }
42
+ }
43
+ if (hasError) throw error;
44
+ };
45
+ return next();
46
+ };
47
+ const occtBoundary = require("./occtBoundary-CN_uQJtA.cjs");
48
+ const shapeTypes = require("./shapeTypes-sXITvFkF.cjs");
49
+ const errors = require("./errors-BYb4tL5h.cjs");
50
+ const vectors = require("./vectors-9rrStq8t.cjs");
6
51
  const vecOps = require("./vecOps-CjRL1jau.cjs");
7
- const shapeFns = require("./shapeFns-C785aeVn.cjs");
8
- const surfaceBuilders = require("./surfaceBuilders-CC0ZQGix.cjs");
52
+ const shapeFns = require("./shapeFns-ByLUl6KE.cjs");
53
+ const surfaceBuilders = require("./surfaceBuilders-hupjYn0W.cjs");
9
54
  function applyGlue(op, optimisation) {
10
55
  const oc = occtBoundary.getKernel().oc;
11
56
  if (optimisation === "commonFace") {
@@ -220,6 +265,7 @@ function propagateColors(op, inputs, result) {
220
265
  }
221
266
  }
222
267
  }
268
+ const SIMPLIFY_TOLERANCE = 1e-3;
223
269
  function validateShape3D(shape, label) {
224
270
  if (shape.wrapped.IsNull()) {
225
271
  return errors.err(errors.validationError(errors.BrepErrorCode.NULL_SHAPE_INPUT, `${label} is a null shape`));
@@ -259,77 +305,98 @@ function castToShape3D(shape, errorCode, errorMsg) {
259
305
  return errors.ok(wrapped);
260
306
  }
261
307
  function fuse(a, b, { optimisation = "none", simplify = false, signal } = {}) {
262
- if (signal?.aborted) throw signal.reason;
263
- const checkA = validateShape3D(a, "fuse: first operand");
264
- if (errors.isErr(checkA)) return checkA;
265
- const checkB = validateShape3D(b, "fuse: second operand");
266
- if (errors.isErr(checkB)) return checkB;
267
- const oc = occtBoundary.getKernel().oc;
268
- const r = shapeTypes.gcWithScope();
269
- const progress = r(new oc.Message_ProgressRange_1());
270
- const fuseOp = r(new oc.BRepAlgoAPI_Fuse_3(a.wrapped, b.wrapped, progress));
271
- applyGlue(fuseOp, optimisation);
272
- fuseOp.SetRunParallel(true);
273
- fuseOp.Build(progress);
274
- if (simplify) fuseOp.SimplifyResult(true, true, 1e-3);
275
- const fuseResult = castToShape3D(
276
- fuseOp.Shape(),
277
- "FUSE_NOT_3D",
278
- "Fuse did not produce a 3D shape"
279
- );
280
- if (fuseResult.ok) {
281
- shapeFns.propagateOrigins(fuseOp, [a, b], fuseResult.value);
282
- propagateFaceTags(fuseOp, [a, b], fuseResult.value);
283
- propagateColors(fuseOp, [a, b], fuseResult.value);
284
- }
285
- return fuseResult;
308
+ var _stack = [];
309
+ try {
310
+ if (signal?.aborted) throw signal.reason;
311
+ const checkA = validateShape3D(a, "fuse: first operand");
312
+ if (errors.isErr(checkA)) return checkA;
313
+ const checkB = validateShape3D(b, "fuse: second operand");
314
+ if (errors.isErr(checkB)) return checkB;
315
+ const oc = occtBoundary.getKernel().oc;
316
+ const scope = __using(_stack, new shapeTypes.DisposalScope());
317
+ const progress = scope.register(new oc.Message_ProgressRange_1());
318
+ const fuseOp = scope.register(new oc.BRepAlgoAPI_Fuse_3(a.wrapped, b.wrapped, progress));
319
+ applyGlue(fuseOp, optimisation);
320
+ fuseOp.SetRunParallel(true);
321
+ fuseOp.Build(progress);
322
+ if (simplify) fuseOp.SimplifyResult(true, true, SIMPLIFY_TOLERANCE);
323
+ const fuseResult = castToShape3D(
324
+ fuseOp.Shape(),
325
+ "FUSE_NOT_3D",
326
+ "Fuse did not produce a 3D shape"
327
+ );
328
+ if (fuseResult.ok) {
329
+ shapeFns.propagateOrigins(fuseOp, [a, b], fuseResult.value);
330
+ propagateFaceTags(fuseOp, [a, b], fuseResult.value);
331
+ propagateColors(fuseOp, [a, b], fuseResult.value);
332
+ }
333
+ return fuseResult;
334
+ } catch (_) {
335
+ var _error = _, _hasError = true;
336
+ } finally {
337
+ __callDispose(_stack, _error, _hasError);
338
+ }
286
339
  }
287
340
  function cut(base, tool, { optimisation = "none", simplify = false, signal } = {}) {
288
- if (signal?.aborted) throw signal.reason;
289
- const checkBase = validateShape3D(base, "cut: base");
290
- if (errors.isErr(checkBase)) return checkBase;
291
- const checkTool = validateShape3D(tool, "cut: tool");
292
- if (errors.isErr(checkTool)) return checkTool;
293
- const oc = occtBoundary.getKernel().oc;
294
- const r = shapeTypes.gcWithScope();
295
- const progress = r(new oc.Message_ProgressRange_1());
296
- const cutOp = r(new oc.BRepAlgoAPI_Cut_3(base.wrapped, tool.wrapped, progress));
297
- applyGlue(cutOp, optimisation);
298
- cutOp.SetRunParallel(true);
299
- cutOp.Build(progress);
300
- if (simplify) cutOp.SimplifyResult(true, true, 1e-3);
301
- const cutResult = castToShape3D(cutOp.Shape(), "CUT_NOT_3D", "Cut did not produce a 3D shape");
302
- if (cutResult.ok) {
303
- shapeFns.propagateOrigins(cutOp, [base, tool], cutResult.value);
304
- propagateFaceTags(cutOp, [base, tool], cutResult.value);
305
- propagateColors(cutOp, [base, tool], cutResult.value);
306
- }
307
- return cutResult;
341
+ var _stack = [];
342
+ try {
343
+ if (signal?.aborted) throw signal.reason;
344
+ const checkBase = validateShape3D(base, "cut: base");
345
+ if (errors.isErr(checkBase)) return checkBase;
346
+ const checkTool = validateShape3D(tool, "cut: tool");
347
+ if (errors.isErr(checkTool)) return checkTool;
348
+ const oc = occtBoundary.getKernel().oc;
349
+ const scope = __using(_stack, new shapeTypes.DisposalScope());
350
+ const progress = scope.register(new oc.Message_ProgressRange_1());
351
+ const cutOp = scope.register(new oc.BRepAlgoAPI_Cut_3(base.wrapped, tool.wrapped, progress));
352
+ applyGlue(cutOp, optimisation);
353
+ cutOp.SetRunParallel(true);
354
+ cutOp.Build(progress);
355
+ if (simplify) cutOp.SimplifyResult(true, true, SIMPLIFY_TOLERANCE);
356
+ const cutResult = castToShape3D(cutOp.Shape(), "CUT_NOT_3D", "Cut did not produce a 3D shape");
357
+ if (cutResult.ok) {
358
+ shapeFns.propagateOrigins(cutOp, [base, tool], cutResult.value);
359
+ propagateFaceTags(cutOp, [base, tool], cutResult.value);
360
+ propagateColors(cutOp, [base, tool], cutResult.value);
361
+ }
362
+ return cutResult;
363
+ } catch (_) {
364
+ var _error = _, _hasError = true;
365
+ } finally {
366
+ __callDispose(_stack, _error, _hasError);
367
+ }
308
368
  }
309
369
  function intersect(a, b, { simplify = false, signal } = {}) {
310
- if (signal?.aborted) throw signal.reason;
311
- const checkA = validateShape3D(a, "intersect: first operand");
312
- if (errors.isErr(checkA)) return checkA;
313
- const checkB = validateShape3D(b, "intersect: second operand");
314
- if (errors.isErr(checkB)) return checkB;
315
- const oc = occtBoundary.getKernel().oc;
316
- const r = shapeTypes.gcWithScope();
317
- const progress = r(new oc.Message_ProgressRange_1());
318
- const intOp = r(new oc.BRepAlgoAPI_Common_3(a.wrapped, b.wrapped, progress));
319
- intOp.SetRunParallel(true);
320
- intOp.Build(progress);
321
- if (simplify) intOp.SimplifyResult(true, true, 1e-3);
322
- const intResult = castToShape3D(
323
- intOp.Shape(),
324
- "INTERSECT_NOT_3D",
325
- "Intersect did not produce a 3D shape"
326
- );
327
- if (intResult.ok) {
328
- shapeFns.propagateOrigins(intOp, [a, b], intResult.value);
329
- propagateFaceTags(intOp, [a, b], intResult.value);
330
- propagateColors(intOp, [a, b], intResult.value);
331
- }
332
- return intResult;
370
+ var _stack = [];
371
+ try {
372
+ if (signal?.aborted) throw signal.reason;
373
+ const checkA = validateShape3D(a, "intersect: first operand");
374
+ if (errors.isErr(checkA)) return checkA;
375
+ const checkB = validateShape3D(b, "intersect: second operand");
376
+ if (errors.isErr(checkB)) return checkB;
377
+ const oc = occtBoundary.getKernel().oc;
378
+ const scope = __using(_stack, new shapeTypes.DisposalScope());
379
+ const progress = scope.register(new oc.Message_ProgressRange_1());
380
+ const intOp = scope.register(new oc.BRepAlgoAPI_Common_3(a.wrapped, b.wrapped, progress));
381
+ intOp.SetRunParallel(true);
382
+ intOp.Build(progress);
383
+ if (simplify) intOp.SimplifyResult(true, true, SIMPLIFY_TOLERANCE);
384
+ const intResult = castToShape3D(
385
+ intOp.Shape(),
386
+ "INTERSECT_NOT_3D",
387
+ "Intersect did not produce a 3D shape"
388
+ );
389
+ if (intResult.ok) {
390
+ shapeFns.propagateOrigins(intOp, [a, b], intResult.value);
391
+ propagateFaceTags(intOp, [a, b], intResult.value);
392
+ propagateColors(intOp, [a, b], intResult.value);
393
+ }
394
+ return intResult;
395
+ } catch (_) {
396
+ var _error = _, _hasError = true;
397
+ } finally {
398
+ __callDispose(_stack, _error, _hasError);
399
+ }
333
400
  }
334
401
  function fuseAllPairwise(shapes, start, end, optimisation, simplify, isTopLevel, signal) {
335
402
  if (signal?.aborted) throw signal.reason;
@@ -380,69 +447,83 @@ function fuseAll(shapes, { optimisation = "none", simplify = false, strategy = "
380
447
  return fuseAllPairwise(shapes, 0, shapes.length, optimisation, simplify, true, signal);
381
448
  }
382
449
  function cutAll(base, tools, { optimisation = "none", simplify = false, signal } = {}) {
383
- if (signal?.aborted) throw signal.reason;
384
- if (tools.length === 0) return errors.ok(base);
385
- const checkBase = validateShape3D(base, "cutAll: base");
386
- if (errors.isErr(checkBase)) return checkBase;
387
- for (let i = 0; i < tools.length; i++) {
388
- const check = validateShape3D(tools[i], `cutAll: tool at index ${i}`);
389
- if (errors.isErr(check)) return check;
450
+ var _stack = [];
451
+ try {
452
+ if (signal?.aborted) throw signal.reason;
453
+ if (tools.length === 0) return errors.ok(base);
454
+ const checkBase = validateShape3D(base, "cutAll: base");
455
+ if (errors.isErr(checkBase)) return checkBase;
456
+ for (let i = 0; i < tools.length; i++) {
457
+ const check = validateShape3D(tools[i], `cutAll: tool at index ${i}`);
458
+ if (errors.isErr(check)) return check;
459
+ }
460
+ const oc = occtBoundary.getKernel().oc;
461
+ const scope = __using(_stack, new shapeTypes.DisposalScope());
462
+ const toolCompound = scope.register(buildCompoundOcInternal(tools.map((s) => s.wrapped)));
463
+ const progress = scope.register(new oc.Message_ProgressRange_1());
464
+ const cutOp = scope.register(new oc.BRepAlgoAPI_Cut_3(base.wrapped, toolCompound, progress));
465
+ applyGlue(cutOp, optimisation);
466
+ cutOp.SetRunParallel(true);
467
+ cutOp.Build(progress);
468
+ if (simplify) cutOp.SimplifyResult(true, true, SIMPLIFY_TOLERANCE);
469
+ const cutAllResult = castToShape3D(
470
+ cutOp.Shape(),
471
+ "CUT_ALL_NOT_3D",
472
+ "cutAll did not produce a 3D shape"
473
+ );
474
+ if (cutAllResult.ok) {
475
+ shapeFns.propagateOrigins(cutOp, [base, ...tools], cutAllResult.value);
476
+ propagateFaceTags(cutOp, [base, ...tools], cutAllResult.value);
477
+ propagateColors(cutOp, [base, ...tools], cutAllResult.value);
478
+ }
479
+ return cutAllResult;
480
+ } catch (_) {
481
+ var _error = _, _hasError = true;
482
+ } finally {
483
+ __callDispose(_stack, _error, _hasError);
390
484
  }
391
- const oc = occtBoundary.getKernel().oc;
392
- const r = shapeTypes.gcWithScope();
393
- const toolCompound = r(buildCompoundOcInternal(tools.map((s) => s.wrapped)));
394
- const progress = r(new oc.Message_ProgressRange_1());
395
- const cutOp = r(new oc.BRepAlgoAPI_Cut_3(base.wrapped, toolCompound, progress));
396
- applyGlue(cutOp, optimisation);
397
- cutOp.SetRunParallel(true);
398
- cutOp.Build(progress);
399
- if (simplify) cutOp.SimplifyResult(true, true, 1e-3);
400
- const cutAllResult = castToShape3D(
401
- cutOp.Shape(),
402
- "CUT_ALL_NOT_3D",
403
- "cutAll did not produce a 3D shape"
404
- );
405
- if (cutAllResult.ok) {
406
- shapeFns.propagateOrigins(cutOp, [base, ...tools], cutAllResult.value);
407
- propagateFaceTags(cutOp, [base, ...tools], cutAllResult.value);
408
- propagateColors(cutOp, [base, ...tools], cutAllResult.value);
409
- }
410
- return cutAllResult;
411
485
  }
412
486
  function makeSectionFace(plane, size) {
413
- const oc = occtBoundary.getKernel().oc;
414
- const hx = vecOps.vecScale(plane.xDir, size);
415
- const hy = vecOps.vecScale(plane.yDir, size);
416
- const nhx = vecOps.vecScale(plane.xDir, -size);
417
- const nhy = vecOps.vecScale(plane.yDir, -size);
418
- const o = plane.origin;
419
- const corners = [
420
- vecOps.vecAdd(vecOps.vecAdd(o, nhx), nhy),
421
- vecOps.vecAdd(vecOps.vecAdd(o, hx), nhy),
422
- vecOps.vecAdd(vecOps.vecAdd(o, hx), hy),
423
- vecOps.vecAdd(vecOps.vecAdd(o, nhx), hy)
424
- ];
425
- const r = shapeTypes.gcWithScope();
426
- const pts = corners.map((c) => r(new oc.gp_Pnt_3(c[0], c[1], c[2])));
427
- const edges = [
428
- r(new oc.BRepBuilderAPI_MakeEdge_3(pts[0], pts[1])),
429
- r(new oc.BRepBuilderAPI_MakeEdge_3(pts[1], pts[2])),
430
- r(new oc.BRepBuilderAPI_MakeEdge_3(pts[2], pts[3])),
431
- r(new oc.BRepBuilderAPI_MakeEdge_3(pts[3], pts[0]))
432
- ];
433
- const wireBuilder = r(new oc.BRepBuilderAPI_MakeWire_1());
434
- for (const e of edges) {
435
- const edge = e.Edge();
436
- wireBuilder.Add_1(edge);
437
- edge.delete();
438
- }
439
- const progress = r(new oc.Message_ProgressRange_1());
440
- wireBuilder.Build(progress);
441
- const wire = wireBuilder.Wire();
442
- const faceBuilder = r(new oc.BRepBuilderAPI_MakeFace_15(wire, true));
443
- const face = faceBuilder.Face();
444
- wire.delete();
445
- return face;
487
+ var _stack = [];
488
+ try {
489
+ const oc = occtBoundary.getKernel().oc;
490
+ const hx = vecOps.vecScale(plane.xDir, size);
491
+ const hy = vecOps.vecScale(plane.yDir, size);
492
+ const nhx = vecOps.vecScale(plane.xDir, -size);
493
+ const nhy = vecOps.vecScale(plane.yDir, -size);
494
+ const o = plane.origin;
495
+ const corners = [
496
+ vecOps.vecAdd(vecOps.vecAdd(o, nhx), nhy),
497
+ vecOps.vecAdd(vecOps.vecAdd(o, hx), nhy),
498
+ vecOps.vecAdd(vecOps.vecAdd(o, hx), hy),
499
+ vecOps.vecAdd(vecOps.vecAdd(o, nhx), hy)
500
+ ];
501
+ const scope = __using(_stack, new shapeTypes.DisposalScope());
502
+ const pts = corners.map((c) => scope.register(new oc.gp_Pnt_3(c[0], c[1], c[2])));
503
+ const edges = [
504
+ scope.register(new oc.BRepBuilderAPI_MakeEdge_3(pts[0], pts[1])),
505
+ scope.register(new oc.BRepBuilderAPI_MakeEdge_3(pts[1], pts[2])),
506
+ scope.register(new oc.BRepBuilderAPI_MakeEdge_3(pts[2], pts[3])),
507
+ scope.register(new oc.BRepBuilderAPI_MakeEdge_3(pts[3], pts[0]))
508
+ ];
509
+ const wireBuilder = scope.register(new oc.BRepBuilderAPI_MakeWire_1());
510
+ for (const e of edges) {
511
+ const edge = e.Edge();
512
+ wireBuilder.Add_1(edge);
513
+ edge.delete();
514
+ }
515
+ const progress = scope.register(new oc.Message_ProgressRange_1());
516
+ wireBuilder.Build(progress);
517
+ const wire = wireBuilder.Wire();
518
+ const faceBuilder = scope.register(new oc.BRepBuilderAPI_MakeFace_15(wire, true));
519
+ const face = faceBuilder.Face();
520
+ wire.delete();
521
+ return face;
522
+ } catch (_) {
523
+ var _error = _, _hasError = true;
524
+ } finally {
525
+ __callDispose(_stack, _error, _hasError);
526
+ }
446
527
  }
447
528
  function section(shape, plane, { approximation = true, planeSize = 1e4 } = {}) {
448
529
  if (shape.wrapped.IsNull()) {