opengeometry 2.0.13 → 2.0.15

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 (44) hide show
  1. package/README.md +4 -4
  2. package/analytic-worker.js +90 -0
  3. package/index.d.ts +16 -1
  4. package/index.js +3096 -3551
  5. package/index.js.map +1 -1
  6. package/opengeometry/pkg/opengeometry.d.ts +383 -347
  7. package/opengeometry/pkg/opengeometry.js +793 -506
  8. package/opengeometry/pkg/opengeometry_bg.wasm +0 -0
  9. package/opengeometry/pkg/opengeometry_bg.wasm.d.ts +300 -276
  10. package/opengeometry_bg.wasm +0 -0
  11. package/opengeometry_bg.wasm.d.ts +300 -276
  12. package/package.json +3 -4
  13. package/src/examples/booleans.d.ts +3 -2
  14. package/src/examples/editor-modes.d.ts +4 -8
  15. package/src/examples/index.d.ts +1 -1
  16. package/src/examples/ribbon-from-offsets.d.ts +33 -0
  17. package/src/examples/shapes.d.ts +1 -1
  18. package/src/export/analytic-ifc.d.ts +61 -0
  19. package/src/freeform/geometry.d.ts +2 -0
  20. package/src/freeform/index.d.ts +1 -1
  21. package/src/operations/analytic-errors.d.ts +8 -0
  22. package/src/operations/boolean-regions.d.ts +20 -0
  23. package/src/operations/boolean.d.ts +9 -141
  24. package/src/operations/index.d.ts +3 -1
  25. package/src/operations/loft.d.ts +13 -0
  26. package/src/operations/offset-regions.d.ts +11 -12
  27. package/src/primitives/analytic-curve.d.ts +42 -0
  28. package/src/primitives/arc.d.ts +26 -55
  29. package/src/primitives/elliptical_arc.d.ts +29 -57
  30. package/src/rendering/analytic-lod.d.ts +32 -0
  31. package/src/rendering/analytic-tessellation.d.ts +32 -0
  32. package/src/shapes/analytic-pattern.d.ts +36 -0
  33. package/src/shapes/analytic-solid.d.ts +304 -0
  34. package/src/shapes/cuboid.d.ts +40 -54
  35. package/src/shapes/cylinder.d.ts +26 -70
  36. package/src/shapes/opening.d.ts +19 -82
  37. package/src/shapes/polygon.d.ts +4 -5
  38. package/src/shapes/solid.d.ts +0 -8
  39. package/src/shapes/sphere.d.ts +18 -73
  40. package/src/shapes/sweep.d.ts +0 -5
  41. package/src/shapes/wedge.d.ts +0 -5
  42. package/src/examples/wall-from-offsets.d.ts +0 -40
  43. package/src/operations/boolean-errors.d.ts +0 -90
  44. package/src/shapes/boolean-subtract.d.ts +0 -21
@@ -1,80 +1,36 @@
1
1
  import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
2
  import * as THREE from "three";
3
- import type { ShapeSubtractOperands, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
4
- /**
5
- * Construction options for a cylinder shape.
6
- */
3
+ import { AnalyticSolid, type AnalyticAccuracy } from "./analytic-solid.js";
7
4
  export interface ICylinderOptions {
5
+ ogid?: string;
6
+ center?: Vector3;
7
+ radius?: number;
8
+ height?: number;
9
+ startAngle?: number;
10
+ sweepAngle?: number;
11
+ deflection?: number;
12
+ accuracy?: AnalyticAccuracy;
13
+ color?: THREE.ColorRepresentation;
14
+ }
15
+ interface NormalizedCylinderOptions {
8
16
  ogid?: string;
9
17
  center: Vector3;
10
18
  radius: number;
11
19
  height: number;
12
- segments: number;
13
- angle: number;
14
- color: number;
15
- fatOutlines?: boolean;
16
- outlineWidth?: number;
17
- translation?: Vector3;
18
- rotation?: Vector3;
19
- scale?: Vector3;
20
- }
21
- /**
22
- * Placement updates accepted by `Cylinder`.
23
- */
24
- export interface CylinderPlacementOptions {
25
- translation?: Vector3;
26
- rotation?: Vector3;
27
- scale?: Vector3;
20
+ startAngle: number;
21
+ sweepAngle: number;
22
+ deflection: number;
23
+ accuracy?: AnalyticAccuracy;
24
+ color: THREE.ColorRepresentation;
28
25
  }
29
- /**
30
- * Partial config payload accepted by `Cylinder.setConfig(...)`.
31
- */
32
- export type CylinderConfigUpdate = Partial<Omit<ICylinderOptions, "translation" | "rotation" | "scale">>;
33
- /**
34
- * Alias for `Cylinder` placement updates.
35
- */
36
- export type CylinderPlacementUpdate = CylinderPlacementOptions;
37
- /**
38
- * Cylinder wrapper backed by the kernel cylindrical primitive.
39
- */
40
- export declare class Cylinder extends THREE.Mesh {
41
- #private;
42
- ogid: string;
43
- options: ICylinderOptions;
44
- private cylinder;
45
- private _outlineEnabled;
46
- private _fatOutlines;
47
- private _outlineWidth;
48
- set radius(value: number);
49
- set color(color: number);
26
+ /** Authoritative Plane/Cylinder BRep with transient deflection tessellation. */
27
+ export declare class Cylinder extends AnalyticSolid {
28
+ readonly options: Readonly<NormalizedCylinderOptions>;
50
29
  constructor(options?: ICylinderOptions);
51
- validateOptions(): void;
52
- setConfig(options: CylinderConfigUpdate): void;
53
- getConfig(): ICylinderOptions;
54
- getAnchor(): Vector3;
55
- setPlacement(placement: CylinderPlacementUpdate): void;
56
- setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void;
57
- setTranslation(translation: Vector3): void;
58
- setRotation(rotation: Vector3): void;
59
- setScale(scale: Vector3): void;
60
- getPlacement(): import("../editor.js").ParametricPlacement;
61
- getEditCapabilities(): import("../editor.js").ParametricEditCapabilities;
62
- canConvertToFreeform(): boolean;
63
- toFreeform(id?: string): import("../freeform.js").FreeformGeometry;
64
- cleanGeometry(): void;
65
- generateGeometry(): void;
66
- getBrep(): any;
67
- /**
68
- * Subtracts one or more boolean operands, such as Opening volumes, from this cylinder.
69
- */
70
- subtract(operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;
71
- set outline(enable: boolean);
72
- get outline(): boolean;
73
- set fatOutlines(value: boolean);
74
- get fatOutlines(): boolean;
75
- set outlineWidth(value: number);
76
- get outlineWidth(): number;
77
- private clearOutlineMesh;
78
- discardGeometry(): void;
79
- private writePositionsToGeometry;
30
+ get radius(): number;
31
+ get height(): number;
32
+ get startAngle(): number;
33
+ get sweepAngle(): number;
34
+ getAnchor(): THREE.Vector3;
80
35
  }
36
+ export {};
@@ -1,94 +1,31 @@
1
1
  import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
2
  import * as THREE from "three";
3
- import { ShapeOutlineMesh } from "./outline-utils.js";
4
- import type { ShapeSubtractOperand, ShapeSubtractOperands, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
5
- /**
6
- * Construction options for an architectural opening volume.
7
- */
8
- export interface IOpeningOptions {
3
+ import { AnalyticSolid, type AnalyticAccuracy } from "./analytic-solid.js";
4
+ import { Cuboid, type CuboidConfigUpdate, type CuboidPlacementOptions } from "./cuboid.js";
5
+ export interface IOpeningOptions extends CuboidPlacementOptions {
9
6
  ogid?: string;
10
- center: Vector3;
11
- width: number;
12
- height: number;
13
- depth: number;
14
- color: number;
15
- fatOutlines?: boolean;
16
- outlineWidth?: number;
17
- translation?: Vector3;
18
- rotation?: Vector3;
19
- scale?: Vector3;
7
+ center?: Vector3;
8
+ width?: number;
9
+ height?: number;
10
+ depth?: number;
11
+ color?: THREE.ColorRepresentation;
12
+ deflection?: number;
13
+ accuracy?: AnalyticAccuracy;
20
14
  }
21
- /**
22
- * Placement updates accepted by `Opening`.
23
- */
24
- export interface OpeningPlacementOptions {
25
- translation?: Vector3;
26
- rotation?: Vector3;
27
- scale?: Vector3;
28
- }
29
- /**
30
- * Partial config payload accepted by `Opening.setConfig(...)`.
31
- */
32
- export type OpeningConfigUpdate = Partial<Omit<IOpeningOptions, "translation" | "rotation" | "scale">>;
33
- /**
34
- * Alias for `Opening` placement updates.
35
- */
15
+ export type OpeningPlacementOptions = CuboidPlacementOptions;
16
+ export type OpeningConfigUpdate = CuboidConfigUpdate;
36
17
  export type OpeningPlacementUpdate = OpeningPlacementOptions;
37
- /**
38
- * Opening wrapper used as a subtractive solid in architectural workflows.
39
- */
40
- export declare class Opening extends THREE.Mesh {
41
- #private;
42
- ogid: string;
43
- options: IOpeningOptions;
44
- private opening;
45
- private _outlineEnabled;
46
- private _fatOutlines;
47
- private _outlineWidth;
48
- set width(value: number);
49
- set height(value: number);
50
- set depth(value: number);
18
+ /** Strict BRep v2 subtractive box. */
19
+ export declare class Opening extends Cuboid {
20
+ constructor(options?: IOpeningOptions);
51
21
  get dimensions(): {
52
22
  width: number;
53
23
  height: number;
54
24
  depth: number;
55
25
  };
56
- constructor(options?: IOpeningOptions);
57
- validateOptions(): void;
58
- setConfig(options: OpeningConfigUpdate): void;
59
- getConfig(): IOpeningOptions;
60
- getAnchor(): Vector3;
61
- setPlacement(placement: OpeningPlacementUpdate): void;
62
- setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void;
63
- setTranslation(translation: Vector3): void;
64
- setRotation(rotation: Vector3): void;
65
- setScale(scale: Vector3): void;
66
- getPlacement(): import("../editor.js").ParametricPlacement;
67
26
  getEditCapabilities(): import("../editor.js").ParametricEditCapabilities;
68
- canConvertToFreeform(): boolean;
69
- toFreeform(id?: string): import("../freeform.js").FreeformGeometry;
70
- cleanGeometry(): void;
71
- generateGeometry(): void;
72
- getBrepData(): any;
73
- /**
74
- * Subtracts one or more boolean operands from this opening volume.
75
- */
76
- subtract(operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;
77
- /**
78
- * Uses this opening volume to cut a host shape.
79
- *
80
- * Prefer this helper for wall, slab, and other host-cutting workflows in
81
- * browser-based AEC/BIM tools.
82
- */
83
- subtractFrom(host: ShapeSubtractOperand, options?: ShapeSubtractOptions): ShapeSubtractResult;
84
- set outline(enable: boolean);
85
- get outline(): boolean;
86
- set fatOutlines(value: boolean);
87
- get fatOutlines(): boolean;
88
- set outlineWidth(value: number);
89
- get outlineWidth(): number;
90
- get outlineMesh(): ShapeOutlineMesh | null;
91
- private clearOutlineMesh;
92
- discardGeometry(): void;
93
- private writePositionsToGeometry;
27
+ subtractFrom(host: AnalyticSolid, options?: {
28
+ deflection?: number;
29
+ color?: THREE.ColorRepresentation;
30
+ }): AnalyticSolid;
94
31
  }
@@ -1,7 +1,7 @@
1
1
  import * as THREE from "three";
2
2
  import { OGPolygon, Vector3 } from "../../opengeometry/pkg/opengeometry.js";
3
3
  import { Solid } from "./solid.js";
4
- import type { ShapeSubtractOperands, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
4
+ import { type PolygonLoftOptions } from "../operations/loft.js";
5
5
  /**
6
6
  * Construction options for a planar polygon.
7
7
  */
@@ -79,14 +79,13 @@ export declare class Polygon extends THREE.Mesh {
79
79
  * starts from a planar profile and needs a boolean-ready solid.
80
80
  */
81
81
  extrude(height: number): Solid;
82
+ /** Builds a capped analytic ruled loft from this profile to `other`. */
83
+ loftTo(other: Polygon, options?: PolygonLoftOptions): import("./analytic-solid.js").AnalyticSolid;
82
84
  /**
83
85
  * Returns the serialized BRep payload for this polygon.
84
86
  */
85
87
  getBrepData(): string | null;
86
- /**
87
- * Subtracts one or more boolean operands from this polygon.
88
- */
89
- subtract(operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;
88
+ private worldProfilePoints;
90
89
  set outlineColor(color: number);
91
90
  get outlineColor(): number;
92
91
  set outline(enable: boolean);
@@ -2,7 +2,6 @@ import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
2
  import * as THREE from "three";
3
3
  import { type FreeformGeometry } from "../freeform.js";
4
4
  import type { FreeformSource } from "../freeform/types.js";
5
- import type { ShapeSubtractOperands, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
6
5
  /**
7
6
  * Construction options for a generic BRep-backed solid.
8
7
  */
@@ -91,13 +90,6 @@ export declare class Solid extends THREE.Mesh {
91
90
  * Returns the parsed world-space BRep object for this solid.
92
91
  */
93
92
  getBrepData(): any;
94
- /**
95
- * Subtracts one or more boolean operands from this solid.
96
- *
97
- * This is the main shape-level boolean workflow after operations like
98
- * `polygon.extrude(height)` or `Solid.extrude(...)`.
99
- */
100
- subtract(operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;
101
93
  /**
102
94
  * Rebuilds the visible mesh and outline from the current freeform geometry.
103
95
  */
@@ -1,82 +1,27 @@
1
- import * as OGKernel from "../../opengeometry/pkg/opengeometry.js";
2
1
  import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
3
2
  import * as THREE from "three";
4
- import { ShapeOutlineMesh } from "./outline-utils.js";
5
- import type { ShapeSubtractOperands, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
6
- /**
7
- * Construction options for a sphere shape.
8
- */
3
+ import { AnalyticSolid, type AnalyticAccuracy } from "./analytic-solid.js";
9
4
  export interface ISphereOptions {
5
+ ogid?: string;
6
+ center?: Vector3;
7
+ radius?: number;
8
+ deflection?: number;
9
+ accuracy?: AnalyticAccuracy;
10
+ color?: THREE.ColorRepresentation;
11
+ }
12
+ interface NormalizedSphereOptions {
10
13
  ogid?: string;
11
14
  center: Vector3;
12
15
  radius: number;
13
- widthSegments: number;
14
- heightSegments: number;
15
- color: number;
16
- fatOutlines?: boolean;
17
- outlineWidth?: number;
18
- translation?: Vector3;
19
- rotation?: Vector3;
20
- scale?: Vector3;
21
- }
22
- /**
23
- * Placement updates accepted by `Sphere`.
24
- */
25
- export interface SpherePlacementOptions {
26
- translation?: Vector3;
27
- rotation?: Vector3;
28
- scale?: Vector3;
16
+ deflection: number;
17
+ accuracy?: AnalyticAccuracy;
18
+ color: THREE.ColorRepresentation;
29
19
  }
30
- /**
31
- * Partial config payload accepted by `Sphere.setConfig(...)`.
32
- */
33
- export type SphereConfigUpdate = Partial<Omit<ISphereOptions, "translation" | "rotation" | "scale">>;
34
- /**
35
- * Alias for `Sphere` placement updates.
36
- */
37
- export type SpherePlacementUpdate = SpherePlacementOptions;
38
- /**
39
- * Sphere wrapper backed by the kernel sphere primitive.
40
- */
41
- export declare class Sphere extends THREE.Mesh {
42
- #private;
43
- ogid: string;
44
- options: ISphereOptions;
45
- private sphere;
46
- private _outlineEnabled;
47
- private _fatOutlines;
48
- private _outlineWidth;
49
- set radius(value: number);
50
- set color(color: number);
20
+ /** Authoritative spherical BRep with explicit poles and transient deflection tessellation. */
21
+ export declare class Sphere extends AnalyticSolid {
22
+ readonly options: Readonly<NormalizedSphereOptions>;
51
23
  constructor(options?: ISphereOptions);
52
- validateOptions(): void;
53
- setConfig(options: SphereConfigUpdate): void;
54
- getConfig(): ISphereOptions;
55
- getAnchor(): OGKernel.Vector3;
56
- setPlacement(placement: SpherePlacementUpdate): void;
57
- setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void;
58
- setTranslation(translation: Vector3): void;
59
- setRotation(rotation: Vector3): void;
60
- setScale(scale: Vector3): void;
61
- getPlacement(): import("../editor.js").ParametricPlacement;
62
- getEditCapabilities(): import("../editor.js").ParametricEditCapabilities;
63
- canConvertToFreeform(): boolean;
64
- toFreeform(id?: string): import("../freeform.js").FreeformGeometry;
65
- cleanGeometry(): void;
66
- generateGeometry(): void;
67
- getBrep(): any;
68
- /**
69
- * Subtracts one or more boolean operands, such as Opening volumes, from this sphere.
70
- */
71
- subtract(operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;
72
- set outline(enable: boolean);
73
- get outline(): boolean;
74
- set fatOutlines(value: boolean);
75
- get fatOutlines(): boolean;
76
- set outlineWidth(value: number);
77
- get outlineWidth(): number;
78
- get outlineMesh(): ShapeOutlineMesh | null;
79
- private clearOutlineMesh;
80
- discardGeometry(): void;
81
- private writePositionsToGeometry;
24
+ get radius(): number;
25
+ getAnchor(): THREE.Vector3;
82
26
  }
27
+ export {};
@@ -1,7 +1,6 @@
1
1
  import * as OGKernel from "../../opengeometry/pkg/opengeometry.js";
2
2
  import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
3
3
  import * as THREE from "three";
4
- import type { ShapeSubtractOperands, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
5
4
  /**
6
5
  * Construction options for a swept solid.
7
6
  */
@@ -65,10 +64,6 @@ export declare class Sweep extends THREE.Mesh {
65
64
  cleanGeometry(): void;
66
65
  generateGeometry(): void;
67
66
  getBrep(): any;
68
- /**
69
- * Subtracts one or more boolean operands, such as Opening volumes, from this sweep.
70
- */
71
- subtract(operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;
72
67
  set outline(enable: boolean);
73
68
  get outline(): boolean;
74
69
  set fatOutlines(value: boolean);
@@ -1,7 +1,6 @@
1
1
  import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
2
  import * as THREE from "three";
3
3
  import { ShapeOutlineMesh } from "./outline-utils.js";
4
- import type { ShapeSubtractOperands, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
5
4
  /**
6
5
  * Construction options for a wedge/prism shape.
7
6
  */
@@ -63,10 +62,6 @@ export declare class Wedge extends THREE.Mesh {
63
62
  cleanGeometry(): void;
64
63
  generateGeometry(): void;
65
64
  getBrepData(): any;
66
- /**
67
- * Subtracts one or more boolean operands, such as Opening volumes, from this wedge.
68
- */
69
- subtract(operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;
70
65
  set outline(enable: boolean);
71
66
  get outline(): boolean;
72
67
  set fatOutlines(value: boolean);
@@ -1,40 +0,0 @@
1
- import * as THREE from "three";
2
- import { Cuboid } from "../shapes/cuboid.js";
3
- import { Polyline } from "../primitives/polyline.js";
4
- import { Polygon } from "../shapes/polygon.js";
5
- export interface WallFromOffsetsOptions {
6
- /**
7
- * Number of doors to subtract from the extruded wall. Doors are placed at
8
- * evenly distributed centerline-segment midpoints. Default `0` (no cuts).
9
- */
10
- doorCount?: number;
11
- /**
12
- * Cutter overshoot in millimeters. The debt sheet's `#6a` symptom is at
13
- * 1mm; default 1mm so callers exercise the snap-tolerance regime by default
14
- * when cuts are enabled.
15
- */
16
- overshootMm?: number;
17
- /**
18
- * Wall extrusion height in meters. Default `2.6` to match the example HTML.
19
- */
20
- height?: number;
21
- }
22
- /**
23
- * Renders a human-readable description for a typed `BooleanError` (or any
24
- * other thrown value). Used by the example HTML to surface kernel failures
25
- * in a status panel without losing the structured payload.
26
- */
27
- export declare function describeWallSubtractError(error: unknown): string;
28
- export declare function createWallFromOffsetsExample(scene: THREE.Scene, options?: WallFromOffsetsOptions): {
29
- centerline: Polyline;
30
- leftOffsetPolyline: Polyline;
31
- rightOffsetPolyline: Polyline;
32
- wallPolygon: Polygon;
33
- leftOffset: import("../primitives/polyline.js").IOffsetResult;
34
- rightOffset: import("../primitives/polyline.js").IOffsetResult;
35
- cutResult: {
36
- wall: THREE.Object3D;
37
- cutters: Cuboid[];
38
- } | null;
39
- cutError: unknown;
40
- };
@@ -1,90 +0,0 @@
1
- /**
2
- * Typed error hierarchy for boolean operations.
3
- *
4
- * The Rust kernel emits a structured `BooleanError` as JSON across the WASM
5
- * boundary (see `main/opengeometry/src/booleans/error.rs`). This module parses
6
- * that JSON and re-throws it as a typed `BooleanError` (or a more specific
7
- * subclass) so app code can `instanceof`-discriminate without parsing message
8
- * strings.
9
- *
10
- * Cutter indices are **0-based** to match `Vec` / array indexing on both
11
- * sides of the boundary.
12
- */
13
- import * as THREE from "three";
14
- export type BooleanErrorPhase = "input_validation" | "union_pre_pass" | "subtract_step" | "output_validation";
15
- export type BooleanErrorReason = "invalid_operand" | "malformed_input" | "mixed_operand_kinds" | "unsupported_operand_kind" | "non_coplanar_planar_operands" | "topology_error" | "kernel_failure" | "non_manifold_edges" | "open_shell" | "coincident_faces" | "degenerate_triangle" | "empty_result" | "overlapping_cutters" | "cutter_exceeds_host";
16
- interface KindPayload {
17
- code: BooleanErrorReason;
18
- other_index?: number;
19
- axis?: string;
20
- overshoot?: number;
21
- }
22
- interface BooleanErrorJson {
23
- kind: KindPayload;
24
- phase: BooleanErrorPhase;
25
- cutter_index: number | null;
26
- message: string;
27
- details: string | null;
28
- edge_samples: Array<[{
29
- x: number;
30
- y: number;
31
- z: number;
32
- }, {
33
- x: number;
34
- y: number;
35
- z: number;
36
- }]> | null;
37
- }
38
- /**
39
- * Base class for every typed boolean error. Carries the structured payload the
40
- * kernel emitted across WASM. Specialized subclasses (`OverlappingCuttersError`,
41
- * `CutterExceedsHostError`, `NonManifoldOutputError`, `CoincidentFacesError`)
42
- * narrow the payload for the variants that carry extra fields.
43
- */
44
- export declare class BooleanError extends Error {
45
- readonly reason: BooleanErrorReason;
46
- readonly phase: BooleanErrorPhase;
47
- readonly cutterIndex: number | null;
48
- readonly details: string | null;
49
- readonly edgeSamples: ReadonlyArray<[THREE.Vector3, THREE.Vector3]> | null;
50
- constructor(payload: BooleanErrorJson);
51
- }
52
- /**
53
- * Two cutters overlap each other. `otherIndex` is the 0-based index of the
54
- * cutter that conflicts with the one at `cutterIndex`.
55
- */
56
- export declare class OverlappingCuttersError extends BooleanError {
57
- readonly otherIndex: number;
58
- constructor(payload: BooleanErrorJson);
59
- }
60
- /**
61
- * A cutter extends past the host's hull along the named axis.
62
- */
63
- export declare class CutterExceedsHostError extends BooleanError {
64
- readonly axis: "x" | "y" | "z";
65
- readonly overshoot: number;
66
- constructor(payload: BooleanErrorJson);
67
- }
68
- /**
69
- * Output mesh has open or over-shared edges after a boolean. `edgeSamples`
70
- * carries up to ~8 sample non-manifold edges to aid app-side debugging.
71
- */
72
- export declare class NonManifoldOutputError extends BooleanError {
73
- constructor(payload: BooleanErrorJson);
74
- }
75
- /**
76
- * Cutter and host share a coplanar face. Distinct from
77
- * `DegenerateTriangleError` (zero-area input) — see `06a-snap-tolerance.md`.
78
- */
79
- export declare class CoincidentFacesError extends BooleanError {
80
- constructor(payload: BooleanErrorJson);
81
- }
82
- /**
83
- * Parses a WASM-thrown error and returns the appropriate typed `BooleanError`
84
- * subclass. If the error's message is not valid `BooleanError` JSON, returns a
85
- * fallback `BooleanError` with `reason: "kernel_failure"` carrying the original
86
- * string, so callers always get a typed error and never have to `try/catch`
87
- * twice.
88
- */
89
- export declare function parseBooleanError(raw: unknown): BooleanError;
90
- export {};
@@ -1,21 +0,0 @@
1
- import type { BooleanExecutionOptions, BooleanOperand, BooleanResult } from "../operations/boolean.js";
2
- /**
3
- * Operand types accepted by shape instance `.subtract(...)` helpers.
4
- */
5
- export type ShapeSubtractOperand = BooleanOperand;
6
- /**
7
- * Array-only operand list accepted by shape instance `.subtract(...)` helpers.
8
- */
9
- export type ShapeSubtractOperands = ShapeSubtractOperand[];
10
- /**
11
- * Options accepted by shape instance `.subtract(...)` helpers.
12
- */
13
- export type ShapeSubtractOptions = BooleanExecutionOptions;
14
- /**
15
- * Return type for shape instance `.subtract(...)` helpers.
16
- */
17
- export type ShapeSubtractResult = BooleanResult;
18
- /**
19
- * Executes a kernel-backed subtraction for a shape wrapper against another boolean operand.
20
- */
21
- export declare function subtractShapeOperand(host: ShapeSubtractOperand, operands: ShapeSubtractOperands, options?: ShapeSubtractOptions): ShapeSubtractResult;