Browse Source

PCB_TUNING_PATTERN: fix another issue due to mix PCB_LAYER_ID layer and PNS layer id

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18867
pcb_db
jean-pierre charras 1 year ago
parent
commit
045c1f347f
  1. 21
      pcbnew/generators/pcb_tuning_pattern.cpp

21
pcbnew/generators/pcb_tuning_pattern.cpp

@ -504,9 +504,9 @@ protected:
bool initBaseLines( PNS::ROUTER* aRouter, int aPNSLayer, BOARD* aBoard );
bool removeToBaseline( PNS::ROUTER* aRouter, int aLayer, SHAPE_LINE_CHAIN& aBaseLine );
bool removeToBaseline( PNS::ROUTER* aRouter, int aPNSLayer, SHAPE_LINE_CHAIN& aBaseLine );
bool resetToBaseline( GENERATOR_TOOL* aTool, int aLayer, SHAPE_LINE_CHAIN& aBaseLine,
bool resetToBaseline( GENERATOR_TOOL* aTool, int aPNSLayer, SHAPE_LINE_CHAIN& aBaseLine,
bool aPrimary );
SHAPE_LINE_CHAIN getOutline() const;
@ -1029,13 +1029,13 @@ bool PCB_TUNING_PATTERN::initBaseLines( PNS::ROUTER* aRouter, int aPNSLayer, BOA
return true;
}
bool PCB_TUNING_PATTERN::removeToBaseline( PNS::ROUTER* aRouter, int aLayer,
bool PCB_TUNING_PATTERN::removeToBaseline( PNS::ROUTER* aRouter, int aPNSLayer,
SHAPE_LINE_CHAIN& aBaseLine )
{
VECTOR2I startSnapPoint, endSnapPoint;
std::optional<PNS::LINE> pnsLine = getPNSLine( aBaseLine.CPoint( 0 ), aBaseLine.CPoint( -1 ),
aRouter, aLayer, startSnapPoint, endSnapPoint );
aRouter, aPNSLayer, startSnapPoint, endSnapPoint );
wxCHECK( pnsLine, false );
@ -1073,7 +1073,7 @@ void PCB_TUNING_PATTERN::Remove( GENERATOR_TOOL* aTool, BOARD* aBoard, BOARD_COM
aTool->Router()->SyncWorld();
PNS::ROUTER* router = aTool->Router();
int layer = GetLayer();
PNS_KICAD_IFACE* iface = aTool->GetInterface();
// Ungroup first so that undo works
if( !GetItems().empty() )
@ -1090,14 +1090,17 @@ void PCB_TUNING_PATTERN::Remove( GENERATOR_TOOL* aTool, BOARD* aBoard, BOARD_COM
aTool->ClearRouterChanges();
// PNS layers and PCB layers have different coding. so convert PCB layer to PNS layer
int pnslayer = iface->GetPNSLayerFromBoardLayer( GetLayer() );
if( baselineValid() )
{
bool success = true;
success &= removeToBaseline( router, layer, *m_baseLine );
success &= removeToBaseline( router, pnslayer, *m_baseLine );
if( m_tuningMode == DIFF_PAIR )
success &= removeToBaseline( router, layer, *m_baseLineCoupled );
success &= removeToBaseline( router, pnslayer, *m_baseLineCoupled );
if( !success )
recoverBaseline( router );
@ -1202,7 +1205,7 @@ bool PCB_TUNING_PATTERN::recoverBaseline( PNS::ROUTER* aRouter )
}
bool PCB_TUNING_PATTERN::resetToBaseline( GENERATOR_TOOL* aTool, int aLayer,
bool PCB_TUNING_PATTERN::resetToBaseline( GENERATOR_TOOL* aTool, int aPNSLayer,
SHAPE_LINE_CHAIN& aBaseLine, bool aPrimary )
{
PNS_KICAD_IFACE* iface = aTool->GetInterface();
@ -1211,7 +1214,7 @@ bool PCB_TUNING_PATTERN::resetToBaseline( GENERATOR_TOOL* aTool, int aLayer,
VECTOR2I startSnapPoint, endSnapPoint;
std::optional<PNS::LINE> pnsLine = getPNSLine( aBaseLine.CPoint( 0 ), aBaseLine.CPoint( -1 ),
router, aLayer, startSnapPoint, endSnapPoint );
router, aPNSLayer, startSnapPoint, endSnapPoint );
if( !pnsLine )
{

Loading…
Cancel
Save