feat: advance FreeCAD parity and native OCCT history
This commit is contained in:
34
native/occt-history/README.md
Normal file
34
native/occt-history/README.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user