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,6 +3053,27 @@ 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 itce = components.end();
// 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 )
{
if( itcs->second->GetOutlinesSize() > 0 )
{
itcs = components.begin();
hasOutlines = true;
break;
}
++itcs;
}
if( hasOutlines )
{
brd << ".PLACEMENT\n";
while( itcs != itce )
@ -3065,6 +3086,8 @@ void IDF3_BOARD::writeBoardFile( const std::string& aFileName )
}
}
}
catch( const std::exception& e )
{
brd.exceptions( std::ios_base::goodbit );