export IDF without empty PLACEMENT section

This commit is contained in:
unknown 2014-08-03 09:48:41 +02:00 committed by jean-pierre charras
parent 764369439e
commit 3f8c091092
1 changed files with 26 additions and 3 deletions

View File

@ -3053,15 +3053,38 @@ void IDF3_BOARD::writeBoardFile( const std::string& aFileName )
std::map< std::string, IDF3_COMPONENT*>::iterator itcs = components.begin(); std::map< std::string, IDF3_COMPONENT*>::iterator itcs = components.begin();
std::map< std::string, IDF3_COMPONENT*>::iterator itce = components.end(); std::map< std::string, IDF3_COMPONENT*>::iterator itce = components.end();
brd << ".PLACEMENT\n"; // determine if there are any component outlines at all and avoid
// writing an empty PLACEMENT section if there are no outlines.
// this will cost a little time but prevents software such as
// CircuitWorks from segfaulting on an empty section.
bool hasOutlines = false;
while( itcs != itce ) while( itcs != itce )
{ {
itcs->second->writePlaceData( brd ); if( itcs->second->GetOutlinesSize() > 0 )
{
itcs = components.begin();
hasOutlines = true;
break;
}
++itcs; ++itcs;
} }
brd << ".END_PLACEMENT\n"; if( hasOutlines )
{
brd << ".PLACEMENT\n";
while( itcs != itce )
{
itcs->second->writePlaceData( brd );
++itcs;
}
brd << ".END_PLACEMENT\n";
}
} }
} }