pcad2kicadpcb_plugin: import graphic polygons from modules

Fixes: lp:1725931
* https://bugs.launchpad.net/kicad/+bug/1725931
This commit is contained in:
Eldar Khayrullin 2017-12-13 22:14:23 +03:00 committed by Maciej Suminski
parent d62d3b8e21
commit 4cd3992b94
3 changed files with 36 additions and 0 deletions

View File

@ -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
{

View File

@ -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<wxPoint>;
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;

View File

@ -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;