Files
bherbruck a171f1c425 STEP import: faces through a sphere's pole, bands round an extruded ellipse and splines closed to the file's uncertainty read whole (#16176)
* STEP import: faces through a sphere's pole, bands round an extruded ellipse and splines closed to the file's uncertainty read whole

Four reader bugs that left faces out of closed solids since STEP import moved to
solidcore-step:

- A loop through a pole counted its turns round the axis from the point at the pole,
  whose angle is anything: a ball end split along a meridian could come out as winding
  twice and the face was refused. Points on a pole are now passed over.
- A face on a SURFACE_OF_LINEAR_EXTRUSION (or revolution) of an ellipse whose loops go
  once round the profile got a profile built across the widest gap between its sampled
  points, an eighth of a turn, so its edges ran off the surface. The loops are now walked
  in order: one that turns round the profile takes the whole turn (and gets its seam),
  others cover what they sweep.
- An edge on a closed B-spline curve ending at a vertex a few um off the curve's seam
  was refused as crossing the seam. A vertex within the tolerance of the seam is at it.
- A B-spline surface whose end control lines meet within the file's uncertainty but not
  exactly was not closed, so faces touching its start got pcurves on the wrong side.
  Its end lines are made one (their mean, at most half the gap) and the import says so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* STEP import: close a spline only on clamped ends and within the tolerance with its weights; refuse a short edge across a closed spline's seam; a wrapped arc covers the start of the gap sweep

- closed_within: the end control lines are only the surface's ends where the knots are
  clamped there; a surface on unclamped knots is left as it is. Rational ends are averaged
  only while half the gap plus half the weights' difference times the control net's size
  over its least weight stays within the tolerance (the bound on how far the surface moves).
- open_or_closed: an edge whose two vertices are both within the tolerance of a closed
  spline's seam and which crosses it is refused, not made the whole curve.
- widest_gap: the sweep's reach starts where an arc reaching past a turn ends, so a gap it
  covers is not taken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* solidcore-step: no sized allocations for a face's walks and arcs (panic-site inventory)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 18:00:57 +00:00
..