Complete continued dimension workflow

This commit is contained in:
ramox81 committed 2026-08-27 15:22:12 +03:00
1 parent c6f6c00220
commit d8e998b5e8
14 files changed
+653 -177

No files matched your search

+10 -2
View File
@@ -1288,6 +1288,7 @@ impl OpenCADStudio {
mut entity,
association,
preserve_base_style,
keep_active,
} => {
let label = self.history_label_from_active_cmd(i, "DIMENSION");
let association_mode = self.tabs[i]
@@ -1414,9 +1415,16 @@ impl OpenCADStudio {
};
self.tabs[i].dirty = true;
self.tabs[i].scene.clear_preview_wire();
self.tabs[i].active_cmd = None;
self.tabs[i].snap_result = None;
self.restore_pre_cmd_tangent();
if keep_active {
let prompt = self.tabs[i].active_cmd.as_ref().map(|command| command.prompt());
if let Some(prompt) = prompt {
self.command_line.push_info(&prompt);
}
} else {
self.tabs[i].active_cmd = None;
self.restore_pre_cmd_tangent();
}
if let Some(pd) = pending {
self.commit_undo_delta(i, pd);
}
+9 -7
View File
@@ -646,13 +646,15 @@ impl OpenCADStudio {
"DIMCONTINUE" => {
use crate::modules::annotate::dim_continue::DimContinueCommand;
let cmd = if let Some((p1, p2, dp, rot, trot)) =
find_last_linear_dim(&self.tabs[i].scene)
{
DimContinueCommand::from_base(p1, p2, dp, rot, trot)
} else {
DimContinueCommand::new()
};
let scene = &self.tabs[i].scene;
let recent = scene
.last_created_dimension
.and_then(|handle| scene.document.get_entity(handle))
.cloned();
let cmd = DimContinueCommand::new(
recent,
self.dimension_continue_mode == 1,
);
self.command_line.push_info(&cmd.prompt());
self.tabs[i].active_cmd = Some(Box::new(cmd));
}
+11 -2
View File
@@ -2470,7 +2470,16 @@ impl OpenCADStudio {
preserve_dimension_layer_and_style: bool,
) -> Option<Handle> {
let i = self.active_tab;
let is_dimension = matches!(&entity, acadrust::EntityType::Dimension(_));
let tracks_continuation = matches!(
&entity,
acadrust::EntityType::Dimension(
acadrust::entities::Dimension::Linear(_)
| acadrust::entities::Dimension::Aligned(_)
| acadrust::entities::Dimension::Angular2Ln(_)
| acadrust::entities::Dimension::Angular3Pt(_)
| acadrust::entities::Dimension::Ordinate(_)
)
);
let inherited_dimension = if preserve_dimension_layer_and_style {
match &entity {
acadrust::EntityType::Dimension(dimension) => Some((
@@ -2748,7 +2757,7 @@ impl OpenCADStudio {
self.tabs[i].last_draw_anchor = Some(handle);
}
}
if is_dimension {
if tracks_continuation {
self.tabs[i].scene.last_created_dimension = new_handle;
}
new_handle