diff --git a/src/entities/lwpolyline.rs b/src/entities/lwpolyline.rs index 714ef2356..c9cc0d386 100644 --- a/src/entities/lwpolyline.rs +++ b/src/entities/lwpolyline.rs @@ -421,6 +421,9 @@ fn apply_transform(pline: &mut LwPolyline, t: &EntityTransform) { crate::scene::transform::apply_standard_entity_transform(pline, t, |entity, p1, p2| { for v in &mut entity.vertices { crate::scene::transform::reflect_xy_point(&mut v.location.x, &mut v.location.y, p1, p2); + // Bulge encodes which side the arc bows to; a reflection + // reverses it or every curved segment flips to the wrong side. + v.bulge = -v.bulge; } }); } diff --git a/src/entities/polyline.rs b/src/entities/polyline.rs index ea222386d..4115ca6f3 100644 --- a/src/entities/polyline.rs +++ b/src/entities/polyline.rs @@ -475,6 +475,9 @@ impl Transformable for Polyline2D { p1, p2, ); + // Bulge encodes which side the arc bows to; a reflection + // reverses it or every curved segment flips to the wrong side. + v.bulge = -v.bulge; } }); }