@nekocad/occt-wasm 5.1.1-nekocad.1

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.
@@ -0,0 +1,610 @@
1
+ /**
2
+ * occt-wasm — OCCT compiled to WASM with clean TypeScript bindings.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { OcctKernel } from 'occt-wasm';
7
+ *
8
+ * const kernel = await OcctKernel.init();
9
+ * const box = kernel.makeBox(10, 20, 30);
10
+ * const mesh = kernel.tessellate(box);
11
+ * console.log(`${mesh.triangleCount} triangles`);
12
+ * kernel.release(box);
13
+ * ```
14
+ */
15
+ export { BooleanOp, JoinType, OcctError, OcctErrorCode, SweepContact, SweepLaw, SweepMode, TransitionMode, type AddChildOptions, type AddShapeOptions, type AlignAnchor, type BoundingBox, type BoundingBoxOptions, type Color3, type CurveKind, type CurvatureData, type EdgeData, type EvolutionData, type GLTFExportOptions, type InitOptions, type LabelInfo, type LabelOptions, type LabelTag, type Location, type Mesh, type MeshBatchData, type NurbsCurveData, type ShapeQueryResult, type PointClassification, type ProjectionData, type MeshShapeOptions, type ShapeHandle, type ShapeOrientation, type StlExportOptions, type ShapeType, type SurfaceKind, type SweepAdvancedOptions, type SweepFullOptions, type SweepOrientedOptions, type SweepToleranceOptions, type TessellateOptions, type UVBounds, type Vec3, } from "./types.js";
16
+ export { XCAFDocument, type EmscriptenFS } from "./xcaf-document.js";
17
+ import { XCAFDocument as XCAFDocumentImpl } from "./xcaf-document.js";
18
+ export { renderMultiviewSVG, renderShapeSVG, type MultiviewSvgOptions, type SvgViewOptions, type ViewName, } from "./svg.js";
19
+ import { type MultiviewSvgOptions, type SvgViewOptions, type ViewName } from "./svg.js";
20
+ import type { AlignAnchor, BoundingBox, CurveKind, CurvatureData, EdgeData, EvolutionData, InitOptions, Mesh, MeshBatchData, MeshShapeOptions, NurbsCurveData, PointClassification, ProjectionData, ShapeHandle, StlExportOptions, ShapeQueryResult, ShapeOrientation, ShapeType, SurfaceKind, SweepAdvancedOptions, SweepFullOptions, SweepOrientedOptions, TessellateOptions, BoundingBoxOptions, BooleanOp, UVBounds, Vec3 } from "./types.js";
21
+ import { JoinType, SweepMode, TransitionMode } from "./types.js";
22
+ import type { OcctWasmModule, OcctRawKernel } from "./raw-types.js";
23
+ export type { OcctWasmModule, OcctRawKernel } from "./raw-types.js";
24
+ /**
25
+ * OCCT kernel compiled to WASM. Arena-based shape management
26
+ * with branded handle types for type safety.
27
+ *
28
+ * Create via `OcctKernel.init()`. Dispose via `kernel[Symbol.dispose]()` or
29
+ * the `using` keyword. A FinalizationRegistry safety net catches leaked
30
+ * instances, but deterministic disposal is strongly preferred.
31
+ */
32
+ export declare class OcctKernel {
33
+ #private;
34
+ private constructor();
35
+ /**
36
+ * Initialize the WASM module and create a kernel instance.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * // Auto-detect (works in browser, Node.js, and Workers):
41
+ * const kernel = await OcctKernel.init();
42
+ *
43
+ * // Explicit WASM location:
44
+ * const kernel = await OcctKernel.init({ wasm: '/path/to/occt-wasm.wasm' });
45
+ *
46
+ * // From pre-fetched binary:
47
+ * const binary = await fetch('/occt-wasm.wasm').then(r => r.arrayBuffer());
48
+ * const kernel = await OcctKernel.init({ wasm: binary });
49
+ * ```
50
+ */
51
+ static init(options?: InitOptions): Promise<OcctKernel>;
52
+ /** Create an axis-aligned box solid with the given dimensions (BRepPrimAPI_MakeBox).
53
+ * @throws OcctError if dimensions are non-positive */
54
+ makeBox(dx: number, dy: number, dz: number): ShapeHandle;
55
+ /** Create a box solid from two opposite corner points.
56
+ * @throws OcctError if corners are coincident */
57
+ makeBoxFromCorners(corner1: Vec3, corner2: Vec3): ShapeHandle;
58
+ /** Create a cylinder solid centered on the Z axis (BRepPrimAPI_MakeCylinder).
59
+ * @throws OcctError */
60
+ makeCylinder(radius: number, height: number): ShapeHandle;
61
+ /** Create a sphere solid at the origin (BRepPrimAPI_MakeSphere).
62
+ * @throws OcctError */
63
+ makeSphere(radius: number): ShapeHandle;
64
+ /** Create a cone (or truncated cone) solid along the Z axis (BRepPrimAPI_MakeCone).
65
+ * @param r1 - bottom radius
66
+ * @param r2 - top radius (0 for a full cone)
67
+ * @throws OcctError */
68
+ makeCone(r1: number, r2: number, height: number): ShapeHandle;
69
+ /** Create a torus solid at the origin (BRepPrimAPI_MakeTorus).
70
+ * @throws OcctError */
71
+ makeTorus(majorRadius: number, minorRadius: number): ShapeHandle;
72
+ /**
73
+ * Infinite half-space solid bounded by the plane through `origin` with the
74
+ * given `normal`. The solid fills the side the normal points into — useful
75
+ * as an unbounded boolean cutting tool.
76
+ */
77
+ halfSpace(origin: Vec3, normal: Vec3): ShapeHandle;
78
+ /** Create an ellipsoid solid at the origin by scaling a sphere.
79
+ * @param rx - radius along X
80
+ * @param ry - radius along Y
81
+ * @param rz - radius along Z
82
+ * @throws OcctError */
83
+ makeEllipsoid(rx: number, ry: number, rz: number): ShapeHandle;
84
+ /** Create a rectangular planar face on the XY plane at the origin.
85
+ * @throws OcctError */
86
+ makeRectangle(width: number, height: number): ShapeHandle;
87
+ /** Boolean union (BRepAlgoAPI_Fuse). Combines two shapes into one.
88
+ * @throws OcctError */
89
+ fuse(a: ShapeHandle, b: ShapeHandle): ShapeHandle;
90
+ /** Boolean subtraction (BRepAlgoAPI_Cut). Removes b from a.
91
+ * @throws OcctError */
92
+ cut(a: ShapeHandle, b: ShapeHandle): ShapeHandle;
93
+ /** Boolean intersection (BRepAlgoAPI_Common). Keeps only the overlapping volume.
94
+ * @throws OcctError */
95
+ common(a: ShapeHandle, b: ShapeHandle): ShapeHandle;
96
+ /** Boolean intersection — alias for common (BRepAlgoAPI_Common).
97
+ * @throws OcctError */
98
+ intersect(a: ShapeHandle, b: ShapeHandle): ShapeHandle;
99
+ /** Compute the intersection edges/vertices of two shapes (BRepAlgoAPI_Section).
100
+ * @returns A compound of edges/vertices at the intersection
101
+ * @throws OcctError */
102
+ section(a: ShapeHandle, b: ShapeHandle): ShapeHandle;
103
+ /** Fuse all shapes in the array into a single shape.
104
+ * @throws OcctError */
105
+ fuseAll(shapes: ShapeHandle[]): ShapeHandle;
106
+ /** Subtract all tool shapes from the base shape.
107
+ * @throws OcctError */
108
+ cutAll(shape: ShapeHandle, tools: ShapeHandle[]): ShapeHandle;
109
+ /** Split a shape using tool shapes as splitting surfaces (BOPAlgo_Splitter).
110
+ * @returns A compound of the split fragments
111
+ * @throws OcctError */
112
+ split(shape: ShapeHandle, tools: ShapeHandle[]): ShapeHandle;
113
+ /**
114
+ * General-fuse cell selection: the union of all regions covered by two or
115
+ * more of the inputs. Unlike {@link fuseAll} (which keeps every cell), this
116
+ * keeps only the overlap regions via BOPAlgo_CellsBuilder.
117
+ */
118
+ intersectionCells(shapes: ShapeHandle[]): ShapeHandle;
119
+ /** Extrude a shape along a direction vector (BRepPrimAPI_MakePrism).
120
+ * @param dx - extrusion vector X component
121
+ * @param dy - extrusion vector Y component
122
+ * @param dz - extrusion vector Z component
123
+ * @throws OcctError */
124
+ extrude(shape: ShapeHandle, dx: number, dy: number, dz: number): ShapeHandle;
125
+ /** Revolve a shape around an axis (BRepPrimAPI_MakeRevol).
126
+ * @param axis - rotation axis defined by a point and direction
127
+ * @param angleRad - sweep angle in radians (2*PI for full revolution)
128
+ * @throws OcctError */
129
+ revolve(shape: ShapeHandle, axis: {
130
+ point: Vec3;
131
+ direction: Vec3;
132
+ }, angleRad: number): ShapeHandle;
133
+ /** Apply a constant-radius fillet to edges of a solid (BRepFilletAPI_MakeFillet).
134
+ * @throws OcctError */
135
+ fillet(solid: ShapeHandle, edges: ShapeHandle[], radius: number): ShapeHandle;
136
+ chamfer(solid: ShapeHandle, edges: ShapeHandle[], distance: number): ShapeHandle;
137
+ chamferDistAngle(solid: ShapeHandle, edges: ShapeHandle[], distance: number, angleDeg: number): ShapeHandle;
138
+ /** Apply an asymmetric (two-distance) chamfer to a single edge
139
+ * (BRepFilletAPI_MakeChamfer): `distance1` is set back on the reference face,
140
+ * `distance2` on the edge's other adjacent face. Omit `referenceFace` to use
141
+ * the first face adjacent to the edge; pass one (or swap the two distances)
142
+ * to control which side gets `distance1`. A given `referenceFace` must be
143
+ * adjacent to `edge`.
144
+ * @throws OcctError */
145
+ chamferAsymmetric(solid: ShapeHandle, edge: ShapeHandle, distance1: number, distance2: number, referenceFace?: ShapeHandle): ShapeHandle;
146
+ /**
147
+ * Hollow a solid by removing the listed faces and offsetting remaining
148
+ * faces inward by `thickness`.
149
+ *
150
+ * @param tolerance - OCCT precision for the thick-solid reconstruction.
151
+ * Use `1e-6` for precise shells (matches brepjs default); `1e-3` is a
152
+ * coarser legacy value that survives more inputs but produces
153
+ * different topology than brepjs.
154
+ */
155
+ shell(solid: ShapeHandle, facesToRemove: ShapeHandle[], thickness: number, tolerance: number): ShapeHandle;
156
+ /**
157
+ * Offset all faces of a solid by `distance`.
158
+ *
159
+ * @param tolerance - OCCT precision for the offset reconstruction. Use
160
+ * `1e-6` for precise offsets (matches brepjs default); `1e-3` is a
161
+ * coarser legacy value.
162
+ */
163
+ offset(solid: ShapeHandle, distance: number, tolerance: number): ShapeHandle;
164
+ draft(shape: ShapeHandle, face: ShapeHandle, angleRad: number, direction: Vec3): ShapeHandle;
165
+ pipe(profile: ShapeHandle, spine: ShapeHandle): ShapeHandle;
166
+ simplePipe(profile: ShapeHandle, spine: ShapeHandle): ShapeHandle;
167
+ /**
168
+ * Loft a solid (or shell) through a sequence of wire profiles.
169
+ *
170
+ * @param ruled - When `true`, sections are joined by ruled (linear)
171
+ * surfaces; when `false`, by smooth B-spline surfaces. The two modes
172
+ * produce dramatically different topology for the same input.
173
+ */
174
+ loft(wires: ShapeHandle[], isSolid: boolean, ruled: boolean): ShapeHandle;
175
+ loftWithVertices(wires: ShapeHandle[], isSolid: boolean, ruled: boolean, startVertex: ShapeHandle, endVertex: ShapeHandle): ShapeHandle;
176
+ sweep(wire: ShapeHandle, spine: ShapeHandle, transitionMode?: TransitionMode): ShapeHandle;
177
+ sweepPipeShell(profile: ShapeHandle, spine: ShapeHandle, freenet?: boolean, smooth?: boolean): ShapeHandle;
178
+ /**
179
+ * Sweep a profile wire along a spine wire with explicit profile-orientation
180
+ * control. `up` is required for {@link SweepMode.FixedUp} (the constant
181
+ * binormal direction); `auxSpine` is required for {@link SweepMode.Auxiliary}
182
+ * (the guide wire). Both are ignored for the other modes.
183
+ *
184
+ * In `options`, `curvilinearEquivalence` and `contact` apply to
185
+ * {@link SweepMode.Auxiliary} only; the tolerances apply to every mode and
186
+ * are absolute, not relative to model size. See
187
+ * {@link SweepOrientedOptions}.
188
+ */
189
+ sweepOriented(profile: ShapeHandle, spine: ShapeHandle, mode?: SweepMode, up?: Vec3, auxSpine?: ShapeHandle, options?: SweepOrientedOptions): ShapeHandle;
190
+ /**
191
+ * Sweep a profile along a spine with the full control surface: the
192
+ * orientation modes of {@link OcctKernel.sweepOriented}, the corner
193
+ * transitions of {@link OcctKernel.sweepPipeShell}, and the profile
194
+ * placement neither of them exposes.
195
+ *
196
+ * Prefer this for new code. The other two remain for callers bound to
197
+ * their existing raw arity.
198
+ */
199
+ sweepAdvanced(profile: ShapeHandle, spine: ShapeHandle, options?: SweepAdvancedOptions): ShapeHandle;
200
+ /**
201
+ * Sweep with the complete control surface: everything
202
+ * {@link OcctKernel.sweepAdvanced} accepts, plus a spine support surface,
203
+ * the approximation budget, and a homothetic scaling law.
204
+ *
205
+ * Prefer this for new code. The narrower sweep entry points remain for
206
+ * callers bound to their existing raw arity.
207
+ */
208
+ sweepFull(profile: ShapeHandle, spine: ShapeHandle, options?: SweepFullOptions): ShapeHandle;
209
+ draftPrism(shape: ShapeHandle, dx: number, dy: number, dz: number, angleDeg: number): ShapeHandle;
210
+ makeVertex(x: number, y: number, z: number): ShapeHandle;
211
+ makeEdge(v1: ShapeHandle, v2: ShapeHandle): ShapeHandle;
212
+ makeLineEdge(start: Vec3, end: Vec3): ShapeHandle;
213
+ makeCircleEdge(center: Vec3, normal: Vec3, radius: number): ShapeHandle;
214
+ makeCircleArc(center: Vec3, normal: Vec3, radius: number, startAngle: number, endAngle: number): ShapeHandle;
215
+ makeArcEdge(start: Vec3, mid: Vec3, end: Vec3): ShapeHandle;
216
+ makeEllipseEdge(center: Vec3, normal: Vec3, majorRadius: number, minorRadius: number): ShapeHandle;
217
+ makeEllipseArc(center: Vec3, normal: Vec3, majorRadius: number, minorRadius: number, startAngle: number, endAngle: number): ShapeHandle;
218
+ makeBezierEdge(controlPoints: Vec3[]): ShapeHandle;
219
+ makeBSplineEdge(poles: number[], weights: number[], knots: number[], multiplicities: number[], degree: number, periodic?: boolean): ShapeHandle;
220
+ makeTangentArc(start: Vec3, tangent: Vec3, end: Vec3): ShapeHandle;
221
+ makeHelixWire(origin: Vec3, axis: Vec3, pitch: number, height: number, radius: number): ShapeHandle;
222
+ /**
223
+ * A helix with an explicit handedness: right-handed (the default) winds
224
+ * counter-clockwise about `axis` as it climbs, left-handed clockwise. The
225
+ * two are mirror images over the same pitch, height and radius.
226
+ *
227
+ * Prefer this for new code. {@link OcctKernel.makeHelixWire} remains for
228
+ * callers bound to its existing raw arity, and is always right-handed.
229
+ */
230
+ makeHelixWireHanded(origin: Vec3, axis: Vec3, pitch: number, height: number, radius: number, leftHanded?: boolean): ShapeHandle;
231
+ makeWire(edges: ShapeHandle[]): ShapeHandle;
232
+ makeFace(wire: ShapeHandle): ShapeHandle;
233
+ makeNonPlanarFace(wire: ShapeHandle): ShapeHandle;
234
+ addHolesInFace(face: ShapeHandle, holeWires: ShapeHandle[]): ShapeHandle;
235
+ removeHolesFromFace(face: ShapeHandle, holeIndices: number[]): ShapeHandle;
236
+ makeSolid(shell: ShapeHandle): ShapeHandle;
237
+ sew(shapes: ShapeHandle[], tolerance?: number): ShapeHandle;
238
+ sewAndSolidify(faces: ShapeHandle[], tolerance?: number): ShapeHandle;
239
+ buildSolidFromFaces(faces: ShapeHandle[], tolerance?: number): ShapeHandle;
240
+ makeCompound(shapes: ShapeHandle[]): ShapeHandle;
241
+ buildTriFace(a: Vec3, b: Vec3, c: Vec3): ShapeHandle;
242
+ makeFaceOnSurface(face: ShapeHandle, wire: ShapeHandle): ShapeHandle;
243
+ makeNullShape(): ShapeHandle;
244
+ translate(shape: ShapeHandle, dx: number, dy: number, dz: number): ShapeHandle;
245
+ /**
246
+ * Translate along X so the chosen bounding-box anchor lands at `target`.
247
+ * Returns a new shape; the input is left untouched.
248
+ */
249
+ alignX(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle;
250
+ /** Translate along Y so the chosen bounding-box anchor lands at `target`. */
251
+ alignY(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle;
252
+ /** Translate along Z so the chosen bounding-box anchor lands at `target`. */
253
+ alignZ(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle;
254
+ rotate(shape: ShapeHandle, axis: {
255
+ point: Vec3;
256
+ direction: Vec3;
257
+ }, angleRad: number): ShapeHandle;
258
+ scale(shape: ShapeHandle, center: Vec3, factor: number): ShapeHandle;
259
+ mirror(shape: ShapeHandle, point: Vec3, normal: Vec3): ShapeHandle;
260
+ copy(shape: ShapeHandle): ShapeHandle;
261
+ /** Apply a 3x4 row-major affine transformation matrix (12 doubles: [r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz]). */
262
+ transform(shape: ShapeHandle, matrix: number[]): ShapeHandle;
263
+ /**
264
+ * Re-tag a shape with a `TopLoc_Location` from a 3x4 row-major affine matrix
265
+ * (same 12-double layout as {@link transform}). Shares the underlying topology
266
+ * instead of deep-copying it, so a pure move is O(1).
267
+ */
268
+ located(shape: ShapeHandle, matrix: number[]): ShapeHandle;
269
+ /** Apply a general (possibly non-affine) 3x4 row-major transformation matrix (12 doubles). */
270
+ generalTransform(shape: ShapeHandle, matrix: number[]): ShapeHandle;
271
+ linearPattern(shape: ShapeHandle, direction: Vec3, spacing: number, count: number): ShapeHandle;
272
+ circularPattern(shape: ShapeHandle, center: Vec3, axis: Vec3, angle: number, count: number): ShapeHandle;
273
+ /** Compose two 3x4 row-major transformation matrices. Returns a 12-element array. */
274
+ composeTransform(m1: number[], m2: number[]): number[];
275
+ /** Translate multiple shapes by their respective offsets in a single WASM call. */
276
+ translateBatch(shapes: ShapeHandle[], offsets: number[]): ShapeHandle[];
277
+ /** Chain boolean operations in a single WASM call. */
278
+ booleanPipeline(base: ShapeHandle, opCodes: BooleanOp[], tools: ShapeHandle[]): ShapeHandle;
279
+ /** Query multiple shapes in a single WASM call: bbox, volume, area, center of mass, type, validity. */
280
+ queryBatch(shapes: ShapeHandle[]): ShapeQueryResult[];
281
+ /** Fillet multiple solids in a single WASM call. */
282
+ filletBatch(ops: Array<{
283
+ solid: ShapeHandle;
284
+ edges: ShapeHandle[];
285
+ radius: number;
286
+ }>): ShapeHandle[];
287
+ /** Apply 3x4 affine transforms to multiple shapes in a single WASM call. */
288
+ transformBatch(shapes: ShapeHandle[], matrices: number[]): ShapeHandle[];
289
+ /** Rotate multiple shapes in a single WASM call. */
290
+ rotateBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[];
291
+ /** Scale multiple shapes in a single WASM call. */
292
+ scaleBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[];
293
+ /** Mirror multiple shapes in a single WASM call. */
294
+ mirrorBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[];
295
+ getShapeType(shape: ShapeHandle): ShapeType;
296
+ /** True if the shape is a compound. */
297
+ isCompound(shape: ShapeHandle): boolean;
298
+ /** True if the shape is a comp-solid. */
299
+ isCompSolid(shape: ShapeHandle): boolean;
300
+ /** True if the shape is a solid. */
301
+ isSolid(shape: ShapeHandle): boolean;
302
+ /** True if the shape is a shell. */
303
+ isShell(shape: ShapeHandle): boolean;
304
+ /** True if the shape is a face. */
305
+ isFace(shape: ShapeHandle): boolean;
306
+ /** True if the shape is a wire. */
307
+ isWire(shape: ShapeHandle): boolean;
308
+ /** True if the shape is an edge. */
309
+ isEdge(shape: ShapeHandle): boolean;
310
+ /** True if the shape is a vertex. */
311
+ isVertex(shape: ShapeHandle): boolean;
312
+ getSubShapes(shape: ShapeHandle, type: "vertex" | "edge" | "wire" | "face" | "shell" | "solid"): ShapeHandle[];
313
+ /** Count sub-shapes of a type without materialising a handle per sub-shape. */
314
+ subShapeCount(shape: ShapeHandle, type: "vertex" | "edge" | "wire" | "face" | "shell" | "solid"): number;
315
+ /**
316
+ * Deduplicated hashes of a shape's sub-shapes, with no per-sub-shape handle
317
+ * allocation. Use for hash-only paths (face-hash collection, tagging) that
318
+ * would otherwise iterate {@link getSubShapes} handles just to release them.
319
+ */
320
+ subShapeHashes(shape: ShapeHandle, type: "vertex" | "edge" | "wire" | "face" | "shell" | "solid", hashUpperBound: number): number[];
321
+ downcast(shape: ShapeHandle, targetType: "vertex" | "edge" | "wire" | "face" | "shell" | "solid"): ShapeHandle;
322
+ distanceBetween(a: ShapeHandle, b: ShapeHandle): number;
323
+ isSame(a: ShapeHandle, b: ShapeHandle): boolean;
324
+ isEqual(a: ShapeHandle, b: ShapeHandle): boolean;
325
+ isNull(shape: ShapeHandle): boolean;
326
+ hashCode(shape: ShapeHandle, upperBound: number): number;
327
+ shapeOrientation(shape: ShapeHandle): ShapeOrientation;
328
+ sharedEdges(faceA: ShapeHandle, faceB: ShapeHandle): ShapeHandle[];
329
+ adjacentFaces(shape: ShapeHandle, face: ShapeHandle): ShapeHandle[];
330
+ iterShapes(shape: ShapeHandle): ShapeHandle[];
331
+ /** Returns a flat array mapping edge hashes to face hashes. */
332
+ edgeToFaceMap(shape: ShapeHandle, hashUpperBound: number): number[];
333
+ /** Tessellate a shape into a triangle mesh. Returns copied data (safe to keep). */
334
+ tessellate(shape: ShapeHandle, options?: TessellateOptions): Mesh;
335
+ /** Sample edges as polylines for wireframe rendering. */
336
+ wireframe(shape: ShapeHandle, deflection?: number): EdgeData;
337
+ hasTriangulation(shape: ShapeHandle): boolean;
338
+ /**
339
+ * Tessellate with face group data (per-face triangle ranges + hashes).
340
+ * Pass `force: true` to get the requested deflection even when the shape
341
+ * already holds a finer triangulation.
342
+ */
343
+ meshShape(shape: ShapeHandle, options?: MeshShapeOptions): Mesh;
344
+ /** Tessellate multiple shapes in a single WASM call. */
345
+ meshBatch(shapes: ShapeHandle[], options?: TessellateOptions): MeshBatchData;
346
+ importStep(data: string | ArrayBuffer): ShapeHandle;
347
+ exportStep(shape: ShapeHandle): string;
348
+ /**
349
+ * Import an STL mesh. A string is ASCII STL; bytes may be binary or ASCII
350
+ * STL and are passed through untouched (no text decoding).
351
+ */
352
+ importStl(data: string | ArrayBuffer | Uint8Array): ShapeHandle;
353
+ /**
354
+ * Export STL. Binary STL (the default) comes back as bytes; pass
355
+ * `ascii: true` for the text format as a string.
356
+ *
357
+ * The options form also takes the angular deflection and `force`. The
358
+ * positional form keeps the angular deflection at 0.5 rad.
359
+ */
360
+ exportStl(shape: ShapeHandle, options: StlExportOptions & {
361
+ ascii: true;
362
+ }): string;
363
+ exportStl(shape: ShapeHandle, options: StlExportOptions & {
364
+ ascii?: false | undefined;
365
+ }): Uint8Array;
366
+ exportStl(shape: ShapeHandle, options: StlExportOptions): string | Uint8Array;
367
+ exportStl(shape: ShapeHandle, linearDeflection?: number, ascii?: false): Uint8Array;
368
+ exportStl(shape: ShapeHandle, linearDeflection: number | undefined, ascii: true): string;
369
+ exportStl(shape: ShapeHandle, linearDeflection: number | undefined, ascii: boolean): string | Uint8Array;
370
+ toBREP(shape: ShapeHandle): string;
371
+ fromBREP(data: string): ShapeHandle;
372
+ /** Serialize a shape to binary BREP (smaller/faster than the text format). */
373
+ toBREPBinary(shape: ShapeHandle): Uint8Array;
374
+ /** Load a shape from binary BREP produced by {@link toBREPBinary}. */
375
+ fromBREPBinary(data: Uint8Array): ShapeHandle;
376
+ cacheStep(stepData: string | ArrayBuffer): string;
377
+ loadCached(brep: string): ShapeHandle;
378
+ /**
379
+ * Compute the axis-aligned bounding box of a shape.
380
+ *
381
+ * By default the box is precise: `BRepBndLib::AddOptimal` finds each
382
+ * surface's true extrema, so the bounds are the same whether or not the
383
+ * shape has been tessellated. (Loose bounds were the source of the uniform
384
+ * 1.2 mm shift versus brepjs in occt-wasm 2.0.) That extremum search is
385
+ * what costs time on BSpline geometry with no mesh: a filleted box takes
386
+ * ~5 ms precise versus ~0.06 ms loose. On analytic shapes both take a few
387
+ * microseconds.
388
+ *
389
+ * `{ precise: false }` switches to `BRepBndLib::Add`: analytic extents,
390
+ * BSpline control hulls, plus the shape tolerance. The result always
391
+ * contains the precise box, which makes it the right choice for culling
392
+ * or scene fitting of unmeshed freeform geometry (fillets, lofts, STEP
393
+ * imports).
394
+ *
395
+ * `{ useTriangulation: true }` bounds an existing triangulation instead,
396
+ * in either mode. Far faster on a meshed shape, but only as tight as that
397
+ * mesh: on a 2.0-deflection mesh it overshot a 26 mm extent by 1.8 mm, and
398
+ * on a 0.1-deflection mesh by 0.16 mm. With no triangulation present it
399
+ * changes nothing.
400
+ */
401
+ getBoundingBox(shape: ShapeHandle, options?: BoundingBoxOptions): BoundingBox;
402
+ /** @deprecated Pass `{ useTriangulation }` instead. */
403
+ getBoundingBox(shape: ShapeHandle, useTriangulation: boolean): BoundingBox;
404
+ getVolume(shape: ShapeHandle): number;
405
+ getSurfaceArea(shape: ShapeHandle): number;
406
+ getLength(shape: ShapeHandle): number;
407
+ getCenterOfMass(shape: ShapeHandle): Vec3;
408
+ /**
409
+ * Matrix of inertia about the center of mass, as a row-major 3×3 array
410
+ * (length 9). Symmetric: `[1]==[3]`, `[2]==[6]`, `[5]==[7]`.
411
+ */
412
+ getInertia(shape: ShapeHandle): number[];
413
+ /** True if `point` lies inside (or on the boundary of) a solid. */
414
+ containsPoint(shape: ShapeHandle, point: Vec3, tolerance?: number): boolean;
415
+ /**
416
+ * Surface (area-weighted) center of mass for a face. Equivalent to
417
+ * `BRepGProp::SurfaceProperties(face, props).CentreOfMass()`.
418
+ *
419
+ * Use this for face fingerprinting and finder predicates rather than a
420
+ * tessellation-based centroid — for non-planar faces (cylinders, holed
421
+ * planes) the two diverge.
422
+ */
423
+ getSurfaceCenterOfMass(face: ShapeHandle): Vec3;
424
+ getLinearCenterOfMass(shape: ShapeHandle): Vec3;
425
+ surfaceCurvature(face: ShapeHandle, u: number, v: number): CurvatureData;
426
+ vertexPosition(vertex: ShapeHandle): Vec3;
427
+ surfaceType(face: ShapeHandle): SurfaceKind;
428
+ surfaceNormal(face: ShapeHandle, u: number, v: number): Vec3;
429
+ pointOnSurface(face: ShapeHandle, u: number, v: number): Vec3;
430
+ outerWire(face: ShapeHandle): ShapeHandle;
431
+ /**
432
+ * Reverse a surface's U parametric direction (OCCT `Geom_Surface::UReverse`),
433
+ * returning a new face proxy whose surface is the U-reversed original.
434
+ * `pointOnSurface(result, u, v)` then evaluates the original surface at
435
+ * `origSurface.UReversedParameter(u)` — for a full-period cylinder that is
436
+ * `uFirst + uLast - u`.
437
+ */
438
+ reverseSurfaceU(face: ShapeHandle): ShapeHandle;
439
+ uvBounds(face: ShapeHandle): UVBounds;
440
+ /** Project a 3D point onto a face, returning [u, v]. */
441
+ uvFromPoint(face: ShapeHandle, point: Vec3): {
442
+ u: number;
443
+ v: number;
444
+ };
445
+ /**
446
+ * Extract cylinder data from a cylindrical face.
447
+ *
448
+ * Returns `null` when the face's underlying surface is not a cylinder,
449
+ * otherwise `{ radius, isDirect }` where `isDirect` mirrors
450
+ * `gp_Cylinder::Direct()` (i.e. whether U and V form a right-handed pair).
451
+ */
452
+ getFaceCylinderData(face: ShapeHandle): {
453
+ radius: number;
454
+ isDirect: boolean;
455
+ } | null;
456
+ /** Project a 3D point onto a face, returning the closest point as Vec3. */
457
+ projectPointOnFace(face: ShapeHandle, point: Vec3): Vec3;
458
+ /** Classify a UV point relative to a face boundary. */
459
+ classifyPointOnFace(face: ShapeHandle, u: number, v: number): PointClassification;
460
+ /** Create a BSpline surface from a grid of control points. */
461
+ bsplineSurface(controlPoints: Vec3[], rows: number, cols: number): ShapeHandle;
462
+ curveType(edge: ShapeHandle): CurveKind;
463
+ curvePointAtParam(edge: ShapeHandle, param: number): Vec3;
464
+ curveTangent(edge: ShapeHandle, param: number): Vec3;
465
+ /** Returns [firstParam, lastParam]. */
466
+ curveParameters(edge: ShapeHandle): {
467
+ first: number;
468
+ last: number;
469
+ };
470
+ curveIsClosed(edge: ShapeHandle): boolean;
471
+ curveIsPeriodic(edge: ShapeHandle): boolean;
472
+ curveLength(edge: ShapeHandle): number;
473
+ interpolatePoints(points: Vec3[], periodic?: boolean): ShapeHandle;
474
+ /**
475
+ * Interpolate a cubic B-spline through the points with clamped start/end
476
+ * tangent directions.
477
+ */
478
+ interpolatePointsWithTangents(points: Vec3[], startTangent: Vec3, endTangent: Vec3): ShapeHandle;
479
+ /** Closest point on an edge to `point`, with the curve tangent and parameter there. */
480
+ projectPointOnEdge(edge: ShapeHandle, point: Vec3): {
481
+ point: Vec3;
482
+ tangent: Vec3;
483
+ parameter: number;
484
+ };
485
+ approximatePoints(points: Vec3[], tolerance?: number): ShapeHandle;
486
+ getNurbsCurveData(edge: ShapeHandle): NurbsCurveData;
487
+ curveDegreeElevate(edge: ShapeHandle, elevateBy: number): ShapeHandle;
488
+ curveKnotInsert(edge: ShapeHandle, knot: number, times: number): ShapeHandle;
489
+ curveKnotRemove(edge: ShapeHandle, knot: number, tolerance: number): ShapeHandle;
490
+ curveSplit(edge: ShapeHandle, param: number): [ShapeHandle, ShapeHandle];
491
+ liftCurve2dToPlane(points2d: Array<{
492
+ x: number;
493
+ y: number;
494
+ }>, planeOrigin: Vec3, planeZ: Vec3, planeX: Vec3): ShapeHandle;
495
+ projectEdges(shape: ShapeHandle, viewOrigin: Vec3, viewDirection: Vec3, xAxis?: Vec3): ProjectionData;
496
+ /**
497
+ * Render a single named view of a shape to a standalone SVG string via
498
+ * hidden-line removal. Visible edges are solid, hidden edges dashed.
499
+ */
500
+ toSVG(shape: ShapeHandle, view?: ViewName, options?: SvgViewOptions): string;
501
+ /**
502
+ * Render a multiview grid (default Front / Top / Right / Iso) of a shape to
503
+ * a single SVG string, with per-view gnomons and an overall size annotation.
504
+ * Aimed at giving an automated agent a readable picture of the geometry.
505
+ */
506
+ toMultiviewSVG(shape: ShapeHandle, options?: MultiviewSvgOptions): string;
507
+ /**
508
+ * Thicken a face/shell into a solid (or grow a solid uniformly).
509
+ *
510
+ * @param tolerance - OCCT precision for the offset reconstruction. Use
511
+ * `1e-6` for precise thickening (matches brepjs default); `1e-3` is a
512
+ * coarser legacy value.
513
+ */
514
+ thicken(shape: ShapeHandle, thickness: number, tolerance: number): ShapeHandle;
515
+ /**
516
+ * Remove complete features such as holes, bosses, chamfers, or fillets and
517
+ * heal the surrounding faces. Arbitrary isolated faces are not guaranteed
518
+ * to be removable.
519
+ *
520
+ * @param tolerance - Additional fuzzy tolerance used while reconstructing
521
+ * the surrounding geometry. Pass `0` to use OCCT's defaults.
522
+ */
523
+ defeature(shape: ShapeHandle, faces: ShapeHandle[], tolerance: number): ShapeHandle;
524
+ reverseShape(shape: ShapeHandle): ShapeHandle;
525
+ simplify(shape: ShapeHandle): ShapeHandle;
526
+ filletVariable(solid: ShapeHandle, edge: ShapeHandle, startRadius: number, endRadius: number): ShapeHandle;
527
+ /** Offset a 2D wire. */
528
+ offsetWire2D(wire: ShapeHandle, offset: number, joinType?: JoinType): ShapeHandle;
529
+ translateWithHistory(shape: ShapeHandle, dx: number, dy: number, dz: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
530
+ fuseWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
531
+ cutWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
532
+ filletWithHistory(solid: ShapeHandle, edges: ShapeHandle[], radius: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
533
+ rotateWithHistory(shape: ShapeHandle, axis: {
534
+ point: Vec3;
535
+ direction: Vec3;
536
+ }, angleRad: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
537
+ mirrorWithHistory(shape: ShapeHandle, point: Vec3, normal: Vec3, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
538
+ scaleWithHistory(shape: ShapeHandle, center: Vec3, factor: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
539
+ intersectWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
540
+ chamferWithHistory(solid: ShapeHandle, edges: ShapeHandle[], distance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
541
+ shellWithHistory(solid: ShapeHandle, faces: ShapeHandle[], thickness: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
542
+ offsetWithHistory(solid: ShapeHandle, distance: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
543
+ thickenWithHistory(shape: ShapeHandle, thickness: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData;
544
+ buildExtrusionLaw(profile: string, length: number, endFactor: number): ShapeHandle;
545
+ trimLaw(law: ShapeHandle, first: number, last: number): ShapeHandle;
546
+ sweepWithLaw(profile: ShapeHandle, spine: ShapeHandle, law: ShapeHandle): ShapeHandle;
547
+ fixShape(shape: ShapeHandle): ShapeHandle;
548
+ unifySameDomain(shape: ShapeHandle): ShapeHandle;
549
+ isValid(shape: ShapeHandle): boolean;
550
+ healSolid(shape: ShapeHandle, tolerance?: number): ShapeHandle;
551
+ healFace(shape: ShapeHandle, tolerance?: number): ShapeHandle;
552
+ healWire(shape: ShapeHandle, tolerance?: number): ShapeHandle;
553
+ fixFaceOrientations(shape: ShapeHandle): ShapeHandle;
554
+ removeDegenerateEdges(shape: ShapeHandle): ShapeHandle;
555
+ buildCurves3d(wire: ShapeHandle): void;
556
+ fixWireOnFace(wire: ShapeHandle, face: ShapeHandle, tolerance?: number): ShapeHandle;
557
+ /**
558
+ * Create a new XCAF document with the Emscripten FS pre-injected.
559
+ * This allows `doc.exportGLTF()` to work without passing FS explicitly.
560
+ */
561
+ createXCAFDocument(): XCAFDocumentImpl;
562
+ /**
563
+ * Import a STEP file into a new XCAF document with the Emscripten FS pre-injected.
564
+ * Preserves colors, names, and assembly structure from the STEP file.
565
+ */
566
+ importXCAFFromSTEP(stepData: string): XCAFDocumentImpl;
567
+ release(shape: ShapeHandle): void;
568
+ releaseAll(): void;
569
+ /**
570
+ * Mark the current arena high-water point. Every handle produced after this
571
+ * call can be reclaimed in one step with {@link releaseSince}. Pair the two
572
+ * around a logical operation to bulk-free intermediates instead of tracking
573
+ * each id for individual {@link release}.
574
+ */
575
+ checkpoint(): number;
576
+ /**
577
+ * Release every handle allocated at or after `mark` (a value from a prior
578
+ * {@link checkpoint}). Handles the caller wants to keep must be produced
579
+ * before the checkpoint, or copied out; ids created after the mark become
580
+ * invalid once this returns.
581
+ */
582
+ releaseSince(mark: number): void;
583
+ get shapeCount(): number;
584
+ /** Return a human-readable summary of a shape for debugging. */
585
+ describe(shape: ShapeHandle): string;
586
+ [Symbol.dispose](): void;
587
+ /**
588
+ * Return the underlying Emscripten module. Intended for integrators who
589
+ * need to hand the raw module to a third-party adapter (e.g.
590
+ * `brepjs.OcctWasmAdapter`) without bypassing {@link OcctKernel.init}.
591
+ *
592
+ * The module is owned by this `OcctKernel` instance — disposing the
593
+ * kernel does not invalidate the module reference, but the raw kernel
594
+ * obtained via {@link getRawKernel} *will* be deleted.
595
+ */
596
+ getRawModule(): OcctWasmModule;
597
+ /**
598
+ * Return the underlying raw Embind kernel. Intended for integrators who
599
+ * need to hand the raw kernel to a third-party adapter (e.g.
600
+ * `brepjs.OcctWasmAdapter`).
601
+ *
602
+ * Lifecycle: the raw kernel is owned by this `OcctKernel`. Calling
603
+ * `kernel[Symbol.dispose]()` (or letting the FinalizationRegistry collect
604
+ * the wrapper) will `releaseAll()` and `delete()` the raw kernel — so the
605
+ * adapter must not outlive the `OcctKernel` it was constructed from.
606
+ * Do not call `delete()` or `releaseAll()` on the raw kernel directly.
607
+ */
608
+ getRawKernel(): OcctRawKernel;
609
+ }
610
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}