Make sure proxy items at least get the right net for clearance lines.

Fixes https://gitlab.com/kicad/code/kicad/issues/5980
This commit is contained in:
Jeff Young 2020-10-30 21:08:38 +00:00
parent de013ee60a
commit c17ceb5875
3 changed files with 6 additions and 5 deletions

View File

@ -78,7 +78,6 @@ public:
bool aNeedMTV, VECTOR2I* aMTV ) const override;
virtual int Clearance( const PNS::ITEM* aA, const PNS::ITEM* aB ) override;
//virtual int Clearance( int aNetCode ) const override;
virtual int DpCoupledNet( int aNet ) override;
virtual int DpNetPolarity( int aNet ) override;
virtual bool DpNetPair( const PNS::ITEM* aItem, int& aNetP, int& aNetN ) override;
@ -241,14 +240,17 @@ bool PNS_PCBNEW_RULE_RESOLVER::QueryConstraint( PNS::CONSTRAINT_TYPE aType,
{
case PNS::ITEM::ARC_T:
dummyArc.SetLayer( (PCB_LAYER_ID) aLayer );
dummyArc.SetNetCode( aItemA->Net() );
parentA = &dummyArc;
break;
case PNS::ITEM::VIA_T:
dummyVia.SetLayer( (PCB_LAYER_ID) aLayer );
dummyVia.SetNetCode( aItemA->Net() );
parentA = &dummyVia;
break;
default:
dummyTrack.SetLayer( (PCB_LAYER_ID) aLayer );
dummyTrack.SetNetCode( aItemA->Net() );
parentA = &dummyTrack;
break;
}
@ -287,7 +289,7 @@ int PNS_PCBNEW_RULE_RESOLVER::Clearance( const PNS::ITEM* aA, const PNS::ITEM* a
bool ok = false;
int rv = 0;
if( IsDiffPair( aA, aB ) )
if( aB && IsDiffPair( aA, aB ) )
{
// for diff pairs, we use the gap value for shoving/dragging
if( QueryConstraint( PNS::CONSTRAINT_TYPE::CT_DIFF_PAIR_GAP, aA, aB, aA->Layer(),

View File

@ -84,7 +84,6 @@ public:
bool aNeedMTV, VECTOR2I* aMTV ) const = 0;
virtual int Clearance( const ITEM* aA, const ITEM* aB ) = 0;
//virtual int Clearance( int aNetCode ) const = 0;
virtual int DpCoupledNet( int aNet ) = 0;
virtual int DpNetPolarity( int aNet ) = 0;
virtual bool DpNetPair( const ITEM* aItem, int& aNetP, int& aNetN ) = 0;

View File

@ -330,7 +330,7 @@ void ROUTER::updateView( NODE* aNode, ITEM_SET& aCurrent, bool aDragging )
for( auto item : added )
{
int clearance = 0; //GetRuleResolver()->Clearance( item->Net() );
int clearance = GetRuleResolver()->Clearance( item, nullptr );
m_iface->DisplayItem( item, -1, clearance, aDragging );
}
@ -364,7 +364,7 @@ void ROUTER::movePlacing( const VECTOR2I& aP, ITEM* aEndItem )
continue;
const LINE* l = static_cast<const LINE*>( item );
int clearance = 0; //GetRuleResolver()->Clearance( item->Net() );
int clearance = GetRuleResolver()->Clearance( item, nullptr );
m_iface->DisplayItem( l, -1, clearance );