diff --git a/pcbnew/pcad2kicadpcb_plugin/pcb_module.cpp b/pcbnew/pcad2kicadpcb_plugin/pcb_module.cpp index 9337449e30..44946ecbd3 100644 --- a/pcbnew/pcad2kicadpcb_plugin/pcb_module.cpp +++ b/pcbnew/pcad2kicadpcb_plugin/pcb_module.cpp @@ -601,6 +601,13 @@ void PCB_MODULE::AddToBoard() m_moduleObjects[i]->AddToModule( module ); } + // MODULE POLYGONS + for( i = 0; i < (int) m_moduleObjects.GetCount(); i++ ) + { + if( m_moduleObjects[i]->m_objType == wxT( 'Z' ) ) + m_moduleObjects[i]->AddToModule( module ); + } + // PADS for( i = 0; i < (int) m_moduleObjects.GetCount(); i++ ) { @@ -631,6 +638,7 @@ void PCB_MODULE::Flip() { if( m_moduleObjects[i]->m_objType == wxT( 'L' ) || // lines m_moduleObjects[i]->m_objType == wxT( 'A' ) || // arcs + m_moduleObjects[i]->m_objType == wxT( 'Z' ) || // polygons m_moduleObjects[i]->m_objType == wxT( 'P' ) || // pads m_moduleObjects[i]->m_objType == wxT( 'V' ) ) // vias { diff --git a/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp b/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp index d3fb6bd9b9..e6cd534adc 100644 --- a/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp +++ b/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.cpp @@ -157,6 +157,25 @@ bool PCB_POLYGON::Parse( XNODE* aNode, void PCB_POLYGON::AddToModule( MODULE* aModule ) { + if( IsNonCopperLayer( m_KiCadLayer ) ) + { + EDGE_MODULE* dwg = new EDGE_MODULE( aModule, S_POLYGON ); + aModule->GraphicalItemsList().PushBack( dwg ); + + dwg->SetWidth( 0 ); + dwg->SetLayer( m_KiCadLayer ); + + auto outline = new std::vector; + for( auto point : m_outline ) + outline->push_back( wxPoint( point->x, point->y ) ); + + dwg->SetPolyPoints( *outline ); + dwg->SetStart0( *outline->begin() ); + dwg->SetEnd0( outline->back() ); + dwg->SetDrawCoord(); + + delete( outline ); + } } @@ -208,6 +227,14 @@ void PCB_POLYGON::AddToBoard() } +void PCB_POLYGON::Flip() +{ + PCB_COMPONENT::Flip(); + + m_KiCadLayer = FlipLayer( m_KiCadLayer ); +} + + void PCB_POLYGON::SetPosOffset( int aX_offs, int aY_offs ) { int i, island; diff --git a/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.h b/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.h index fe35832894..a6623edd7f 100644 --- a/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.h +++ b/pcbnew/pcad2kicadpcb_plugin/pcb_polygon.h @@ -56,6 +56,7 @@ public: wxString aActualConversion ); virtual void SetPosOffset( int aX_offs, int aY_offs ) override; + virtual void Flip() override; void AddToModule( MODULE* aModule ) override; void AddToBoard() override;