41    if( ( f = wxFopen( aOutFileName, wxT( 
"wt" ) ) ) == 
nullptr )
 
   43        wxString msg = wxString::Format( 
_( 
"Failed to create file '%s'." ), aOutFileName );
 
   52    ret |= fputs( 
"*PADS-PCB*\n", f );
 
   53    ret |= fputs( 
"*PART*\n", f );
 
   72            footprint = footprint.Trim( 
true );
 
   73            footprint = footprint.Trim( 
false );
 
   74            footprint.Replace( wxT( 
" " ), wxT( 
"_" ) );
 
   76            if( footprint.IsEmpty() )
 
   79                footprint = symbol->
GetValue( 
true, &sheet, 
false );
 
   80                footprint.Replace( wxT( 
" " ), wxT( 
"_" ) );
 
   81                footprint = footprint.Trim( 
true );
 
   82                footprint = footprint.Trim( 
false );
 
   85            msg = symbol->
GetRef( &sheet );
 
   86            ret |= fprintf( f, 
"%-16s %s\n", 
TO_UTF8( msg ), 
TO_UTF8( footprint ) );
 
   90    ret |= fputs( 
"\n", f );
 
 
  106    ret |= fputs( 
"*NET*\n", f );
 
  108    for( 
const auto& [ key, subgraphs ] : 
m_schematic->ConnectionGraph()->GetNetMap() )
 
  112        std::vector<std::pair<SCH_PIN*, SCH_SHEET_PATH>> sorted_items;
 
  118            for( 
SCH_ITEM* item : subgraph->GetItems() )
 
  121                    sorted_items.emplace_back( 
static_cast<SCH_PIN*
>( item ), sheet );
 
  126        std::sort( sorted_items.begin(), sorted_items.end(),
 
  127                []( 
const std::pair<SCH_PIN*, SCH_SHEET_PATH>& a, 
const std::pair<SCH_PIN*, SCH_SHEET_PATH>& b )
 
  129                    wxString ref_a = a.first->GetParentSymbol()->GetRef( &a.second );
 
  130                    wxString ref_b = b.first->GetParentSymbol()->GetRef( &b.second );
 
  133                        return a.first->GetShownNumber() < b.first->GetShownNumber();
 
  135                    return ref_a < ref_b;
 
  141        sorted_items.erase( std::unique( sorted_items.begin(), sorted_items.end(),
 
  142                []( 
const std::pair<SCH_PIN*, SCH_SHEET_PATH>& a, 
const std::pair<SCH_PIN*, SCH_SHEET_PATH>& b )
 
  144                    wxString ref_a = a.first->GetParentSymbol()->GetRef( &a.second );
 
  145                    wxString ref_b = b.first->GetParentSymbol()->GetRef( &b.second );
 
  147                    return ref_a == ref_b && a.first->GetShownNumber() == b.first->GetShownNumber();
 
  149                sorted_items.end() );
 
  151        std::vector<wxString> netConns;
 
  153        for( 
const std::pair<SCH_PIN*, SCH_SHEET_PATH>& pair : sorted_items )
 
  158            wxString refText = 
pin->GetParentSymbol()->GetRef( &sheet );
 
  159            wxString pinText = 
pin->GetShownNumber();
 
  162            if( refText[0] == wxChar( 
'#' ) )
 
  165            netConns.push_back( wxString::Format( 
"%s.%.4s", refText, pinText ) );
 
  170        if( netConns .size() > 1 )
 
  172            ret |= fprintf( f, 
"*SIGNAL* %s\n", 
TO_UTF8(netName) );
 
  175            for( wxString& netConn : netConns )
 
  177                ret |= fputs( 
TO_UTF8( netConn ), f );
 
  179                if( cnt != 0 && cnt % 6 == 0 )
 
  180                    ret |= fputc( 
'\n', f );
 
  182                    ret |= fputc( 
' ', f );
 
  187            ret |= fputc( 
'\n', f );
 
  191    ret |= fprintf( f, 
"*END*\n" );