diff --git a/pcbnew/netinfo.h b/pcbnew/netinfo.h index 045804cd6e..cd27bb31ad 100644 --- a/pcbnew/netinfo.h +++ b/pcbnew/netinfo.h @@ -164,6 +164,7 @@ public: */ void Clear(); + void SetParent( BOARD* aParent ) { m_parent = aParent; } BOARD* GetParent() const // Replace EDA_ITEM::GetParent() with a more useful return-type { return m_parent; diff --git a/pcbnew/netinfo_item.cpp b/pcbnew/netinfo_item.cpp index 1e76124370..811cc6c898 100644 --- a/pcbnew/netinfo_item.cpp +++ b/pcbnew/netinfo_item.cpp @@ -64,6 +64,7 @@ NETINFO_ITEM::~NETINFO_ITEM() void NETINFO_ITEM::Clear() { + wxCHECK( m_parent, /* void */ ); m_netClass = m_parent->GetDesignSettings().m_NetSettings->m_DefaultNetClass; } @@ -160,4 +161,4 @@ const BOX2I NETINFO_ITEM::GetBoundingBox() const } return bbox; -} \ No newline at end of file +} diff --git a/pcbnew/router/pns_kicad_iface.cpp b/pcbnew/router/pns_kicad_iface.cpp index 39c26e1930..ea7cf21cb9 100644 --- a/pcbnew/router/pns_kicad_iface.cpp +++ b/pcbnew/router/pns_kicad_iface.cpp @@ -1878,6 +1878,7 @@ void PNS_KICAD_IFACE_BASE::AddItem( PNS::ITEM* aItem ) BOARD_CONNECTED_ITEM* PNS_KICAD_IFACE::createBoardItem( PNS::ITEM* aItem ) { BOARD_CONNECTED_ITEM* newBI = nullptr; + auto net = static_cast( aItem->Net() ); switch( aItem->Kind() ) { @@ -1887,7 +1888,7 @@ BOARD_CONNECTED_ITEM* PNS_KICAD_IFACE::createBoardItem( PNS::ITEM* aItem ) PCB_ARC* new_arc = new PCB_ARC( m_board, static_cast( arc->Shape() ) ); new_arc->SetWidth( arc->Width() ); new_arc->SetLayer( ToLAYER_ID( arc->Layers().Start() ) ); - new_arc->SetNet( static_cast( arc->Net() ) ); + new_arc->SetNet( net ); newBI = new_arc; break; } @@ -1901,7 +1902,7 @@ BOARD_CONNECTED_ITEM* PNS_KICAD_IFACE::createBoardItem( PNS::ITEM* aItem ) track->SetEnd( VECTOR2I( s.B.x, s.B.y ) ); track->SetWidth( seg->Width() ); track->SetLayer( ToLAYER_ID( seg->Layers().Start() ) ); - track->SetNet( static_cast( seg->Net() ) ); + track->SetNet( net ); newBI = track; break; } @@ -1913,7 +1914,7 @@ BOARD_CONNECTED_ITEM* PNS_KICAD_IFACE::createBoardItem( PNS::ITEM* aItem ) via_board->SetPosition( VECTOR2I( via->Pos().x, via->Pos().y ) ); via_board->SetWidth( via->Diameter() ); via_board->SetDrill( via->Drill() ); - via_board->SetNet( static_cast( via->Net() ) ); + via_board->SetNet( net ); via_board->SetViaType( via->ViaType() ); // MUST be before SetLayerPair() via_board->SetIsFree( via->IsFree() ); via_board->SetLayerPair( ToLAYER_ID( via->Layers().Start() ), @@ -1934,6 +1935,13 @@ BOARD_CONNECTED_ITEM* PNS_KICAD_IFACE::createBoardItem( PNS::ITEM* aItem ) default: break; } + if( net->GetNetCode() <= 0 ) + { + NETINFO_ITEM* newNetInfo = newBI->GetNet(); + newNetInfo->SetParent( m_board ); + newNetInfo->SetNetClass( m_board->GetDesignSettings().m_NetSettings->m_DefaultNetClass ); + } + return newBI; }