@@ -388,7 +388,11 @@ bool GridGraph::findODBAccessPoints(
388388 auto layer = ap->getLayer ();
389389 const PointT selected_point = PointT (point.getX () / amount_per_x,
390390 point.getY () / amount_per_y);
391- const IntervalT selected_layer = IntervalT (layer->getNumber () - 2 );
391+ const int num_layer
392+ = ((layer->getNumber () - 2 ) > (getNumLayers () - 1 ))
393+ ? getNumLayers () - 1
394+ : layer->getNumber () - 2 ;
395+ const IntervalT selected_layer = IntervalT (num_layer);
392396 const AccessPoint ap_new{.point = selected_point,
393397 .layers = selected_layer};
394398 selected_access_points.emplace (ap_new);
@@ -411,7 +415,11 @@ bool GridGraph::findODBAccessPoints(
411415 const PointT selected_point
412416 = PointT ((point.getX () + x) / amount_per_x,
413417 (point.getY () + y) / amount_per_y);
414- const IntervalT selected_layer = IntervalT (layer->getNumber () - 2 );
418+ const int num_layer
419+ = ((layer->getNumber () - 2 ) > (getNumLayers () - 1 ))
420+ ? getNumLayers () - 1
421+ : layer->getNumber () - 2 ;
422+ const IntervalT selected_layer = IntervalT (num_layer);
415423 const AccessPoint ap_new{.point = selected_point,
416424 .layers = selected_layer};
417425 selected_access_points.emplace (ap_new);
@@ -488,11 +496,6 @@ AccessPointSet GridGraph::selectAccessPoints(const GRNet* net) const
488496 }
489497 }
490498 }
491- // TODO: Removing this part is causing issues, but it shouldnt
492- for (auto & accessPoint : selected_access_points) {
493- IntervalT& fixedLayers = accessPoint.layers ;
494- fixedLayers.SetHigh (std::min (fixedLayers.high () + 0 , getNumLayers () - 1 ));
495- }
496499 return selected_access_points;
497500}
498501
0 commit comments