brepjs 20.6.0 → 20.7.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 (99) hide show
  1. package/dist/2d.cjs +7 -7
  2. package/dist/2d.js +7 -7
  3. package/dist/{adjacencyFns-DO9_F2YJ.js → adjacencyFns-BgJQQjdt.js} +3 -3
  4. package/dist/{adjacencyFns-CmNvIFu1.cjs → adjacencyFns-_RTYhwtD.cjs} +3 -3
  5. package/dist/{blueprint-DHKul4EN.js → blueprint-Bth4EVaO.js} +7 -7
  6. package/dist/{blueprint-Ci2Mw5v-.cjs → blueprint-wq2TU1XP.cjs} +7 -7
  7. package/dist/{blueprintFns-D68_PxRl.js → blueprintFns-DQmNe1p6.js} +3 -3
  8. package/dist/{blueprintFns-CbJPSd5r.cjs → blueprintFns-Dd0gm1rX.cjs} +3 -3
  9. package/dist/{blueprintSketcher-pVbM0BHf.cjs → blueprintSketcher-CSDqr27-.cjs} +4 -4
  10. package/dist/{blueprintSketcher-j9vJAniE.js → blueprintSketcher-DNp87aQZ.js} +4 -4
  11. package/dist/{boolean2D-D6Oc8tBx.js → boolean2D-BAb4SnIL.js} +5 -5
  12. package/dist/{boolean2D-Dq29HCr9.cjs → boolean2D-BkgOjMRt.cjs} +5 -5
  13. package/dist/brepjs.cjs +32 -32
  14. package/dist/brepjs.js +32 -32
  15. package/dist/{cameraFns-DVZkA2eq.js → cameraFns-9AGyuZVp.js} +4 -4
  16. package/dist/{cameraFns-BMXugx7m.cjs → cameraFns-CKUN90f_.cjs} +4 -4
  17. package/dist/core/errors.d.ts +3 -0
  18. package/dist/core.cjs +4 -4
  19. package/dist/core.js +4 -4
  20. package/dist/{cornerFinder-DSnn8gRP.js → cornerFinder-Cr_04etw.js} +1 -1
  21. package/dist/{cornerFinder-DshfhGHG.cjs → cornerFinder-DJWo6h1Z.cjs} +1 -1
  22. package/dist/{curveFns-CEb6TLxC.js → curveFns-CkA2WJP2.js} +2 -2
  23. package/dist/{curveFns-Cxq5lFqU.cjs → curveFns-U7srQ3ZA.cjs} +2 -2
  24. package/dist/{drawFns-DMhKXGgG.js → drawFns-C6bmFijD.js} +14 -14
  25. package/dist/{drawFns-CH0q-0JP.cjs → drawFns-DlCxozRP.cjs} +14 -14
  26. package/dist/{errors-DoMAp7mQ.cjs → errors-GVyCnpi0.cjs} +3 -0
  27. package/dist/{errors-B3espUT6.js → errors-vxP5FT8B.js} +3 -0
  28. package/dist/{faceFns-C-wc4fX-.js → faceFns-BBk6XKJO.js} +3 -3
  29. package/dist/{faceFns-B8ctN5Te.cjs → faceFns-DSRREV5G.cjs} +3 -3
  30. package/dist/{healingFns-D3mNy1rp.cjs → healingFns-C9G3yjOe.cjs} +137 -31
  31. package/dist/{healingFns-CJfuZMw2.js → healingFns-CEr0afli.js} +137 -31
  32. package/dist/{helpers-BhHbDu6-.cjs → helpers-JuPoaP_b.cjs} +7 -7
  33. package/dist/{helpers-BXoAMWe3.js → helpers-sDialr0f.js} +7 -7
  34. package/dist/{importFns-DHaw1x5R.cjs → importFns-ClqPJCFR.cjs} +3 -3
  35. package/dist/{importFns-YZyGYu_M.js → importFns-DSUfSQn2.js} +3 -3
  36. package/dist/io.cjs +2 -2
  37. package/dist/io.js +2 -2
  38. package/dist/kernel/capabilities.d.ts +8 -0
  39. package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
  40. package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
  41. package/dist/{loftFns-CTTia_cZ.js → loftFns-B8DSoG-F.js} +2 -2
  42. package/dist/{loftFns-DVr6PaTM.cjs → loftFns-mkJeOaII.cjs} +2 -2
  43. package/dist/{measureFns-C6wgH_1a.cjs → measureFns-BvNkzSR6.cjs} +4 -4
  44. package/dist/{measureFns-BmdVG0_8.js → measureFns-PRM3gOjw.js} +4 -4
  45. package/dist/measurement.cjs +2 -2
  46. package/dist/measurement.js +2 -2
  47. package/dist/{meshFns-uNRS602U.js → meshFns-CgbT3uuO.js} +4 -4
  48. package/dist/{meshFns-r_p0RRoO.cjs → meshFns-W7ZTKqiJ.cjs} +4 -4
  49. package/dist/{occtWasmAdapter-CxSY6Ty2.cjs → occtWasmAdapter-BSQeA69d.cjs} +12 -1
  50. package/dist/{occtWasmAdapter-cnV8J7Y-.js → occtWasmAdapter-PzZJHUAd.js} +7 -2
  51. package/dist/operations.cjs +2 -2
  52. package/dist/operations.js +2 -2
  53. package/dist/{originTrackingFns-BIa3TdgX.js → originTrackingFns-D8SNCDKj.js} +2 -2
  54. package/dist/{originTrackingFns-DgJ-MTtE.cjs → originTrackingFns-DJDTRJh3.cjs} +2 -2
  55. package/dist/{planeOps-BDt05NAD.cjs → planeOps-C9d2Y56B.cjs} +1 -1
  56. package/dist/{planeOps-BkwaqhUj.js → planeOps-Dp0YvuFE.js} +1 -1
  57. package/dist/{primitiveFns-CktCbLBo.cjs → primitiveFns-EtHyTqhw.cjs} +5 -5
  58. package/dist/{primitiveFns-h_zOAbmf.js → primitiveFns-W3RYNJcm.js} +5 -5
  59. package/dist/{principalBoxFns-DkP-681E.js → principalBoxFns-Cbtty-2_.js} +4 -4
  60. package/dist/{principalBoxFns-28BQIeo8.cjs → principalBoxFns-CmZa7qHi.cjs} +4 -4
  61. package/dist/projection.cjs +1 -1
  62. package/dist/projection.js +1 -1
  63. package/dist/query.cjs +2 -2
  64. package/dist/query.js +2 -2
  65. package/dist/{refResolveFns-DUDJqfOM.js → refResolveFns-BkciKtNP.js} +6 -6
  66. package/dist/{refResolveFns-fSzDZ1rx.cjs → refResolveFns-D99Vqe7a.cjs} +6 -6
  67. package/dist/result.cjs +1 -1
  68. package/dist/result.js +1 -1
  69. package/dist/{shapeFns-DKDlt3k2.cjs → shapeFns-B54CsPyk.cjs} +3 -3
  70. package/dist/{shapeFns-B5hzkmwe.js → shapeFns-DB3l3ULC.js} +3 -3
  71. package/dist/shapeRef.cjs +1 -1
  72. package/dist/shapeRef.js +1 -1
  73. package/dist/{shapeTypes-Bva18qvE.js → shapeTypes-CgbUTASh.js} +2 -2
  74. package/dist/{shapeTypes-CkxvJRpq.cjs → shapeTypes-D_anqiRe.cjs} +2 -2
  75. package/dist/sketching.cjs +3 -3
  76. package/dist/sketching.js +3 -3
  77. package/dist/{solidBuilders-BFEnqrU0.cjs → solidBuilders-CUd-korS.cjs} +7 -7
  78. package/dist/{solidBuilders-BpTN-NfM.js → solidBuilders-DE_na4G3.js} +7 -7
  79. package/dist/{surfaceBuilders-CTk2lGlw.cjs → surfaceBuilders-DOn2jWkh.cjs} +4 -4
  80. package/dist/{surfaceBuilders-DAZCPa5O.js → surfaceBuilders-wdGNiImD.js} +4 -4
  81. package/dist/text.cjs +2 -2
  82. package/dist/text.js +2 -2
  83. package/dist/{textBlueprints-DbEWBdhF.cjs → textBlueprints-BQ60Rc96.cjs} +9 -9
  84. package/dist/{textBlueprints-DuwP72D6.js → textBlueprints-B_jwMuej.js} +9 -9
  85. package/dist/{textMetrics-CbNBlPsl.cjs → textMetrics-Bm0a4kh7.cjs} +2 -2
  86. package/dist/{textMetrics-q6RSXX9Z.js → textMetrics-Dj3yfZNQ.js} +2 -2
  87. package/dist/{threadFns-5FXCN-9R.cjs → threadFns-BuRPVenB.cjs} +8 -8
  88. package/dist/{threadFns-BcsScbp4.js → threadFns-DlL5VnMf.js} +8 -8
  89. package/dist/topology/modifierFns.d.ts +5 -0
  90. package/dist/topology/thickResultCheck.d.ts +18 -0
  91. package/dist/topology.cjs +9 -9
  92. package/dist/topology.js +9 -9
  93. package/dist/{topologyQueryFns-CY6YiGsk.js → topologyQueryFns-6M_dbT1R.js} +6 -3
  94. package/dist/{topologyQueryFns-C6HwYYpi.cjs → topologyQueryFns-ENxs8uu2.cjs} +11 -2
  95. package/dist/{validityTypes-D0IDDMbY.cjs → validityTypes-BPamqRZ8.cjs} +2 -2
  96. package/dist/{validityTypes-MiXYsBZi.js → validityTypes-BTuI0vcR.js} +2 -2
  97. package/dist/vectors.cjs +1 -1
  98. package/dist/vectors.js +1 -1
  99. package/package.json +1 -1
@@ -1,18 +1,18 @@
1
- import { d as createSolid, h as disposeResultShape, l as createFace, m as disposeDowncastSource, n as castResultShape, p as createWire, q as getKernel, x as isShape3D } from "./shapeTypes-Bva18qvE.js";
1
+ import { d as createSolid, h as disposeResultShape, l as createFace, m as disposeDowncastSource, n as castResultShape, p as createWire, q as getKernel, x as isShape3D } from "./shapeTypes-CgbUTASh.js";
2
2
  import { n as bug } from "./bug-ClMTAJhe.js";
3
- import { E as ok, P as unwrap, d as validationError, g as err, i as kernelError, l as typeCastError, r as ioError, t as BrepErrorCode } from "./errors-B3espUT6.js";
3
+ import { E as ok, P as unwrap, d as validationError, g as err, i as kernelError, l as typeCastError, r as ioError, t as BrepErrorCode } from "./errors-vxP5FT8B.js";
4
4
  import { n as HASH_CODE_MAX } from "./constants-iraOnb2p.js";
5
5
  import { r as toVec3 } from "./types-CKXsIm9-.js";
6
6
  import { c as vecLength, d as vecNormalize, h as vecScale, i as vecDistance, r as vecCross, t as vecAdd } from "./vecOps-S-m9H_fe.js";
7
- import { n as createPlane } from "./planeOps-BkwaqhUj.js";
8
- import { v as copyShape } from "./faceFns-C-wc4fX-.js";
9
- import { o as makeSolid, p as cutAll, t as makeCompound } from "./solidBuilders-BpTN-NfM.js";
7
+ import { n as createPlane } from "./planeOps-Dp0YvuFE.js";
8
+ import { v as copyShape } from "./faceFns-BBk6XKJO.js";
9
+ import { o as makeSolid, p as cutAll, t as makeCompound } from "./solidBuilders-DE_na4G3.js";
10
10
  import { i as setFaceRoles } from "./faceRoleFns-BPxzQF-n.js";
11
- import { l as curveStartPoint, u as curveTangentAt } from "./curveFns-CEb6TLxC.js";
11
+ import { l as curveStartPoint, u as curveTangentAt } from "./curveFns-CkA2WJP2.js";
12
12
  import { n as getAtOrThrow, t as firstOrThrow } from "./arrayAccess-BpgouNir.js";
13
- import { i as makeNewFaceWithinFace, r as makeFace, t as addHolesInFace } from "./surfaceBuilders-DAZCPa5O.js";
14
- import { r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-j9vJAniE.js";
15
- import { c as twistExtrude, r as complexExtrude, s as sweep, t as loft } from "./loftFns-CTTia_cZ.js";
13
+ import { i as makeNewFaceWithinFace, r as makeFace, t as addHolesInFace } from "./surfaceBuilders-wdGNiImD.js";
14
+ import { r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-DNp87aQZ.js";
15
+ import { c as twistExtrude, r as complexExtrude, s as sweep, t as loft } from "./loftFns-B8DSoG-F.js";
16
16
  import opentype from "opentype.js";
17
17
  // src/topology/shapeRef/extrudeRoleFns.ts
18
18
  /** Match tolerance as a fraction of the extrusion's size. */
@@ -1,5 +1,5 @@
1
- const require_errors = require("./errors-DoMAp7mQ.cjs");
2
- const require_textBlueprints = require("./textBlueprints-DbEWBdhF.cjs");
1
+ const require_errors = require("./errors-GVyCnpi0.cjs");
2
+ const require_textBlueprints = require("./textBlueprints-BQ60Rc96.cjs");
3
3
  // src/text/sketchText.ts
4
4
  /**
5
5
  * Render text as 3D sketch outlines on a plane.
@@ -1,5 +1,5 @@
1
- import { E as ok, d as validationError, g as err, t as BrepErrorCode } from "./errors-B3espUT6.js";
2
- import { g as wrapSketchData, i as Sketches, n as getFont, t as textBlueprints, v as CompoundSketch } from "./textBlueprints-DuwP72D6.js";
1
+ import { E as ok, d as validationError, g as err, t as BrepErrorCode } from "./errors-vxP5FT8B.js";
2
+ import { g as wrapSketchData, i as Sketches, n as getFont, t as textBlueprints, v as CompoundSketch } from "./textBlueprints-B_jwMuej.js";
3
3
  // src/text/sketchText.ts
4
4
  /**
5
5
  * Render text as 3D sketch outlines on a plane.
@@ -1,12 +1,12 @@
1
- const require_shapeTypes = require("./shapeTypes-CkxvJRpq.cjs");
2
- const require_errors = require("./errors-DoMAp7mQ.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D_anqiRe.cjs");
2
+ const require_errors = require("./errors-GVyCnpi0.cjs");
3
3
  const require_vecOps = require("./vecOps-CrGEPPQM.cjs");
4
- const require_faceFns = require("./faceFns-B8ctN5Te.cjs");
5
- const require_solidBuilders = require("./solidBuilders-BFEnqrU0.cjs");
6
- const require_primitiveFns = require("./primitiveFns-CktCbLBo.cjs");
7
- const require_shapeFns = require("./shapeFns-DKDlt3k2.cjs");
8
- const require_loftFns = require("./loftFns-DVr6PaTM.cjs");
9
- const require_refResolveFns = require("./refResolveFns-fSzDZ1rx.cjs");
4
+ const require_faceFns = require("./faceFns-DSRREV5G.cjs");
5
+ const require_solidBuilders = require("./solidBuilders-CUd-korS.cjs");
6
+ const require_primitiveFns = require("./primitiveFns-EtHyTqhw.cjs");
7
+ const require_shapeFns = require("./shapeFns-B54CsPyk.cjs");
8
+ const require_loftFns = require("./loftFns-mkJeOaII.cjs");
9
+ const require_refResolveFns = require("./refResolveFns-D99Vqe7a.cjs");
10
10
  // src/utils/uuid.ts
11
11
  /** Generate a v4-style UUID string using `crypto.getRandomValues`. */
12
12
  function uuidv() {
@@ -1,12 +1,12 @@
1
- import { F as createKernelHandle, G as _usingCtx, N as DisposalScope, n as castResultShape, q as getKernel, x as isShape3D } from "./shapeTypes-Bva18qvE.js";
2
- import { E as ok, d as validationError, g as err, n as computationError, r as ioError, t as BrepErrorCode, x as isOk } from "./errors-B3espUT6.js";
1
+ import { F as createKernelHandle, G as _usingCtx, N as DisposalScope, n as castResultShape, q as getKernel, x as isShape3D } from "./shapeTypes-CgbUTASh.js";
2
+ import { E as ok, d as validationError, g as err, n as computationError, r as ioError, t as BrepErrorCode, x as isOk } from "./errors-vxP5FT8B.js";
3
3
  import { d as vecNormalize, s as vecIsZero } from "./vecOps-S-m9H_fe.js";
4
- import { b as fromBREP } from "./faceFns-C-wc4fX-.js";
5
- import { h as fuseAll } from "./solidBuilders-BpTN-NfM.js";
6
- import { E as wire, h as line } from "./primitiveFns-h_zOAbmf.js";
7
- import { s as toBREP } from "./shapeFns-B5hzkmwe.js";
8
- import { t as loft } from "./loftFns-CTTia_cZ.js";
9
- import { c as resolveRefParams } from "./refResolveFns-DUDJqfOM.js";
4
+ import { b as fromBREP } from "./faceFns-BBk6XKJO.js";
5
+ import { h as fuseAll } from "./solidBuilders-DE_na4G3.js";
6
+ import { E as wire, h as line } from "./primitiveFns-W3RYNJcm.js";
7
+ import { s as toBREP } from "./shapeFns-DB3l3ULC.js";
8
+ import { t as loft } from "./loftFns-B8DSoG-F.js";
9
+ import { c as resolveRefParams } from "./refResolveFns-BkciKtNP.js";
10
10
  // src/utils/uuid.ts
11
11
  /** Generate a v4-style UUID string using `crypto.getRandomValues`. */
12
12
  function uuidv() {
@@ -36,6 +36,9 @@ export declare function chamfer(shape: ValidSolid, edges: ReadonlyArray<Edge> |
36
36
  * @param faces - Faces to remove.
37
37
  * @param thickness - Wall thickness.
38
38
  * @param tolerance - Shell operation tolerance (default 1e-3).
39
+ * @returns Err `SHELL_NO_EFFECT` when the wall is too thick and the kernel
40
+ * hands back the input, `SHELL_INVALID_RESULT` when the result is not a
41
+ * usable hollow body.
39
42
  */
40
43
  export declare function shell(shape: ValidSolid, faces: ReadonlyArray<Face>, thickness: number, tolerance?: number, { trackEvolution }?: {
41
44
  trackEvolution?: boolean | undefined;
@@ -46,6 +49,8 @@ export declare function shell(shape: ValidSolid, faces: ReadonlyArray<Face>, thi
46
49
  * @param shape - The shape to offset (must be a 3D shape with faces).
47
50
  * @param distance - Offset distance (positive = outward, negative = inward).
48
51
  * @param tolerance - Offset tolerance (default 1e-6).
52
+ * @returns Err `OFFSET_INVALID_RESULT` when the offset consumes the body or
53
+ * gives no usable solid.
49
54
  */
50
55
  export declare function offset(shape: ValidSolid, distance: number, tolerance?: number): Result<ValidSolid>;
51
56
  /**
@@ -0,0 +1,18 @@
1
+ import { Shape3D } from '../core/shapeTypes.js';
2
+ import { ValidSolid } from '../core/validityTypes.js';
3
+ import { Result } from '../core/result.js';
4
+ import { ShapeEvolution } from '../kernel/types.js';
5
+ export interface ThickResultSpec {
6
+ readonly operation: 'shell' | 'offset';
7
+ /** Signed offset distance; a shell wall grows inward, so pass its thickness negated. */
8
+ readonly distance: number;
9
+ readonly tolerance: number;
10
+ /** Shell openings: their history records the rim, not an offset wall. */
11
+ readonly openedFaceHashes?: ReadonlySet<number> | undefined;
12
+ }
13
+ /**
14
+ * Verify a shell/offset result against its input. The wall-distance check
15
+ * needs `evolution` built from every input face hash and a kernel with native
16
+ * history; pass `undefined` to skip it.
17
+ */
18
+ export declare function checkThickResult(input: ValidSolid, result: Shape3D, evolution: ShapeEvolution | undefined, spec: ThickResultSpec): Result<undefined>;
package/dist/topology.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_topologyQueryFns = require("./topologyQueryFns-C6HwYYpi.cjs");
3
- const require_faceFns = require("./faceFns-B8ctN5Te.cjs");
4
- const require_solidBuilders = require("./solidBuilders-BFEnqrU0.cjs");
5
- const require_primitiveFns = require("./primitiveFns-CktCbLBo.cjs");
6
- const require_shapeFns = require("./shapeFns-DKDlt3k2.cjs");
7
- const require_curveFns = require("./curveFns-Cxq5lFqU.cjs");
8
- const require_meshFns = require("./meshFns-r_p0RRoO.cjs");
9
- const require_healingFns = require("./healingFns-D3mNy1rp.cjs");
10
- const require_adjacencyFns = require("./adjacencyFns-CmNvIFu1.cjs");
2
+ const require_topologyQueryFns = require("./topologyQueryFns-ENxs8uu2.cjs");
3
+ const require_faceFns = require("./faceFns-DSRREV5G.cjs");
4
+ const require_solidBuilders = require("./solidBuilders-CUd-korS.cjs");
5
+ const require_primitiveFns = require("./primitiveFns-EtHyTqhw.cjs");
6
+ const require_shapeFns = require("./shapeFns-B54CsPyk.cjs");
7
+ const require_curveFns = require("./curveFns-U7srQ3ZA.cjs");
8
+ const require_meshFns = require("./meshFns-W7ZTKqiJ.cjs");
9
+ const require_healingFns = require("./healingFns-C9G3yjOe.cjs");
10
+ const require_adjacencyFns = require("./adjacencyFns-_RTYhwtD.cjs");
11
11
  exports.addHoles = require_primitiveFns.addHoles;
12
12
  exports.adjacentFaces = require_adjacencyFns.adjacentFaces;
13
13
  exports.approximateCurve = require_curveFns.approximateCurve;
package/dist/topology.js CHANGED
@@ -1,10 +1,10 @@
1
- import { _ as iterFaces, b as iterVertices, c as getFaces, f as getVertices, g as iterEdges, m as invalidateShapeCache, n as getBounds, p as getWires, s as getEdges, w as vertexPosition, x as iterWires } from "./topologyQueryFns-CY6YiGsk.js";
2
- import { C as shapeType, S as iterTopo, _ as cast, a as faceOrientation, b as fromBREP, c as innerWires, d as pointOnSurface, f as projectPointOnFace, g as asTopo, h as uvCoordinates, i as faceGeomType, l as normalAt, m as uvBounds, n as faceAxis, o as flipFaceOrientation, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, x as isCompSolid, y as downcast } from "./faceFns-C-wc4fX-.js";
3
- import { h as fuseAll, p as cutAll } from "./solidBuilders-BpTN-NfM.js";
4
- import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus, x as subFace, y as solid } from "./primitiveFns-h_zOAbmf.js";
5
- import { a as isSameShape, i as isEqualShape, n as getHashCode } from "./shapeFns-B5hzkmwe.js";
6
- import { a as curveIsPeriodic, c as curvePointAt, d as flipOrientation, f as getCurveType, h as offsetWire2D, i as curveIsClosed, l as curveStartPoint, m as interpolateCurve, n as curveAxis, o as curveLength, p as getOrientation, r as curveEndPoint, s as curvePeriod, t as approximateCurve, u as curveTangentAt } from "./curveFns-CEb6TLxC.js";
7
- import { d as clearMeshCache, f as createMeshCache, n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-uNRS602U.js";
8
- import { A as toBufferGeometryData, P as toLineGeometryData, S as chamferDistAngle, _ as checkBoolean, a as healFace, b as getNurbsCurveData, d as chamferWithEvolution, f as cutWithEvolution, g as shellWithEvolution, h as intersectWithEvolution, j as toGroupedBufferGeometryData, k as variableFillet, l as solidFromShell, m as fuseWithEvolution, n as fixSelfIntersection, o as healSolid, p as filletWithEvolution, r as fixShape, s as healWire, t as autoHeal, u as positionOnCurve, v as cutAllBisect, x as getNurbsSurfaceData, y as fuseAllBisect } from "./healingFns-CJfuZMw2.js";
9
- import { i as facesOfEdge, l as wiresOfFace, n as adjacentFaces, o as sharedEdges, r as edgesOfFace, s as verticesOfEdge } from "./adjacencyFns-DO9_F2YJ.js";
1
+ import { _ as iterFaces, b as iterVertices, c as getFaces, f as getVertices, g as iterEdges, m as invalidateShapeCache, n as getBounds, p as getWires, s as getEdges, w as vertexPosition, x as iterWires } from "./topologyQueryFns-6M_dbT1R.js";
2
+ import { C as shapeType, S as iterTopo, _ as cast, a as faceOrientation, b as fromBREP, c as innerWires, d as pointOnSurface, f as projectPointOnFace, g as asTopo, h as uvCoordinates, i as faceGeomType, l as normalAt, m as uvBounds, n as faceAxis, o as flipFaceOrientation, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, x as isCompSolid, y as downcast } from "./faceFns-BBk6XKJO.js";
3
+ import { h as fuseAll, p as cutAll } from "./solidBuilders-DE_na4G3.js";
4
+ import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus, x as subFace, y as solid } from "./primitiveFns-W3RYNJcm.js";
5
+ import { a as isSameShape, i as isEqualShape, n as getHashCode } from "./shapeFns-DB3l3ULC.js";
6
+ import { a as curveIsPeriodic, c as curvePointAt, d as flipOrientation, f as getCurveType, h as offsetWire2D, i as curveIsClosed, l as curveStartPoint, m as interpolateCurve, n as curveAxis, o as curveLength, p as getOrientation, r as curveEndPoint, s as curvePeriod, t as approximateCurve, u as curveTangentAt } from "./curveFns-CkA2WJP2.js";
7
+ import { d as clearMeshCache, f as createMeshCache, n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-CgbT3uuO.js";
8
+ import { A as toBufferGeometryData, P as toLineGeometryData, S as chamferDistAngle, _ as checkBoolean, a as healFace, b as getNurbsCurveData, d as chamferWithEvolution, f as cutWithEvolution, g as shellWithEvolution, h as intersectWithEvolution, j as toGroupedBufferGeometryData, k as variableFillet, l as solidFromShell, m as fuseWithEvolution, n as fixSelfIntersection, o as healSolid, p as filletWithEvolution, r as fixShape, s as healWire, t as autoHeal, u as positionOnCurve, v as cutAllBisect, x as getNurbsSurfaceData, y as fuseAllBisect } from "./healingFns-CEr0afli.js";
9
+ import { i as facesOfEdge, l as wiresOfFace, n as adjacentFaces, o as sharedEdges, r as edgesOfFace, s as verticesOfEdge } from "./adjacencyFns-BgJQQjdt.js";
10
10
  export { addHoles, adjacentFaces, approximateCurve, asTopo, autoHeal, bezier, box, bsplineApprox, cast, chamferDistAngle as chamferDistAngleShape, chamferWithEvolution, checkBoolean, circle, classifyPointOnFace, clearMeshCache, compound, cone, createMeshCache, curveAxis, curveEndPoint, curveIsClosed, curveIsPeriodic, curveLength, curvePeriod, curvePointAt, curveStartPoint, curveTangentAt, cutAll, cutAllBisect, cutWithEvolution, cylinder, fromBREP as deserializeShape, downcast, edgesOfFace, ellipse, ellipseArc, ellipsoid, exportIGES, exportSTEP, exportSTL, face, faceAxis, faceCenter, faceGeomType, faceOrientation, facesOfEdge, filledFace, filletWithEvolution, fixSelfIntersection, fixShape, flipFaceOrientation, flipOrientation, fuseAll, fuseAllBisect, fuseWithEvolution, getBounds, getCurveType, getEdges, getFaces, getHashCode, getNurbsCurveData, getNurbsSurfaceData, getOrientation, getSurfaceType, getVertices, getWires, healFace, healSolid, healWire, helix, innerWires, interpolateCurve, intersectWithEvolution, invalidateShapeCache, isCompSolid, isEqualShape, isSameShape, iterEdges, iterFaces, iterTopo, iterVertices, iterWires, line, normalAt, offsetFace, offsetWire2D, outerWire, pointOnSurface, polygon, positionOnCurve, projectPointOnFace, sewShells, shapeType, sharedEdges, shellWithEvolution, solid, solidFromShell, sphere, subFace, tangentArc, threePointArc, toBufferGeometryData, toGroupedBufferGeometryData, toLineGeometryData, torus, uvBounds, uvCoordinates, variableFillet, vertex, vertexPosition, verticesOfEdge, wire, wireLoop, wiresOfFace };
@@ -1,5 +1,5 @@
1
- import { G as _usingCtx, N as DisposalScope, O as getOrQueryType, n as castResultShape, q as getKernel, r as castResultShapeWithKnownType } from "./shapeTypes-Bva18qvE.js";
2
- import { E as ok, g as err } from "./errors-B3espUT6.js";
1
+ import { G as _usingCtx, N as DisposalScope, O as getOrQueryType, n as castResultShape, q as getKernel, r as castResultShapeWithKnownType } from "./shapeTypes-CgbUTASh.js";
2
+ import { E as ok, g as err } from "./errors-vxP5FT8B.js";
3
3
  import { n as HASH_CODE_MAX } from "./constants-iraOnb2p.js";
4
4
  // src/core/kernelErrorTranslation.ts
5
5
  /**
@@ -74,6 +74,9 @@ var ERROR_CODE_SUGGESTIONS = {
74
74
  CHAMFER_NOT_3D: "The chamfer distance may be too large. Try a smaller distance or check edge geometry.",
75
75
  SHELL_NOT_3D: "The shell thickness may be too large for the shape. Try reducing thickness or removing problematic faces.",
76
76
  OFFSET_NOT_3D: "The offset distance may be too large for the shape geometry. Try a smaller distance.",
77
+ SHELL_NO_EFFECT: "The wall is too thick for this body. Use a wall thinner than half the narrowest part of the shape.",
78
+ SHELL_INVALID_RESULT: "The wall is too thick for this body or one of its curved faces. Use a wall thinner than half the narrowest part and smaller than the tightest convex radius.",
79
+ OFFSET_INVALID_RESULT: "The offset is too large for this body. An inward offset must stay below half the narrowest part and the tightest convex radius.",
77
80
  DRAFT_FAILED: "The draft angle may be too large or the selected faces incompatible. Try a smaller angle or different faces."
78
81
  };
79
82
  /** Look up an actionable suggestion for a given error code. */
@@ -426,4 +429,4 @@ function describe(shape) {
426
429
  function vertexPosition(vertex) {
427
430
  return getKernel().vertexPosition(vertex.wrapped);
428
431
  }
429
- export { subShapeHashes as C, kernelCallScoped as D, kernelCallRaw as E, subShapeCount as S, kernelCall as T, iterFaces as _, getCachedSurfaceType as a, iterVertices as b, getFaces as c, getSolids as d, getVertices as f, iterEdges as g, iterCompSolids as h, getCachedIsValid as i, getOrCreateCache as l, invalidateShapeCache as m, getBounds as n, getCompSolids as o, getWires as p, getCacheEntry as r, getEdges as s, describe as t, getShells as u, iterShells as v, vertexPosition as w, iterWires as x, iterSolids as y };
432
+ export { subShapeHashes as C, kernelCallScoped as D, kernelCallRaw as E, getSuggestionForCode as O, subShapeCount as S, kernelCall as T, iterFaces as _, getCachedSurfaceType as a, iterVertices as b, getFaces as c, getSolids as d, getVertices as f, iterEdges as g, iterCompSolids as h, getCachedIsValid as i, getOrCreateCache as l, invalidateShapeCache as m, getBounds as n, getCompSolids as o, getWires as p, getCacheEntry as r, getEdges as s, describe as t, getShells as u, iterShells as v, vertexPosition as w, iterWires as x, iterSolids as y };
@@ -1,5 +1,5 @@
1
- const require_shapeTypes = require("./shapeTypes-CkxvJRpq.cjs");
2
- const require_errors = require("./errors-DoMAp7mQ.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D_anqiRe.cjs");
2
+ const require_errors = require("./errors-GVyCnpi0.cjs");
3
3
  const require_constants = require("./constants-oee0S_x6.cjs");
4
4
  // src/core/kernelErrorTranslation.ts
5
5
  /**
@@ -74,6 +74,9 @@ var ERROR_CODE_SUGGESTIONS = {
74
74
  CHAMFER_NOT_3D: "The chamfer distance may be too large. Try a smaller distance or check edge geometry.",
75
75
  SHELL_NOT_3D: "The shell thickness may be too large for the shape. Try reducing thickness or removing problematic faces.",
76
76
  OFFSET_NOT_3D: "The offset distance may be too large for the shape geometry. Try a smaller distance.",
77
+ SHELL_NO_EFFECT: "The wall is too thick for this body. Use a wall thinner than half the narrowest part of the shape.",
78
+ SHELL_INVALID_RESULT: "The wall is too thick for this body or one of its curved faces. Use a wall thinner than half the narrowest part and smaller than the tightest convex radius.",
79
+ OFFSET_INVALID_RESULT: "The offset is too large for this body. An inward offset must stay below half the narrowest part and the tightest convex radius.",
77
80
  DRAFT_FAILED: "The draft angle may be too large or the selected faces incompatible. Try a smaller angle or different faces."
78
81
  };
79
82
  /** Look up an actionable suggestion for a given error code. */
@@ -492,6 +495,12 @@ Object.defineProperty(exports, "getSolids", {
492
495
  return getSolids;
493
496
  }
494
497
  });
498
+ Object.defineProperty(exports, "getSuggestionForCode", {
499
+ enumerable: true,
500
+ get: function() {
501
+ return getSuggestionForCode;
502
+ }
503
+ });
495
504
  Object.defineProperty(exports, "getVertices", {
496
505
  enumerable: true,
497
506
  get: function() {
@@ -1,5 +1,5 @@
1
- const require_shapeTypes = require("./shapeTypes-CkxvJRpq.cjs");
2
- const require_errors = require("./errors-DoMAp7mQ.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D_anqiRe.cjs");
2
+ const require_errors = require("./errors-GVyCnpi0.cjs");
3
3
  // src/core/validityTypes.ts
4
4
  /**
5
5
  * Type guard — check if a wire is closed (forms a loop).
@@ -1,5 +1,5 @@
1
- import { q as getKernel } from "./shapeTypes-Bva18qvE.js";
2
- import { E as ok, g as err } from "./errors-B3espUT6.js";
1
+ import { q as getKernel } from "./shapeTypes-CgbUTASh.js";
2
+ import { E as ok, g as err } from "./errors-vxP5FT8B.js";
3
3
  // src/core/validityTypes.ts
4
4
  /**
5
5
  * Type guard — check if a wire is closed (forms a loop).
package/dist/vectors.cjs CHANGED
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_constants = require("./constants-oee0S_x6.cjs");
3
3
  const require_types = require("./types-CjF9Rofr.cjs");
4
4
  const require_vecOps = require("./vecOps-CrGEPPQM.cjs");
5
- const require_planeOps = require("./planeOps-BDt05NAD.cjs");
5
+ const require_planeOps = require("./planeOps-C9d2Y56B.cjs");
6
6
  exports.DEG2RAD = require_constants.DEG2RAD;
7
7
  exports.RAD2DEG = require_constants.RAD2DEG;
8
8
  exports.createNamedPlane = require_planeOps.createNamedPlane;
package/dist/vectors.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { r as RAD2DEG, t as DEG2RAD } from "./constants-iraOnb2p.js";
2
2
  import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-CKXsIm9-.js";
3
3
  import { a as vecDot, c as vecLength, d as vecNormalize, f as vecProjectToPlane, g as vecSub, h as vecScale, i as vecDistance, l as vecLengthSq, m as vecRotate, n as vecAngle, o as vecEquals, p as vecRepr, r as vecCross, s as vecIsZero, t as vecAdd, u as vecNegate } from "./vecOps-S-m9H_fe.js";
4
- import { i as pivotPlane, n as createPlane, o as resolvePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-BkwaqhUj.js";
4
+ import { i as pivotPlane, n as createPlane, o as resolvePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-Dp0YvuFE.js";
5
5
  export { DEG2RAD, RAD2DEG, createNamedPlane, createPlane, pivotPlane, resolveDirection, resolvePlane, toVec2, toVec3, translatePlane, vecAdd, vecAngle, vecCross, vecDistance, vecDot, vecEquals, vecIsZero, vecLength, vecLengthSq, vecNegate, vecNormalize, vecProjectToPlane, vecRepr, vecRotate, vecScale, vecSub };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brepjs",
3
- "version": "20.6.0",
3
+ "version": "20.7.0",
4
4
  "description": "Web CAD library with pluggable geometry kernel",
5
5
  "keywords": [
6
6
  "cad",