forked from 1b-agent/opencadstudio-upstream
Introduce one bridge between WCS (how geometry and the file are stored) and the active UCS (the coordinate system the user works in), so every UCS-aware system routes through it instead of re-deriving axis math. - UcsXform (app/helpers.rs): the converter — to_wcs/to_ucs (points), vec_to_wcs/vec_to_ucs (directions), axes(), is_identity(). Orthonormal axes, so the inverse is the transpose. The old ucs_to_wcs / ucs_rotate_vec free fns now delegate to it (one implementation). - DocumentTab::ucs_xform() builds it from the tab's active_ucs (None = WCS). - DocumentTab::adopt_active_ucs_from_header() loads the document's saved current UCS (header model-space UCS) into active_ucs on open, so the file's coordinate system is live immediately; called from both load paths. - Status-bar coordinate readout reports the cursor in the active UCS. - UCS icon tripod projects the active UCS axes, so it rotates to the UCS instead of always showing world X/Y/Z. First slice of routing the app's coordinate systems through the converter; input/picking, grid, ViewCube, and the remaining readouts follow. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>