Handle proxy items for the second PNS_ITEM as well.
Fixes https://gitlab.com/kicad/code/kicad/issues/6193
This commit is contained in:
parent
f720b8aa2a
commit
fab87fb97b
|
@ -232,8 +232,8 @@ bool PNS_PCBNEW_RULE_RESOLVER::QueryConstraint( PNS::CONSTRAINT_TYPE aType,
|
||||||
return false; // should not happen
|
return false; // should not happen
|
||||||
}
|
}
|
||||||
|
|
||||||
const BOARD_ITEM* parentA = aItemA ? aItemA->Parent() : nullptr;
|
BOARD_ITEM* parentA = aItemA ? aItemA->Parent() : nullptr;
|
||||||
const BOARD_ITEM* parentB = aItemB ? aItemB->Parent() : nullptr;
|
BOARD_ITEM* parentB = aItemB ? aItemB->Parent() : nullptr;
|
||||||
DRC_CONSTRAINT hostConstraint;
|
DRC_CONSTRAINT hostConstraint;
|
||||||
|
|
||||||
// A track being routed may not have a BOARD_ITEM associated yet.
|
// A track being routed may not have a BOARD_ITEM associated yet.
|
||||||
|
@ -241,21 +241,35 @@ bool PNS_PCBNEW_RULE_RESOLVER::QueryConstraint( PNS::CONSTRAINT_TYPE aType,
|
||||||
{
|
{
|
||||||
switch( aItemA->Kind() )
|
switch( aItemA->Kind() )
|
||||||
{
|
{
|
||||||
case PNS::ITEM::ARC_T:
|
case PNS::ITEM::ARC_T: parentA = &m_dummyArc; break;
|
||||||
m_dummyArc.SetLayer( (PCB_LAYER_ID) aLayer );
|
case PNS::ITEM::VIA_T: parentA = &m_dummyVia; break;
|
||||||
m_dummyArc.SetNetCode( aItemA->Net() );
|
case PNS::ITEM::SEGMENT_T: parentA = &m_dummyTrack; break;
|
||||||
parentA = &m_dummyArc;
|
case PNS::ITEM::LINE_T: parentA = &m_dummyTrack; break;
|
||||||
break;
|
default: break;
|
||||||
case PNS::ITEM::VIA_T:
|
}
|
||||||
m_dummyVia.SetLayer( (PCB_LAYER_ID) aLayer );
|
|
||||||
m_dummyVia.SetNetCode( aItemA->Net() );
|
if( parentA )
|
||||||
parentA = &m_dummyVia;
|
{
|
||||||
break;
|
parentA->SetLayer( (PCB_LAYER_ID) aLayer );
|
||||||
default:
|
static_cast<BOARD_CONNECTED_ITEM*>( parentA )->SetNetCode( aItemA->Net() );
|
||||||
m_dummyTrack.SetLayer( (PCB_LAYER_ID) aLayer );
|
}
|
||||||
m_dummyTrack.SetNetCode( aItemA->Net() );
|
}
|
||||||
parentA = &m_dummyTrack;
|
|
||||||
break;
|
if( aItemB && !parentB )
|
||||||
|
{
|
||||||
|
switch( aItemB->Kind() )
|
||||||
|
{
|
||||||
|
case PNS::ITEM::ARC_T: parentB = &m_dummyArc; break;
|
||||||
|
case PNS::ITEM::VIA_T: parentB = &m_dummyVia; break;
|
||||||
|
case PNS::ITEM::SEGMENT_T: parentB = &m_dummyTrack; break;
|
||||||
|
case PNS::ITEM::LINE_T: parentB = &m_dummyTrack; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( parentB )
|
||||||
|
{
|
||||||
|
parentB->SetLayer( (PCB_LAYER_ID) aLayer );
|
||||||
|
static_cast<BOARD_CONNECTED_ITEM*>( parentB )->SetNetCode( aItemB->Net() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue