occt-wasm 1.2.2 → 1.4.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/index.d.ts +37 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -12
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +87 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +119 -1
- package/dist/types.js.map +1 -1
- package/dist/worker-entry.d.ts +7 -0
- package/dist/worker-entry.d.ts.map +1 -0
- package/dist/worker-entry.js +23 -0
- package/dist/worker-entry.js.map +1 -0
- package/dist/worker.d.ts +175 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +83 -0
- package/dist/worker.js.map +1 -0
- package/dist/xcaf-document.d.ts +10 -3
- package/dist/xcaf-document.d.ts.map +1 -1
- package/dist/xcaf-document.js +28 -12
- package/dist/xcaf-document.js.map +1 -1
- package/package.json +9 -2
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAE1E,4DAA4D;AAC5D,MAAM,WAAW,IAAI;IACjB,kEAAkE;IAClE,SAAS,EAAE,YAAY,CAAC;IACxB,gEAAgE;IAChE,OAAO,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,OAAO,EAAE,WAAW,CAAC;IACrB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,wCAAwC;AACxC,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,oCAAoC;AACpC,MAAM,WAAW,IAAI;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAC9B,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED,8CAA8C;AAC9C,MAAM,WAAW,WAAW;IACxB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,14 +1,132 @@
|
|
|
1
|
+
/** Transition mode for sweep operations (BRepBuilderAPI_MakeSweep). */
|
|
2
|
+
export var TransitionMode;
|
|
3
|
+
(function (TransitionMode) {
|
|
4
|
+
/** Transform the profile along the spine (default). */
|
|
5
|
+
TransitionMode[TransitionMode["Transformed"] = 0] = "Transformed";
|
|
6
|
+
/** Apply right-corner transitions at spine vertices. */
|
|
7
|
+
TransitionMode[TransitionMode["RightCorner"] = 1] = "RightCorner";
|
|
8
|
+
/** Apply round-corner transitions at spine vertices. */
|
|
9
|
+
TransitionMode[TransitionMode["RoundCorner"] = 2] = "RoundCorner";
|
|
10
|
+
})(TransitionMode || (TransitionMode = {}));
|
|
11
|
+
/** Join type for offset/fillet operations (BRepOffsetAPI_MakeOffset). */
|
|
12
|
+
export var JoinType;
|
|
13
|
+
(function (JoinType) {
|
|
14
|
+
/** Arc interpolation at joints (default). */
|
|
15
|
+
JoinType[JoinType["Arc"] = 0] = "Arc";
|
|
16
|
+
/** Tangent extension at joints. */
|
|
17
|
+
JoinType[JoinType["Tangent"] = 1] = "Tangent";
|
|
18
|
+
/** Intersection extension at joints. */
|
|
19
|
+
JoinType[JoinType["Intersection"] = 2] = "Intersection";
|
|
20
|
+
})(JoinType || (JoinType = {}));
|
|
21
|
+
/** Boolean operation code for booleanPipeline. */
|
|
22
|
+
export var BooleanOp;
|
|
23
|
+
(function (BooleanOp) {
|
|
24
|
+
/** Union: combine volumes. */
|
|
25
|
+
BooleanOp[BooleanOp["Fuse"] = 0] = "Fuse";
|
|
26
|
+
/** Subtraction: remove tool from base. */
|
|
27
|
+
BooleanOp[BooleanOp["Cut"] = 1] = "Cut";
|
|
28
|
+
/** Intersection: keep only overlapping volume. */
|
|
29
|
+
BooleanOp[BooleanOp["Common"] = 2] = "Common";
|
|
30
|
+
})(BooleanOp || (BooleanOp = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Structured error codes for programmatic error handling.
|
|
33
|
+
* Use `switch (error.code)` instead of parsing error message strings.
|
|
34
|
+
*/
|
|
35
|
+
export var OcctErrorCode;
|
|
36
|
+
(function (OcctErrorCode) {
|
|
37
|
+
/** Shape construction failed (Build()/IsDone() returned false). */
|
|
38
|
+
OcctErrorCode["ConstructionFailed"] = "CONSTRUCTION_FAILED";
|
|
39
|
+
/** Boolean operation failed (fuse/cut/common/intersect/section). */
|
|
40
|
+
OcctErrorCode["BooleanFailed"] = "BOOLEAN_FAILED";
|
|
41
|
+
/** Referenced shape ID does not exist in the arena. */
|
|
42
|
+
OcctErrorCode["InvalidShapeId"] = "INVALID_SHAPE_ID";
|
|
43
|
+
/** Referenced XCAF label ID does not exist. */
|
|
44
|
+
OcctErrorCode["InvalidLabelId"] = "INVALID_LABEL_ID";
|
|
45
|
+
/** Tessellation or meshing operation failed. */
|
|
46
|
+
OcctErrorCode["TessellationFailed"] = "TESSELLATION_FAILED";
|
|
47
|
+
/** STEP/STL/BREP import or export failed. */
|
|
48
|
+
OcctErrorCode["ImportExportFailed"] = "IMPORT_EXPORT_FAILED";
|
|
49
|
+
/** Shape healing or repair operation failed. */
|
|
50
|
+
OcctErrorCode["HealingFailed"] = "HEALING_FAILED";
|
|
51
|
+
/** Operation attempted on a closed XCAF document. */
|
|
52
|
+
OcctErrorCode["DocumentClosed"] = "DOCUMENT_CLOSED";
|
|
53
|
+
/** OCCT kernel raised an internal error (Standard_Failure). */
|
|
54
|
+
OcctErrorCode["KernelError"] = "KERNEL_ERROR";
|
|
55
|
+
/** Error does not match any known pattern. */
|
|
56
|
+
OcctErrorCode["Unknown"] = "UNKNOWN";
|
|
57
|
+
})(OcctErrorCode || (OcctErrorCode = {}));
|
|
1
58
|
/**
|
|
2
59
|
* Typed error thrown when an OCCT operation fails.
|
|
3
60
|
* The `operation` field identifies which kernel method raised the error.
|
|
61
|
+
* The `code` field enables programmatic error handling via `switch`.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* try {
|
|
66
|
+
* kernel.fuse(a, b);
|
|
67
|
+
* } catch (e) {
|
|
68
|
+
* if (e instanceof OcctError) {
|
|
69
|
+
* switch (e.code) {
|
|
70
|
+
* case OcctErrorCode.BooleanFailed:
|
|
71
|
+
* // retry with simpler geometry
|
|
72
|
+
* break;
|
|
73
|
+
* case OcctErrorCode.InvalidShapeId:
|
|
74
|
+
* // shape was already released
|
|
75
|
+
* break;
|
|
76
|
+
* }
|
|
77
|
+
* }
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
4
80
|
*/
|
|
5
81
|
export class OcctError extends Error {
|
|
6
82
|
/** Name of the kernel method that failed. */
|
|
7
83
|
operation;
|
|
8
|
-
|
|
84
|
+
/** Structured error code for programmatic handling. */
|
|
85
|
+
code;
|
|
86
|
+
constructor(operation, message, code) {
|
|
9
87
|
super(`${operation}: ${message}`);
|
|
10
88
|
this.name = "OcctError";
|
|
11
89
|
this.operation = operation;
|
|
90
|
+
this.code = code ?? classifyError(operation, message);
|
|
12
91
|
}
|
|
13
92
|
}
|
|
93
|
+
/** Operation categories used to infer error codes from context. */
|
|
94
|
+
const BOOLEAN_OPS = new Set(["fuse", "cut", "common", "intersect", "section", "fuseAll", "cutAll", "split", "booleanPipeline", "fuseWithHistory", "cutWithHistory", "intersectWithHistory"]);
|
|
95
|
+
const TESSELLATION_OPS = new Set(["tessellate", "wireframe", "meshShape", "meshBatch"]);
|
|
96
|
+
const IO_OPS = new Set(["importStep", "exportStep", "importStl", "exportStl", "toBREP", "fromBREP", "xcafExportSTEP", "xcafImportSTEP", "xcafExportGLTF"]);
|
|
97
|
+
const HEALING_OPS = new Set(["fixShape", "unifySameDomain", "healSolid", "healFace", "healWire", "fixFaceOrientations", "removeDegenerateEdges", "fixWireOnFace", "buildCurves3d"]);
|
|
98
|
+
/**
|
|
99
|
+
* Classify an error into a structured code by matching known C++ error patterns
|
|
100
|
+
* and operation context.
|
|
101
|
+
*/
|
|
102
|
+
function classifyError(operation, message) {
|
|
103
|
+
const msg = message.toLowerCase();
|
|
104
|
+
// Exact pattern matches from C++ facade
|
|
105
|
+
if (msg.includes("invalid shape id"))
|
|
106
|
+
return OcctErrorCode.InvalidShapeId;
|
|
107
|
+
if (msg.includes("invalid label id"))
|
|
108
|
+
return OcctErrorCode.InvalidLabelId;
|
|
109
|
+
if (msg.includes("document is closed"))
|
|
110
|
+
return OcctErrorCode.DocumentClosed;
|
|
111
|
+
if (msg.includes("boolean operation failed"))
|
|
112
|
+
return OcctErrorCode.BooleanFailed;
|
|
113
|
+
if (msg.includes("construction failed"))
|
|
114
|
+
return OcctErrorCode.ConstructionFailed;
|
|
115
|
+
// Operation-category fallback
|
|
116
|
+
if (BOOLEAN_OPS.has(operation))
|
|
117
|
+
return OcctErrorCode.BooleanFailed;
|
|
118
|
+
if (TESSELLATION_OPS.has(operation))
|
|
119
|
+
return OcctErrorCode.TessellationFailed;
|
|
120
|
+
if (IO_OPS.has(operation))
|
|
121
|
+
return OcctErrorCode.ImportExportFailed;
|
|
122
|
+
if (HEALING_OPS.has(operation))
|
|
123
|
+
return OcctErrorCode.HealingFailed;
|
|
124
|
+
// "operation failed" is the generic SetupShape/FilletLike pattern
|
|
125
|
+
if (msg.includes("operation failed"))
|
|
126
|
+
return OcctErrorCode.ConstructionFailed;
|
|
127
|
+
// Unmatched errors from known OCCT operations are Standard_Failure propagations
|
|
128
|
+
if (operation && operation !== "XCAFDocument")
|
|
129
|
+
return OcctErrorCode.KernelError;
|
|
130
|
+
return OcctErrorCode.Unknown;
|
|
131
|
+
}
|
|
14
132
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-entry.d.ts","sourceRoot":"","sources":["../src/worker-entry.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker entry point — runs inside the Web Worker.
|
|
3
|
+
* Initializes an OcctKernel and exposes it via Comlink.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import * as Comlink from "comlink";
|
|
7
|
+
import { OcctKernel } from "./index.js";
|
|
8
|
+
let kernel = null;
|
|
9
|
+
const api = {
|
|
10
|
+
async init(options) {
|
|
11
|
+
if (kernel) {
|
|
12
|
+
kernel.releaseAll();
|
|
13
|
+
}
|
|
14
|
+
kernel = await OcctKernel.init(options);
|
|
15
|
+
},
|
|
16
|
+
get kernel() {
|
|
17
|
+
if (!kernel)
|
|
18
|
+
throw new Error("OcctKernel not initialized — call init() first");
|
|
19
|
+
return Comlink.proxy(kernel);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
Comlink.expose(api);
|
|
23
|
+
//# sourceMappingURL=worker-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-entry.js","sourceRoot":"","sources":["../src/worker-entry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,IAAI,MAAM,GAAsB,IAAI,CAAC;AAErC,MAAM,GAAG,GAAG;IACR,KAAK,CAAC,IAAI,CAAC,OAAqB;QAC5B,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,UAAU,EAAE,CAAC;QACxB,CAAC;QACD,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM;QACN,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC/E,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACJ,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC"}
|
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Off-main-thread OCCT kernel via Web Workers.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { OcctWorker } from 'occt-wasm/worker';
|
|
7
|
+
*
|
|
8
|
+
* const worker = await OcctWorker.spawn({ wasm: '/occt-wasm.wasm' });
|
|
9
|
+
* const box = await worker.makeBox(10, 20, 30);
|
|
10
|
+
* const mesh = await worker.tessellate(box);
|
|
11
|
+
* console.log(mesh.triangleCount);
|
|
12
|
+
* worker.terminate();
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import type { InitOptions, ShapeHandle, Mesh, BoundingBox, Vec3, TessellateOptions, ShapeType, EdgeData, MeshBatchData, ProjectionData, NurbsCurveData, CurvatureData, UVBounds, ShapeOrientation, PointClassification, SurfaceKind, CurveKind } from "./types.js";
|
|
18
|
+
import type { BooleanOp, TransitionMode } from "./types.js";
|
|
19
|
+
/**
|
|
20
|
+
* Async proxy to an OcctKernel running in a Web Worker.
|
|
21
|
+
* Every method returns a `Promise` wrapping the original return type.
|
|
22
|
+
*/
|
|
23
|
+
export interface OcctWorkerProxy {
|
|
24
|
+
makeBox(dx: number, dy: number, dz: number): Promise<ShapeHandle>;
|
|
25
|
+
makeBoxFromCorners(corner1: Vec3, corner2: Vec3): Promise<ShapeHandle>;
|
|
26
|
+
makeCylinder(radius: number, height: number): Promise<ShapeHandle>;
|
|
27
|
+
makeSphere(radius: number): Promise<ShapeHandle>;
|
|
28
|
+
makeCone(r1: number, r2: number, height: number): Promise<ShapeHandle>;
|
|
29
|
+
makeTorus(majorRadius: number, minorRadius: number): Promise<ShapeHandle>;
|
|
30
|
+
makeEllipsoid(rx: number, ry: number, rz: number): Promise<ShapeHandle>;
|
|
31
|
+
makeRectangle(width: number, height: number): Promise<ShapeHandle>;
|
|
32
|
+
fuse(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
33
|
+
cut(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
34
|
+
common(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
35
|
+
intersect(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
36
|
+
section(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
37
|
+
fuseAll(shapes: ShapeHandle[]): Promise<ShapeHandle>;
|
|
38
|
+
cutAll(shape: ShapeHandle, tools: ShapeHandle[]): Promise<ShapeHandle>;
|
|
39
|
+
split(shape: ShapeHandle, tools: ShapeHandle[]): Promise<ShapeHandle>;
|
|
40
|
+
extrude(shape: ShapeHandle, dx: number, dy: number, dz: number): Promise<ShapeHandle>;
|
|
41
|
+
revolve(shape: ShapeHandle, axis: {
|
|
42
|
+
point: Vec3;
|
|
43
|
+
direction: Vec3;
|
|
44
|
+
}, angleRad: number): Promise<ShapeHandle>;
|
|
45
|
+
fillet(solid: ShapeHandle, edges: ShapeHandle[], radius: number): Promise<ShapeHandle>;
|
|
46
|
+
chamfer(solid: ShapeHandle, edges: ShapeHandle[], distance: number): Promise<ShapeHandle>;
|
|
47
|
+
shell(solid: ShapeHandle, facesToRemove: ShapeHandle[], thickness: number): Promise<ShapeHandle>;
|
|
48
|
+
offset(solid: ShapeHandle, distance: number): Promise<ShapeHandle>;
|
|
49
|
+
draft(shape: ShapeHandle, face: ShapeHandle, angleRad: number, direction: Vec3): Promise<ShapeHandle>;
|
|
50
|
+
pipe(profile: ShapeHandle, spine: ShapeHandle): Promise<ShapeHandle>;
|
|
51
|
+
loft(wires: ShapeHandle[], isSolid: boolean): Promise<ShapeHandle>;
|
|
52
|
+
sweep(wire: ShapeHandle, spine: ShapeHandle, transitionMode?: TransitionMode): Promise<ShapeHandle>;
|
|
53
|
+
draftPrism(shape: ShapeHandle, dx: number, dy: number, dz: number, angleDeg: number): Promise<ShapeHandle>;
|
|
54
|
+
makeVertex(x: number, y: number, z: number): Promise<ShapeHandle>;
|
|
55
|
+
makeEdge(v1: ShapeHandle, v2: ShapeHandle): Promise<ShapeHandle>;
|
|
56
|
+
makeLineEdge(start: Vec3, end: Vec3): Promise<ShapeHandle>;
|
|
57
|
+
makeCircleEdge(center: Vec3, normal: Vec3, radius: number): Promise<ShapeHandle>;
|
|
58
|
+
makeArcEdge(start: Vec3, mid: Vec3, end: Vec3): Promise<ShapeHandle>;
|
|
59
|
+
makeWire(edges: ShapeHandle[]): Promise<ShapeHandle>;
|
|
60
|
+
makeFace(wire: ShapeHandle): Promise<ShapeHandle>;
|
|
61
|
+
makeSolid(shell: ShapeHandle): Promise<ShapeHandle>;
|
|
62
|
+
makeCompound(shapes: ShapeHandle[]): Promise<ShapeHandle>;
|
|
63
|
+
translate(shape: ShapeHandle, dx: number, dy: number, dz: number): Promise<ShapeHandle>;
|
|
64
|
+
rotate(shape: ShapeHandle, axis: {
|
|
65
|
+
point: Vec3;
|
|
66
|
+
direction: Vec3;
|
|
67
|
+
}, angleRad: number): Promise<ShapeHandle>;
|
|
68
|
+
scale(shape: ShapeHandle, center: Vec3, factor: number): Promise<ShapeHandle>;
|
|
69
|
+
mirror(shape: ShapeHandle, point: Vec3, normal: Vec3): Promise<ShapeHandle>;
|
|
70
|
+
copy(shape: ShapeHandle): Promise<ShapeHandle>;
|
|
71
|
+
transform(shape: ShapeHandle, matrix: number[]): Promise<ShapeHandle>;
|
|
72
|
+
linearPattern(shape: ShapeHandle, direction: Vec3, spacing: number, count: number): Promise<ShapeHandle>;
|
|
73
|
+
circularPattern(shape: ShapeHandle, center: Vec3, axis: Vec3, angle: number, count: number): Promise<ShapeHandle>;
|
|
74
|
+
getShapeType(shape: ShapeHandle): Promise<ShapeType>;
|
|
75
|
+
isCompound(shape: ShapeHandle): Promise<boolean>;
|
|
76
|
+
isSolid(shape: ShapeHandle): Promise<boolean>;
|
|
77
|
+
isFace(shape: ShapeHandle): Promise<boolean>;
|
|
78
|
+
isEdge(shape: ShapeHandle): Promise<boolean>;
|
|
79
|
+
isWire(shape: ShapeHandle): Promise<boolean>;
|
|
80
|
+
isVertex(shape: ShapeHandle): Promise<boolean>;
|
|
81
|
+
isShell(shape: ShapeHandle): Promise<boolean>;
|
|
82
|
+
getSubShapes(shape: ShapeHandle, type: "vertex" | "edge" | "wire" | "face" | "shell" | "solid"): Promise<ShapeHandle[]>;
|
|
83
|
+
distanceBetween(a: ShapeHandle, b: ShapeHandle): Promise<number>;
|
|
84
|
+
isSame(a: ShapeHandle, b: ShapeHandle): Promise<boolean>;
|
|
85
|
+
isNull(shape: ShapeHandle): Promise<boolean>;
|
|
86
|
+
shapeOrientation(shape: ShapeHandle): Promise<ShapeOrientation>;
|
|
87
|
+
tessellate(shape: ShapeHandle, options?: TessellateOptions): Promise<Mesh>;
|
|
88
|
+
wireframe(shape: ShapeHandle, deflection?: number): Promise<EdgeData>;
|
|
89
|
+
meshShape(shape: ShapeHandle, options?: TessellateOptions): Promise<Mesh>;
|
|
90
|
+
meshBatch(shapes: ShapeHandle[], options?: TessellateOptions): Promise<MeshBatchData>;
|
|
91
|
+
importStep(data: string | ArrayBuffer): Promise<ShapeHandle>;
|
|
92
|
+
exportStep(shape: ShapeHandle): Promise<string>;
|
|
93
|
+
importStl(data: string | ArrayBuffer): Promise<ShapeHandle>;
|
|
94
|
+
exportStl(shape: ShapeHandle, linearDeflection?: number, ascii?: boolean): Promise<string>;
|
|
95
|
+
toBREP(shape: ShapeHandle): Promise<string>;
|
|
96
|
+
fromBREP(data: string): Promise<ShapeHandle>;
|
|
97
|
+
getBoundingBox(shape: ShapeHandle): Promise<BoundingBox>;
|
|
98
|
+
getVolume(shape: ShapeHandle): Promise<number>;
|
|
99
|
+
getSurfaceArea(shape: ShapeHandle): Promise<number>;
|
|
100
|
+
getLength(shape: ShapeHandle): Promise<number>;
|
|
101
|
+
getCenterOfMass(shape: ShapeHandle): Promise<Vec3>;
|
|
102
|
+
surfaceCurvature(face: ShapeHandle, u: number, v: number): Promise<CurvatureData>;
|
|
103
|
+
surfaceType(face: ShapeHandle): Promise<SurfaceKind>;
|
|
104
|
+
surfaceNormal(face: ShapeHandle, u: number, v: number): Promise<Vec3>;
|
|
105
|
+
uvBounds(face: ShapeHandle): Promise<UVBounds>;
|
|
106
|
+
classifyPointOnFace(face: ShapeHandle, u: number, v: number): Promise<PointClassification>;
|
|
107
|
+
curveType(edge: ShapeHandle): Promise<CurveKind>;
|
|
108
|
+
curveLength(edge: ShapeHandle): Promise<number>;
|
|
109
|
+
getNurbsCurveData(edge: ShapeHandle): Promise<NurbsCurveData>;
|
|
110
|
+
projectEdges(shape: ShapeHandle, viewOrigin: Vec3, viewDirection: Vec3, xAxis?: Vec3): Promise<ProjectionData>;
|
|
111
|
+
fixShape(shape: ShapeHandle): Promise<ShapeHandle>;
|
|
112
|
+
unifySameDomain(shape: ShapeHandle): Promise<ShapeHandle>;
|
|
113
|
+
isValid(shape: ShapeHandle): Promise<boolean>;
|
|
114
|
+
translateBatch(shapes: ShapeHandle[], offsets: number[]): Promise<ShapeHandle[]>;
|
|
115
|
+
booleanPipeline(base: ShapeHandle, opCodes: BooleanOp[], tools: ShapeHandle[]): Promise<ShapeHandle>;
|
|
116
|
+
release(shape: ShapeHandle): Promise<void>;
|
|
117
|
+
releaseAll(): Promise<void>;
|
|
118
|
+
readonly shapeCount: Promise<number>;
|
|
119
|
+
describe(shape: ShapeHandle): Promise<string>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Web Worker wrapper for OcctKernel. Provides the same API surface
|
|
123
|
+
* but every operation runs off the main thread.
|
|
124
|
+
*/
|
|
125
|
+
export declare class OcctWorker {
|
|
126
|
+
#private;
|
|
127
|
+
private constructor();
|
|
128
|
+
/**
|
|
129
|
+
* Spawn a new Web Worker running an OcctKernel instance.
|
|
130
|
+
*
|
|
131
|
+
* @param options.wasm - URL or path to the .wasm file (passed to `OcctKernel.init`)
|
|
132
|
+
* @param options.worker - Optional pre-created Worker instance. If omitted,
|
|
133
|
+
* a new Worker is created from the built-in worker entry point.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* const worker = await OcctWorker.spawn({ wasm: '/occt-wasm.wasm' });
|
|
138
|
+
* const box = await worker.makeBox(10, 20, 30);
|
|
139
|
+
* worker.terminate();
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
static spawn(options?: InitOptions & {
|
|
143
|
+
worker?: Worker;
|
|
144
|
+
}): Promise<OcctWorker>;
|
|
145
|
+
/** Access the proxied kernel methods. */
|
|
146
|
+
get kernel(): OcctWorkerProxy;
|
|
147
|
+
makeBox(dx: number, dy: number, dz: number): Promise<ShapeHandle>;
|
|
148
|
+
makeCylinder(radius: number, height: number): Promise<ShapeHandle>;
|
|
149
|
+
makeSphere(radius: number): Promise<ShapeHandle>;
|
|
150
|
+
fuse(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
151
|
+
cut(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
152
|
+
common(a: ShapeHandle, b: ShapeHandle): Promise<ShapeHandle>;
|
|
153
|
+
extrude(shape: ShapeHandle, dx: number, dy: number, dz: number): Promise<ShapeHandle>;
|
|
154
|
+
fillet(solid: ShapeHandle, edges: ShapeHandle[], radius: number): Promise<ShapeHandle>;
|
|
155
|
+
tessellate(shape: ShapeHandle, options?: TessellateOptions): Promise<Mesh>;
|
|
156
|
+
meshShape(shape: ShapeHandle, options?: TessellateOptions): Promise<Mesh>;
|
|
157
|
+
meshBatch(shapes: ShapeHandle[], options?: TessellateOptions): Promise<MeshBatchData>;
|
|
158
|
+
wireframe(shape: ShapeHandle, deflection?: number): Promise<EdgeData>;
|
|
159
|
+
translate(shape: ShapeHandle, dx: number, dy: number, dz: number): Promise<ShapeHandle>;
|
|
160
|
+
rotate(shape: ShapeHandle, axis: {
|
|
161
|
+
point: Vec3;
|
|
162
|
+
direction: Vec3;
|
|
163
|
+
}, angleRad: number): Promise<ShapeHandle>;
|
|
164
|
+
importStep(data: string | ArrayBuffer): Promise<ShapeHandle>;
|
|
165
|
+
exportStep(shape: ShapeHandle): Promise<string>;
|
|
166
|
+
getBoundingBox(shape: ShapeHandle): Promise<BoundingBox>;
|
|
167
|
+
getVolume(shape: ShapeHandle): Promise<number>;
|
|
168
|
+
getSurfaceArea(shape: ShapeHandle): Promise<number>;
|
|
169
|
+
getShapeType(shape: ShapeHandle): Promise<ShapeType>;
|
|
170
|
+
release(shape: ShapeHandle): Promise<void>;
|
|
171
|
+
releaseAll(): Promise<void>;
|
|
172
|
+
/** Terminate the underlying Web Worker. */
|
|
173
|
+
terminate(): void;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnQ,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAE5B,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAGnE,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7D,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAGtE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtF,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5G,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvF,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1F,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjG,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAGtG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpG,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAG3G,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjF,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpD,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAG1D,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACxF,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3G,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtE,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzG,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAGlH,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACrD,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxH,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGhE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtE,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAGtF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7D,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3F,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAG7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAGlF,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAG3F,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAG9D,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAG/G,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG9C,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjF,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAGrG,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAGrC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,qBAAa,UAAU;;IAInB,OAAO;IAKP;;;;;;;;;;;;;OAaG;WACU,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBpF,yCAAyC;IACzC,IAAI,MAAM,IAAI,eAAe,CAE5B;IAGD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC3C,UAAU,CAAC,MAAM,EAAE,MAAM;IACzB,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW;IACnC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW;IAClC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW;IACrC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC9D,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM;IAC/D,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAC1D,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB;IACzD,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAC5D,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM;IACjD,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAChE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM;IACnF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IACrC,UAAU,CAAC,KAAK,EAAE,WAAW;IAC7B,cAAc,CAAC,KAAK,EAAE,WAAW;IACjC,SAAS,CAAC,KAAK,EAAE,WAAW;IAC5B,cAAc,CAAC,KAAK,EAAE,WAAW;IACjC,YAAY,CAAC,KAAK,EAAE,WAAW;IAC/B,OAAO,CAAC,KAAK,EAAE,WAAW;IAC1B,UAAU;IAEV,2CAA2C;IAC3C,SAAS,IAAI,IAAI;CAGpB"}
|
package/dist/worker.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Off-main-thread OCCT kernel via Web Workers.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { OcctWorker } from 'occt-wasm/worker';
|
|
7
|
+
*
|
|
8
|
+
* const worker = await OcctWorker.spawn({ wasm: '/occt-wasm.wasm' });
|
|
9
|
+
* const box = await worker.makeBox(10, 20, 30);
|
|
10
|
+
* const mesh = await worker.tessellate(box);
|
|
11
|
+
* console.log(mesh.triangleCount);
|
|
12
|
+
* worker.terminate();
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import * as Comlink from "comlink";
|
|
18
|
+
/**
|
|
19
|
+
* Web Worker wrapper for OcctKernel. Provides the same API surface
|
|
20
|
+
* but every operation runs off the main thread.
|
|
21
|
+
*/
|
|
22
|
+
export class OcctWorker {
|
|
23
|
+
#worker;
|
|
24
|
+
#proxy;
|
|
25
|
+
constructor(worker, proxy) {
|
|
26
|
+
this.#worker = worker;
|
|
27
|
+
this.#proxy = proxy;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Spawn a new Web Worker running an OcctKernel instance.
|
|
31
|
+
*
|
|
32
|
+
* @param options.wasm - URL or path to the .wasm file (passed to `OcctKernel.init`)
|
|
33
|
+
* @param options.worker - Optional pre-created Worker instance. If omitted,
|
|
34
|
+
* a new Worker is created from the built-in worker entry point.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* const worker = await OcctWorker.spawn({ wasm: '/occt-wasm.wasm' });
|
|
39
|
+
* const box = await worker.makeBox(10, 20, 30);
|
|
40
|
+
* worker.terminate();
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
static async spawn(options) {
|
|
44
|
+
const worker = options?.worker ?? new Worker(new URL("./worker-entry.js", import.meta.url), { type: "module" });
|
|
45
|
+
const remote = Comlink.wrap(worker);
|
|
46
|
+
// Initialize the kernel inside the worker
|
|
47
|
+
await remote.init(options ? { wasm: options.wasm, wasmUrl: options.wasmUrl, wasmPath: options.wasmPath } : undefined);
|
|
48
|
+
const proxy = await remote.kernel;
|
|
49
|
+
return new OcctWorker(worker, proxy);
|
|
50
|
+
}
|
|
51
|
+
/** Access the proxied kernel methods. */
|
|
52
|
+
get kernel() {
|
|
53
|
+
return this.#proxy;
|
|
54
|
+
}
|
|
55
|
+
// Delegate commonly used methods directly for convenience
|
|
56
|
+
makeBox(dx, dy, dz) { return this.#proxy.makeBox(dx, dy, dz); }
|
|
57
|
+
makeCylinder(radius, height) { return this.#proxy.makeCylinder(radius, height); }
|
|
58
|
+
makeSphere(radius) { return this.#proxy.makeSphere(radius); }
|
|
59
|
+
fuse(a, b) { return this.#proxy.fuse(a, b); }
|
|
60
|
+
cut(a, b) { return this.#proxy.cut(a, b); }
|
|
61
|
+
common(a, b) { return this.#proxy.common(a, b); }
|
|
62
|
+
extrude(shape, dx, dy, dz) { return this.#proxy.extrude(shape, dx, dy, dz); }
|
|
63
|
+
fillet(solid, edges, radius) { return this.#proxy.fillet(solid, edges, radius); }
|
|
64
|
+
tessellate(shape, options) { return this.#proxy.tessellate(shape, options); }
|
|
65
|
+
meshShape(shape, options) { return this.#proxy.meshShape(shape, options); }
|
|
66
|
+
meshBatch(shapes, options) { return this.#proxy.meshBatch(shapes, options); }
|
|
67
|
+
wireframe(shape, deflection) { return this.#proxy.wireframe(shape, deflection); }
|
|
68
|
+
translate(shape, dx, dy, dz) { return this.#proxy.translate(shape, dx, dy, dz); }
|
|
69
|
+
rotate(shape, axis, angleRad) { return this.#proxy.rotate(shape, axis, angleRad); }
|
|
70
|
+
importStep(data) { return this.#proxy.importStep(data); }
|
|
71
|
+
exportStep(shape) { return this.#proxy.exportStep(shape); }
|
|
72
|
+
getBoundingBox(shape) { return this.#proxy.getBoundingBox(shape); }
|
|
73
|
+
getVolume(shape) { return this.#proxy.getVolume(shape); }
|
|
74
|
+
getSurfaceArea(shape) { return this.#proxy.getSurfaceArea(shape); }
|
|
75
|
+
getShapeType(shape) { return this.#proxy.getShapeType(shape); }
|
|
76
|
+
release(shape) { return this.#proxy.release(shape); }
|
|
77
|
+
releaseAll() { return this.#proxy.releaseAll(); }
|
|
78
|
+
/** Terminate the underlying Web Worker. */
|
|
79
|
+
terminate() {
|
|
80
|
+
this.#worker.terminate();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/dist/xcaf-document.d.ts
CHANGED
|
@@ -58,9 +58,9 @@ export declare class XCAFDocument {
|
|
|
58
58
|
#private;
|
|
59
59
|
private constructor();
|
|
60
60
|
/** Create a new empty XCAF document. */
|
|
61
|
-
static create(raw: RawXCAFKernel): XCAFDocument;
|
|
61
|
+
static create(raw: RawXCAFKernel, fs?: EmscriptenFS): XCAFDocument;
|
|
62
62
|
/** Import a STEP file into a new XCAF document (preserves colors/names/assemblies). */
|
|
63
|
-
static fromSTEP(raw: RawXCAFKernel, stepData: string): XCAFDocument;
|
|
63
|
+
static fromSTEP(raw: RawXCAFKernel, stepData: string, fs?: EmscriptenFS): XCAFDocument;
|
|
64
64
|
/** Add a shape as a root label. */
|
|
65
65
|
addShape(shape: ShapeHandle, options?: AddShapeOptions): LabelTag;
|
|
66
66
|
/** Add a shape as a child component of a parent label. */
|
|
@@ -82,8 +82,15 @@ export declare class XCAFDocument {
|
|
|
82
82
|
exportSTEP(): string;
|
|
83
83
|
/**
|
|
84
84
|
* Export as glTF binary (.glb). Returns raw bytes as Uint8Array.
|
|
85
|
-
*
|
|
85
|
+
*
|
|
86
|
+
* When the document was created via `OcctKernel.createXCAFDocument()`,
|
|
87
|
+
* the Emscripten FS is injected automatically. Otherwise, pass it
|
|
88
|
+
* explicitly or via the options object.
|
|
86
89
|
*/
|
|
90
|
+
exportGLTF(options?: GLTFExportOptions & {
|
|
91
|
+
fs?: EmscriptenFS;
|
|
92
|
+
}): Uint8Array;
|
|
93
|
+
/** @deprecated Pass `fs` via options instead: `exportGLTF({ fs })` */
|
|
87
94
|
exportGLTF(fs: EmscriptenFS, options?: GLTFExportOptions): Uint8Array;
|
|
88
95
|
/** Close the document and free OCCT resources. */
|
|
89
96
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xcaf-document.d.ts","sourceRoot":"","sources":["../src/xcaf-document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACR,WAAW,EACX,MAAM,EACN,QAAQ,EACR,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,EACpB,MAAM,YAAY,CAAC;AAGpB,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC1B,eAAe,IAAI,MAAM,CAAC;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACrD,gBAAgB,CACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACX,MAAM,CAAC;IACV,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,gBAAgB,CACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACZ;QACC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,kBAAkB,CACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAClB;QAAE,IAAI,IAAI,MAAM,CAAC;QAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC9D,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,IAAI,IAAI,MAAM,CAAC;QAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC7F,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3E;AAED,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAcD,qBAAa,YAAY;;
|
|
1
|
+
{"version":3,"file":"xcaf-document.d.ts","sourceRoot":"","sources":["../src/xcaf-document.ts"],"names":[],"mappings":"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"}
|
package/dist/xcaf-document.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* doc.close();
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
|
-
import { OcctError } from "./types.js";
|
|
18
|
+
import { OcctError, OcctErrorCode } from "./types.js";
|
|
19
19
|
function tag(n) {
|
|
20
20
|
return n;
|
|
21
21
|
}
|
|
@@ -30,20 +30,22 @@ function wrap(op, fn) {
|
|
|
30
30
|
export class XCAFDocument {
|
|
31
31
|
#raw;
|
|
32
32
|
#docId;
|
|
33
|
+
#fs;
|
|
33
34
|
#closed = false;
|
|
34
|
-
constructor(raw, docId) {
|
|
35
|
+
constructor(raw, docId, fs) {
|
|
35
36
|
this.#raw = raw;
|
|
36
37
|
this.#docId = docId;
|
|
38
|
+
this.#fs = fs;
|
|
37
39
|
}
|
|
38
40
|
/** Create a new empty XCAF document. */
|
|
39
|
-
static create(raw) {
|
|
41
|
+
static create(raw, fs) {
|
|
40
42
|
const docId = wrap("xcafNewDocument", () => raw.xcafNewDocument());
|
|
41
|
-
return new XCAFDocument(raw, docId);
|
|
43
|
+
return new XCAFDocument(raw, docId, fs);
|
|
42
44
|
}
|
|
43
45
|
/** Import a STEP file into a new XCAF document (preserves colors/names/assemblies). */
|
|
44
|
-
static fromSTEP(raw, stepData) {
|
|
46
|
+
static fromSTEP(raw, stepData, fs) {
|
|
45
47
|
const docId = wrap("xcafImportSTEP", () => raw.xcafImportSTEP(stepData));
|
|
46
|
-
return new XCAFDocument(raw, docId);
|
|
48
|
+
return new XCAFDocument(raw, docId, fs);
|
|
47
49
|
}
|
|
48
50
|
/** Add a shape as a root label. */
|
|
49
51
|
addShape(shape, options) {
|
|
@@ -103,12 +105,26 @@ export class XCAFDocument {
|
|
|
103
105
|
this.#ensureOpen();
|
|
104
106
|
return wrap("xcafExportSTEP", () => this.#raw.xcafExportSTEP(this.#docId));
|
|
105
107
|
}
|
|
106
|
-
|
|
107
|
-
* Export as glTF binary (.glb). Returns raw bytes as Uint8Array.
|
|
108
|
-
* Requires the Emscripten FS for binary file reading.
|
|
109
|
-
*/
|
|
110
|
-
exportGLTF(fs, options) {
|
|
108
|
+
exportGLTF(fsOrOptions, maybeOptions) {
|
|
111
109
|
this.#ensureOpen();
|
|
110
|
+
// Resolve overloads: exportGLTF(fs, opts) vs exportGLTF(opts)
|
|
111
|
+
let fs;
|
|
112
|
+
let options;
|
|
113
|
+
if (fsOrOptions && typeof fsOrOptions === "object" && "readFile" in fsOrOptions && "unlink" in fsOrOptions) {
|
|
114
|
+
// Legacy: exportGLTF(fs, options?)
|
|
115
|
+
fs = fsOrOptions;
|
|
116
|
+
options = maybeOptions;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// New: exportGLTF(options?)
|
|
120
|
+
const opts = fsOrOptions;
|
|
121
|
+
fs = opts?.fs;
|
|
122
|
+
options = opts;
|
|
123
|
+
}
|
|
124
|
+
fs ??= this.#fs;
|
|
125
|
+
if (!fs) {
|
|
126
|
+
throw new OcctError("xcafExportGLTF", "No Emscripten FS available. Either create the document via OcctKernel.createXCAFDocument(), or pass { fs } in options.");
|
|
127
|
+
}
|
|
112
128
|
const linDefl = options?.linearDeflection ?? 0.1;
|
|
113
129
|
const angDefl = options?.angularDeflection ?? 0.5;
|
|
114
130
|
const glbPath = wrap("xcafExportGLTF", () => this.#raw.xcafExportGLTF(this.#docId, linDefl, angDefl));
|
|
@@ -149,7 +165,7 @@ export class XCAFDocument {
|
|
|
149
165
|
}
|
|
150
166
|
#ensureOpen() {
|
|
151
167
|
if (this.#closed) {
|
|
152
|
-
throw new OcctError("XCAFDocument", "Document is closed");
|
|
168
|
+
throw new OcctError("XCAFDocument", "Document is closed", OcctErrorCode.DocumentClosed);
|
|
153
169
|
}
|
|
154
170
|
}
|
|
155
171
|
}
|