From d425a1d92172562bd5332d43fcf9ff4c5b168cdd Mon Sep 17 00:00:00 2001 From: ramox81 <184937705+ramox81@users.noreply.github.com> Date: Wed, 7 Oct 2026 11:04:04 +0300 Subject: [PATCH] Automation select: only entities of the current space Co-Authored-By: Claude Opus 5.5 --- src/app/automation.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/app/automation.rs b/src/app/automation.rs index 876fba186..d6d15fefc 100644 --- a/src/app/automation.rs +++ b/src/app/automation.rs @@ -814,10 +814,21 @@ impl OpenCADStudio { let type_filter = req["type"].as_str(); let layer_filter = req["layer"].as_str(); if type_filter.is_some() || layer_filter.is_some() { - let handles: Vec = self.tabs[i] - .scene + // Only what the current space draws: an entity inside a + // block definition is not selectable on its own. + let scene = &self.tabs[i].scene; + let space = scene.current_layout_block_handle_pub(); + let listed: std::collections::HashSet = scene + .document + .block_records + .iter() + .find(|record| record.handle == space) + .map(|record| record.entity_handles.iter().copied().collect()) + .unwrap_or_default(); + let handles: Vec = scene .document .entities() + .filter(|e| e.common().owner_handle == space || listed.contains(&e.common().handle)) .filter(|e| type_filter.is_none_or(|t| entity_type_matches(e, t))) .filter(|e| layer_filter.is_none_or(|l| e.common().layer == l)) .map(|e| e.common().handle)