forked from 1b-agent/opencadstudio-upstream
Two follow-ups from the boundary-arc convention audit: - ELLIPSE is a WCS entity in DXF (codes 10/11 are world coordinates, unlike ARC/CIRCLE). The renderer ran center and major_axis through the arbitrary-axis OCS, which misplaced any ellipse whose normal isn't Z-up — e.g. the (0,0,-1) result of a mirrored-block explode. Read them as WCS; pairs with acadrust 569bd4d, which stores WCS on its explode paths. Z-up ellipses are unaffected (the conversion was an identity). - The MIRROR command's hand-rolled hatch closure swapped boundary-arc angles itself — only valid for ccw arcs and ignorant of the stored mirrored-angle / wrap-encoded-sweep conventions. It now builds a reflection Transform (new reflection_about_xy_line helper) and delegates to acadrust's transform_hatch, the single source of truth for those conventions. Covered by a Line→Arc→Line continuity + sweep regression test. Note: full effect of the ellipse change lands once the acadrust pin is bumped to 569bd4d; until then only the (previously broken) non-Z-up corner differs. Co-Authored-By: Claude Opus 4.8 <[email protected]>