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:
parent
de013ee60a
commit
c17ceb5875
|
@ -78,7 +78,6 @@ public:
|
||||||
bool aNeedMTV, VECTOR2I* aMTV ) const override;
|
bool aNeedMTV, VECTOR2I* aMTV ) const override;
|
||||||
|
|
||||||
virtual int Clearance( const PNS::ITEM* aA, const PNS::ITEM* aB ) 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 DpCoupledNet( int aNet ) override;
|
||||||
virtual int DpNetPolarity( int aNet ) override;
|
virtual int DpNetPolarity( int aNet ) override;
|
||||||
virtual bool DpNetPair( const PNS::ITEM* aItem, int& aNetP, int& aNetN ) 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:
|
case PNS::ITEM::ARC_T:
|
||||||
dummyArc.SetLayer( (PCB_LAYER_ID) aLayer );
|
dummyArc.SetLayer( (PCB_LAYER_ID) aLayer );
|
||||||
|
dummyArc.SetNetCode( aItemA->Net() );
|
||||||
parentA = &dummyArc;
|
parentA = &dummyArc;
|
||||||
break;
|
break;
|
||||||
case PNS::ITEM::VIA_T:
|
case PNS::ITEM::VIA_T:
|
||||||
dummyVia.SetLayer( (PCB_LAYER_ID) aLayer );
|
dummyVia.SetLayer( (PCB_LAYER_ID) aLayer );
|
||||||
|
dummyVia.SetNetCode( aItemA->Net() );
|
||||||
parentA = &dummyVia;
|
parentA = &dummyVia;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dummyTrack.SetLayer( (PCB_LAYER_ID) aLayer );
|
dummyTrack.SetLayer( (PCB_LAYER_ID) aLayer );
|
||||||
|
dummyTrack.SetNetCode( aItemA->Net() );
|
||||||
parentA = &dummyTrack;
|
parentA = &dummyTrack;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -287,7 +289,7 @@ int PNS_PCBNEW_RULE_RESOLVER::Clearance( const PNS::ITEM* aA, const PNS::ITEM* a
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
|
|
||||||
if( IsDiffPair( aA, aB ) )
|
if( aB && IsDiffPair( aA, aB ) )
|
||||||
{
|
{
|
||||||
// for diff pairs, we use the gap value for shoving/dragging
|
// for diff pairs, we use the gap value for shoving/dragging
|
||||||
if( QueryConstraint( PNS::CONSTRAINT_TYPE::CT_DIFF_PAIR_GAP, aA, aB, aA->Layer(),
|
if( QueryConstraint( PNS::CONSTRAINT_TYPE::CT_DIFF_PAIR_GAP, aA, aB, aA->Layer(),
|
||||||
|
|
|
@ -84,7 +84,6 @@ public:
|
||||||
bool aNeedMTV, VECTOR2I* aMTV ) const = 0;
|
bool aNeedMTV, VECTOR2I* aMTV ) const = 0;
|
||||||
|
|
||||||
virtual int Clearance( const ITEM* aA, const ITEM* aB ) = 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 DpCoupledNet( int aNet ) = 0;
|
||||||
virtual int DpNetPolarity( int aNet ) = 0;
|
virtual int DpNetPolarity( int aNet ) = 0;
|
||||||
virtual bool DpNetPair( const ITEM* aItem, int& aNetP, int& aNetN ) = 0;
|
virtual bool DpNetPair( const ITEM* aItem, int& aNetP, int& aNetN ) = 0;
|
||||||
|
|
|
@ -330,7 +330,7 @@ void ROUTER::updateView( NODE* aNode, ITEM_SET& aCurrent, bool aDragging )
|
||||||
|
|
||||||
for( auto item : added )
|
for( auto item : added )
|
||||||
{
|
{
|
||||||
int clearance = 0; //GetRuleResolver()->Clearance( item->Net() );
|
int clearance = GetRuleResolver()->Clearance( item, nullptr );
|
||||||
m_iface->DisplayItem( item, -1, clearance, aDragging );
|
m_iface->DisplayItem( item, -1, clearance, aDragging );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,7 +364,7 @@ void ROUTER::movePlacing( const VECTOR2I& aP, ITEM* aEndItem )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const LINE* l = static_cast<const LINE*>( item );
|
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 );
|
m_iface->DisplayItem( l, -1, clearance );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue