fix(hatch): apply pattern property edits

Closes #476
This commit is contained in:
Hakan Seven committed 2026-07-27 16:44:31 +03:00
1 parent ecb29767d4
commit 759f2316aa
3 files changed
+118 -14

No files matched your search

+28 -1
View File
@@ -1279,7 +1279,34 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task<Message> {
if let Some(acadrust::EntityType::Hatch(dxf)) =
self.tabs[i].scene.document.get_entity_mut(handle)
{
dxf.pattern = hatch_patterns::build_dxf_pattern(entry);
let old_origin = dxf.pattern.lines.first().map(|line| {
(line.base_point.x, line.base_point.y)
});
let mut pattern = hatch_patterns::build_dxf_pattern(entry);
// Stored pattern lines are final world-space
// geometry. Preserve the selected hatch's scale,
// angle and origin when replacing the catalog
// pattern.
crate::entities::hatch::scale_pattern_geometry(
&mut pattern,
dxf.pattern_scale,
);
crate::entities::hatch::rotate_pattern_geometry(
&mut pattern,
dxf.pattern_angle,
);
if let (Some((old_x, old_y)), Some(new_origin)) =
(old_origin, pattern.lines.first())
{
let dx = old_x - new_origin.base_point.x;
let dy = old_y - new_origin.base_point.y;
crate::entities::hatch::translate_pattern_geometry(
&mut pattern,
dx,
dy,
);
}
dxf.pattern = pattern;
dxf.is_solid = matches!(
entry.gpu,
crate::scene::model::hatch_model::HatchPattern::Solid