mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-08 13:01:52 +00:00
ec9e30a9bd
Conflicts resolved in favour of main where main superseded this branch's code, combined where both added; main's new kernel argument threaded through the offset point solves, the fillet solver's LocalPointSolve and copy_and_add_analytics callers; OffsetSurface arms added to main's new SurfaceKind matches (evaluation copy, drop curve, CrvOnSurf dispatch gap, loop UV gap test). With surface_point_solve_p3 landed, the 213 cases that deferred on LocalPointSolve_1 now run, and 5 disagreed: Rust found a pole solution C++ rejects. Cause: upstream's owning offset does m_pSurface->SetOwner(this), so LocalPointSolve_1 on the base takes GetZoneTol3d(GetOwner()) as its loose tolerance instead of 0.01. Ported that ownership: an owning offset gives its base the BASE_OWNER surface owner wherever upstream calls SetOwner(this) (constructor, Copy, ReadFromDB), and hands down the face its own owner chain reaches, so Surface::face of a base follows the chain as GetFace does. This replaces the face_owned flag the box code passed down (review item 2 keeps its Unported(topology.face_p2) result). The approximation-tolerance and surface-cache zone checks that asked "any owner" now ask GetFace(), as SmTol::GetZoneTol3d(const SmObject*) does. The six cases (three generated, base owned and shared) are fixtures. surface.offset_surface: 3072 cases, 3072 passed, 0 failed, 0 deferred. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>