okgeometry-api 1.16.0 → 1.17.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.
package/dist/Brep.d.ts CHANGED
@@ -43,6 +43,20 @@ export interface BrepSplitSolidResult {
43
43
  /** The half the sheet normal points into (null when empty). */
44
44
  positive: Brep | null;
45
45
  }
46
+ /**
47
+ * Both sides of a sheet split ({@link Brep.splitSheetBySolid} /
48
+ * {@link Brep.splitSheetBySheet}), each an OPEN Brep preserving the sheet's
49
+ * exact trimmed faces, pcurves and edges.
50
+ *
51
+ * `inside` follows the oriented-sheet convention ("inside" = FRONT, the side
52
+ * a sheet's normal points toward): pieces CONTAINED in the solid cutter, or
53
+ * pieces in FRONT of the sheet cutter's normal. A side is null when no
54
+ * material lands on it.
55
+ */
56
+ export interface BrepSheetSplitResult {
57
+ inside: Brep | null;
58
+ outside: Brep | null;
59
+ }
46
60
  /** Validation report for a BREP body. */
47
61
  export interface BrepValidationReport {
48
62
  isClosed: boolean;
@@ -349,13 +363,43 @@ export declare class Brep {
349
363
  * deterministic auto display tolerance from the BREP's own extent
350
364
  */
351
365
  intersectMesh(mesh: Mesh, tolerance?: number): Polyline[];
366
+ /**
367
+ * Resolve a parametric-boolean operand: Breps pass through; Meshes are
368
+ * converted via {@link Brep.fromMesh} (planar-faceted meshes only) so the
369
+ * EXACT pipeline can run. Curved/dense meshes fail conversion with
370
+ * guidance to use the tessellated union()/subtract()/intersect() instead.
371
+ */
372
+ private static resolveParametricOperand;
352
373
  private runParametricBoolean;
353
374
  /**
354
375
  * PARAMETRIC boolean union: exact surface–surface intersection curves with
355
376
  * trimmed-surface output. Result faces keep their parents' exact surfaces
356
377
  * (planes/NURBS, untessellated); intersection edges are Newton-refined SSI
357
378
  * curves stored as tolerant NURBS edges with matched pcurves on both
358
- * adjacent faces. Both operands must be CLOSED solids.
379
+ * adjacent faces.
380
+ *
381
+ * Operands may be CLOSED solids or OPEN sheets — the kernel dispatches on
382
+ * closedness, following the oriented-sheet convention used across the API
383
+ * (a sheet's "inside" is the FRONT of its normal):
384
+ * - closed × closed — full volumetric boolean.
385
+ * - sheet × solid — `subtract` keeps the sheet's pieces OUTSIDE the solid,
386
+ * `intersect` the pieces INSIDE (open trimmed sheets).
387
+ * - solid × sheet — `subtract` keeps the capped half of the solid BEHIND
388
+ * the sheet normal, `intersect` the FRONT half (closed solids).
389
+ * - sheet × sheet — a sheet's material is its FRONT half-space, so
390
+ * `union` = ∂(matA ∪ matB): this sheet's BACK-of-other pieces joined
391
+ * with the other's BACK-of-this pieces into ONE open Brep stitched at
392
+ * the shared exact intersection edges (pieces in FRONT of the other
393
+ * sheet are interior to the union material and are dropped; faces the
394
+ * other operand never cuts are kept whole, coincident overlaps keep
395
+ * this sheet's copy); `subtract` keeps this sheet's BACK pieces;
396
+ * `intersect` its FRONT pieces.
397
+ * - `union` of a solid and a sheet (either order) is NOT defined and
398
+ * throws — trim the sheet with subtract/intersect instead.
399
+ *
400
+ * A Mesh operand is converted via {@link Brep.fromMesh} (planar-faceted
401
+ * meshes only); if conversion fails, use the tessellated
402
+ * union()/subtract()/intersect() instead.
359
403
  *
360
404
  * `options.tolerance` is the absolute geometric tolerance of intersection
361
405
  * edges and coincident-face classification (default 1e-6).
@@ -364,11 +408,21 @@ export declare class Brep {
364
408
  * cylinders touching along a line/point) is not resolved into pinch
365
409
  * topology; transversal and coincident (coplanar) configurations are exact.
366
410
  */
367
- unionBrep(other: Brep, options?: BrepParametricBooleanOptions): Brep;
368
- /** PARAMETRIC boolean subtraction (this − other). See {@link unionBrep}. */
369
- subtractBrep(other: Brep, options?: BrepParametricBooleanOptions): Brep;
370
- /** PARAMETRIC boolean intersection. See {@link unionBrep}. */
371
- intersectBrep(other: Brep, options?: BrepParametricBooleanOptions): Brep;
411
+ unionBrep(other: Brep | Mesh, options?: BrepParametricBooleanOptions): Brep;
412
+ /**
413
+ * PARAMETRIC boolean subtraction (this − other). See {@link unionBrep} for
414
+ * the full open/closed dispatch table: sheet − solid trims the sheet to
415
+ * the OUTSIDE of the solid; solid − sheet keeps the capped half BEHIND the
416
+ * sheet normal; sheet − sheet keeps this sheet's BACK pieces.
417
+ */
418
+ subtractBrep(other: Brep | Mesh, options?: BrepParametricBooleanOptions): Brep;
419
+ /**
420
+ * PARAMETRIC boolean intersection. See {@link unionBrep} for the full
421
+ * open/closed dispatch table: sheet ∩ solid trims the sheet to the INSIDE
422
+ * of the solid; solid ∩ sheet keeps the capped half in FRONT of the sheet
423
+ * normal; sheet ∩ sheet keeps this sheet's FRONT pieces.
424
+ */
425
+ intersectBrep(other: Brep | Mesh, options?: BrepParametricBooleanOptions): Brep;
372
426
  /**
373
427
  * Convert a closed manifold triangle mesh into a planar-face BREP: coplanar
374
428
  * connected facet groups become single trimmed planar faces (with hole
@@ -404,6 +458,30 @@ export declare class Brep {
404
458
  */
405
459
  static splitMeshBySurface(mesh: Mesh, surface: NurbsSurface, options?: BrepParametricBooleanOptions & MeshToBrepConversionOptions): BrepSplitSolidResult;
406
460
  private static parseSplitResult;
461
+ /**
462
+ * PARAMETRIC split of this OPEN sheet by a CLOSED solid: the sheet's faces
463
+ * are imprinted with the exact intersection curves and every face piece is
464
+ * classified by containment in the solid. `inside` = the pieces contained
465
+ * in the solid (ON-boundary pieces count as inside), `outside` = the rest.
466
+ * Both sides are open Breps preserving the sheet's exact trimmed faces,
467
+ * pcurves and edges.
468
+ *
469
+ * The counterpart of {@link splitBySheet} with the roles swapped: use that
470
+ * one to split a closed solid BY a sheet (capped halves); use this one to
471
+ * split a sheet BY a solid (trimmed sheet pieces).
472
+ */
473
+ splitSheetBySolid(solid: Brep, options?: BrepParametricBooleanOptions): BrepSheetSplitResult;
474
+ /**
475
+ * PARAMETRIC split of this OPEN sheet by another OPEN sheet (a sheet Brep
476
+ * or a NurbsSurface, converted via {@link Brep.fromSurface}): the mutual
477
+ * exact intersection curves are imprinted onto this sheet's faces and each
478
+ * piece is assigned to the FRONT (`inside`) or BACK (`outside`) of the
479
+ * other sheet's oriented normal — the same seam-vote classification as
480
+ * {@link splitBySheet}. Faces the cutter never crosses classify wholesale
481
+ * by their side of the cutter; coincident-overlap pieces land in `inside`.
482
+ */
483
+ splitSheetBySheet(other: Brep | NurbsSurface, options?: BrepParametricBooleanOptions): BrepSheetSplitResult;
484
+ private static parseSheetSplitResult;
407
485
  /** JSON representation (persistence). */
408
486
  toJson(): string;
409
487
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Brep.d.ts","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Brep.d.ts","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"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"}
package/dist/Brep.js CHANGED
@@ -646,10 +646,29 @@ export class Brep {
646
646
  return out;
647
647
  }
648
648
  // ── Parametric booleans (BREP → BREP) ──
649
+ /**
650
+ * Resolve a parametric-boolean operand: Breps pass through; Meshes are
651
+ * converted via {@link Brep.fromMesh} (planar-faceted meshes only) so the
652
+ * EXACT pipeline can run. Curved/dense meshes fail conversion with
653
+ * guidance to use the tessellated union()/subtract()/intersect() instead.
654
+ */
655
+ static resolveParametricOperand(other) {
656
+ if (other instanceof Brep)
657
+ return other;
658
+ try {
659
+ return Brep.fromMesh(other);
660
+ }
661
+ catch (e) {
662
+ const reason = e instanceof Error ? e.message : String(e);
663
+ throw new Error(`Parametric boolean operand mesh could not be converted to a BREP (${reason}); ` +
664
+ "use the tessellated union()/subtract()/intersect() for mesh operands instead");
665
+ }
666
+ }
649
667
  runParametricBoolean(other, op, options) {
650
668
  ensureInit();
669
+ const rhs = Brep.resolveParametricOperand(other);
651
670
  const tolerance = options?.tolerance ?? 1e-6;
652
- const json = wasm.brep_boolean_op(this.json, other.json, op, tolerance);
671
+ const json = wasm.brep_boolean_op(this.json, rhs.json, op, tolerance);
653
672
  if (!json)
654
673
  throw new Error(`Brep.${op}Brep failed`);
655
674
  if (json.startsWith('{"error"')) {
@@ -663,7 +682,30 @@ export class Brep {
663
682
  * trimmed-surface output. Result faces keep their parents' exact surfaces
664
683
  * (planes/NURBS, untessellated); intersection edges are Newton-refined SSI
665
684
  * curves stored as tolerant NURBS edges with matched pcurves on both
666
- * adjacent faces. Both operands must be CLOSED solids.
685
+ * adjacent faces.
686
+ *
687
+ * Operands may be CLOSED solids or OPEN sheets — the kernel dispatches on
688
+ * closedness, following the oriented-sheet convention used across the API
689
+ * (a sheet's "inside" is the FRONT of its normal):
690
+ * - closed × closed — full volumetric boolean.
691
+ * - sheet × solid — `subtract` keeps the sheet's pieces OUTSIDE the solid,
692
+ * `intersect` the pieces INSIDE (open trimmed sheets).
693
+ * - solid × sheet — `subtract` keeps the capped half of the solid BEHIND
694
+ * the sheet normal, `intersect` the FRONT half (closed solids).
695
+ * - sheet × sheet — a sheet's material is its FRONT half-space, so
696
+ * `union` = ∂(matA ∪ matB): this sheet's BACK-of-other pieces joined
697
+ * with the other's BACK-of-this pieces into ONE open Brep stitched at
698
+ * the shared exact intersection edges (pieces in FRONT of the other
699
+ * sheet are interior to the union material and are dropped; faces the
700
+ * other operand never cuts are kept whole, coincident overlaps keep
701
+ * this sheet's copy); `subtract` keeps this sheet's BACK pieces;
702
+ * `intersect` its FRONT pieces.
703
+ * - `union` of a solid and a sheet (either order) is NOT defined and
704
+ * throws — trim the sheet with subtract/intersect instead.
705
+ *
706
+ * A Mesh operand is converted via {@link Brep.fromMesh} (planar-faceted
707
+ * meshes only); if conversion fails, use the tessellated
708
+ * union()/subtract()/intersect() instead.
667
709
  *
668
710
  * `options.tolerance` is the absolute geometric tolerance of intersection
669
711
  * edges and coincident-face classification (default 1e-6).
@@ -675,11 +717,21 @@ export class Brep {
675
717
  unionBrep(other, options) {
676
718
  return this.runParametricBoolean(other, "union", options);
677
719
  }
678
- /** PARAMETRIC boolean subtraction (this − other). See {@link unionBrep}. */
720
+ /**
721
+ * PARAMETRIC boolean subtraction (this − other). See {@link unionBrep} for
722
+ * the full open/closed dispatch table: sheet − solid trims the sheet to
723
+ * the OUTSIDE of the solid; solid − sheet keeps the capped half BEHIND the
724
+ * sheet normal; sheet − sheet keeps this sheet's BACK pieces.
725
+ */
679
726
  subtractBrep(other, options) {
680
727
  return this.runParametricBoolean(other, "subtract", options);
681
728
  }
682
- /** PARAMETRIC boolean intersection. See {@link unionBrep}. */
729
+ /**
730
+ * PARAMETRIC boolean intersection. See {@link unionBrep} for the full
731
+ * open/closed dispatch table: sheet ∩ solid trims the sheet to the INSIDE
732
+ * of the solid; solid ∩ sheet keeps the capped half in FRONT of the sheet
733
+ * normal; sheet ∩ sheet keeps this sheet's FRONT pieces.
734
+ */
683
735
  intersectBrep(other, options) {
684
736
  return this.runParametricBoolean(other, "intersect", options);
685
737
  }
@@ -749,6 +801,51 @@ export class Brep {
749
801
  const side = (v) => v == null ? null : new Brep(JSON.stringify(v));
750
802
  return { negative: side(parsed.negative), positive: side(parsed.positive) };
751
803
  }
804
+ /**
805
+ * PARAMETRIC split of this OPEN sheet by a CLOSED solid: the sheet's faces
806
+ * are imprinted with the exact intersection curves and every face piece is
807
+ * classified by containment in the solid. `inside` = the pieces contained
808
+ * in the solid (ON-boundary pieces count as inside), `outside` = the rest.
809
+ * Both sides are open Breps preserving the sheet's exact trimmed faces,
810
+ * pcurves and edges.
811
+ *
812
+ * The counterpart of {@link splitBySheet} with the roles swapped: use that
813
+ * one to split a closed solid BY a sheet (capped halves); use this one to
814
+ * split a sheet BY a solid (trimmed sheet pieces).
815
+ */
816
+ splitSheetBySolid(solid, options) {
817
+ ensureInit();
818
+ const tolerance = options?.tolerance ?? 1e-6;
819
+ const json = wasm.brep_split_sheet_by_solid_op(this.json, solid.json, tolerance);
820
+ return Brep.parseSheetSplitResult(json, "Brep.splitSheetBySolid");
821
+ }
822
+ /**
823
+ * PARAMETRIC split of this OPEN sheet by another OPEN sheet (a sheet Brep
824
+ * or a NurbsSurface, converted via {@link Brep.fromSurface}): the mutual
825
+ * exact intersection curves are imprinted onto this sheet's faces and each
826
+ * piece is assigned to the FRONT (`inside`) or BACK (`outside`) of the
827
+ * other sheet's oriented normal — the same seam-vote classification as
828
+ * {@link splitBySheet}. Faces the cutter never crosses classify wholesale
829
+ * by their side of the cutter; coincident-overlap pieces land in `inside`.
830
+ */
831
+ splitSheetBySheet(other, options) {
832
+ ensureInit();
833
+ const cutter = other instanceof Brep ? other : Brep.fromSurface(other);
834
+ const tolerance = options?.tolerance ?? 1e-6;
835
+ const json = wasm.brep_split_sheet_by_sheet_op(this.json, cutter.json, tolerance);
836
+ return Brep.parseSheetSplitResult(json, "Brep.splitSheetBySheet");
837
+ }
838
+ static parseSheetSplitResult(json, label) {
839
+ if (!json)
840
+ throw new Error(`${label} failed`);
841
+ if (json.startsWith('{"error"')) {
842
+ const parsed = JSON.parse(json);
843
+ throw new Error(`${label} failed: ${parsed.error}`);
844
+ }
845
+ const parsed = JSON.parse(json);
846
+ const side = (v) => v == null ? null : new Brep(JSON.stringify(v));
847
+ return { inside: side(parsed.inside), outside: side(parsed.outside) };
848
+ }
752
849
  /** JSON representation (persistence). */
753
850
  toJson() {
754
851
  return this.json;
package/dist/Brep.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Brep.js","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Brep.js","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { Mesh } from "./Mesh.js";
2
+ import { Brep } from "./Brep.js";
3
+ import { NurbsSurface } from "./NurbsSurface.js";
4
+ import { NurbsCurve } from "./NurbsCurve.js";
5
+ import { Polyline } from "./Polyline.js";
6
+ import { Polygon } from "./Polygon.js";
7
+ import { PolyCurve } from "./PolyCurve.js";
8
+ import { Arc } from "./Arc.js";
9
+ import { Circle } from "./Circle.js";
10
+ import { Line } from "./Line.js";
11
+ import { Point } from "./Point.js";
12
+ /**
13
+ * Universal geometry boolean dispatcher, the single source of truth for
14
+ * "any geometry x any geometry" boolean semantics. Both okdraw and oknodes
15
+ * consume this module instead of re-implementing the dispatch matrix.
16
+ *
17
+ * Operands are classified by EFFECTIVE DIMENSION (what the geometry actually
18
+ * is, not what class it arrived as):
19
+ * - brep solid — closed Brep
20
+ * - brep sheet — open Brep, or a NurbsSurface (via Brep.fromSurface)
21
+ * - mesh solid — closed-volume triangle mesh
22
+ * - mesh sheet — open triangle mesh
23
+ * - curve — NurbsCurve, Polyline, Polygon (a Polyline subclass, always
24
+ * closed), PolyCurve, Arc, Circle, Line (all coerce to an exact
25
+ * NurbsCurve; piecewise-linear inputs keep their native polyline where
26
+ * polyline ops are cheaper or exact)
27
+ *
28
+ * Closedness caveat: curve closedness is decided by each operand's own
29
+ * isClosed() test, which for NurbsCurve / Polyline / PolyCurve is an
30
+ * ENDPOINT-PROXIMITY gate — start and end must coincide within 1e-10
31
+ * (Arc closes on a full 2π sweep; Circle and Polygon are always closed).
32
+ * A curve whose endpoints coincide within that tolerance therefore gets the
33
+ * closed-curve semantics (region booleans); a curve with a genuine endpoint
34
+ * gap gets the open-curve semantics (no region booleans,
35
+ * point-intersections). The region-boolean kernel re-verifies closure with a
36
+ * scale-relative tolerance and rejects open curves instead of silently
37
+ * chord-closing them.
38
+ *
39
+ * Result kinds follow the dimension of the result set:
40
+ * - solid/sheet x solid/sheet — 'brep' (parametric path) or 'mesh'
41
+ * (tessellated path, the documented downgrade when the parametric
42
+ * pipeline is unavailable or fails)
43
+ * - curve x solid — 'curves' (clip pieces)
44
+ * - curve x sheet — 'points' (crossings) for intersect, 'curves' for subtract
45
+ * - curve x curve — 'curves' (region boundaries) when both are closed +
46
+ * coplanar (Rhino CurveBoolean); 'points' for intersect of open curves
47
+ *
48
+ * Unsupported combinations throw typed, actionable errors.
49
+ */
50
+ export type BooleanOpKind = "union" | "subtract" | "intersect";
51
+ export type BooleanOperand = Mesh | Brep | NurbsSurface | NurbsCurve | Polyline | Polygon | PolyCurve | Arc | Circle | Line;
52
+ export interface GeometryBooleanOptions {
53
+ /**
54
+ * PARAMETRIC tolerance: the SSI edge / classification tolerance of the
55
+ * exact BREP paths (default 1e-6). It is NEVER used as a tessellation
56
+ * tolerance — feeding an SSI-grade tolerance to toMesh would produce
57
+ * pathologically dense fallback meshes.
58
+ */
59
+ tolerance?: number;
60
+ /**
61
+ * TESSELLATION tolerance: used whenever a BREP/surface must be converted
62
+ * to a mesh (toMesh conversions, tessellated fallbacks, side-probe
63
+ * meshes). When omitted the default is SCALE-RELATIVE: the combined
64
+ * operands' bounds diagonal × 2e-3 (the render pipeline's recipe), floored
65
+ * at 1e-6 — an absolute default breaks mm-scale models (degenerate probe
66
+ * tessellations) and wastes time on 100 m models. An explicit value always
67
+ * wins.
68
+ */
69
+ meshTolerance?: number;
70
+ }
71
+ export interface GeometryBooleanResult {
72
+ kind: "brep" | "mesh" | "curves" | "points";
73
+ /** Single BREP result (set when the result is exactly one BREP). */
74
+ brep?: Brep;
75
+ /** All BREP pieces ('brep' results always set this, booleans have one entry). */
76
+ breps?: Brep[];
77
+ /** Merged mesh result (all pieces in one multi-component mesh). */
78
+ mesh?: Mesh;
79
+ /** Individual mesh pieces ('mesh' results always set this). */
80
+ meshes?: Mesh[];
81
+ /** Curve pieces. NurbsCurve pieces are exact (they lie exactly on the input curve); Polyline pieces come from polyline-native or tessellated paths. */
82
+ curves?: (NurbsCurve | Polyline)[];
83
+ /** Intersection points. */
84
+ points?: Point[];
85
+ }
86
+ /**
87
+ * Boolean of any two geometries, dispatched by effective dimension.
88
+ *
89
+ * Dispatch matrix (A x B):
90
+ * - brep x brep (any closedness) — parametric unionBrep/subtractBrep/
91
+ * intersectBrep (sheet-capable) returning kind 'brep'; parametric failures
92
+ * fall back to the tessellated mesh path (kind 'mesh').
93
+ * - brep x mesh — the closed mesh side is converted with Brep.fromMesh
94
+ * (planar-faceted) for the parametric path; otherwise tessellated mesh ops.
95
+ * - mesh x mesh — solid x solid runs CSG; a sheet operand uses the
96
+ * split-based trim semantics (subtract keeps outside/back, intersect keeps
97
+ * inside/front; solid x sheet returns the CAPPED clicked-side halves);
98
+ * sheet union sheet runs the kernel mutual trim + join. A sheet's material
99
+ * is its FRONT half-space, so the sheet union keeps each sheet's pieces
100
+ * BEHIND the other (front pieces are interior to the union material);
101
+ * uncut regions are kept, coincident overlaps keep A's copy.
102
+ * - union of a solid and a sheet (any representation) throws.
103
+ * - curve x solid — intersect keeps the inside clip pieces, subtract the
104
+ * outside pieces (kind 'curves'); union throws.
105
+ * - curve x sheet — intersect returns the crossing points (kind 'points');
106
+ * subtract keeps the pieces behind the sheet normal (kind 'curves').
107
+ * - curve x curve — when BOTH curves are closed and coplanar, union /
108
+ * subtract / intersect are 2D REGION booleans (Rhino CurveBoolean): the
109
+ * result is the region boundary CURVES (kind 'curves', outer CCW / holes
110
+ * CW, polyline fidelity). For open curves, intersect returns the crossing
111
+ * POINTS (kind 'points') and union / subtract throw (open curves bound no
112
+ * region). Note: region-intersect returns the overlapping region's
113
+ * BOUNDARY, distinct from the point-set intersection of the open case.
114
+ */
115
+ export declare function geometryBoolean(a: BooleanOperand, b: BooleanOperand, op: BooleanOpKind, options?: GeometryBooleanOptions): GeometryBooleanResult;
116
+ /**
117
+ * Split geometry A by blade B, returning ALL pieces of A (the blade is
118
+ * untouched). Dispatch mirrors {@link geometryBoolean}:
119
+ * - brep solid / sheet blades use the parametric splitBySheet /
120
+ * splitSheetBySolid / splitSheetBySheet pipelines (kind 'brep', both
121
+ * sides); failures fall back to the tessellated mesh path.
122
+ * - mesh hosts use Mesh.split / Mesh.splitSolidBySurface (kind 'mesh',
123
+ * outside pieces then inside pieces).
124
+ * - curve hosts split exactly: clipByBrep (closed BREP blade), exact
125
+ * parameters from trim-checked BREP hits (sheet BREP blade),
126
+ * splitPolyline or exact splitAtParams (mesh blade). For a closed curve
127
+ * host split by a closed coplanar curve blade → 2D REGION split (all region
128
+ * boundaries, Rhino "region split"); an open host splits at
129
+ * intersectCurveParams hits (curve blade). Kind 'curves'.
130
+ * - a closed planar curve blade cuts mesh and BREP hosts through
131
+ * Mesh.split's curve mode (through-cut cutter); an OPEN curve blade
132
+ * against a solid/sheet host throws a typed error (an open curve cannot
133
+ * bound a through-cut).
134
+ */
135
+ export declare function geometrySplit(a: BooleanOperand, b: BooleanOperand, options?: GeometryBooleanOptions): GeometryBooleanResult;
136
+ //# sourceMappingURL=GeometryBoolean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeometryBoolean.d.ts","sourceRoot":"","sources":["../src/GeometryBoolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAE/D,MAAM,MAAM,cAAc,GACtB,IAAI,GACJ,IAAI,GACJ,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,OAAO,GACP,SAAS,GACT,GAAG,GACH,MAAM,GACN,IAAI,CAAC;AAET,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,oEAAoE;IACpE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iFAAiF;IACjF,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAChB,uJAAuJ;IACvJ,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;IACnC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;CAClB;AAgiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,cAAc,EACjB,CAAC,EAAE,cAAc,EACjB,EAAE,EAAE,aAAa,EACjB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CAiCvB;AAwHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,cAAc,EACjB,CAAC,EAAE,cAAc,EACjB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CAQvB"}