diff --git a/src/app/commands/styleprops.rs b/src/app/commands/styleprops.rs index 53895a4a2..a26becf59 100644 --- a/src/app/commands/styleprops.rs +++ b/src/app/commands/styleprops.rs @@ -1887,6 +1887,8 @@ impl OpenCADStudio { if v > 0.0 { self.push_undo_snapshot(i, "LTSCALE"); self.tabs[i].scene.document.header.linetype_scale = v; + // LTSCALE affects the cached linetype geometry of the whole drawing. + self.tabs[i].scene.bump_geometry(); self.tabs[i].dirty = true; self.command_line .push_output(crate::tf!("LTSCALE set to {v:.4}").as_ref()); diff --git a/src/scene/convert/tessellate.rs b/src/scene/convert/tessellate.rs index ca198b3eb..61785dbc7 100644 --- a/src/scene/convert/tessellate.rs +++ b/src/scene/convert/tessellate.rs @@ -1189,7 +1189,14 @@ pub fn tessellate( } else { color }; - + // Circles use the Lines path for large-coordinate precision, but they + // must still preserve the entity's resolved linetype pattern. + let (edge_pattern_length, edge_pattern) = + if matches!(entity, EntityType::Circle(_)) { + (pattern_length, pattern) + } else { + (0.0, [0.0; 8]) + }; if !local_pts.is_empty() { let (snap, keys, tangents) = if is_first { is_first = false; @@ -1217,8 +1224,8 @@ pub fn tessellate( points_low: local_pts_low, color: edge_color, selected, - pattern_length: 0.0, - pattern: [0.0; 8], + pattern_length: edge_pattern_length, + pattern: edge_pattern, line_weight_px, snap_pts: snap, tangent_geoms: tangents,