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 {