In dump script avoid removing missing geom objects

This commit is contained in:
eap 2020-08-10 17:43:45 +03:00
parent c85f79dfca
commit eac64fdf48

View File

@ -1080,10 +1080,15 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
TCollection_AsciiString anUpdatedScript; TCollection_AsciiString anUpdatedScript;
Resource_DataMapOfAsciiStringAsciiString mapRemoved; Resource_DataMapOfAsciiStringAsciiString mapRemoved;
Resource_DataMapOfAsciiStringAsciiString mapEntries; // names and entries present in anUpdatedScript Resource_DataMapOfAsciiStringAsciiString mapEntries; // { entry: name } present in anUpdatedScript
Standard_Integer objectCounter = 0; Standard_Integer objectCounter = 0;
TCollection_AsciiString anEntry, aName, aGUIName, aBaseName("smeshObj_"); TCollection_AsciiString anEntry, aName, aGUIName, aBaseName("smeshObj_");
std::string compDataType = ComponentDataType(); // SMESH module's data type
SALOMEDS::SComponent_var smeshSO = getStudyServant()->FindComponent( compDataType.c_str() );
CORBA::String_var smeshID = smeshSO->GetID();
TCollection_AsciiString smeshEntry = smeshID.in();
// Treat every script line and add it to anUpdatedScript // Treat every script line and add it to anUpdatedScript
for ( linesIt = lines.begin(); linesIt != lines.end(); ++linesIt ) for ( linesIt = lines.begin(); linesIt != lines.end(); ++linesIt )
{ {
@ -1135,15 +1140,22 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
} }
else else
{ {
// Removed Object if ( !anEntry.StartsWith( smeshEntry )) // not SMESH object
do { {
aName = aBaseName + (++objectCounter); aName = SMESH::TPythonDump::NotPublishedObjectName();
} while (theObjectNames.IsBound(aName)); }
else
{
// Removed Object
do {
aName = aBaseName + (++objectCounter);
} while (theObjectNames.IsBound(aName));
if ( !aRemovedObjIDs.count( anEntry ) && aLine.Value(1) != '#') if ( !aRemovedObjIDs.count( anEntry ) && aLine.Value(1) != '#')
mapRemoved.Bind(anEntry, aName); mapRemoved.Bind(anEntry, aName);
theObjectNames.Bind(anEntry, aName); theObjectNames.Bind(anEntry, aName);
}
} }
theObjectNames.Bind(aName, anEntry); // to detect same name of diff objects theObjectNames.Bind(aName, anEntry); // to detect same name of diff objects
} }