Releases: SecondMouseAU/simpleOCCTVP
Release list
v0.2.1 — perf tracing on import / export / mesh paths
Adds OT_TRACE_TIMER and wires per-call timing + phase boundaries into all import / export / mesh extraction entry points so a real Templot workload can be profiled end-to-end with OCCT_TEMPLOT_TRACE=1. See PR #4 for details and sample bearing.stl numbers.
Artifacts
| Platform | File |
|---|---|
| macOS (arm64, 12+) | libsimpleOCCTVP-arm64.dylib |
| Linux (x86_64) | libsimpleOCCTVP-x64.so.0.1.0 |
| Windows (x64) | simpleOCCTVP-x64.dll |
All three platform builds verified green via CI run 25297684290 after the repo was made public.
What changed since v0.2.0
- New
OT_TRACE_TIMER(label)RAII macro insrc/occt_templot_trace.h— reports total wall time on every return path including exception unwind. Effectively free when tracing is off. - Wired into all
ot_import_*(8 entry points) /ot_export_*(5) /ot_mesh_*+ot_edge_mesh_*(4) functions. Each emits enter / phase / exit traces around the OCCT-heavy work and a final<name>: <ms> msline. - ABI fully backward-compatible. No new exported symbols. Pascal binding unchanged from v0.2.0.
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.
v0.1.0
simpleOCCTVP v0.1.0
First release -- pure C API over OpenCASCADE 8.0.0.
Features
- Shape I/O: Import/export STL, STEP, IGES, OBJ, PLY
- Shape Healing: Automated repair, sewing, solid creation, validity analysis
- Mesh Extraction: Triangulated mesh with interleaved position+normal data, edge polylines
- Offscreen Rendering: V3d-based offscreen viewer with OpenGL
- Camera Control: Standalone camera with projection/view matrices, project/unproject
- Display Drawer: Configurable tessellation parameters
Platform Binaries
| File | Platform |
|---|---|
libsimpleOCCTVP.dylib |
macOS arm64 |
simpleOCCTVP.dll |
Windows x64 |
libsimpleOCCTVP.so |
Linux x64 |
occt_templot.h |
C header (all platforms) |
Usage
Download the shared library for your platform and occt_templot.h. See the README for integration instructions.
Dependencies
- OCCT 8.0.0 (statically linked into the shared library)
- System OpenGL (provided by OS)