Altium import: Avoid illegal filenames when writing embedded 3D models
This commit is contained in:
parent
a9b4465703
commit
b46b27fe8c
|
@ -1428,16 +1428,19 @@ void ALTIUM_PCB::ParseModelsData( const CFB::CompoundFileReader& aReader,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
|
wxString invalidChars = wxFileName::GetForbiddenChars();
|
||||||
|
|
||||||
while( reader.GetRemainingBytes() >= 4 /* TODO: use Header section of file */ )
|
while( reader.GetRemainingBytes() >= 4 /* TODO: use Header section of file */ )
|
||||||
{
|
{
|
||||||
checkpoint();
|
checkpoint();
|
||||||
AMODEL elem( reader );
|
AMODEL elem( reader );
|
||||||
|
|
||||||
wxString stepPath = wxString::Format( aRootDir + "%d", idx );
|
wxString stepPath = wxString::Format( aRootDir + "%d", idx );
|
||||||
wxString storageName = elem.name.IsEmpty() ? wxString::Format( "%d", idx ) : elem.name;
|
bool validName = !elem.name.IsEmpty() && elem.name.IsAscii() &&
|
||||||
wxFileName storagePath( altiumModelsPath.GetPath(), storageName );
|
wxString::npos == elem.name.find_first_of( invalidChars );
|
||||||
|
wxString storageName = !validName ? wxString::Format( "model_%d", idx ) : elem.name;
|
||||||
|
wxFileName storagePath( altiumModelsPath.GetPath(), storageName );
|
||||||
|
|
||||||
idx++;
|
idx++;
|
||||||
|
|
||||||
|
@ -1469,7 +1472,7 @@ void ALTIUM_PCB::ParseModelsData( const CFB::CompoundFileReader& aReader,
|
||||||
outputStream.Write( zlibInputStream );
|
outputStream.Write( zlibInputStream );
|
||||||
outputStream.Close();
|
outputStream.Close();
|
||||||
|
|
||||||
m_models.insert( { elem.id, kicadModelPrefix + elem.name } );
|
m_models.insert( { elem.id, kicadModelPrefix + storageName } );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( reader.GetRemainingBytes() != 0 )
|
if( reader.GetRemainingBytes() != 0 )
|
||||||
|
|
Loading…
Reference in New Issue