Skip to content

v0.2.0 — OCCT 8.0.0-beta1 + diagnostic tracing

Choose a tag to compare

@gsdali gsdali released this 02 May 02:36

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/Truefalse/true, TColStd_IndexedDataMapOfStringStringNCollection_IndexedDataMap<TCollection_AsciiString, TCollection_AsciiString>.
  • Transparent gains baked in: BRepMesh_BaseMeshAlgo node-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-free NCollection_IncAllocator fast path (#1212).

Diagnostic tracing (#3)

  • New public C API: ot_set_trace(bool) / ot_get_trace(). Also activatable via OCCT_TEMPLOT_TRACE=1 environment variable.
  • When enabled, every ot_* heal-module call emits [ot] ... enter / phase / exit lines flushed to stderr immediately, and OCCT's own Message::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.pas is 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.