brepjs 18.40.0 → 18.41.0

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 (83) hide show
  1. package/dist/2d.cjs +6 -6
  2. package/dist/2d.js +6 -6
  3. package/dist/{blueprint-Dt8UBapg.cjs → blueprint-B0_xM93f.cjs} +5 -5
  4. package/dist/{blueprint-DFX9Mice.js → blueprint-DGPC8bjk.js} +5 -5
  5. package/dist/{blueprintFns-DUrh_Vuo.cjs → blueprintFns-D8-3CcI7.cjs} +2 -2
  6. package/dist/{blueprintFns-DKm_TMpq.js → blueprintFns-DDU4nEC4.js} +2 -2
  7. package/dist/{blueprintSketcher-CqdAW9fb.js → blueprintSketcher-CMcZhA20.js} +3 -3
  8. package/dist/{blueprintSketcher-CSWQy4s0.cjs → blueprintSketcher-Dg22-24R.cjs} +3 -3
  9. package/dist/{boolean2D-CAMPcmle.js → boolean2D-BrhrzzT5.js} +4 -4
  10. package/dist/{boolean2D-LKA2WvT1.cjs → boolean2D-BtLSFZ3U.cjs} +4 -4
  11. package/dist/{booleanFns-BherB6vd.cjs → booleanFns-D_XT8nXq.cjs} +4 -4
  12. package/dist/{booleanFns-ky-zHUHR.js → booleanFns-DthZnyWl.js} +4 -4
  13. package/dist/brepjs.cjs +25 -25
  14. package/dist/brepjs.js +25 -25
  15. package/dist/{cameraFns-AIlIbZXo.js → cameraFns-BBC_mCJX.js} +2 -2
  16. package/dist/{cameraFns-D_6uvLNa.cjs → cameraFns-N7btylSp.cjs} +2 -2
  17. package/dist/core.cjs +1 -1
  18. package/dist/core.js +1 -1
  19. package/dist/{cornerFinder-D0D01Iv4.cjs → cornerFinder-BrRfeGOx.cjs} +1 -1
  20. package/dist/{cornerFinder-CHrWbA9J.js → cornerFinder-BxFYMbKt.js} +1 -1
  21. package/dist/{curveFns-DC4gwhim.js → curveFns-CWpRYhZ8.js} +1 -1
  22. package/dist/{curveFns-DplagD2s.cjs → curveFns-Cka3gEep.cjs} +1 -1
  23. package/dist/{drawFns-shtE96tg.cjs → drawFns-BBXf1AmG.cjs} +12 -12
  24. package/dist/{drawFns-2FS4bc0v.js → drawFns-Wck6Yw-Z.js} +12 -12
  25. package/dist/{extrudeFns-CGXjoiA3.cjs → extrudeFns-BESH_tno.cjs} +1 -1
  26. package/dist/{extrudeFns-B2koxf8d.js → extrudeFns-Dx6KA3po.js} +1 -1
  27. package/dist/{faceFns-D9IXo1EY.js → faceFns-BuDNpvDH.js} +2 -2
  28. package/dist/{faceFns-D-i7rp7Y.cjs → faceFns-ZhwskGuW.cjs} +2 -2
  29. package/dist/{helpers-6tUnAb2m.js → helpers-Ceyjiq3b.js} +6 -6
  30. package/dist/{helpers-DoflJrR5.cjs → helpers-QPPvHzFe.cjs} +6 -6
  31. package/dist/{historyFns-1a841VzH.cjs → historyFns-QbZ_1wDe.cjs} +4 -4
  32. package/dist/{historyFns-Y0v0weT9.js → historyFns-vMIhK4q_.js} +4 -4
  33. package/dist/{importFns-BsE_nugZ.js → importFns-DWphNxxR.js} +2 -2
  34. package/dist/{importFns-CzArHdFY.cjs → importFns-pGOL3CD4.cjs} +2 -2
  35. package/dist/io.cjs +2 -2
  36. package/dist/io.js +2 -2
  37. package/dist/kernel/interfaces/ioOps.d.ts +1 -1
  38. package/dist/kernel/occtWasm/booleanOps.d.ts +8 -0
  39. package/dist/kernel/occtWasm/ioOps.d.ts +1 -1
  40. package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
  41. package/dist/kernel/occtWasm/occtWasmAdapter.d.ts +1 -1
  42. package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
  43. package/dist/{measureFns-ry6_O167.js → measureFns-BTcMyzXv.js} +3 -3
  44. package/dist/{measureFns-gkq2sYtY.cjs → measureFns-DD5O45zv.cjs} +3 -3
  45. package/dist/measurement.cjs +1 -1
  46. package/dist/measurement.js +1 -1
  47. package/dist/{meshFns-D-4VAld_.cjs → meshFns-CckSsqhi.cjs} +4 -4
  48. package/dist/{meshFns-CEECiqKQ.js → meshFns-Qkk4e--0.js} +4 -4
  49. package/dist/{occtWasmAdapter-DNXBos24.js → occtWasmAdapter-8XGnYsEi.js} +79 -19
  50. package/dist/{occtWasmAdapter-sH6wg1Z6.cjs → occtWasmAdapter-ddZvP8Ns.cjs} +79 -19
  51. package/dist/operations.cjs +2 -2
  52. package/dist/operations.js +2 -2
  53. package/dist/{primitiveFns-BiEXbXUy.js → primitiveFns-BgvbV1Xe.js} +7 -7
  54. package/dist/{primitiveFns-IFpwC8fs.cjs → primitiveFns-MYl8wCQ_.cjs} +7 -7
  55. package/dist/projection.cjs +1 -1
  56. package/dist/projection.js +1 -1
  57. package/dist/query.cjs +2 -2
  58. package/dist/query.js +2 -2
  59. package/dist/{shapeFns-BsNw-egb.cjs → shapeFns-CUjmsc5n.cjs} +2 -2
  60. package/dist/{shapeFns-2ZBm7gZd.js → shapeFns-DLKjTl1m.js} +2 -2
  61. package/dist/shapeRef.cjs +1 -1
  62. package/dist/shapeRef.js +1 -1
  63. package/dist/{shapeRefFns-4I03ZCKU.cjs → shapeRefFns-AlYSd7xG.cjs} +4 -4
  64. package/dist/{shapeRefFns-VuIGZejB.js → shapeRefFns-BCBT3qjs.js} +4 -4
  65. package/dist/{shapeTypes-CiEgOVu3.js → shapeTypes-B7GYg91f.js} +1 -1
  66. package/dist/{shapeTypes-CUTaIMCC.cjs → shapeTypes-BwbnQSzG.cjs} +1 -1
  67. package/dist/sketching.cjs +3 -3
  68. package/dist/sketching.js +3 -3
  69. package/dist/{solidBuilders-0Y1U2uMs.cjs → solidBuilders-C_CVKD9y.cjs} +2 -2
  70. package/dist/{solidBuilders-DV8lvLq3.js → solidBuilders-E9QDs2AH.js} +2 -2
  71. package/dist/{surfaceBuilders-OUTnDgr5.cjs → surfaceBuilders-Ae2XRahr.cjs} +2 -2
  72. package/dist/{surfaceBuilders-DYzjeM-y.js → surfaceBuilders-DbqaooTh.js} +2 -2
  73. package/dist/text.cjs +2 -2
  74. package/dist/text.js +2 -2
  75. package/dist/{textBlueprints-00P4WdIq.js → textBlueprints-CStv8fXQ.js} +7 -7
  76. package/dist/{textBlueprints-DQcSGfcQ.cjs → textBlueprints-IJMNaWq4.cjs} +7 -7
  77. package/dist/{textMetrics-8KJFgEn5.js → textMetrics-B5sFd2Mb.js} +1 -1
  78. package/dist/{textMetrics-Av8N82V_.cjs → textMetrics-CL4DE2-I.cjs} +1 -1
  79. package/dist/topology.cjs +7 -7
  80. package/dist/topology.js +7 -7
  81. package/dist/{topologyQueryFns-DXKyoFvA.js → topologyQueryFns-CBIJ7Ixi.js} +1 -1
  82. package/dist/{topologyQueryFns-j7sTNssl.cjs → topologyQueryFns-Cb25Braq.cjs} +1 -1
  83. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
- const require_shapeTypes = require("./shapeTypes-CUTaIMCC.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-BwbnQSzG.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
3
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
4
- const require_faceFns = require("./faceFns-D-i7rp7Y.cjs");
5
- const require_shapeFns = require("./shapeFns-BsNw-egb.cjs");
6
- const require_booleanFns = require("./booleanFns-BherB6vd.cjs");
4
+ const require_faceFns = require("./faceFns-ZhwskGuW.cjs");
5
+ const require_shapeFns = require("./shapeFns-CUjmsc5n.cjs");
6
+ const require_booleanFns = require("./booleanFns-D_XT8nXq.cjs");
7
7
  //#region src/utils/uuid.ts
8
8
  /** Generate a v4-style UUID string using `crypto.getRandomValues`. */
9
9
  function uuidv() {
@@ -1,9 +1,9 @@
1
- import { B as createKernelHandle, Z as getKernel, t as castShape } from "./shapeTypes-CiEgOVu3.js";
1
+ import { B as createKernelHandle, Z as getKernel, t as castShape } from "./shapeTypes-B7GYg91f.js";
2
2
  import { A as ok, b as err, d as validationError, n as computationError, r as ioError } from "./errors-DNWJsfVU.js";
3
3
  import { d as vecNormalize, s as vecIsZero } from "./vecOps-SKPRvPH-.js";
4
- import { v as fromBREP } from "./faceFns-D9IXo1EY.js";
5
- import { s as toBREP } from "./shapeFns-2ZBm7gZd.js";
6
- import { a as fuseAll } from "./booleanFns-ky-zHUHR.js";
4
+ import { v as fromBREP } from "./faceFns-BuDNpvDH.js";
5
+ import { s as toBREP } from "./shapeFns-DLKjTl1m.js";
6
+ import { a as fuseAll } from "./booleanFns-DthZnyWl.js";
7
7
  //#region src/utils/uuid.ts
8
8
  /** Generate a v4-style UUID string using `crypto.getRandomValues`. */
9
9
  function uuidv() {
@@ -1,8 +1,8 @@
1
- import { Z as getKernel, t as castShape } from "./shapeTypes-CiEgOVu3.js";
1
+ import { Z as getKernel, t as castShape } from "./shapeTypes-B7GYg91f.js";
2
2
  import { n as wasmIndex, t as vec3At$1 } from "./vec3-Dpha8d5k.js";
3
3
  import { A as ok, b as err, r as ioError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
4
4
  import { n as getAtOrThrow } from "./arrayAccess-DrUGPADn.js";
5
- import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-DFX9Mice.js";
5
+ import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-DGPC8bjk.js";
6
6
  //#region src/io/objExportFns.ts
7
7
  /** Read a vec3 from a typed array at the given vertex index. */
8
8
  function vec3At(arr, i) {
@@ -1,8 +1,8 @@
1
- const require_shapeTypes = require("./shapeTypes-CUTaIMCC.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-BwbnQSzG.cjs");
2
2
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
3
3
  const require_errors = require("./errors-CXJtc4I7.cjs");
4
4
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
5
- const require_blueprint = require("./blueprint-Dt8UBapg.cjs");
5
+ const require_blueprint = require("./blueprint-B0_xM93f.cjs");
6
6
  //#region src/io/objExportFns.ts
7
7
  /** Read a vec3 from a typed array at the given vertex index. */
8
8
  function vec3At(arr, i) {
package/dist/io.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_meshFns = require("./meshFns-D-4VAld_.cjs");
3
- const require_importFns = require("./importFns-CzArHdFY.cjs");
2
+ const require_meshFns = require("./meshFns-CckSsqhi.cjs");
3
+ const require_importFns = require("./importFns-pGOL3CD4.cjs");
4
4
  exports.blueprintToDXF = require_importFns.blueprintToDXF;
5
5
  exports.exportDXF = require_importFns.exportDXF;
6
6
  exports.exportGlb = require_importFns.exportGlb;
package/dist/io.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-CEECiqKQ.js";
2
- import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-BsE_nugZ.js";
1
+ import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-Qkk4e--0.js";
2
+ import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-DWphNxxR.js";
3
3
  export { blueprintToDXF, exportDXF, exportGlb, exportGltf, exportIGES, exportOBJ, exportSTEP, exportSTEPConfigured, exportSTL, exportThreeMF, importIGES, importSTEP, importSTL, importSVG, importSVGPathD };
@@ -1,7 +1,7 @@
1
1
  import { KernelShape, KernelType, StepAssemblyPart } from '../types.js';
2
2
  export interface KernelIOOps {
3
3
  exportSTEP(shapes: KernelShape[]): string;
4
- exportSTL(shape: KernelShape, binary?: boolean): string | ArrayBuffer;
4
+ exportSTL(shape: KernelShape, binary?: boolean, tolerance?: number, angularTolerance?: number): string | ArrayBuffer;
5
5
  importSTEP(data: string | ArrayBuffer): KernelShape[];
6
6
  importSTL(data: string | ArrayBuffer): KernelShape;
7
7
  exportIGES(shapes: KernelShape[]): string;
@@ -1,5 +1,13 @@
1
1
  import { BooleanOpType, BooleanOptions, CheckBooleanResult, KernelMeshResult, KernelShape } from '../types.js';
2
2
  import { OcctKernelWasm, OcctWasmModule } from './occtWasmTypes.js';
3
+ /**
4
+ * Normalize a boolean tool to a single fused solid when it is a compound of
5
+ * multiple solids (e.g. engraved text — one solid per glyph). occt-wasm's
6
+ * boolean returns an empty result for such compound tools where opencascade
7
+ * tolerated them; fusing the solids first yields a usable single tool.
8
+ * Single-solid (or non-solid) tools pass through untouched.
9
+ */
10
+ export declare function resolveBooleanTool(k: OcctKernelWasm, tool: KernelShape): number;
3
11
  export declare function fuse(k: OcctKernelWasm, shape: KernelShape, tool: KernelShape, _options?: BooleanOptions): KernelShape;
4
12
  export declare function cut(k: OcctKernelWasm, shape: KernelShape, tool: KernelShape, _options?: BooleanOptions): KernelShape;
5
13
  export declare function intersect(k: OcctKernelWasm, shape: KernelShape, tool: KernelShape, _options?: BooleanOptions): KernelShape;
@@ -18,7 +18,7 @@ type MeshFn = (shape: KernelShape, options: {
18
18
  }>;
19
19
  };
20
20
  export declare function exportSTEP(k: OcctKernelWasm, makeCompound: CompoundFn, shapes: KernelShape[]): string;
21
- export declare function exportSTL(k: OcctKernelWasm, shape: KernelShape, binary?: boolean): string | ArrayBuffer;
21
+ export declare function exportSTL(k: OcctKernelWasm, mesh: MeshFn, shape: KernelShape, binary?: boolean, tolerance?: number, angularTolerance?: number): string | ArrayBuffer;
22
22
  export declare function importSTEP(k: OcctKernelWasm, data: string | ArrayBuffer): KernelShape[];
23
23
  export declare function importSTL(k: OcctKernelWasm, Module: OcctWasmModule, data: string | ArrayBuffer): KernelShape;
24
24
  export declare function exportIGES(k: OcctKernelWasm, makeCompound: CompoundFn, shapes: KernelShape[]): string;
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_occtWasmAdapter = require("../../occtWasmAdapter-sH6wg1Z6.cjs");
2
+ const require_occtWasmAdapter = require("../../occtWasmAdapter-ddZvP8Ns.cjs");
3
3
  exports.OcctWasmAdapter = require_occtWasmAdapter.OcctWasmAdapter;
@@ -188,7 +188,7 @@ export declare class OcctWasmAdapter implements KernelAdapter {
188
188
  hasTriangulation(shape: KernelShape): boolean;
189
189
  meshShape(shape: KernelShape, tolerance: number, angularTolerance: number): void;
190
190
  exportSTEP(shapes: KernelShape[]): string;
191
- exportSTL(shape: KernelShape, binary?: boolean): string | ArrayBuffer;
191
+ exportSTL(shape: KernelShape, binary?: boolean, tolerance?: number, angularTolerance?: number): string | ArrayBuffer;
192
192
  importSTEP(data: string | ArrayBuffer): KernelShape[];
193
193
  importSTL(data: string | ArrayBuffer): KernelShape;
194
194
  exportIGES(shapes: KernelShape[]): string;
@@ -1,2 +1,2 @@
1
- import { t as OcctWasmAdapter } from "../../occtWasmAdapter-DNXBos24.js";
1
+ import { t as OcctWasmAdapter } from "../../occtWasmAdapter-8XGnYsEi.js";
2
2
  export { OcctWasmAdapter };
@@ -1,7 +1,7 @@
1
- import { Z as getKernel } from "./shapeTypes-CiEgOVu3.js";
1
+ import { Z as getKernel } from "./shapeTypes-B7GYg91f.js";
2
2
  import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
3
- import { w as kernelCallRaw } from "./topologyQueryFns-DXKyoFvA.js";
4
- import { p as uvBounds } from "./faceFns-D9IXo1EY.js";
3
+ import { w as kernelCallRaw } from "./topologyQueryFns-CBIJ7Ixi.js";
4
+ import { p as uvBounds } from "./faceFns-BuDNpvDH.js";
5
5
  //#region src/measurement/measureCache.ts
6
6
  var cache = /* @__PURE__ */ new WeakMap();
7
7
  function getCachedMeasurement(shape, key) {
@@ -1,7 +1,7 @@
1
- const require_shapeTypes = require("./shapeTypes-CUTaIMCC.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-BwbnQSzG.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-j7sTNssl.cjs");
4
- const require_faceFns = require("./faceFns-D-i7rp7Y.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Cb25Braq.cjs");
4
+ const require_faceFns = require("./faceFns-ZhwskGuW.cjs");
5
5
  //#region src/measurement/measureCache.ts
6
6
  var cache = /* @__PURE__ */ new WeakMap();
7
7
  function getCachedMeasurement(shape, key) {
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_measureFns = require("./measureFns-gkq2sYtY.cjs");
2
+ const require_measureFns = require("./measureFns-DD5O45zv.cjs");
3
3
  exports.createDistanceQuery = require_measureFns.createDistanceQuery;
4
4
  exports.measureArea = require_measureFns.measureArea;
5
5
  exports.measureDistance = require_measureFns.measureDistance;
@@ -1,2 +1,2 @@
1
- import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-ry6_O167.js";
1
+ import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-BTcMyzXv.js";
2
2
  export { createDistanceQuery, measureArea, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps };
@@ -1,7 +1,7 @@
1
- const require_shapeTypes = require("./shapeTypes-CUTaIMCC.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-BwbnQSzG.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-j7sTNssl.cjs");
4
- const require_shapeFns = require("./shapeFns-BsNw-egb.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Cb25Braq.cjs");
4
+ const require_shapeFns = require("./shapeFns-CUjmsc5n.cjs");
5
5
  //#region src/topology/meshCache.ts
6
6
  /**
7
7
  * Build a parameter key for the inner cache map (excludes shape identity).
@@ -268,7 +268,7 @@ function exportSTL(shape, { tolerance = .001, angularTolerance = .1, binary = fa
268
268
  if (unserializable) return require_errors.err(unserializable);
269
269
  try {
270
270
  if (!require_shapeTypes.getKernel().hasTriangulation(shape.wrapped)) require_shapeTypes.getKernel().meshShape(shape.wrapped, tolerance, angularTolerance);
271
- const stlData = require_shapeTypes.getKernel().exportSTL(shape.wrapped, binary);
271
+ const stlData = require_shapeTypes.getKernel().exportSTL(shape.wrapped, binary, tolerance, angularTolerance);
272
272
  return require_errors.ok(new Blob([stlData], { type: "application/sla" }));
273
273
  } catch (e) {
274
274
  return require_errors.err(exportError(e, "STL"));
@@ -1,7 +1,7 @@
1
- import { Z as getKernel } from "./shapeTypes-CiEgOVu3.js";
1
+ import { Z as getKernel } from "./shapeTypes-B7GYg91f.js";
2
2
  import { A as ok, b as err, r as ioError } from "./errors-DNWJsfVU.js";
3
- import { d as getSolids, n as getBounds } from "./topologyQueryFns-DXKyoFvA.js";
4
- import { O as getFaceOrigins } from "./shapeFns-2ZBm7gZd.js";
3
+ import { d as getSolids, n as getBounds } from "./topologyQueryFns-CBIJ7Ixi.js";
4
+ import { O as getFaceOrigins } from "./shapeFns-DLKjTl1m.js";
5
5
  //#region src/topology/meshCache.ts
6
6
  /**
7
7
  * Build a parameter key for the inner cache map (excludes shape identity).
@@ -268,7 +268,7 @@ function exportSTL(shape, { tolerance = .001, angularTolerance = .1, binary = fa
268
268
  if (unserializable) return err(unserializable);
269
269
  try {
270
270
  if (!getKernel().hasTriangulation(shape.wrapped)) getKernel().meshShape(shape.wrapped, tolerance, angularTolerance);
271
- const stlData = getKernel().exportSTL(shape.wrapped, binary);
271
+ const stlData = getKernel().exportSTL(shape.wrapped, binary, tolerance, angularTolerance);
272
272
  return ok(new Blob([stlData], { type: "application/sla" }));
273
273
  } catch (e) {
274
274
  return err(exportError(e, "STL"));
@@ -477,10 +477,17 @@ function scaleCurve2d$1(c, factor, cx, cy) {
477
477
  switch (c.__bk2d) {
478
478
  case "line": {
479
479
  const [ox, oy] = scalePoint(c.ox, c.oy);
480
+ const [ex, ey] = scalePoint(c.ox + c.dx * c.len, c.oy + c.dy * c.len);
481
+ const ndx = ex - ox;
482
+ const ndy = ey - oy;
483
+ const nlen = Math.sqrt(ndx * ndx + ndy * ndy);
480
484
  return {
481
485
  ...c,
482
486
  ox,
483
- oy
487
+ oy,
488
+ dx: nlen > 0 ? ndx / nlen : c.dx,
489
+ dy: nlen > 0 ? ndy / nlen : c.dy,
490
+ len: nlen
484
491
  };
485
492
  }
486
493
  case "circle": {
@@ -1134,14 +1141,30 @@ function buildOcShim(module, k) {
1134
1141
  }
1135
1142
  //#endregion
1136
1143
  //#region src/kernel/occtWasm/booleanOps.ts
1144
+ /**
1145
+ * Normalize a boolean tool to a single fused solid when it is a compound of
1146
+ * multiple solids (e.g. engraved text — one solid per glyph). occt-wasm's
1147
+ * boolean returns an empty result for such compound tools where opencascade
1148
+ * tolerated them; fusing the solids first yields a usable single tool.
1149
+ * Single-solid (or non-solid) tools pass through untouched.
1150
+ */
1151
+ function resolveBooleanTool(k, tool) {
1152
+ const toolId = unwrap(tool);
1153
+ const solids = k.getSubShapes(toolId, "solid");
1154
+ try {
1155
+ return solids.size() > 1 ? k.fuseAll(solids) : toolId;
1156
+ } finally {
1157
+ solids.delete();
1158
+ }
1159
+ }
1137
1160
  function fuse(k, shape, tool, _options) {
1138
1161
  return wrapResult(k, k.fuse(unwrap(shape), unwrap(tool)));
1139
1162
  }
1140
1163
  function cut(k, shape, tool, _options) {
1141
- return wrapResult(k, k.cut(unwrap(shape), unwrap(tool)));
1164
+ return wrapResult(k, k.cut(unwrap(shape), resolveBooleanTool(k, tool)));
1142
1165
  }
1143
1166
  function intersect(k, shape, tool, _options) {
1144
- return wrapResult(k, k.intersect(unwrap(shape), unwrap(tool)));
1167
+ return wrapResult(k, k.intersect(unwrap(shape), resolveBooleanTool(k, tool)));
1145
1168
  }
1146
1169
  function section(k, shape, plane, _approximation) {
1147
1170
  return wrapResult(k, k.section(unwrap(shape), unwrap(plane)));
@@ -2611,16 +2634,56 @@ function exportSTEP(k, makeCompound, shapes) {
2611
2634
  const compound = makeCompound(shapes);
2612
2635
  return k.exportStep(unwrap(compound));
2613
2636
  }
2614
- function exportSTL(k, shape, binary) {
2615
- const ascii = !binary;
2616
- const result = k.exportStl(unwrap(shape), .1, ascii);
2637
+ function exportSTL(k, mesh, shape, binary, tolerance = .001, angularTolerance = .1) {
2617
2638
  if (binary) {
2618
- const buf = new ArrayBuffer(result.length);
2619
- const view = new Uint8Array(buf);
2620
- for (let i = 0; i < result.length; i++) view[i] = result.charCodeAt(i);
2621
- return buf;
2639
+ const { vertices, triangles } = mesh(shape, {
2640
+ tolerance,
2641
+ angularTolerance,
2642
+ skipNormals: true
2643
+ });
2644
+ return buildBinarySTL(vertices, triangles);
2622
2645
  }
2623
- return result;
2646
+ return k.exportStl(unwrap(shape), tolerance, true);
2647
+ }
2648
+ /** Serialize a triangle soup as a binary STL (80-byte header + uint32 count + 50B/tri). */
2649
+ function buildBinarySTL(vertices, triangles) {
2650
+ const triCount = Math.floor(triangles.length / 3);
2651
+ const buffer = /* @__PURE__ */ new ArrayBuffer(84 + triCount * 50);
2652
+ const view = new DataView(buffer);
2653
+ view.setUint32(80, triCount, true);
2654
+ let offset = 84;
2655
+ for (let i = 0; i < triCount; i++) {
2656
+ const ia = (triangles[i * 3] ?? 0) * 3;
2657
+ const ib = (triangles[i * 3 + 1] ?? 0) * 3;
2658
+ const ic = (triangles[i * 3 + 2] ?? 0) * 3;
2659
+ const ax = vertices[ia] ?? 0, ay = vertices[ia + 1] ?? 0, az = vertices[ia + 2] ?? 0;
2660
+ const bx = vertices[ib] ?? 0, by = vertices[ib + 1] ?? 0, bz = vertices[ib + 2] ?? 0;
2661
+ const cx = vertices[ic] ?? 0, cy = vertices[ic + 1] ?? 0, cz = vertices[ic + 2] ?? 0;
2662
+ const ux = bx - ax, uy = by - ay, uz = bz - az;
2663
+ const vx = cx - ax, vy = cy - ay, vz = cz - az;
2664
+ let nx = uy * vz - uz * vy;
2665
+ let ny = uz * vx - ux * vz;
2666
+ let nz = ux * vy - uy * vx;
2667
+ const len = Math.hypot(nx, ny, nz) || 1;
2668
+ nx /= len;
2669
+ ny /= len;
2670
+ nz /= len;
2671
+ view.setFloat32(offset, nx, true);
2672
+ view.setFloat32(offset + 4, ny, true);
2673
+ view.setFloat32(offset + 8, nz, true);
2674
+ view.setFloat32(offset + 12, ax, true);
2675
+ view.setFloat32(offset + 16, ay, true);
2676
+ view.setFloat32(offset + 20, az, true);
2677
+ view.setFloat32(offset + 24, bx, true);
2678
+ view.setFloat32(offset + 28, by, true);
2679
+ view.setFloat32(offset + 32, bz, true);
2680
+ view.setFloat32(offset + 36, cx, true);
2681
+ view.setFloat32(offset + 40, cy, true);
2682
+ view.setFloat32(offset + 44, cz, true);
2683
+ view.setUint16(offset + 48, 0, true);
2684
+ offset += 50;
2685
+ }
2686
+ return buffer;
2624
2687
  }
2625
2688
  function importSTEP(k, data) {
2626
2689
  const str = typeof data === "string" ? data : new TextDecoder().decode(data);
@@ -3301,10 +3364,7 @@ function rotateCurve2d(curve, angle, cx, cy) {
3301
3364
  return c2dWrap(rotateCurve2d$1(c2d(curve), angle, cx, cy));
3302
3365
  }
3303
3366
  function scaleCurve2d(curve, factor, cx, cy) {
3304
- const result = scaleCurve2d$1(c2d(curve), factor, cx, cy);
3305
- const r = result;
3306
- if (r.__bk2d === "line" && typeof r.len === "number") r.len = r.len * Math.abs(factor);
3307
- return c2dWrap(result);
3367
+ return c2dWrap(scaleCurve2d$1(c2d(curve), factor, cx, cy));
3308
3368
  }
3309
3369
  function mirrorCurve2dAtPoint(curve, cx, cy) {
3310
3370
  return c2dWrap(mirrorAtPoint(c2d(curve), cx, cy));
@@ -3859,7 +3919,7 @@ function fuseWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound
3859
3919
  function cutWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound, _options) {
3860
3920
  const hashVec = makeVecInt(Module, inputFaceHashes);
3861
3921
  try {
3862
- const { id, evolution } = parseEvolution(k.cutWithHistory(unwrap(shape), unwrap(tool), hashVec, hashUpperBound));
3922
+ const { id, evolution } = parseEvolution(k.cutWithHistory(unwrap(shape), resolveBooleanTool(k, tool), hashVec, hashUpperBound));
3863
3923
  return {
3864
3924
  shape: wrapResult(k, id),
3865
3925
  evolution,
@@ -3876,7 +3936,7 @@ function cutWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound,
3876
3936
  function intersectWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound, _options) {
3877
3937
  const hashVec = makeVecInt(Module, inputFaceHashes);
3878
3938
  try {
3879
- const { id, evolution } = parseEvolution(k.intersectWithHistory(unwrap(shape), unwrap(tool), hashVec, hashUpperBound));
3939
+ const { id, evolution } = parseEvolution(k.intersectWithHistory(unwrap(shape), resolveBooleanTool(k, tool), hashVec, hashUpperBound));
3880
3940
  return {
3881
3941
  shape: wrapResult(k, id),
3882
3942
  evolution,
@@ -4404,8 +4464,8 @@ var OcctWasmAdapter = class OcctWasmAdapter {
4404
4464
  exportSTEP(shapes) {
4405
4465
  return exportSTEP(this.k, this.makeCompound.bind(this), shapes);
4406
4466
  }
4407
- exportSTL(shape, binary) {
4408
- return exportSTL(this.k, shape, binary);
4467
+ exportSTL(shape, binary, tolerance, angularTolerance) {
4468
+ return exportSTL(this.k, this.mesh.bind(this), shape, binary, tolerance, angularTolerance);
4409
4469
  }
4410
4470
  importSTEP(data) {
4411
4471
  return importSTEP(this.k, data);
@@ -477,10 +477,17 @@ function scaleCurve2d$1(c, factor, cx, cy) {
477
477
  switch (c.__bk2d) {
478
478
  case "line": {
479
479
  const [ox, oy] = scalePoint(c.ox, c.oy);
480
+ const [ex, ey] = scalePoint(c.ox + c.dx * c.len, c.oy + c.dy * c.len);
481
+ const ndx = ex - ox;
482
+ const ndy = ey - oy;
483
+ const nlen = Math.sqrt(ndx * ndx + ndy * ndy);
480
484
  return {
481
485
  ...c,
482
486
  ox,
483
- oy
487
+ oy,
488
+ dx: nlen > 0 ? ndx / nlen : c.dx,
489
+ dy: nlen > 0 ? ndy / nlen : c.dy,
490
+ len: nlen
484
491
  };
485
492
  }
486
493
  case "circle": {
@@ -1134,14 +1141,30 @@ function buildOcShim(module, k) {
1134
1141
  }
1135
1142
  //#endregion
1136
1143
  //#region src/kernel/occtWasm/booleanOps.ts
1144
+ /**
1145
+ * Normalize a boolean tool to a single fused solid when it is a compound of
1146
+ * multiple solids (e.g. engraved text — one solid per glyph). occt-wasm's
1147
+ * boolean returns an empty result for such compound tools where opencascade
1148
+ * tolerated them; fusing the solids first yields a usable single tool.
1149
+ * Single-solid (or non-solid) tools pass through untouched.
1150
+ */
1151
+ function resolveBooleanTool(k, tool) {
1152
+ const toolId = unwrap(tool);
1153
+ const solids = k.getSubShapes(toolId, "solid");
1154
+ try {
1155
+ return solids.size() > 1 ? k.fuseAll(solids) : toolId;
1156
+ } finally {
1157
+ solids.delete();
1158
+ }
1159
+ }
1137
1160
  function fuse(k, shape, tool, _options) {
1138
1161
  return wrapResult(k, k.fuse(unwrap(shape), unwrap(tool)));
1139
1162
  }
1140
1163
  function cut(k, shape, tool, _options) {
1141
- return wrapResult(k, k.cut(unwrap(shape), unwrap(tool)));
1164
+ return wrapResult(k, k.cut(unwrap(shape), resolveBooleanTool(k, tool)));
1142
1165
  }
1143
1166
  function intersect(k, shape, tool, _options) {
1144
- return wrapResult(k, k.intersect(unwrap(shape), unwrap(tool)));
1167
+ return wrapResult(k, k.intersect(unwrap(shape), resolveBooleanTool(k, tool)));
1145
1168
  }
1146
1169
  function section(k, shape, plane, _approximation) {
1147
1170
  return wrapResult(k, k.section(unwrap(shape), unwrap(plane)));
@@ -2611,16 +2634,56 @@ function exportSTEP(k, makeCompound, shapes) {
2611
2634
  const compound = makeCompound(shapes);
2612
2635
  return k.exportStep(unwrap(compound));
2613
2636
  }
2614
- function exportSTL(k, shape, binary) {
2615
- const ascii = !binary;
2616
- const result = k.exportStl(unwrap(shape), .1, ascii);
2637
+ function exportSTL(k, mesh, shape, binary, tolerance = .001, angularTolerance = .1) {
2617
2638
  if (binary) {
2618
- const buf = new ArrayBuffer(result.length);
2619
- const view = new Uint8Array(buf);
2620
- for (let i = 0; i < result.length; i++) view[i] = result.charCodeAt(i);
2621
- return buf;
2639
+ const { vertices, triangles } = mesh(shape, {
2640
+ tolerance,
2641
+ angularTolerance,
2642
+ skipNormals: true
2643
+ });
2644
+ return buildBinarySTL(vertices, triangles);
2622
2645
  }
2623
- return result;
2646
+ return k.exportStl(unwrap(shape), tolerance, true);
2647
+ }
2648
+ /** Serialize a triangle soup as a binary STL (80-byte header + uint32 count + 50B/tri). */
2649
+ function buildBinarySTL(vertices, triangles) {
2650
+ const triCount = Math.floor(triangles.length / 3);
2651
+ const buffer = /* @__PURE__ */ new ArrayBuffer(84 + triCount * 50);
2652
+ const view = new DataView(buffer);
2653
+ view.setUint32(80, triCount, true);
2654
+ let offset = 84;
2655
+ for (let i = 0; i < triCount; i++) {
2656
+ const ia = (triangles[i * 3] ?? 0) * 3;
2657
+ const ib = (triangles[i * 3 + 1] ?? 0) * 3;
2658
+ const ic = (triangles[i * 3 + 2] ?? 0) * 3;
2659
+ const ax = vertices[ia] ?? 0, ay = vertices[ia + 1] ?? 0, az = vertices[ia + 2] ?? 0;
2660
+ const bx = vertices[ib] ?? 0, by = vertices[ib + 1] ?? 0, bz = vertices[ib + 2] ?? 0;
2661
+ const cx = vertices[ic] ?? 0, cy = vertices[ic + 1] ?? 0, cz = vertices[ic + 2] ?? 0;
2662
+ const ux = bx - ax, uy = by - ay, uz = bz - az;
2663
+ const vx = cx - ax, vy = cy - ay, vz = cz - az;
2664
+ let nx = uy * vz - uz * vy;
2665
+ let ny = uz * vx - ux * vz;
2666
+ let nz = ux * vy - uy * vx;
2667
+ const len = Math.hypot(nx, ny, nz) || 1;
2668
+ nx /= len;
2669
+ ny /= len;
2670
+ nz /= len;
2671
+ view.setFloat32(offset, nx, true);
2672
+ view.setFloat32(offset + 4, ny, true);
2673
+ view.setFloat32(offset + 8, nz, true);
2674
+ view.setFloat32(offset + 12, ax, true);
2675
+ view.setFloat32(offset + 16, ay, true);
2676
+ view.setFloat32(offset + 20, az, true);
2677
+ view.setFloat32(offset + 24, bx, true);
2678
+ view.setFloat32(offset + 28, by, true);
2679
+ view.setFloat32(offset + 32, bz, true);
2680
+ view.setFloat32(offset + 36, cx, true);
2681
+ view.setFloat32(offset + 40, cy, true);
2682
+ view.setFloat32(offset + 44, cz, true);
2683
+ view.setUint16(offset + 48, 0, true);
2684
+ offset += 50;
2685
+ }
2686
+ return buffer;
2624
2687
  }
2625
2688
  function importSTEP(k, data) {
2626
2689
  const str = typeof data === "string" ? data : new TextDecoder().decode(data);
@@ -3301,10 +3364,7 @@ function rotateCurve2d(curve, angle, cx, cy) {
3301
3364
  return c2dWrap(rotateCurve2d$1(c2d(curve), angle, cx, cy));
3302
3365
  }
3303
3366
  function scaleCurve2d(curve, factor, cx, cy) {
3304
- const result = scaleCurve2d$1(c2d(curve), factor, cx, cy);
3305
- const r = result;
3306
- if (r.__bk2d === "line" && typeof r.len === "number") r.len = r.len * Math.abs(factor);
3307
- return c2dWrap(result);
3367
+ return c2dWrap(scaleCurve2d$1(c2d(curve), factor, cx, cy));
3308
3368
  }
3309
3369
  function mirrorCurve2dAtPoint(curve, cx, cy) {
3310
3370
  return c2dWrap(mirrorAtPoint(c2d(curve), cx, cy));
@@ -3859,7 +3919,7 @@ function fuseWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound
3859
3919
  function cutWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound, _options) {
3860
3920
  const hashVec = makeVecInt(Module, inputFaceHashes);
3861
3921
  try {
3862
- const { id, evolution } = parseEvolution(k.cutWithHistory(unwrap(shape), unwrap(tool), hashVec, hashUpperBound));
3922
+ const { id, evolution } = parseEvolution(k.cutWithHistory(unwrap(shape), resolveBooleanTool(k, tool), hashVec, hashUpperBound));
3863
3923
  return {
3864
3924
  shape: wrapResult(k, id),
3865
3925
  evolution,
@@ -3876,7 +3936,7 @@ function cutWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound,
3876
3936
  function intersectWithHistory(k, Module, shape, tool, inputFaceHashes, hashUpperBound, _options) {
3877
3937
  const hashVec = makeVecInt(Module, inputFaceHashes);
3878
3938
  try {
3879
- const { id, evolution } = parseEvolution(k.intersectWithHistory(unwrap(shape), unwrap(tool), hashVec, hashUpperBound));
3939
+ const { id, evolution } = parseEvolution(k.intersectWithHistory(unwrap(shape), resolveBooleanTool(k, tool), hashVec, hashUpperBound));
3880
3940
  return {
3881
3941
  shape: wrapResult(k, id),
3882
3942
  evolution,
@@ -4404,8 +4464,8 @@ var OcctWasmAdapter = class OcctWasmAdapter {
4404
4464
  exportSTEP(shapes) {
4405
4465
  return exportSTEP(this.k, this.makeCompound.bind(this), shapes);
4406
4466
  }
4407
- exportSTL(shape, binary) {
4408
- return exportSTL(this.k, shape, binary);
4467
+ exportSTL(shape, binary, tolerance, angularTolerance) {
4468
+ return exportSTL(this.k, this.mesh.bind(this), shape, binary, tolerance, angularTolerance);
4409
4469
  }
4410
4470
  importSTEP(data) {
4411
4471
  return importSTEP(this.k, data);
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_historyFns = require("./historyFns-1a841VzH.cjs");
3
- const require_extrudeFns = require("./extrudeFns-CGXjoiA3.cjs");
2
+ const require_historyFns = require("./historyFns-QbZ_1wDe.cjs");
3
+ const require_extrudeFns = require("./extrudeFns-BESH_tno.cjs");
4
4
  exports.addChild = require_historyFns.addChild;
5
5
  exports.addStep = require_historyFns.addStep;
6
6
  exports.circularPattern = require_historyFns.circularPattern;
@@ -1,3 +1,3 @@
1
- import { C as walkAssembly, D as exportAssemblySTEP, E as linearPattern, O as createAssembly, S as updateNode, T as gridPattern, _ as collectShapes, a as findStep, b as findNode, c as registerOperation, d as replayHistory, g as addChild, h as undoLast, l as registerShape, m as stepsFrom, n as createHistory, o as getShape, p as stepCount, r as createRegistry, s as modifyStep, t as addStep, u as replayFrom, v as countNodes, w as circularPattern, x as removeChild, y as createAssemblyNode } from "./historyFns-Y0v0weT9.js";
2
- import { c as sweep, i as complexExtrude, l as twistExtrude, s as supportExtrude } from "./extrudeFns-B2koxf8d.js";
1
+ import { C as walkAssembly, D as exportAssemblySTEP, E as linearPattern, O as createAssembly, S as updateNode, T as gridPattern, _ as collectShapes, a as findStep, b as findNode, c as registerOperation, d as replayHistory, g as addChild, h as undoLast, l as registerShape, m as stepsFrom, n as createHistory, o as getShape, p as stepCount, r as createRegistry, s as modifyStep, t as addStep, u as replayFrom, v as countNodes, w as circularPattern, x as removeChild, y as createAssemblyNode } from "./historyFns-vMIhK4q_.js";
2
+ import { c as sweep, i as complexExtrude, l as twistExtrude, s as supportExtrude } from "./extrudeFns-Dx6KA3po.js";
3
3
  export { addChild, addStep, circularPattern, collectShapes, complexExtrude, countNodes, createAssembly, createAssemblyNode, createHistory, createRegistry, exportAssemblySTEP, findNode, findStep, getShape as getHistoryShape, gridPattern, linearPattern, modifyStep, registerOperation, registerShape, removeChild, replayFrom, replayHistory, stepCount, stepsFrom, supportExtrude, sweep, twistExtrude, undoLast, updateNode, walkAssembly };
@@ -1,13 +1,13 @@
1
- import { Z as getKernel, _ as isSolid, c as createSolid, h as isShape3D, p as isFace, r as castShapeWithKnownType, t as castShape, x as isClosedWire, y as isWire } from "./shapeTypes-CiEgOVu3.js";
1
+ import { Z as getKernel, _ as isSolid, c as createSolid, h as isShape3D, p as isFace, r as castShapeWithKnownType, t as castShape, x as isClosedWire, y as isWire } from "./shapeTypes-B7GYg91f.js";
2
2
  import { A as ok, T as isOk, b as err, d as validationError, i as kernelError, l as typeCastError, t as BrepErrorCode, v as andThen, w as isErr } from "./errors-DNWJsfVU.js";
3
- import { c as getFaces, i as getCachedIsValid, l as getOrCreateCache, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-DXKyoFvA.js";
3
+ import { c as getFaces, i as getCachedIsValid, l as getOrCreateCache, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-CBIJ7Ixi.js";
4
4
  import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
- import { _ as downcast } from "./faceFns-D9IXo1EY.js";
6
- import { _ as propagateAllMetadata, g as collectInputFaceHashes, h as translate } from "./shapeFns-2ZBm7gZd.js";
5
+ import { _ as downcast } from "./faceFns-BuDNpvDH.js";
6
+ import { _ as propagateAllMetadata, g as collectInputFaceHashes, h as translate } from "./shapeFns-DLKjTl1m.js";
7
7
  import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
8
- import { _ as makeThreePointArc, a as makeNonPlanarFace, c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, g as makeTangentArc, h as makeLine, i as makeNewFaceWithinFace, m as makeHelix, o as makePolygon, p as makeEllipseArc, r as makeFace, s as assembleWire, t as addHolesInFace, u as makeBezierCurve } from "./surfaceBuilders-DYzjeM-y.js";
9
- import { a as fuseAll, i as fuse, n as cut, r as cutAll } from "./booleanFns-ky-zHUHR.js";
10
- import { a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces } from "./solidBuilders-DV8lvLq3.js";
8
+ import { _ as makeThreePointArc, a as makeNonPlanarFace, c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, g as makeTangentArc, h as makeLine, i as makeNewFaceWithinFace, m as makeHelix, o as makePolygon, p as makeEllipseArc, r as makeFace, s as assembleWire, t as addHolesInFace, u as makeBezierCurve } from "./surfaceBuilders-DbqaooTh.js";
9
+ import { a as fuseAll, i as fuse, n as cut, r as cutAll } from "./booleanFns-DthZnyWl.js";
10
+ import { a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces } from "./solidBuilders-E9QDs2AH.js";
11
11
  //#region src/topology/threeHelpers.ts
12
12
  /**
13
13
  * Convert a ShapeMesh into BufferGeometry-compatible typed arrays.
@@ -1,13 +1,13 @@
1
- const require_shapeTypes = require("./shapeTypes-CUTaIMCC.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-BwbnQSzG.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-j7sTNssl.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Cb25Braq.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
- const require_faceFns = require("./faceFns-D-i7rp7Y.cjs");
6
- const require_shapeFns = require("./shapeFns-BsNw-egb.cjs");
5
+ const require_faceFns = require("./faceFns-ZhwskGuW.cjs");
6
+ const require_shapeFns = require("./shapeFns-CUjmsc5n.cjs");
7
7
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
8
- const require_surfaceBuilders = require("./surfaceBuilders-OUTnDgr5.cjs");
9
- const require_booleanFns = require("./booleanFns-BherB6vd.cjs");
10
- const require_solidBuilders = require("./solidBuilders-0Y1U2uMs.cjs");
8
+ const require_surfaceBuilders = require("./surfaceBuilders-Ae2XRahr.cjs");
9
+ const require_booleanFns = require("./booleanFns-D_XT8nXq.cjs");
10
+ const require_solidBuilders = require("./solidBuilders-C_CVKD9y.cjs");
11
11
  //#region src/topology/threeHelpers.ts
12
12
  /**
13
13
  * Convert a ShapeMesh into BufferGeometry-compatible typed arrays.
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_cameraFns = require("./cameraFns-D_6uvLNa.cjs");
2
+ const require_cameraFns = require("./cameraFns-N7btylSp.cjs");
3
3
  exports.PROJECTION_PLANES = require_cameraFns.PROJECTION_PLANES;
4
4
  exports.cameraFromPlane = require_cameraFns.cameraFromPlane;
5
5
  exports.cameraLookAt = require_cameraFns.cameraLookAt;
@@ -1,2 +1,2 @@
1
- import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, o as PROJECTION_PLANES, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-AIlIbZXo.js";
1
+ import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, o as PROJECTION_PLANES, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-BBC_mCJX.js";
2
2
  export { PROJECTION_PLANES, cameraFromPlane, cameraLookAt, createCamera, isProjectionPlane, makeProjectedEdges, projectEdges };
package/dist/query.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_helpers = require("./helpers-DoflJrR5.cjs");
3
- const require_cornerFinder = require("./cornerFinder-D0D01Iv4.cjs");
2
+ const require_helpers = require("./helpers-QPPvHzFe.cjs");
3
+ const require_cornerFinder = require("./cornerFinder-BrRfeGOx.cjs");
4
4
  exports.cornerFinder = require_cornerFinder.cornerFinder;
5
5
  exports.edgeFinder = require_helpers.edgeFinder;
6
6
  exports.faceFinder = require_helpers.faceFinder;
package/dist/query.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-6tUnAb2m.js";
2
- import { t as cornerFinder } from "./cornerFinder-CHrWbA9J.js";
1
+ import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-Ceyjiq3b.js";
2
+ import { t as cornerFinder } from "./cornerFinder-BxFYMbKt.js";
3
3
  export { cornerFinder, edgeFinder, faceFinder, getSingleFace };
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-CUTaIMCC.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-BwbnQSzG.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-j7sTNssl.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Cb25Braq.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  //#region src/topology/metadata/originTrackingFns.ts
6
6
  /**