From 4dbe9775ebb5d2bb4d203f6aca978a31a95ed415 Mon Sep 17 00:00:00 2001 From: gianlucafiore Date: Fri, 7 Aug 2026 00:16:48 -0300 Subject: [PATCH] Fix text rotation transforms --- src/entities/mtext.rs | 5 +++++ src/entities/text.rs | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/entities/mtext.rs b/src/entities/mtext.rs index 74b2dfcbb..82e9ab0d7 100644 --- a/src/entities/mtext.rs +++ b/src/entities/mtext.rs @@ -554,6 +554,11 @@ fn apply_transform(t: &mut MText, tr: &EntityTransform) { let line_angle = dy.atan2(dx); entity.rotation = 2.0 * line_angle - entity.rotation; }); + // Keep MTEXT's explicit rotation in sync with ROTATE / ALIGN. + if let EntityTransform::Rotate { angle_rad, .. } = tr { + t.rotation = + (t.rotation + *angle_rad).rem_euclid(std::f64::consts::TAU); + } } impl TruckConvertible for MText { diff --git a/src/entities/text.rs b/src/entities/text.rs index 7b47673ea..087ba9660 100644 --- a/src/entities/text.rs +++ b/src/entities/text.rs @@ -484,6 +484,12 @@ fn apply_transform(t: &mut Text, tr: &EntityTransform) { entity.rotation = 2.0 * line_angle - entity.rotation; entity.oblique_angle = -entity.oblique_angle; }); + // The generic entity transform moves the TEXT geometry, but acadrust + // does not update the DXF rotation field used by our text renderer. + if let EntityTransform::Rotate { angle_rad, .. } = tr { + t.rotation = + (t.rotation + *angle_rad).rem_euclid(std::f64::consts::TAU); + } } impl TruckConvertible for Text {