From bf590d7d26728d0e6cc3c85bbf4565daed87e5eb Mon Sep 17 00:00:00 2001 From: ramox81 <184937705+ramox81@users.noreply.github.com> Date: Fri, 11 Sep 2026 09:32:37 +0300 Subject: [PATCH] Expose Set to ByLayer in Modify with interactive selection --- assets/icons/modify_setbylayer.svg | 1 + src/app/commands/styleprops.rs | 7 +++++++ src/ui/ribbon/modify_tools/01_setbylayer.rs | 6 ++++++ 3 files changed, 14 insertions(+) create mode 100644 assets/icons/modify_setbylayer.svg create mode 100644 src/ui/ribbon/modify_tools/01_setbylayer.rs diff --git a/assets/icons/modify_setbylayer.svg b/assets/icons/modify_setbylayer.svg new file mode 100644 index 000000000..9ce5827de --- /dev/null +++ b/assets/icons/modify_setbylayer.svg @@ -0,0 +1 @@ + diff --git a/src/app/commands/styleprops.rs b/src/app/commands/styleprops.rs index b99da19b4..372464252 100644 --- a/src/app/commands/styleprops.rs +++ b/src/app/commands/styleprops.rs @@ -646,6 +646,13 @@ impl OpenCADStudio { // Resets the selected entities' direct property overrides back to // ByLayer so they follow their layer again. "SETBYLAYER" => { + if self.tabs[i].scene.selected.is_empty() { + use crate::modules::draw::select::SelectObjectsCommand; + let selection = SelectObjectsCommand::new("SETBYLAYER"); + self.command_line.push_info(&selection.prompt()); + self.tabs[i].active_cmd = Some(Box::new(selection)); + return Some(self.finish_dispatch(cmd)); + } let handles: Vec<_> = self.tabs[i] .scene .selected_entities() diff --git a/src/ui/ribbon/modify_tools/01_setbylayer.rs b/src/ui/ribbon/modify_tools/01_setbylayer.rs new file mode 100644 index 000000000..953ee34ed --- /dev/null +++ b/src/ui/ribbon/modify_tools/01_setbylayer.rs @@ -0,0 +1,6 @@ +Tool { + command: "SETBYLAYER", + label: "Set to ByLayer", + icon: include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/icons/modify_setbylayer.svg")), + options: &[], +}