board: remove `.remove_band()` method

This commit is contained in:
Mikolaj Wielgus 2024-06-28 19:35:25 +02:00
parent 00b997b60e
commit ea991314b2
2 changed files with 36 additions and 42 deletions

View File

@ -3,7 +3,7 @@ use petgraph::graph::EdgeIndex;
use crate::{
autorouter::{Autorouter, AutorouterError, AutorouterStatus},
board::mesadata::MesadataTrait,
router::navmesh::Navmesh,
router::{navmesh::Navmesh, Router},
};
pub struct Autoroute {
@ -54,23 +54,24 @@ impl Autoroute {
(None, None)
};
match autorouter.board.route_band(
std::mem::replace(&mut self.navmesh, new_navmesh).unwrap(),
100.0,
) {
Ok(band) => {
autorouter
.ratsnest
.assign_band_to_ratline(self.cur_ratline.unwrap(), band);
self.cur_ratline = new_ratline;
let navmesh = std::mem::replace(&mut self.navmesh, new_navmesh).unwrap();
let mut router = Router::new(autorouter.board.layout_mut());
if self.navmesh.is_some() {
Ok(AutorouterStatus::Running)
} else {
Ok(AutorouterStatus::Finished)
}
}
Err(err) => Err(AutorouterError::Router(err)),
let band = router.route(navmesh.source(), navmesh.target(), 100.0)?;
autorouter
.ratsnest
.assign_band_to_ratline(self.cur_ratline.unwrap(), band);
self.cur_ratline = new_ratline;
autorouter
.board
.try_set_band_between_nodes(navmesh.source(), navmesh.target(), band);
if self.navmesh.is_some() {
Ok(AutorouterStatus::Running)
} else {
Ok(AutorouterStatus::Finished)
}
}

View File

@ -115,31 +115,6 @@ impl<M: MesadataTrait> Board<M> {
zone
}
pub fn route_band(
&mut self,
navmesh: Navmesh,
width: f64,
) -> Result<BandFirstSegIndex, RouterError> {
let source_pinname = self
.node_pinname(GenericNode::Primitive(navmesh.source().into()))
.unwrap()
.to_string();
let target_pinname = self
.node_pinname(GenericNode::Primitive(navmesh.target().into()))
.unwrap()
.to_string();
let mut router = Router::new(self.layout_mut());
let result = router.route(navmesh.source(), navmesh.target(), width);
if let Ok(band) = result {
self.pinname_pair_to_band
.insert((source_pinname, target_pinname), band);
}
result
}
pub fn zone_apex(&mut self, zone: GenericIndex<ZoneWeight>) -> FixedDotIndex {
if let Some(apex) = self.layout.zone(zone).maybe_apex() {
apex
@ -162,6 +137,24 @@ impl<M: MesadataTrait> Board<M> {
self.node_to_pinname.get(&node)
}
pub fn try_set_band_between_nodes(
&mut self,
source: FixedDotIndex,
target: FixedDotIndex,
band: BandFirstSegIndex,
) {
let source_pinname = self
.node_pinname(GenericNode::Primitive(source.into()))
.unwrap()
.to_string();
let target_pinname = self
.node_pinname(GenericNode::Primitive(target.into()))
.unwrap()
.to_string();
self.pinname_pair_to_band
.insert((source_pinname, target_pinname), band);
}
pub fn band_between_pins(&self, pinname1: &str, pinname2: &str) -> Option<BandFirstSegIndex> {
if let Some(band) = self
.pinname_pair_to_band