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.
Files changed (86) hide show
  1. package/dist/2d.cjs +10 -8
  2. package/dist/2d.js +10 -8
  3. package/dist/{adjacencyFns-BJ6jcQ-N.cjs → adjacencyFns-CpKlADYt.cjs} +3 -3
  4. package/dist/{adjacencyFns-CnehwLNj.js → adjacencyFns-DECdcer5.js} +3 -3
  5. package/dist/{blueprint-BGWbpQ-w.js → blueprint-CaY00-X2.js} +16 -11
  6. package/dist/{blueprint-BSfG0Uik.cjs → blueprint-CpJLcUJV.cjs} +14 -10
  7. package/dist/{blueprintFns-C0-nGqlW.cjs → blueprintFns-B5nFaJI0.cjs} +2 -2
  8. package/dist/{blueprintFns-Bt1hKlL7.js → blueprintFns-vgwEIgI0.js} +2 -2
  9. package/dist/{blueprintSketcher-Bd5ZS9p6.cjs → blueprintSketcher-4e0yYtCY.cjs} +19 -11
  10. package/dist/{blueprintSketcher-BTGRoQ_G.js → blueprintSketcher-BjBjj2cK.js} +19 -11
  11. package/dist/{boolean2D-Cr6oLsbf.cjs → boolean2D-7heWA1co.cjs} +12 -8
  12. package/dist/{boolean2D-zZ9-qR5a.js → boolean2D-Bk-VrRyQ.js} +14 -9
  13. package/dist/brepjs.cjs +121 -81
  14. package/dist/brepjs.js +132 -85
  15. package/dist/{cameraFns-j2I9G3L_.cjs → cameraFns-CGwrxgqB.cjs} +5 -4
  16. package/dist/{cameraFns-CGMawqfi.js → cameraFns-DKEilV2v.js} +5 -4
  17. package/dist/core.cjs +2 -2
  18. package/dist/core.js +2 -2
  19. package/dist/{cornerFinder-CaXBdZz9.js → cornerFinder-C4s6pVZ-.js} +1 -1
  20. package/dist/{cornerFinder-CPwSLgpM.cjs → cornerFinder-zEgIFMnk.cjs} +1 -1
  21. package/dist/{curveFns-BBLaLG1U.cjs → curveFns-BZZYHVow.cjs} +8 -5
  22. package/dist/{curveFns-BoHbhtqX.js → curveFns-RczIU30U.js} +8 -5
  23. package/dist/{drawFns-DOkSdo8E.cjs → drawFns-BcXzWFfn.cjs} +59 -30
  24. package/dist/{drawFns-BrRbAeYB.js → drawFns-BjT3RaeQ.js} +59 -30
  25. package/dist/{faceFns-UozswcwP.cjs → faceFns-C4xNv2zn.cjs} +4 -3
  26. package/dist/{faceFns-Ce7Fq6j5.js → faceFns-fvp_zfuI.js} +6 -4
  27. package/dist/{healingFns-Dn0EFSHm.js → healingFns-AE5182Ds.js} +38 -21
  28. package/dist/{healingFns-mKogaVOk.cjs → healingFns-SxSiVPQa.cjs} +38 -21
  29. package/dist/{helpers-DuTAcGVX.cjs → helpers-CHYzwQMk.cjs} +6 -6
  30. package/dist/{helpers-CZsK8STz.js → helpers-CyLQ07aD.js} +6 -6
  31. package/dist/{importFns-Ch2YwieP.cjs → importFns-90S7P_7P.cjs} +5 -6
  32. package/dist/{importFns-CE4byS-8.js → importFns-DdXOAX6k.js} +5 -6
  33. package/dist/io.cjs +2 -2
  34. package/dist/io.js +2 -2
  35. package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
  36. package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
  37. package/dist/{loftFns-BYiUcAxk.cjs → loftFns-B3mbh5RA.cjs} +15 -9
  38. package/dist/{loftFns-DQVg8qxM.js → loftFns-CyY4qfvC.js} +15 -9
  39. package/dist/{measureFns-BbLLBg5q.js → measureFns-B1uLQugf.js} +3 -3
  40. package/dist/{measureFns-Cao9gY1L.cjs → measureFns-Cx2XJVVC.cjs} +3 -3
  41. package/dist/measurement.cjs +1 -1
  42. package/dist/measurement.js +1 -1
  43. package/dist/{meshFns-CnYIUU9b.cjs → meshFns-2ZxW-X9I.cjs} +3 -3
  44. package/dist/{meshFns-B6NveFwc.js → meshFns-DrO3d03M.js} +3 -3
  45. package/dist/{occtWasmAdapter-BQKQXF63.js → occtWasmAdapter-BEe---7w.js} +3 -1
  46. package/dist/{occtWasmAdapter-Aubfbks6.cjs → occtWasmAdapter-DEpy64ji.cjs} +3 -1
  47. package/dist/operations.cjs +2 -2
  48. package/dist/operations.js +2 -2
  49. package/dist/{originTrackingFns-uz38yuMp.cjs → originTrackingFns-D3rUK08B.cjs} +2 -2
  50. package/dist/{originTrackingFns-DXcggmgf.js → originTrackingFns-DIAwMSih.js} +2 -2
  51. package/dist/{primitiveFns-CmmTWOkO.js → primitiveFns-CDPqVTcc.js} +7 -5
  52. package/dist/{primitiveFns-DmEPf6av.cjs → primitiveFns-c7wqS-K2.cjs} +7 -5
  53. package/dist/projection.cjs +1 -1
  54. package/dist/projection.js +1 -1
  55. package/dist/query.cjs +2 -2
  56. package/dist/query.js +2 -2
  57. package/dist/{refResolveFns-CnPEaqHw.cjs → refResolveFns-Cm8ZHPl5.cjs} +10 -8
  58. package/dist/{refResolveFns-DqY7Cd00.js → refResolveFns-o3-Gdnjn.js} +10 -8
  59. package/dist/{rolldown-runtime-DakpK96I.cjs → rolldown-runtime-C0BPl7ul.cjs} +1 -1
  60. package/dist/{shapeFns-BLZ1dDSz.cjs → shapeFns-CJ6mph9b.cjs} +2 -2
  61. package/dist/{shapeFns-mYczuWOy.js → shapeFns-DEpbxB9Z.js} +2 -2
  62. package/dist/shapeRef.cjs +1 -1
  63. package/dist/shapeRef.js +1 -1
  64. package/dist/{shapeTypes-bHlssytH.js → shapeTypes-BHRboc_x.js} +235 -20
  65. package/dist/{shapeTypes-DZKuRt24.cjs → shapeTypes-D5Y41q7x.cjs} +219 -12
  66. package/dist/sketching.cjs +3 -3
  67. package/dist/sketching.js +3 -3
  68. package/dist/{solidBuilders-5tA9O1SM.cjs → solidBuilders-CsUkRC69.cjs} +14 -9
  69. package/dist/{solidBuilders-9s-j-ZiW.js → solidBuilders-DQQ0re9T.js} +14 -9
  70. package/dist/{surfaceBuilders-0x7j0ibk.cjs → surfaceBuilders-BXNZydNl.cjs} +7 -5
  71. package/dist/{surfaceBuilders-B7UnwkQz.js → surfaceBuilders-C8k0K7DR.js} +7 -5
  72. package/dist/text.cjs +2 -2
  73. package/dist/text.js +2 -2
  74. package/dist/{textBlueprints-DE3M-E9o.js → textBlueprints-BAyLXffK.js} +36 -21
  75. package/dist/{textBlueprints-BPbIpA4-.cjs → textBlueprints-t8MdWfki.cjs} +37 -22
  76. package/dist/{textMetrics-D3Bly1w4.js → textMetrics-CefI-bMN.js} +3 -2
  77. package/dist/{textMetrics-rRuWxQG_.cjs → textMetrics-DUEI9s5M.cjs} +3 -2
  78. package/dist/{threadFns-BAjFNk2_.js → threadFns-Bau5Sqad.js} +17 -12
  79. package/dist/{threadFns-BMT6ziG_.cjs → threadFns-OVYAleOH.cjs} +17 -12
  80. package/dist/topology.cjs +9 -9
  81. package/dist/topology.js +9 -9
  82. package/dist/{topologyQueryFns-DVhWxBwT.js → topologyQueryFns-QvPyCF-7.js} +1 -1
  83. package/dist/{topologyQueryFns-DZUpJz2p.cjs → topologyQueryFns-gah07J7-.cjs} +1 -1
  84. package/dist/{validityTypes-19mfqWVv.js → validityTypes-DokbYKzd.js} +1 -1
  85. package/dist/{validityTypes-CCnRq3A9.cjs → validityTypes-Dx-04qO0.cjs} +1 -1
  86. 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-DakpK96I.cjs");
3
- const require_shapeTypes = require("./shapeTypes-DZKuRt24.cjs");
4
- const require_occtWasmAdapter = require("./occtWasmAdapter-Aubfbks6.cjs");
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-DZUpJz2p.cjs");
8
- const require_validityTypes = require("./validityTypes-CCnRq3A9.cjs");
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-UozswcwP.cjs");
14
- const require_originTrackingFns = require("./originTrackingFns-uz38yuMp.cjs");
15
- const require_solidBuilders = require("./solidBuilders-5tA9O1SM.cjs");
16
- const require_primitiveFns = require("./primitiveFns-DmEPf6av.cjs");
17
- const require_shapeFns = require("./shapeFns-BLZ1dDSz.cjs");
18
- const require_curveFns = require("./curveFns-BBLaLG1U.cjs");
19
- const require_meshFns = require("./meshFns-CnYIUU9b.cjs");
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-0x7j0ibk.cjs");
22
- const require_healingFns = require("./healingFns-mKogaVOk.cjs");
23
- const require_threadFns = require("./threadFns-BMT6ziG_.cjs");
24
- const require_blueprintSketcher = require("./blueprintSketcher-Bd5ZS9p6.cjs");
25
- const require_helpers = require("./helpers-DuTAcGVX.cjs");
26
- const require_drawFns = require("./drawFns-DOkSdo8E.cjs");
27
- const require_measureFns = require("./measureFns-Cao9gY1L.cjs");
28
- const require_cornerFinder = require("./cornerFinder-CPwSLgpM.cjs");
29
- const require_boolean2D = require("./boolean2D-Cr6oLsbf.cjs");
30
- const require_blueprintFns = require("./blueprintFns-C0-nGqlW.cjs");
31
- const require_importFns = require("./importFns-Ch2YwieP.cjs");
32
- const require_loftFns = require("./loftFns-BYiUcAxk.cjs");
33
- const require_textBlueprints = require("./textBlueprints-BPbIpA4-.cjs");
34
- const require_cameraFns = require("./cameraFns-j2I9G3L_.cjs");
35
- const require_textMetrics = require("./textMetrics-rRuWxQG_.cjs");
36
- const require_adjacencyFns = require("./adjacencyFns-BJ6jcQ-N.cjs");
37
- const require_refResolveFns = require("./refResolveFns-CnPEaqHw.cjs");
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
- return require_errors.ok(makeHandle(new engine.value.VoxelField(mesh.vertices, mesh.triangles, params.value.resolution, params.value.padding)));
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
- return require_errors.ok(makeHandle(engine.value.VoxelField.boolean_of(a.vertices, a.triangles, b.vertices, b.triangles, BOOLEAN_OP_CODES[op], params.value.resolution, params.value.padding)));
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
- return require_errors.ok(makeFieldHandle(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)));
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
- return require_errors.ok(toMesh(_usingCtx$5.u(engine.value.lattice_infill(mesh.vertices, mesh.triangles, resolution, padding, tag, period, thickness))));
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
- return require_errors.ok(toMesh(_usingCtx3.u(engine.value.tpms_box(minX, minY, minZ, maxX, maxY, maxZ, resolution, padding, tag, period, thickness))));
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 shape = require_shapeTypes.castResultShape(require_shapeTypes.getKernel().bsplineSurface(points, rows, cols));
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 shape = require_shapeTypes.castResultShape(require_shapeTypes.getKernel().triangulatedSurface(points, rows, cols));
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 cast = require_shapeTypes.castResultShape(kernel.hull(ocShapes, tolerance));
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 cast = require_shapeTypes.castResultShape(kernel.hullFromPoints(objPoints, .1));
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 wrapped = require_shapeTypes.castResultShape(require_shapeTypes.getKernel().offset(shape.wrapped, radius, tolerance));
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 wrapped = require_shapeTypes.castResultShape(kernel.hullFromPoints(sumPoints, tolerance));
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 cast = require_shapeTypes.castResultShape(kernel.buildSolidFromFaces(ptObjs, triangles, tolerance));
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 rotation = require_threadFns.quatFromTo(dep.direction ?? [
2418
+ const dDep = dep.direction ?? [
2409
2419
  0,
2410
2420
  0,
2411
2421
  1
2412
- ], dRef);
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(Math.hypot(c[0], c[1], c[2]) < 1e-9 ? anyPerpendicular(nDep) : c, phi - angleRad)
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 rotation = require_threadFns.quatFromTo(normalize(dep.direction ?? [
2545
+ const dDep = normalize(dep.direction ?? [
2534
2546
  0,
2535
2547
  0,
2536
2548
  1
2537
- ]), dRef);
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) if (code === 8) current.layer = value;
2949
- else current.data.set(code, value);
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
- return require_errors.ok([require_shapeTypes.createWire(require_shapeTypes.getKernel().makeWire(edges))]);
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 cast = require_shapeTypes.castResultShape(kernel.sewAndSolidify(triFaces, tolerance));
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
- return require_errors.ok(require_shapeTypes.castResultShape(kernel.buildSolidFromFaces(points, faces, 1e-6)));
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
- return require_errors.ok(require_shapeTypes.castResultShape(require_shapeTypes.getKernel().importGLB(data)));
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
- tool = require_solidBuilders.makeCylinder(radius, tMax - tMin, [
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
- ], dir);
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 toolResult = require_textBlueprints.extrude(scope.register(require_primitiveFns.translate(faceResult.value, center)), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), -depth));
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 toolResult = require_textBlueprints.extrude(scope.register(require_primitiveFns.translate(faceResult.value, center)), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), height));
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
- return require_solidBuilders.fuse(s, _usingCtx4.u(require_primitiveFns.mirror(s, normal, planeOrigin)), { unsafe: true });
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 c = require_primitiveFns.translate(s, [
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) push(require_surfaceBuilders.makeLine([
4430
- tm.rRoot * Math.cos(thetaLeft),
4431
- tm.rRoot * Math.sin(thetaLeft),
4432
- 0
4433
- ], leftBase));
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
- push(require_surfaceBuilders.makeThreePointArc(leftTip, [
4468
+ const tipMid = [
4439
4469
  tm.rTip * Math.cos(center),
4440
4470
  tm.rTip * Math.sin(center),
4441
4471
  0
4442
- ], rightTip));
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) push(require_surfaceBuilders.makeLine(rightBase, [
4447
- tm.rRoot * Math.cos(thetaRight),
4448
- tm.rRoot * Math.sin(thetaRight),
4449
- 0
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
- push(require_surfaceBuilders.makeThreePointArc(needsRadialBridge ? [
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
- ], needsRadialBridge ? [
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 wireResult = require_surfaceBuilders.assembleWire([_usingCtx$2.u(new require_shapeTypes.DisposalScope()).register(require_surfaceBuilders.makeCircle(radius, [
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 rotated = require_primitiveFns.rotate(planetProto, planetSelfRotationAngle(orbital, cfg.sunTeeth, cfg.planetTeeth) * 180 / Math.PI);
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;