Fix linetype refresh and circle rendering

This commit is contained in:
gianlucafiore 2026-08-06 15:49:34 -03:00 • committed by Hakan Seven
commit 6752df6ea4
2 changed files with 12 additions and 3 deletions

View file

@ -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());

View file

@ -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,