35 lines
1.7 KiB
Markdown
35 lines
1.7 KiB
Markdown
# Native OCCT history provider
|
|
|
|
This provider is compiled from the cached OCCT checkout selected by
|
|
`OCCT_SOURCE_DIR` and exposes the native Boolean history API through Emscripten
|
|
Embind. The provider keeps `TopoDS_Shape` handles and history queries in one
|
|
WASM instance. A handle from `@bitbybit-dev/occt` must never be passed directly
|
|
to this module because WebAssembly linear memories are independent.
|
|
|
|
Build and verify it with the project wrapper:
|
|
|
|
```bash
|
|
./npmw run build:occt-history
|
|
./npmw run test:occt-history
|
|
```
|
|
|
|
The build also publishes the JS/WASM pair to
|
|
`public/native/occt-history/`, which is the default URL used by
|
|
`NativeOcctHistoryWorkerProvider`. The generated artifacts remain ignored; a
|
|
clean checkout must run the build after restoring the pinned OCCT source and
|
|
Emscripten toolchain.
|
|
|
|
The exported `booleanHistory(object, tool, operation)` function supports
|
|
`fuse`, `cut`, and `common`. It returns the native result shape, per-input
|
|
`modified`/`generated`/`deleted` records, and capability flags. The provider also
|
|
exports `shapeToStep(shape)` and `booleanHistoryFromStep(objectStep, toolStep,
|
|
operation)`. The latter is the cross-WASM transport: Bitbybit exports STEP text,
|
|
the native provider reads it with `STEPControl_Reader`, returns the Boolean
|
|
result again as `resultStep`, and no linear-memory pointer crosses the boundary.
|
|
|
|
The TypeScript boundary mapper is `mapNativeOcctHistoryRecords`; the reusable
|
|
`createNativeOcctStepHistoryBridge` exports Bitbybit ShapeHandles to STEP and
|
|
converts provider source names into document object IDs before calling
|
|
`captureNativeTopologyHistory`. The direct handle API remains for calls that
|
|
stay inside this single native WASM instance.
|