specctra/design: remove code duplication at padstack lookup

This commit is contained in:
Alain Emilia Anna Zscheile 2024-09-27 16:29:52 +02:00
parent cd12775f46
commit 60d9880ab2
2 changed files with 10 additions and 9 deletions

View File

@ -242,12 +242,10 @@ impl SpecctraDesign {
let pinname = format!("{}-{}", place.name, pin.id);
let net = pin_nets.get(&pinname).unwrap();
let padstack = &self
let padstack = self
.pcb
.library
.padstacks
.iter()
.find(|padstack| padstack.name == pin.name)
.find_padstack_by_name(&pin.name)
.unwrap();
for shape in padstack.shapes.iter() {
@ -319,13 +317,10 @@ impl SpecctraDesign {
.netname_net(&via.net)
.unwrap();
// find the padstack referenced by this via placement
let padstack = &self
let padstack = self
.pcb
.library
.padstacks
.iter()
.find(|padstack| padstack.name == via.name)
.find_padstack_by_name(&via.name)
.unwrap();
let get_layer = |board: &Board<SpecctraMesadata>, name: &str|

View File

@ -169,6 +169,12 @@ pub struct Library {
pub padstacks: Vec<Padstack>,
}
impl Library {
pub fn find_padstack_by_name(&self, name: &str) -> Option<&Padstack> {
self.padstacks.iter().find(|padstack| &padstack.name == name)
}
}
#[derive(ReadDsn, WriteSes, Debug)]
pub struct Image {
#[anon]