Skip to content

Releases: SecondMouseAU/simpleOCCTVP

v0.2.1 — perf tracing on import / export / mesh paths

Choose a tag to compare

@gsdali gsdali released this 02 May 06:10

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 in src/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> ms line.
  • 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

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.

v0.1.0

Choose a tag to compare

@gsdali gsdali released this 28 Feb 04:58

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)