opengeometry 2.0.9 → 2.0.11
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/README.md +24 -27
- package/index.d.ts +1 -1
- package/index.js +190 -42
- package/index.js.map +1 -1
- package/opengeometry/pkg/opengeometry.d.ts +299 -265
- package/opengeometry/pkg/opengeometry.js +151 -41
- package/opengeometry/pkg/opengeometry_bg.wasm +0 -0
- package/opengeometry/pkg/opengeometry_bg.wasm.d.ts +263 -258
- package/opengeometry_bg.wasm +0 -0
- package/opengeometry_bg.wasm.d.ts +263 -258
- package/package.json +1 -2
- package/src/operations/index.d.ts +4 -0
- package/src/operations/offset-regions.d.ts +41 -0
- package/src/toolkit/index.d.ts +4 -0
- package/src/toolkit/wall.d.ts +40 -0
- package/src/shapes/extrusion.d.ts +0 -64
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** A point of a returned offset region ring (kernel `Vector3` shape). */
|
|
2
|
+
export interface OffsetRegionPoint {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
z: number;
|
|
6
|
+
}
|
|
7
|
+
/** One offset region: a CW outer ring + its CCW inner-void hole rings. */
|
|
8
|
+
export interface OffsetRegion {
|
|
9
|
+
/** Outer ring (CW, canonical start). */
|
|
10
|
+
outer: OffsetRegionPoint[];
|
|
11
|
+
/** Inner-void hole rings (CCW), e.g. the interior void of a closed loop. */
|
|
12
|
+
holes: OffsetRegionPoint[][];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Offset a centreline by ±half-width into one or more filled REGIONS, via the
|
|
16
|
+
* deterministic analytic offset — miters / flat bevels at `miterLimit`, concave
|
|
17
|
+
* trims, and nonzero-winding resolution of reflex / closed loops. NO boolean union
|
|
18
|
+
* (so it is deterministic, unlike the 3D-mesh CSG path). A simple centreline returns
|
|
19
|
+
* one region; a self-crossing closed centreline (e.g. a figure-8) returns one per
|
|
20
|
+
* simple sub-loop. Returns an EMPTY array for a genuinely unbuildable input (does
|
|
21
|
+
* not throw, so it never looks like a kernel crash). Rings are CW-outer / CCW-holes.
|
|
22
|
+
*
|
|
23
|
+
* @param centrelineFlat centreline points as `[x,y,z, …]`.
|
|
24
|
+
* @param width full stroke width (offset ±width/2 on each side).
|
|
25
|
+
* @param miterLimit SVG stroke-miterlimit; corners sharper than this bevel. Default 4.
|
|
26
|
+
*/
|
|
27
|
+
export declare function offsetPolylineRegions(centrelineFlat: number[] | Float64Array, width: number, closed: boolean, miterLimit?: number): OffsetRegion[];
|
|
28
|
+
/** One polyline in an offset group: centreline `[x,y,z, …]`, stroke width, closed flag. */
|
|
29
|
+
export interface OffsetPolyline {
|
|
30
|
+
centreline: number[];
|
|
31
|
+
width: number;
|
|
32
|
+
closed: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Merge a GROUP of separate polylines (a crossing T / X / L overlap) into one clean
|
|
36
|
+
* region by nonzero-winding union of their mitered bands — the overlapping strokes
|
|
37
|
+
* merge into a single region with mitered/bevelled corners, no internal edges.
|
|
38
|
+
* Returns CW-outer / CCW-hole regions (one or more); empty if nothing is buildable.
|
|
39
|
+
* No CSG. Used to render/extrude an overlapping crossing as one joined mass.
|
|
40
|
+
*/
|
|
41
|
+
export declare function offsetPolylineGroupRegions(polylines: OffsetPolyline[]): OffsetRegion[];
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** A point of a returned wall footprint ring (kernel `Vector3` shape). */
|
|
2
|
+
export interface WallFootprintPoint {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
z: number;
|
|
6
|
+
}
|
|
7
|
+
/** One footprint region: a CW outer ring + its CCW inner-void hole rings. */
|
|
8
|
+
export interface WallFootprintRegion {
|
|
9
|
+
/** Outer ring (CW, canonical start). */
|
|
10
|
+
outer: WallFootprintPoint[];
|
|
11
|
+
/** Inner-void hole rings (CCW), e.g. the room void of a closed wall. */
|
|
12
|
+
holes: WallFootprintPoint[][];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Build the base 2D wall footprint as one or more REGIONS from a centreline, via
|
|
16
|
+
* the deterministic analytic offset — miters / flat bevels at `miterLimit`,
|
|
17
|
+
* concave trims, and nonzero-winding resolution of reflex / closed loops. NO
|
|
18
|
+
* boolean union (so it is deterministic, unlike the 3D-mesh CSG path). Normal walls
|
|
19
|
+
* return one region; a self-crossing closed wall (e.g. a figure-8) returns one per
|
|
20
|
+
* simple sub-loop. Returns an EMPTY array for a genuinely unbuildable wall (does
|
|
21
|
+
* not throw, so it never looks like a kernel crash). Rings are CW-outer / CCW-holes.
|
|
22
|
+
*
|
|
23
|
+
* @param centrelineFlat centreline points as `[x,y,z, …]`.
|
|
24
|
+
* @param miterLimit SVG stroke-miterlimit; corners sharper than this bevel. Default 4.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildWallFootprint(centrelineFlat: number[] | Float64Array, thickness: number, closed: boolean, miterLimit?: number): WallFootprintRegion[];
|
|
27
|
+
/** One wall in a junction group: centreline `[x,y,z, …]`, thickness, closed flag. */
|
|
28
|
+
export interface WallGroupMember {
|
|
29
|
+
centreline: number[];
|
|
30
|
+
thickness: number;
|
|
31
|
+
closed: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Merge a GROUP of separate walls (a cross-wall T / X / L junction) into one clean
|
|
35
|
+
* 2D footprint by nonzero-winding union of their mitered bands — the overlapping
|
|
36
|
+
* walls merge into a single region with mitered/bevelled corners, no internal edges.
|
|
37
|
+
* Returns CW-outer / CCW-hole regions (one or more); empty if nothing is buildable.
|
|
38
|
+
* No CSG. Used to render/extrude a junction as one joined mass in both views.
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildWallGroupFootprint(walls: WallGroupMember[]): WallFootprintRegion[];
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
|
|
2
|
-
import * as THREE from "three";
|
|
3
|
-
import type { ShapeSubtractOperand, ShapeSubtractOptions, ShapeSubtractResult } from "./boolean-subtract.js";
|
|
4
|
-
export interface IExtrusionOptions {
|
|
5
|
-
ogid?: string;
|
|
6
|
-
vertices: Vector3[];
|
|
7
|
-
holes?: Vector3[][];
|
|
8
|
-
height: number;
|
|
9
|
-
color: number;
|
|
10
|
-
fatOutlines?: boolean;
|
|
11
|
-
outlineWidth?: number;
|
|
12
|
-
translation?: Vector3;
|
|
13
|
-
rotation?: Vector3;
|
|
14
|
-
scale?: Vector3;
|
|
15
|
-
}
|
|
16
|
-
export interface ExtrusionPlacementOptions {
|
|
17
|
-
translation?: Vector3;
|
|
18
|
-
rotation?: Vector3;
|
|
19
|
-
scale?: Vector3;
|
|
20
|
-
}
|
|
21
|
-
export type ExtrusionConfigUpdate = Partial<Omit<IExtrusionOptions, "translation" | "rotation" | "scale">>;
|
|
22
|
-
export type ExtrusionPlacementUpdate = ExtrusionPlacementOptions;
|
|
23
|
-
export declare class Extrusion extends THREE.Mesh {
|
|
24
|
-
#private;
|
|
25
|
-
ogid: string;
|
|
26
|
-
options: IExtrusionOptions;
|
|
27
|
-
private extrusion;
|
|
28
|
-
private _outlineEnabled;
|
|
29
|
-
private _fatOutlines;
|
|
30
|
-
private _outlineWidth;
|
|
31
|
-
private _outlineColor;
|
|
32
|
-
set color(color: number);
|
|
33
|
-
constructor(options?: IExtrusionOptions);
|
|
34
|
-
validateOptions(): void;
|
|
35
|
-
setConfig(options: ExtrusionConfigUpdate): void;
|
|
36
|
-
getConfig(): IExtrusionOptions;
|
|
37
|
-
getAnchor(): Vector3;
|
|
38
|
-
setAnchor(anchor: Vector3): void;
|
|
39
|
-
resetAnchor(): void;
|
|
40
|
-
setPlacement(placement: ExtrusionPlacementUpdate): void;
|
|
41
|
-
setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void;
|
|
42
|
-
setTranslation(translation: Vector3): void;
|
|
43
|
-
setRotation(rotation: Vector3): void;
|
|
44
|
-
setScale(scale: Vector3): void;
|
|
45
|
-
getPlacement(): import("../editor.js").ParametricPlacement;
|
|
46
|
-
getEditCapabilities(): import("../editor.js").ParametricEditCapabilities;
|
|
47
|
-
canConvertToFreeform(): boolean;
|
|
48
|
-
toFreeform(id?: string): import("../freeform.js").FreeformGeometry;
|
|
49
|
-
cleanGeometry(): void;
|
|
50
|
-
generateGeometry(): void;
|
|
51
|
-
getBrepData(): any;
|
|
52
|
-
subtract(operand: ShapeSubtractOperand, options?: ShapeSubtractOptions): ShapeSubtractResult;
|
|
53
|
-
set outlineColor(color: number);
|
|
54
|
-
get outlineColor(): number;
|
|
55
|
-
set outline(enable: boolean);
|
|
56
|
-
get outline(): boolean;
|
|
57
|
-
set fatOutlines(value: boolean);
|
|
58
|
-
get fatOutlines(): boolean;
|
|
59
|
-
set outlineWidth(value: number);
|
|
60
|
-
get outlineWidth(): number;
|
|
61
|
-
clearOutlineMesh(): void;
|
|
62
|
-
discardGeometry(): void;
|
|
63
|
-
private writePositionsToGeometry;
|
|
64
|
-
}
|