Commit Graph

2 Commits

Author SHA1 Message Date
bherbruck e7b1539984 step-corpus: full AP203/AP214 run; wire IsLiveTopologyMember in the healer
- shim: fix the extrusion block read (it read an axis point that only
  revolutions have); TRIMMED_CURVE/SURFACE_CURVE and implied-knot
  B-spline surfaces as swept/face geometry in the importer
- verdicts split build differences (DIFF) from heal-only ones (HEAL-DIFF)
- heal::heal_data::p3: HasDeadTopologyPointObject resolves topology handles
  to the healed B-rep (was Unported(topology.brep_p1) on every real body);
  heal.* difftest unchanged (all PASS, 0 deferred)
- README section, dump_body example, plan/findings entry with the results

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QaDuBSC1mqS9DnQoEsr7LJ
2026-10-25 15:42:21 -04:00
bherbruck aeade86449 feat: clean-room STEP AP203/AP214 import for corpus testing
- crates/step-import: ISO 10303-21 reader and AP203/AP214 B-rep mapper to a
  neutral plain-data model (mm, resolved placements), written from the public
  Part 21 syntax and Part 41/42 entity definitions; bounded entity count, list
  nesting and reference depth; every reference checked; no allocation from
  file counts. Flat f64 encoding (+ validating decoder) for the C++ side.
- harness/cpp/shim/step_import.cpp + solidcore-ffi binding: builds the SMLib
  B-rep from the same encoded body (CreateCanonical geometry,
  CreateFacesWithCurves, SmApiStitchIntoSolid, mass properties, SmApiHealBrep).
- difftest --step-corpus: the same recipe on the Rust port, each (body, kernel)
  in a child process, stage-by-stage comparison at 1e-9 relative.
- scripts/fetch-steptools-corpus.sh: STEP Tools sample files into the gitignored
  corpus/steptools/, SHA-256 pinned (never committed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QaDuBSC1mqS9DnQoEsr7LJ
2026-10-25 14:53:12 -04:00