kernel: IGES trimmed surfaces close their loops and split into separate bodies

Three defects in restating trimmed surfaces (144/143) as STEP, kernel-agnostic:

- A boundary loop is one closed curve (IGES 5.3 composite curve: each piece ends
  where the next starts), but each piece's ends were sewn into vertices by
  distance alone, so pieces that miss by more than the sewing tolerance left the
  loop open and the face was dropped (#3845). Surfaces are now read first and sewn
  after: every meeting point of two pieces is one vertex (union of the two), the
  STEP reader then carries the distance as the vertex's tolerance.
- With no parameter-space curve to give the start, a composite whose first piece is
  written end to start kept that direction, so the second piece did not connect
  (#3913). The first piece now runs from its end away from the second.
- All sewn surfaces were written as one shell, so two separate closed boxes came in
  as one body of two shells that SMLib's check refuses (#3972). Each connected set
  of faces is now its own shell and body (Body1, Body2, ...); a shell writes only
  the vertices its edges use, in the sewer's order.
(not built: base in progress)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017itGh5fpMEousnZ91cYcVt
This commit is contained in:
jyviko
2026-10-22 00:22:40 -04:00
parent 6e17d26dd9
commit 51d7fc4137

Diff Content Not Available