v0.2.0 — OCCT 8.0.0-beta1 + diagnostic tracing
OCCT 8.0.0-beta1 + diagnostic tracing
This release bumps the OCCT static dependency to 8.0.0-beta1 (the feature-freeze tag on the road to OCCT 8.0.0) and adds runtime diagnostic tracing for the heal/analyze code paths.
What changed
OCCT 8.0.0-beta1 (#2)
- Two new deprecations migrated:
Standard_False/True→false/true,TColStd_IndexedDataMapOfStringString→NCollection_IndexedDataMap<TCollection_AsciiString, TCollection_AsciiString>. - Transparent gains baked in:
BRepMesh_BaseMeshAlgonode-registration fix (#940),TopExp_Explorer::Clear()allocation reuse (#1195), ShapeFix cycle/DFS guards (#1227, #1247) eliminating stack overflow on shapes with shared sub-shapes, BVH-accelerated polyhedra interference (#924), lock-freeNCollection_IncAllocatorfast path (#1212).
Diagnostic tracing (#3)
- New public C API:
ot_set_trace(bool)/ot_get_trace(). Also activatable viaOCCT_TEMPLOT_TRACE=1environment variable. - When enabled, every
ot_*heal-module call emits[ot] ...enter / phase / exit lines flushed to stderr immediately, and OCCT's ownMessage::DefaultMessenger()is wired to stderr as[occt:level] .... A hung call is now localisable from the log.
Bug fix: ot_analyze_shape O(N⁴) wire matching (#3)
- The wire-gap scan was a triple-nested explorer iteration roughly O(W × F × W_per_F). On a 24,680-face shape this was ~10¹³ inner-loop iterations — easily a multi-minute hang. Replaced with a single
TopExp::MapShapesAndAncestors(WIRE, FACE)build and a flat walk over unique wires. As a side effect, also fixes a duplicate-wire double-counting bug in the previous loop.
Artifacts
| Platform | File |
|---|---|
| macOS (arm64, 12+) | libsimpleOCCTVP.dylib |
| Linux (x86_64) | libsimpleOCCTVP.so |
| Windows (x64) | simpleOCCTVP.dll |
All built from CI on commit at the tag.
Compatibility
- C ABI is fully backward-compatible. Two new exported symbols (
ot_set_trace,ot_get_trace) — old callers ignore them. - Pascal binding
pascal/occt_templot.pasis updated to declare the new pair. - No struct-layout changes.
Tested
ctest 4/4 green on macOS arm64 / Linux / Windows in CI. With OCCT_TEMPLOT_TRACE=1, test_heal bearing.stl (24,680 faces) now completes in ~0.4s — was effectively unbounded before this release.