mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-08 13:01:52 +00:00
eee9cabf08
The surface.surface_p2 runner gets a revolution record constructor: each side builds a canonical torus or cone, writes it to an ASCII database record, clears the planar generator flag in the record when asked and reads it back with SmSurface::ReadFromDB. The shim writes with fixed precision 16, the format SmDatabaseIOFile::OpenFileForWrite sets for ASCII files (a caller's stream keeps its 6-digit default). 768 STEPInversion cases run through SmSurface* on tori, cones and an apex cone: interior, seam, pole and guessed points, points off the surface and far away, over the STEP domain and a sub-domain. The sub-domain cases exposed a cone bug: Surface::step_inversion passed the caller's domain to the cone, but SmCone::STEPInversion ignores crAnalDomain and inverts over its own m_vAnalUVDomain. Only the non-planar branch reads the domain, so a point outside the caller's sub-domain failed in Rust and succeeded in C++. The cone now always uses its own STEP domain. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SdcgEtgaA54W2nr8dK1EYp