CADSTAR Archive Importer: Only load the Master variant
This commit is contained in:
parent
e3334cd25c
commit
71f9847601
|
@ -92,9 +92,10 @@ void CADSTAR_SCH_ARCHIVE_LOADER::Load( ::SCHEMATIC* aSchematic, ::SCH_SHEET* aRo
|
||||||
|
|
||||||
if( Schematic.VariantHierarchy.Variants.size() > 0 )
|
if( Schematic.VariantHierarchy.Variants.size() > 0 )
|
||||||
{
|
{
|
||||||
wxLogWarning(
|
wxLogWarning( wxString::Format(
|
||||||
_( "The CADSTAR design contains variants which has no KiCad equivalent. All "
|
_( "The CADSTAR design contains variants which has no KiCad equivalent. Only "
|
||||||
"components have been loaded on top of each other. " ) );
|
"the master variant ('%s') was loaded." ),
|
||||||
|
Schematic.VariantHierarchy.Variants.at( "V0" ).Name ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( Schematic.Groups.size() > 0 )
|
if( Schematic.Groups.size() > 0 )
|
||||||
|
@ -317,6 +318,9 @@ void CADSTAR_SCH_ARCHIVE_LOADER::loadSchematicSymbolInstances()
|
||||||
{
|
{
|
||||||
SYMBOL sym = symPair.second;
|
SYMBOL sym = symPair.second;
|
||||||
|
|
||||||
|
if( !sym.VariantID.empty() && sym.VariantParentSymbolID != sym.ID )
|
||||||
|
continue; // Only load master Variant
|
||||||
|
|
||||||
if( sym.IsComponent )
|
if( sym.IsComponent )
|
||||||
{
|
{
|
||||||
if( mPartMap.find( sym.PartRef.RefID ) == mPartMap.end() )
|
if( mPartMap.find( sym.PartRef.RefID ) == mPartMap.end() )
|
||||||
|
|
|
@ -650,8 +650,8 @@ void CADSTAR_SCH_ARCHIVE_PARSER::SYMBOL::Parse( XNODE* aNode )
|
||||||
}
|
}
|
||||||
else if( cNodeName == wxT( "VSYMMASTER" ) )
|
else if( cNodeName == wxT( "VSYMMASTER" ) )
|
||||||
{
|
{
|
||||||
VariantParentSymbolID = GetXmlAttributeIDString( aNode, 0 );
|
VariantParentSymbolID = GetXmlAttributeIDString( cNode, 0 );
|
||||||
VariantID = GetXmlAttributeIDString( aNode, 1 );
|
VariantID = GetXmlAttributeIDString( cNode, 1 );
|
||||||
}
|
}
|
||||||
else if( cNodeName == wxT( "GROUPREF" ) )
|
else if( cNodeName == wxT( "GROUPREF" ) )
|
||||||
{
|
{
|
||||||
|
|
|
@ -107,9 +107,10 @@ void CADSTAR_PCB_ARCHIVE_LOADER::Load( ::BOARD* aBoard )
|
||||||
|
|
||||||
if( Layout.VariantHierarchy.Variants.size() > 0 )
|
if( Layout.VariantHierarchy.Variants.size() > 0 )
|
||||||
{
|
{
|
||||||
wxLogWarning(
|
wxLogWarning( wxString::Format(
|
||||||
_( "The CADSTAR design contains variants which has no KiCad equivalent. All "
|
_( "The CADSTAR design contains variants which has no KiCad equivalent. Only "
|
||||||
"components have been loaded on top of each other. " ) );
|
"the master variant ('%s') was loaded." ),
|
||||||
|
Layout.VariantHierarchy.Variants.at( "V0" ).Name ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( Layout.ReuseBlocks.size() > 0 )
|
if( Layout.ReuseBlocks.size() > 0 )
|
||||||
|
@ -1192,7 +1193,10 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadComponents()
|
||||||
{
|
{
|
||||||
for( std::pair<COMPONENT_ID, COMPONENT> compPair : Layout.Components )
|
for( std::pair<COMPONENT_ID, COMPONENT> compPair : Layout.Components )
|
||||||
{
|
{
|
||||||
COMPONENT& comp = compPair.second;
|
COMPONENT& comp = compPair.second;
|
||||||
|
|
||||||
|
if( !comp.VariantID.empty() && comp.VariantParentComponentID != comp.ID )
|
||||||
|
continue; // Only load master Variant
|
||||||
|
|
||||||
auto fpIter = mLibraryMap.find( comp.SymdefID );
|
auto fpIter = mLibraryMap.find( comp.SymdefID );
|
||||||
|
|
||||||
|
|
|
@ -1846,8 +1846,8 @@ void CADSTAR_PCB_ARCHIVE_PARSER::COMPONENT::Parse( XNODE* aNode )
|
||||||
}
|
}
|
||||||
else if( cNodeName == wxT( "VCOMPMASTER" ) )
|
else if( cNodeName == wxT( "VCOMPMASTER" ) )
|
||||||
{
|
{
|
||||||
VariantParentComponentID = GetXmlAttributeIDString( aNode, 0 );
|
VariantParentComponentID = GetXmlAttributeIDString( cNode, 0 );
|
||||||
VariantID = GetXmlAttributeIDString( aNode, 1 );
|
VariantID = GetXmlAttributeIDString( cNode, 1 );
|
||||||
}
|
}
|
||||||
else if( cNodeName == wxT( "TEXTLOC" ) )
|
else if( cNodeName == wxT( "TEXTLOC" ) )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue