brepjs 8.8.2 → 8.8.3

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