diff --git a/src/autorouter/selection.rs b/src/autorouter/selection.rs index 7fe29c3..c6aabc6 100644 --- a/src/autorouter/selection.rs +++ b/src/autorouter/selection.rs @@ -42,6 +42,20 @@ impl Selection { this } + pub fn new_select_layer(board: &Board, layer: usize) -> Self { + let mut this = Self::new(); + + for node in board.layout().drawing().layer_primitive_nodes(layer) { + if let Some(selector) = this.node_selector(board, GenericNode::Primitive(node)) { + if !this.contains_node(board, GenericNode::Primitive(node)) { + this.select(board, selector); + } + } + } + + this + } + pub fn toggle_at_node(&mut self, board: &Board, node: NodeIndex) { let Some(selector) = self.node_selector(board, node) else { return; diff --git a/src/bin/topola/main.rs b/src/bin/topola/main.rs index 52398d2..f72d4e1 100644 --- a/src/bin/topola/main.rs +++ b/src/bin/topola/main.rs @@ -35,7 +35,7 @@ fn main() -> Result<(), std::io::Error> { serde_json::from_reader(commands_bufread)? } else { let mut history = History::new(); - history.do_(Command::Autoroute(Selection::new_select_all(&board))); + history.do_(Command::Autoroute(Selection::new_select_layer(&board, 0))); history };