brepjs 18.66.1 → 18.67.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 (79) hide show
  1. package/dist/2d.cjs +6 -6
  2. package/dist/2d.js +6 -6
  3. package/dist/{blueprint-DUu2ps2h.js → blueprint-Z5mhI2QD.js} +5 -5
  4. package/dist/{blueprint-D0HcOCoD.cjs → blueprint-a7QLhV4U.cjs} +5 -5
  5. package/dist/{blueprintFns-BoMZHBGl.js → blueprintFns-BNhsXv6q.js} +2 -2
  6. package/dist/{blueprintFns-pq0yw94E.cjs → blueprintFns-DULa6FpG.cjs} +2 -2
  7. package/dist/{blueprintSketcher-DelJzBzJ.js → blueprintSketcher-0DeTMXwj.js} +3 -3
  8. package/dist/{blueprintSketcher-CWSesXXR.cjs → blueprintSketcher-4zOPSOnK.cjs} +3 -3
  9. package/dist/{boolean2D-DYjuIlFY.js → boolean2D-BNWuFXK_.js} +4 -4
  10. package/dist/{boolean2D-C6xLLzU_.cjs → boolean2D-xDBZQH_n.cjs} +4 -4
  11. package/dist/{booleanFns-CLzeqmgT.js → booleanFns-CaKngiuu.js} +4 -4
  12. package/dist/{booleanFns-D57G9tJA.cjs → booleanFns-aeG4pQmM.cjs} +4 -4
  13. package/dist/brepjs.cjs +312 -46
  14. package/dist/brepjs.js +304 -47
  15. package/dist/{cameraFns-DSAYGgrz.cjs → cameraFns-Bk8frXwa.cjs} +2 -2
  16. package/dist/{cameraFns-D_UnhA2O.js → cameraFns-k787od3u.js} +2 -2
  17. package/dist/core.cjs +1 -1
  18. package/dist/core.js +1 -1
  19. package/dist/{cornerFinder-CszkHDW1.js → cornerFinder-B8GvvW0U.js} +1 -1
  20. package/dist/{cornerFinder-Dvu2q_-E.cjs → cornerFinder-tTS3ny7e.cjs} +1 -1
  21. package/dist/{curveFns-BJLQixZw.cjs → curveFns-CYP8UOgX.cjs} +1 -1
  22. package/dist/{curveFns-CLNHpU2N.js → curveFns-DvNBwUdJ.js} +1 -1
  23. package/dist/{drawFns-BuE0lne3.cjs → drawFns-Chpdmj4G.cjs} +12 -12
  24. package/dist/{drawFns-Cw29tkrx.js → drawFns-DmAPsfmx.js} +12 -12
  25. package/dist/{extrudeFns-19bOK66L.js → extrudeFns-CMr1tf7I.js} +1 -1
  26. package/dist/{extrudeFns-BDgqrytA.cjs → extrudeFns-IvYW5-8y.cjs} +1 -1
  27. package/dist/{faceFns-BmaS4kkW.cjs → faceFns-Byt7Vd3F.cjs} +2 -2
  28. package/dist/{faceFns-CWU_70z7.js → faceFns-CZp3Y8vi.js} +2 -2
  29. package/dist/{helpers-CA8uFXQW.js → helpers-BX-0e71G.js} +6 -6
  30. package/dist/{helpers-qkB-gFkC.cjs → helpers-wFts3ttt.cjs} +6 -6
  31. package/dist/{historyFns-CDVZ3KM8.cjs → historyFns-BzPsKySX.cjs} +4 -4
  32. package/dist/{historyFns-CnUZzNHQ.js → historyFns-CZ9oNL7j.js} +4 -4
  33. package/dist/{importFns-BBnjqm6T.js → importFns-1SHLSNtG.js} +2 -2
  34. package/dist/{importFns-B7pbqJhZ.cjs → importFns-CwILDYiQ.cjs} +2 -2
  35. package/dist/index.d.ts +2 -2
  36. package/dist/io.cjs +2 -2
  37. package/dist/io.js +2 -2
  38. package/dist/{measureFns-HhPPUiRO.cjs → measureFns-CrSEblGG.cjs} +3 -3
  39. package/dist/{measureFns-Bye5UsOe.js → measureFns-CvvenWkS.js} +3 -3
  40. package/dist/measurement.cjs +1 -1
  41. package/dist/measurement.js +1 -1
  42. package/dist/{meshFns-Cog1SKSV.js → meshFns-0RHalM3t.js} +3 -3
  43. package/dist/{meshFns-B5jxU_H4.cjs → meshFns-DwHAYqRN.cjs} +3 -3
  44. package/dist/operations.cjs +2 -2
  45. package/dist/operations.js +2 -2
  46. package/dist/{primitiveFns-B_Vhus6h.cjs → primitiveFns-CKCALTVe.cjs} +7 -7
  47. package/dist/{primitiveFns-DTg4kOPD.js → primitiveFns-ecKWNC5k.js} +7 -7
  48. package/dist/projection.cjs +1 -1
  49. package/dist/projection.js +1 -1
  50. package/dist/query.cjs +2 -2
  51. package/dist/query.js +2 -2
  52. package/dist/{shapeFns-ClKe2vri.cjs → shapeFns-B5JrP5aD.cjs} +2 -2
  53. package/dist/{shapeFns-CMQD_3Rz.js → shapeFns-D63FuB8f.js} +2 -2
  54. package/dist/shapeRef.cjs +1 -1
  55. package/dist/shapeRef.js +1 -1
  56. package/dist/{shapeRefFns-DqmUj3wF.js → shapeRefFns-DjGKujf0.js} +4 -4
  57. package/dist/{shapeRefFns-DUt-hIWq.cjs → shapeRefFns-H_O8zyAx.cjs} +4 -4
  58. package/dist/{shapeTypes-CQscfe8k.js → shapeTypes-RYLpXWzG.js} +10 -4
  59. package/dist/{shapeTypes-CPClTSJn.cjs → shapeTypes-kAKwccy_.cjs} +10 -4
  60. package/dist/sketching.cjs +3 -3
  61. package/dist/sketching.js +3 -3
  62. package/dist/{solidBuilders-U04-5yA1.js → solidBuilders-0SgkQ386.js} +2 -2
  63. package/dist/{solidBuilders-CtxTfDlu.cjs → solidBuilders-B2IX6Pm8.cjs} +2 -2
  64. package/dist/{surfaceBuilders-88vLyzZe.cjs → surfaceBuilders-BkvJS8pw.cjs} +2 -2
  65. package/dist/{surfaceBuilders-GesSUnRk.js → surfaceBuilders-jx81G_YJ.js} +2 -2
  66. package/dist/text.cjs +2 -2
  67. package/dist/text.js +2 -2
  68. package/dist/{textBlueprints-DP_2uuR2.js → textBlueprints-BXGrW7Ak.js} +7 -7
  69. package/dist/{textBlueprints-BRqklfRI.cjs → textBlueprints-Q2gxuZd1.cjs} +7 -7
  70. package/dist/{textMetrics-F2qR-eqQ.cjs → textMetrics-CnCjqf59.cjs} +1 -1
  71. package/dist/{textMetrics-BAOyWVzI.js → textMetrics-V7TXOETY.js} +1 -1
  72. package/dist/topology.cjs +7 -7
  73. package/dist/topology.js +7 -7
  74. package/dist/{topologyQueryFns-BuZ2h4o9.js → topologyQueryFns-BtWPlP5v.js} +1 -1
  75. package/dist/{topologyQueryFns-jK9Vpzqr.cjs → topologyQueryFns-Ck5trXrW.cjs} +1 -1
  76. package/dist/voxel/engine.d.ts +43 -0
  77. package/dist/voxel/fieldFns.d.ts +120 -0
  78. package/dist/voxel/index.d.ts +2 -0
  79. package/package.json +1 -1
@@ -1,22 +1,22 @@
1
- import { R as DisposalScope, Y as _usingCtx, Z as getKernel, a as createEdge, o as createFace, u as createWire } from "./shapeTypes-CQscfe8k.js";
1
+ import { R as DisposalScope, Y as _usingCtx, Z as getKernel, a as createEdge, o as createFace, u as createWire } from "./shapeTypes-RYLpXWzG.js";
2
2
  import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
3
3
  import { R as unwrap, h as bug, s as safeIndex } from "./errors-DNWJsfVU.js";
4
- import { s as getEdges } from "./topologyQueryFns-BuZ2h4o9.js";
4
+ import { s as getEdges } from "./topologyQueryFns-BtWPlP5v.js";
5
5
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
6
6
  import { r as toVec3 } from "./types-D24Y27N0.js";
7
7
  import { d as vecNormalize, g as vecSub, h as vecScale, m as vecRotate, r as vecCross } from "./vecOps-SKPRvPH-.js";
8
8
  import { a as planeToWorld, o as resolvePlane } from "./planeOps-DSjjtrjg.js";
9
- import { _ as downcast, c as normalAt, l as outerWire, n as faceCenter, p as uvBounds, u as pointOnSurface } from "./faceFns-CWU_70z7.js";
10
- import { c as curveStartPoint, m as offsetWire2D, r as curveIsClosed } from "./curveFns-CLNHpU2N.js";
9
+ import { _ as downcast, c as normalAt, l as outerWire, n as faceCenter, p as uvBounds, u as pointOnSurface } from "./faceFns-CZp3Y8vi.js";
10
+ import { c as curveStartPoint, m as offsetWire2D, r as curveIsClosed } from "./curveFns-DvNBwUdJ.js";
11
11
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
12
- import { c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, m as makeHelix, r as makeFace, s as assembleWire } from "./surfaceBuilders-GesSUnRk.js";
13
- import { a as Blueprints, c as make2dOffset, i as CompoundBlueprint, l as intersectCurves, n as BaseSketcher2d, o as chamferCurves, s as filletCurves, u as Flatbush } from "./blueprintSketcher-DelJzBzJ.js";
14
- import { _ as samePoint$1, b as subtract2d, c as PRECISION_OFFSET, l as add2d, y as squareDistance2d } from "./helpers-CA8uFXQW.js";
15
- import { _ as Curve2D, a as edgeToCurve, c as make2dCircle, d as make2dInerpolatedBSplineCurve, f as make2dSegmentCurve, g as approximateAsSvgCompatibleCurve, i as curvesAsEdgesOnPlane, l as make2dEllipse, o as make2dArcFromCenter, t as Blueprint, v as deserializeCurve2D, y as BoundingBox2d } from "./blueprint-DUu2ps2h.js";
16
- import { t as cornerFinder } from "./cornerFinder-CszkHDW1.js";
17
- import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-DYjuIlFY.js";
18
- import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-DP_2uuR2.js";
19
- import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-D_UnhA2O.js";
12
+ import { c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, m as makeHelix, r as makeFace, s as assembleWire } from "./surfaceBuilders-jx81G_YJ.js";
13
+ import { a as Blueprints, c as make2dOffset, i as CompoundBlueprint, l as intersectCurves, n as BaseSketcher2d, o as chamferCurves, s as filletCurves, u as Flatbush } from "./blueprintSketcher-0DeTMXwj.js";
14
+ import { _ as samePoint$1, b as subtract2d, c as PRECISION_OFFSET, l as add2d, y as squareDistance2d } from "./helpers-BX-0e71G.js";
15
+ import { _ as Curve2D, a as edgeToCurve, c as make2dCircle, d as make2dInerpolatedBSplineCurve, f as make2dSegmentCurve, g as approximateAsSvgCompatibleCurve, i as curvesAsEdgesOnPlane, l as make2dEllipse, o as make2dArcFromCenter, t as Blueprint, v as deserializeCurve2D, y as BoundingBox2d } from "./blueprint-Z5mhI2QD.js";
16
+ import { t as cornerFinder } from "./cornerFinder-B8GvvW0U.js";
17
+ import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-BNWuFXK_.js";
18
+ import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-BXGrW7Ak.js";
19
+ import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-k787od3u.js";
20
20
  //#region src/2d/lib/stitching.ts
21
21
  /**
22
22
  * Group a flat list of curves into connected chains by matching endpoints.
@@ -1,4 +1,4 @@
1
- import { Z as getKernel, c as createSolid, h as isShape3D, t as castShape, y as isWire } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel, c as createSolid, h as isShape3D, t as castShape, y as isWire } from "./shapeTypes-RYLpXWzG.js";
2
2
  import { A as ok, b as err, d as validationError, i as kernelError, l as typeCastError, t as BrepErrorCode, w as isErr } from "./errors-DNWJsfVU.js";
3
3
  import { c as vecLength, d as vecNormalize, t as vecAdd } from "./vecOps-SKPRvPH-.js";
4
4
  //#region src/operations/extrudeUtils.ts
@@ -1,4 +1,4 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
3
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
4
4
  //#region src/operations/extrudeUtils.ts
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-jK9Vpzqr.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Ck5trXrW.cjs");
4
4
  const require_types = require("./types-KjA8tY4Y.cjs");
5
5
  //#region src/topology/cast.ts
6
6
  var TOPO_ENUM = {
@@ -1,6 +1,6 @@
1
- import { Z as getKernel, t as castShape } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel, t as castShape } from "./shapeTypes-RYLpXWzG.js";
2
2
  import { A as ok, R as unwrap, b as err, l as typeCastError } from "./errors-DNWJsfVU.js";
3
- import { a as getCachedSurfaceType } from "./topologyQueryFns-BuZ2h4o9.js";
3
+ import { a as getCachedSurfaceType } from "./topologyQueryFns-BtWPlP5v.js";
4
4
  import { r as toVec3 } from "./types-D24Y27N0.js";
5
5
  //#region src/topology/cast.ts
6
6
  var TOPO_ENUM = {
@@ -1,12 +1,12 @@
1
- import { Z as getKernel, p as isFace } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel, p as isFace } from "./shapeTypes-RYLpXWzG.js";
2
2
  import { A as ok, T as isOk, b as err, h as bug, o as queryError } from "./errors-DNWJsfVU.js";
3
- import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-BuZ2h4o9.js";
3
+ import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-BtWPlP5v.js";
4
4
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  import { a as vecDot, d as vecNormalize } from "./vecOps-SKPRvPH-.js";
6
- import { c as normalAt, o as getSurfaceType } from "./faceFns-CWU_70z7.js";
7
- import { a as isSameShape, n as getHashCode } from "./shapeFns-CMQD_3Rz.js";
8
- import { a as curveLength, d as getCurveType, r as curveIsClosed } from "./curveFns-CLNHpU2N.js";
9
- import { n as measureArea } from "./measureFns-Bye5UsOe.js";
6
+ import { c as normalAt, o as getSurfaceType } from "./faceFns-CZp3Y8vi.js";
7
+ import { a as isSameShape, n as getHashCode } from "./shapeFns-D63FuB8f.js";
8
+ import { a as curveLength, d as getCurveType, r as curveIsClosed } from "./curveFns-DvNBwUdJ.js";
9
+ import { n as measureArea } from "./measureFns-CvvenWkS.js";
10
10
  //#region src/utils/vec2d.ts
11
11
  /** Precision for curve intersection and parameter operations. */
12
12
  var PRECISION_INTERSECTION = 1e-9;
@@ -1,12 +1,12 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-jK9Vpzqr.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Ck5trXrW.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
6
- const require_faceFns = require("./faceFns-BmaS4kkW.cjs");
7
- const require_shapeFns = require("./shapeFns-ClKe2vri.cjs");
8
- const require_curveFns = require("./curveFns-BJLQixZw.cjs");
9
- const require_measureFns = require("./measureFns-HhPPUiRO.cjs");
6
+ const require_faceFns = require("./faceFns-Byt7Vd3F.cjs");
7
+ const require_shapeFns = require("./shapeFns-B5JrP5aD.cjs");
8
+ const require_curveFns = require("./curveFns-CYP8UOgX.cjs");
9
+ const require_measureFns = require("./measureFns-CrSEblGG.cjs");
10
10
  //#region src/utils/vec2d.ts
11
11
  /** Precision for curve intersection and parameter operations. */
12
12
  var PRECISION_INTERSECTION = 1e-9;
@@ -1,9 +1,9 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.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-BmaS4kkW.cjs");
5
- const require_shapeFns = require("./shapeFns-ClKe2vri.cjs");
6
- const require_booleanFns = require("./booleanFns-D57G9tJA.cjs");
4
+ const require_faceFns = require("./faceFns-Byt7Vd3F.cjs");
5
+ const require_shapeFns = require("./shapeFns-B5JrP5aD.cjs");
6
+ const require_booleanFns = require("./booleanFns-aeG4pQmM.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-CQscfe8k.js";
1
+ import { B as createKernelHandle, Z as getKernel, t as castShape } from "./shapeTypes-RYLpXWzG.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-CWU_70z7.js";
5
- import { s as toBREP } from "./shapeFns-CMQD_3Rz.js";
6
- import { a as fuseAll } from "./booleanFns-CLzeqmgT.js";
4
+ import { v as fromBREP } from "./faceFns-CZp3Y8vi.js";
5
+ import { s as toBREP } from "./shapeFns-D63FuB8f.js";
6
+ import { a as fuseAll } from "./booleanFns-CaKngiuu.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-CQscfe8k.js";
1
+ import { Z as getKernel, t as castShape } from "./shapeTypes-RYLpXWzG.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-DUu2ps2h.js";
5
+ import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-Z5mhI2QD.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-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.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-D0HcOCoD.cjs");
5
+ const require_blueprint = require("./blueprint-a7QLhV4U.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/index.d.ts CHANGED
@@ -38,8 +38,8 @@ export { exportDXF, blueprintToDXF, type DXFEntity, type DXFExportOptions, } fro
38
38
  export { exportThreeMF, type ThreeMFExportOptions, type ThreeMFMaterial, } from './io/threemfExportFns.js';
39
39
  export { importSVGPathD, importSVG, type SVGImportOptions } from './io/svgImportFns.js';
40
40
  export { exportSTEPConfigured, type StepExportOptions, type StepExportPart, } from './io/stepConfigFns.js';
41
- export { initVoxel, registerVoxel, getVoxel, getActiveVoxelId, windingNumbers, pointsInside, repairMesh, offsetMesh, shellMesh, voxelBoolean, offsetShape, shellShape, voxelBooleanShapes, shapeToMeshInput, } from './voxel/index.js';
42
- export type { VoxelEngine, VoxelMeshInput, VoxelRepairResult, RepairOptions, VoxelOpOptions, } from './voxel/index.js';
41
+ export { initVoxel, registerVoxel, getVoxel, getActiveVoxelId, windingNumbers, pointsInside, repairMesh, offsetMesh, shellMesh, voxelBoolean, offsetShape, shellShape, voxelBooleanShapes, voxelField, voxelBooleanField, fieldBoolean, fieldOffset, fieldShell, fieldReinit, fieldContour, voxelFieldFromShape, voxelBooleanFieldShapes, shapeToMeshInput, } from './voxel/index.js';
42
+ export type { VoxelEngine, VoxelMeshInput, VoxelRepairResult, RepairOptions, VoxelOpOptions, VoxelFieldHandle, VoxelFieldOptions, VoxelBooleanOp, } from './voxel/index.js';
43
43
  export { latticeInfill, latticeInfillShape, tpmsLattice } from './lattice/index.js';
44
44
  export type { LatticeType, LatticeOptions, LatticeBounds } from './lattice/index.js';
45
45
  export { default as Sketcher } from './sketching/sketcher.js';
package/dist/io.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_meshFns = require("./meshFns-B5jxU_H4.cjs");
3
- const require_importFns = require("./importFns-B7pbqJhZ.cjs");
2
+ const require_meshFns = require("./meshFns-DwHAYqRN.cjs");
3
+ const require_importFns = require("./importFns-CwILDYiQ.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-Cog1SKSV.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-BBnjqm6T.js";
1
+ import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-0RHalM3t.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-1SHLSNtG.js";
3
3
  export { blueprintToDXF, exportDXF, exportGlb, exportGltf, exportIGES, exportOBJ, exportSTEP, exportSTEPConfigured, exportSTL, exportThreeMF, importIGES, importSTEP, importSTL, importSVG, importSVGPathD };
@@ -1,7 +1,7 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-jK9Vpzqr.cjs");
4
- const require_faceFns = require("./faceFns-BmaS4kkW.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Ck5trXrW.cjs");
4
+ const require_faceFns = require("./faceFns-Byt7Vd3F.cjs");
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
- import { Z as getKernel } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel } from "./shapeTypes-RYLpXWzG.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-BuZ2h4o9.js";
4
- import { p as uvBounds } from "./faceFns-CWU_70z7.js";
3
+ import { w as kernelCallRaw } from "./topologyQueryFns-BtWPlP5v.js";
4
+ import { p as uvBounds } from "./faceFns-CZp3Y8vi.js";
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-HhPPUiRO.cjs");
2
+ const require_measureFns = require("./measureFns-CrSEblGG.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-Bye5UsOe.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-CvvenWkS.js";
2
2
  export { createDistanceQuery, measureArea, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps };
@@ -1,7 +1,7 @@
1
- import { Z as getKernel, gt as qualityDeflection } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel, gt as qualityDeflection } from "./shapeTypes-RYLpXWzG.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-BuZ2h4o9.js";
4
- import { O as getFaceOrigins } from "./shapeFns-CMQD_3Rz.js";
3
+ import { d as getSolids, n as getBounds } from "./topologyQueryFns-BtWPlP5v.js";
4
+ import { O as getFaceOrigins } from "./shapeFns-D63FuB8f.js";
5
5
  //#region src/topology/meshCache.ts
6
6
  /**
7
7
  * Build a parameter key for the inner cache map (excludes shape identity).
@@ -1,7 +1,7 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-jK9Vpzqr.cjs");
4
- const require_shapeFns = require("./shapeFns-ClKe2vri.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Ck5trXrW.cjs");
4
+ const require_shapeFns = require("./shapeFns-B5JrP5aD.cjs");
5
5
  //#region src/topology/meshCache.ts
6
6
  /**
7
7
  * Build a parameter key for the inner cache map (excludes shape identity).
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_historyFns = require("./historyFns-CDVZ3KM8.cjs");
3
- const require_extrudeFns = require("./extrudeFns-BDgqrytA.cjs");
2
+ const require_historyFns = require("./historyFns-BzPsKySX.cjs");
3
+ const require_extrudeFns = require("./extrudeFns-IvYW5-8y.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-CnUZzNHQ.js";
2
- import { c as sweep, i as complexExtrude, l as twistExtrude, s as supportExtrude } from "./extrudeFns-19bOK66L.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-CZ9oNL7j.js";
2
+ import { c as sweep, i as complexExtrude, l as twistExtrude, s as supportExtrude } from "./extrudeFns-CMr1tf7I.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
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-jK9Vpzqr.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Ck5trXrW.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
- const require_faceFns = require("./faceFns-BmaS4kkW.cjs");
6
- const require_shapeFns = require("./shapeFns-ClKe2vri.cjs");
5
+ const require_faceFns = require("./faceFns-Byt7Vd3F.cjs");
6
+ const require_shapeFns = require("./shapeFns-B5JrP5aD.cjs");
7
7
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
8
- const require_surfaceBuilders = require("./surfaceBuilders-88vLyzZe.cjs");
9
- const require_booleanFns = require("./booleanFns-D57G9tJA.cjs");
10
- const require_solidBuilders = require("./solidBuilders-CtxTfDlu.cjs");
8
+ const require_surfaceBuilders = require("./surfaceBuilders-BkvJS8pw.cjs");
9
+ const require_booleanFns = require("./booleanFns-aeG4pQmM.cjs");
10
+ const require_solidBuilders = require("./solidBuilders-B2IX6Pm8.cjs");
11
11
  //#region src/topology/threeHelpers.ts
12
12
  /**
13
13
  * Convert a ShapeMesh into BufferGeometry-compatible typed arrays.
@@ -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-CQscfe8k.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-RYLpXWzG.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-BuZ2h4o9.js";
3
+ import { c as getFaces, i as getCachedIsValid, l as getOrCreateCache, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-BtWPlP5v.js";
4
4
  import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
- import { _ as downcast } from "./faceFns-CWU_70z7.js";
6
- import { _ as propagateAllMetadata, g as collectInputFaceHashes, h as translate } from "./shapeFns-CMQD_3Rz.js";
5
+ import { _ as downcast } from "./faceFns-CZp3Y8vi.js";
6
+ import { _ as propagateAllMetadata, g as collectInputFaceHashes, h as translate } from "./shapeFns-D63FuB8f.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-GesSUnRk.js";
9
- import { a as fuseAll, i as fuse, n as cut, r as cutAll } from "./booleanFns-CLzeqmgT.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-U04-5yA1.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-jx81G_YJ.js";
9
+ import { a as fuseAll, i as fuse, n as cut, r as cutAll } from "./booleanFns-CaKngiuu.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-0SgkQ386.js";
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-DSAYGgrz.cjs");
2
+ const require_cameraFns = require("./cameraFns-Bk8frXwa.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-D_UnhA2O.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-k787od3u.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-qkB-gFkC.cjs");
3
- const require_cornerFinder = require("./cornerFinder-Dvu2q_-E.cjs");
2
+ const require_helpers = require("./helpers-wFts3ttt.cjs");
3
+ const require_cornerFinder = require("./cornerFinder-tTS3ny7e.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-CA8uFXQW.js";
2
- import { t as cornerFinder } from "./cornerFinder-CszkHDW1.js";
1
+ import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-BX-0e71G.js";
2
+ import { t as cornerFinder } from "./cornerFinder-B8GvvW0U.js";
3
3
  export { cornerFinder, edgeFinder, faceFinder, getSingleFace };
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-jK9Vpzqr.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-Ck5trXrW.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  //#region src/topology/metadata/originTrackingFns.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { Z as getKernel, t as castShape } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel, t as castShape } from "./shapeTypes-RYLpXWzG.js";
2
2
  import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
3
- import { C as kernelCall, c as getFaces, l as getOrCreateCache, r as getCacheEntry, w as kernelCallRaw } from "./topologyQueryFns-BuZ2h4o9.js";
3
+ import { C as kernelCall, c as getFaces, l as getOrCreateCache, r as getCacheEntry, w as kernelCallRaw } from "./topologyQueryFns-BtWPlP5v.js";
4
4
  import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  //#region src/topology/metadata/originTrackingFns.ts
6
6
  /**
package/dist/shapeRef.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_shapeRefFns = require("./shapeRefFns-DUt-hIWq.cjs");
2
+ const require_shapeRefFns = require("./shapeRefFns-H_O8zyAx.cjs");
3
3
  exports.assignRoles = require_shapeRefFns.assignRoles;
4
4
  exports.captureHint = require_shapeRefFns.captureHint;
5
5
  exports.createRef = require_shapeRefFns.createRef;
package/dist/shapeRef.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as updateRoles, i as resolveRef, n as captureHint, o as defaultScorer, r as createRef, t as assignRoles } from "./shapeRefFns-DqmUj3wF.js";
1
+ import { a as updateRoles, i as resolveRef, n as captureHint, o as defaultScorer, r as createRef, t as assignRoles } from "./shapeRefFns-DjGKujf0.js";
2
2
  export { assignRoles, captureHint, createRef, defaultScorer, resolveRef, updateRoles };
@@ -1,8 +1,8 @@
1
1
  import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
2
- import { c as getFaces } from "./topologyQueryFns-BuZ2h4o9.js";
3
- import { c as normalAt, n as faceCenter, r as faceGeomType } from "./faceFns-CWU_70z7.js";
4
- import { n as getHashCode } from "./shapeFns-CMQD_3Rz.js";
5
- import { n as measureArea } from "./measureFns-Bye5UsOe.js";
2
+ import { c as getFaces } from "./topologyQueryFns-BtWPlP5v.js";
3
+ import { c as normalAt, n as faceCenter, r as faceGeomType } from "./faceFns-CZp3Y8vi.js";
4
+ import { n as getHashCode } from "./shapeFns-D63FuB8f.js";
5
+ import { n as measureArea } from "./measureFns-CvvenWkS.js";
6
6
  //#region src/topology/shapeRef/scoring.ts
7
7
  /**
8
8
  * Default face scorer combining surface type, normal alignment, centroid proximity,
@@ -1,8 +1,8 @@
1
1
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
2
- const require_topologyQueryFns = require("./topologyQueryFns-jK9Vpzqr.cjs");
3
- const require_faceFns = require("./faceFns-BmaS4kkW.cjs");
4
- const require_shapeFns = require("./shapeFns-ClKe2vri.cjs");
5
- const require_measureFns = require("./measureFns-HhPPUiRO.cjs");
2
+ const require_topologyQueryFns = require("./topologyQueryFns-Ck5trXrW.cjs");
3
+ const require_faceFns = require("./faceFns-Byt7Vd3F.cjs");
4
+ const require_shapeFns = require("./shapeFns-B5JrP5aD.cjs");
5
+ const require_measureFns = require("./measureFns-CrSEblGG.cjs");
6
6
  //#region src/topology/shapeRef/scoring.ts
7
7
  /**
8
8
  * Default face scorer combining surface type, normal alignment, centroid proximity,
@@ -10241,7 +10241,7 @@ function generalTransformNonOrthogonal(shape, linear, translation) {
10241
10241
  }
10242
10242
  function composeTransform(ops) {
10243
10243
  let acc = identityMatrix();
10244
- for (const o of ops) acc = multiplyMatrix(o.type === "translate" ? translationMatrix(o.x, o.y, o.z) : rotationMatrix(o.angle, o.axis ?? [
10244
+ for (const o of ops) acc = multiplyMatrix(o.type === "translate" ? translationMatrix(o.x, o.y, o.z) : rotationMatrix(o.angle * Math.PI / 180, o.axis ?? [
10245
10245
  0,
10246
10246
  0,
10247
10247
  1
@@ -10265,7 +10265,7 @@ function linearPattern(shape, direction, spacing, count) {
10265
10265
  }
10266
10266
  function circularPattern(shape, center, axis, angleStep, count) {
10267
10267
  const results = [shape];
10268
- for (let i = 1; i < count; i++) results.push(rotate(shape, angleStep * i, axis, center));
10268
+ for (let i = 1; i < count; i++) results.push(rotate(shape, angleStep * i * Math.PI / 180, axis, center));
10269
10269
  return results;
10270
10270
  }
10271
10271
  function gridPattern(module, shape, directionX, directionY, spacingX, spacingY, countX, countY) {
@@ -10292,7 +10292,7 @@ function transformBatch(entries) {
10292
10292
  return entries.map((e) => {
10293
10293
  switch (e.type) {
10294
10294
  case "translate": return translate(e.shape, e.x, e.y, e.z);
10295
- case "rotate": return rotate(e.shape, e.angle, e.axis, e.center);
10295
+ case "rotate": return rotate(e.shape, e.angle * Math.PI / 180, e.axis, e.center);
10296
10296
  case "scale": return scale(e.shape, e.center, e.factor);
10297
10297
  case "mirror": return mirror(e.shape, e.origin, e.normal);
10298
10298
  }
@@ -11338,6 +11338,12 @@ function makeBuilderOps(module) {
11338
11338
  const operands = shapes.map((s) => unwrap(s));
11339
11339
  return wrap(Manifold.hull(operands), makeNode("hull", { tolerance }, shapes.map((s) => nodeOf(s))));
11340
11340
  }
11341
+ function makeCompound(shapes) {
11342
+ const operands = shapes.map((s) => unwrap(s));
11343
+ const first = operands[0];
11344
+ if (!first) throw new Error("manifold: makeCompound requires at least one input shape");
11345
+ return wrap(operands.length === 1 ? first : Manifold.union(operands), makeNode("makeCompound", {}, shapes.map((s) => nodeOf(s))));
11346
+ }
11341
11347
  function sewAndSolidify(faces, tolerance) {
11342
11348
  const first = faces[0];
11343
11349
  if (!first) notImplemented("sewAndSolidify (no input faces on manifold kernel)");
@@ -11358,7 +11364,7 @@ function makeBuilderOps(module) {
11358
11364
  makeTangentArc: (startPoint, startTangent, endPoint) => profile.makeTangentArc(startPoint, startTangent, endPoint),
11359
11365
  makeHelixWire: (pitch, height, radius, center, direction, leftHanded) => profile.makeHelixWire(pitch, height, radius, center, direction, leftHanded),
11360
11366
  makeWireFromMixed: (items) => profile.makeWireFromMixed(items),
11361
- makeCompound: () => notImplemented("makeCompound"),
11367
+ makeCompound,
11362
11368
  solidFromShell: () => notImplemented("solidFromShell"),
11363
11369
  hull,
11364
11370
  hullFromPoints,
@@ -10249,7 +10249,7 @@ function generalTransformNonOrthogonal(shape, linear, translation) {
10249
10249
  }
10250
10250
  function composeTransform(ops) {
10251
10251
  let acc = identityMatrix();
10252
- for (const o of ops) acc = multiplyMatrix(o.type === "translate" ? translationMatrix(o.x, o.y, o.z) : rotationMatrix(o.angle, o.axis ?? [
10252
+ for (const o of ops) acc = multiplyMatrix(o.type === "translate" ? translationMatrix(o.x, o.y, o.z) : rotationMatrix(o.angle * Math.PI / 180, o.axis ?? [
10253
10253
  0,
10254
10254
  0,
10255
10255
  1
@@ -10273,7 +10273,7 @@ function linearPattern(shape, direction, spacing, count) {
10273
10273
  }
10274
10274
  function circularPattern(shape, center, axis, angleStep, count) {
10275
10275
  const results = [shape];
10276
- for (let i = 1; i < count; i++) results.push(rotate(shape, angleStep * i, axis, center));
10276
+ for (let i = 1; i < count; i++) results.push(rotate(shape, angleStep * i * Math.PI / 180, axis, center));
10277
10277
  return results;
10278
10278
  }
10279
10279
  function gridPattern(module, shape, directionX, directionY, spacingX, spacingY, countX, countY) {
@@ -10300,7 +10300,7 @@ function transformBatch(entries) {
10300
10300
  return entries.map((e) => {
10301
10301
  switch (e.type) {
10302
10302
  case "translate": return translate(e.shape, e.x, e.y, e.z);
10303
- case "rotate": return rotate(e.shape, e.angle, e.axis, e.center);
10303
+ case "rotate": return rotate(e.shape, e.angle * Math.PI / 180, e.axis, e.center);
10304
10304
  case "scale": return scale(e.shape, e.center, e.factor);
10305
10305
  case "mirror": return mirror(e.shape, e.origin, e.normal);
10306
10306
  }
@@ -11346,6 +11346,12 @@ function makeBuilderOps(module) {
11346
11346
  const operands = shapes.map((s) => unwrap(s));
11347
11347
  return wrap(Manifold.hull(operands), makeNode("hull", { tolerance }, shapes.map((s) => nodeOf(s))));
11348
11348
  }
11349
+ function makeCompound(shapes) {
11350
+ const operands = shapes.map((s) => unwrap(s));
11351
+ const first = operands[0];
11352
+ if (!first) throw new Error("manifold: makeCompound requires at least one input shape");
11353
+ return wrap(operands.length === 1 ? first : Manifold.union(operands), makeNode("makeCompound", {}, shapes.map((s) => nodeOf(s))));
11354
+ }
11349
11355
  function sewAndSolidify(faces, tolerance) {
11350
11356
  const first = faces[0];
11351
11357
  if (!first) notImplemented("sewAndSolidify (no input faces on manifold kernel)");
@@ -11366,7 +11372,7 @@ function makeBuilderOps(module) {
11366
11372
  makeTangentArc: (startPoint, startTangent, endPoint) => profile.makeTangentArc(startPoint, startTangent, endPoint),
11367
11373
  makeHelixWire: (pitch, height, radius, center, direction, leftHanded) => profile.makeHelixWire(pitch, height, radius, center, direction, leftHanded),
11368
11374
  makeWireFromMixed: (items) => profile.makeWireFromMixed(items),
11369
- makeCompound: () => notImplemented("makeCompound"),
11375
+ makeCompound,
11370
11376
  solidFromShell: () => notImplemented("solidFromShell"),
11371
11377
  hull,
11372
11378
  hullFromPoints,
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_textBlueprints = require("./textBlueprints-BRqklfRI.cjs");
3
- const require_blueprintSketcher = require("./blueprintSketcher-CWSesXXR.cjs");
4
- const require_drawFns = require("./drawFns-BuE0lne3.cjs");
2
+ const require_textBlueprints = require("./textBlueprints-Q2gxuZd1.cjs");
3
+ const require_blueprintSketcher = require("./blueprintSketcher-4zOPSOnK.cjs");
4
+ const require_drawFns = require("./drawFns-Chpdmj4G.cjs");
5
5
  //#region src/sketching.ts
6
6
  /**
7
7
  * brepjs/sketching — Sketcher, Drawing, and sketch-to-shape operations.
package/dist/sketching.js CHANGED
@@ -1,6 +1,6 @@
1
- import { n as BaseSketcher2d, t as BlueprintSketcher } from "./blueprintSketcher-DelJzBzJ.js";
2
- import { A as sketchEllipse, C as DrawingPen, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, T as Drawing, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-Cw29tkrx.js";
3
- import { a as Sketch, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, o as compoundSketchExtrude, p as sketchRevolve, s as compoundSketchFace, u as sketchExtrude, v as CompoundSketch } from "./textBlueprints-DP_2uuR2.js";
1
+ import { n as BaseSketcher2d, t as BlueprintSketcher } from "./blueprintSketcher-0DeTMXwj.js";
2
+ import { A as sketchEllipse, C as DrawingPen, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, T as Drawing, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-DmAPsfmx.js";
3
+ import { a as Sketch, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, o as compoundSketchExtrude, p as sketchRevolve, s as compoundSketchFace, u as sketchExtrude, v as CompoundSketch } from "./textBlueprints-BXGrW7Ak.js";
4
4
  //#region src/sketching.ts
5
5
  /**
6
6
  * brepjs/sketching — Sketcher, Drawing, and sketch-to-shape operations.
@@ -1,6 +1,6 @@
1
- import { Z as getKernel, _ as isSolid, c as createSolid, g as isShell, h as isShape3D, i as createCompound, l as createVertex } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel, _ as isSolid, c as createSolid, g as isShell, h as isShape3D, i as createCompound, l as createVertex } from "./shapeTypes-RYLpXWzG.js";
2
2
  import { A as ok, R as unwrap, b as err, l as typeCastError, v as andThen } from "./errors-DNWJsfVU.js";
3
- import { _ as downcast, g as cast } from "./faceFns-CWU_70z7.js";
3
+ import { _ as downcast, g as cast } from "./faceFns-CZp3Y8vi.js";
4
4
  //#region src/topology/shapeUtils.ts
5
5
  /**
6
6
  * Shape assembly utilities — welding and sewing operations.
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_faceFns = require("./faceFns-BmaS4kkW.cjs");
3
+ const require_faceFns = require("./faceFns-Byt7Vd3F.cjs");
4
4
  //#region src/topology/shapeUtils.ts
5
5
  /**
6
6
  * Shape assembly utilities — welding and sewing operations.
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-CPClTSJn.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-kAKwccy_.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_faceFns = require("./faceFns-BmaS4kkW.cjs");
3
+ const require_faceFns = require("./faceFns-Byt7Vd3F.cjs");
4
4
  //#region src/utils/range.ts
5
5
  /** Generate an array of integers `[0, 1, …, len - 1]`. */
6
6
  function range(len) {
@@ -1,6 +1,6 @@
1
- import { Z as getKernel, a as createEdge, o as createFace, p as isFace, u as createWire, w as isPlanarFace } from "./shapeTypes-CQscfe8k.js";
1
+ import { Z as getKernel, a as createEdge, o as createFace, p as isFace, u as createWire, w as isPlanarFace } from "./shapeTypes-RYLpXWzG.js";
2
2
  import { A as ok, b as err, d as validationError, i as kernelError, v as andThen } from "./errors-DNWJsfVU.js";
3
- import { g as cast, l as outerWire } from "./faceFns-CWU_70z7.js";
3
+ import { g as cast, l as outerWire } from "./faceFns-CZp3Y8vi.js";
4
4
  //#region src/utils/range.ts
5
5
  /** Generate an array of integers `[0, 1, …, len - 1]`. */
6
6
  function range(len) {