pcbnew: Set soldermask on NPTH imported from Eagle

Fixes: lp:1773253
* https://bugs.launchpad.net/kicad/+bug/1773253
This commit is contained in:
Seth Hillbrand 2018-09-05 22:52:21 -07:00
parent 48bbde65b3
commit 7012226284
1 changed files with 3 additions and 29 deletions

View File

@ -680,43 +680,17 @@ void EAGLE_PLUGIN::loadPlain( wxXmlNode* aGraphics )
else if( grName == "hole" ) else if( grName == "hole" )
{ {
m_xpath->push( "hole" ); m_xpath->push( "hole" );
EHOLE e( gr );
// Fabricate a MODULE with a single PAD_ATTRIB_HOLE_NOT_PLATED pad. // Fabricate a MODULE with a single PAD_ATTRIB_HOLE_NOT_PLATED pad.
// Use m_hole_count to gen up a unique name. // Use m_hole_count to gen up a unique name.
MODULE* module = new MODULE( m_board ); MODULE* module = new MODULE( m_board );
m_board->Add( module, ADD_APPEND ); m_board->Add( module, ADD_APPEND );
module->SetReference( wxString::Format( "@HOLE%d", m_hole_count++ ) );
char temp[40];
snprintf( temp, sizeof( temp ), "@HOLE%d", m_hole_count++ );
module->SetReference( FROM_UTF8( temp ) );
module->Reference().SetVisible( false ); module->Reference().SetVisible( false );
wxPoint pos( kicad_x( e.x ), kicad_y( e.y ) ); packageHole( module, gr );
module->SetPosition( pos );
// Add a PAD_ATTRIB_HOLE_NOT_PLATED pad to this module.
D_PAD* pad = new D_PAD( module );
module->PadsList().PushBack( pad );
pad->SetShape( PAD_SHAPE_CIRCLE );
pad->SetAttribute( PAD_ATTRIB_HOLE_NOT_PLATED );
/* pad's position is already centered on module at relative (0, 0)
wxPoint padpos( kicad_x( e.x ), kicad_y( e.y ) );
pad->SetPos0( padpos );
pad->SetPosition( padpos + module->GetPosition() );
*/
wxSize sz( e.drill.ToPcbUnits(), e.drill.ToPcbUnits() );
pad->SetDrillSize( sz );
pad->SetSize( sz );
pad->SetLayerSet( LSET::AllCuMask() );
m_xpath->pop(); m_xpath->pop();
} }
else if( grName == "frame" ) else if( grName == "frame" )
@ -1842,7 +1816,7 @@ void EAGLE_PLUGIN::packageHole( MODULE* aModule, wxXmlNode* aTree ) const
pad->SetDrillSize( sz ); pad->SetDrillSize( sz );
pad->SetSize( sz ); pad->SetSize( sz );
pad->SetLayerSet( LSET::AllCuMask() /* | SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT */ ); pad->SetLayerSet( LSET::AllCuMask().set( B_Mask ).set( F_Mask ) );
} }