Don't return holes that have a parent pad or via.
(While we don't currently have holes without a parent pad or via, you
could imagine using HOLEs in the future to represent a hole in a first-class
board outline, so better not to build this assumption in.)
(cherry picked from commit b18bf09208
)
This commit is contained in:
parent
f64ef39687
commit
2b6d2fc117
|
@ -63,7 +63,13 @@ public:
|
||||||
|
|
||||||
BOARD_ITEM* Parent() const override
|
BOARD_ITEM* Parent() const override
|
||||||
{
|
{
|
||||||
return m_parentPadVia ? m_parentPadVia->Parent() : nullptr;
|
if( m_parent )
|
||||||
|
return m_parent;
|
||||||
|
|
||||||
|
if( m_parentPadVia )
|
||||||
|
return m_parentPadVia->Parent();
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetCenter( const VECTOR2I& aCenter );
|
void SetCenter( const VECTOR2I& aCenter );
|
||||||
|
|
|
@ -129,8 +129,6 @@ public:
|
||||||
void ClearCaches() override;
|
void ClearCaches() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int holeRadius( const PNS::ITEM* aItem ) const;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks for netnamed differential pairs.
|
* Checks for netnamed differential pairs.
|
||||||
* This accepts nets named suffixed by 'P', 'N', '+', '-', as well as additional
|
* This accepts nets named suffixed by 'P', 'N', '+', '-', as well as additional
|
||||||
|
@ -174,27 +172,6 @@ PNS_PCBNEW_RULE_RESOLVER::~PNS_PCBNEW_RULE_RESOLVER()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int PNS_PCBNEW_RULE_RESOLVER::holeRadius( const PNS::ITEM* aItem ) const
|
|
||||||
{
|
|
||||||
if( aItem->Kind() == PNS::ITEM::SOLID_T )
|
|
||||||
{
|
|
||||||
const PAD* pad = dynamic_cast<const PAD*>( aItem->Parent() );
|
|
||||||
|
|
||||||
if( pad && pad->GetDrillShape() == PAD_DRILL_SHAPE_CIRCLE )
|
|
||||||
return pad->GetDrillSize().x / 2;
|
|
||||||
}
|
|
||||||
else if( aItem->Kind() == PNS::ITEM::VIA_T )
|
|
||||||
{
|
|
||||||
const PCB_VIA* via = dynamic_cast<const PCB_VIA*>( aItem->Parent() );
|
|
||||||
|
|
||||||
if( via )
|
|
||||||
return via->GetDrillValue() / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool PNS_PCBNEW_RULE_RESOLVER::IsDiffPair( const PNS::ITEM* aA, const PNS::ITEM* aB )
|
bool PNS_PCBNEW_RULE_RESOLVER::IsDiffPair( const PNS::ITEM* aA, const PNS::ITEM* aB )
|
||||||
{
|
{
|
||||||
int net_p, net_n;
|
int net_p, net_n;
|
||||||
|
|
|
@ -1573,13 +1573,15 @@ ITEM *NODE::FindItemByParent( const BOARD_ITEM* aParent )
|
||||||
if( aParent->IsConnected() )
|
if( aParent->IsConnected() )
|
||||||
{
|
{
|
||||||
const BOARD_CONNECTED_ITEM* cItem = static_cast<const BOARD_CONNECTED_ITEM*>( aParent );
|
const BOARD_CONNECTED_ITEM* cItem = static_cast<const BOARD_CONNECTED_ITEM*>( aParent );
|
||||||
|
|
||||||
INDEX::NET_ITEMS_LIST* l_cur = m_index->GetItemsForNet( cItem->GetNetCode() );
|
INDEX::NET_ITEMS_LIST* l_cur = m_index->GetItemsForNet( cItem->GetNetCode() );
|
||||||
|
|
||||||
if( l_cur )
|
if( l_cur )
|
||||||
{
|
{
|
||||||
for( ITEM* item : *l_cur )
|
for( ITEM* item : *l_cur )
|
||||||
{
|
{
|
||||||
|
if( item->OfKind( PNS::ITEM::HOLE_T ) && static_cast<HOLE*>( item )->ParentPadVia() )
|
||||||
|
continue;
|
||||||
|
|
||||||
if( item->Parent() == aParent )
|
if( item->Parent() == aParent )
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue