Support of python dump in SHAPER STUDY

This commit is contained in:
mpv 2020-01-30 19:18:17 +03:00
parent ab494e654a
commit 2cdec6ec50
2 changed files with 39 additions and 29 deletions

View File

@ -567,7 +567,8 @@ _pyGen::_pyGen(Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod
myRemovedObjIDs( theRemovedObjIDs ), myRemovedObjIDs( theRemovedObjIDs ),
myNbFilters( 0 ), myNbFilters( 0 ),
myToKeepAllCommands( theToKeepAllCommands ), myToKeepAllCommands( theToKeepAllCommands ),
myGeomIDNb(0), myGeomIDIndex(-1) myGeomIDNb(0), myGeomIDIndex(-1),
myShaperIDNb(0), myShaperIDIndex(-1)
{ {
// make that GetID() to return TPythonDump::SMESHGenName() // make that GetID() to return TPythonDump::SMESHGenName()
GetCreationCmd()->Clear(); GetCreationCmd()->Clear();
@ -575,30 +576,38 @@ _pyGen::_pyGen(Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod
GetCreationCmd()->GetString() += "="; GetCreationCmd()->GetString() += "=";
// Find 1st digit of study entry by which a GEOM object differs from a SMESH object // Find 1st digit of study entry by which a GEOM object differs from a SMESH object
if ( !theObjectNames.IsEmpty() ) if (!theObjectNames.IsEmpty())
{ {
// find a GEOM entry // find a GEOM (aPass == 0) and SHAPERSTUDY (aPass == 1) entries
_pyID geomID; for(int aPass = 0; aPass < 2; aPass++) {
SALOMEDS::SComponent_wrap geomComp = SMESH_Gen_i::getStudyServant()->FindComponent("GEOM"); _pyID geomID;
if ( geomComp->_is_nil() ) return; SALOMEDS::SComponent_wrap geomComp = SMESH_Gen_i::getStudyServant()->
CORBA::String_var entry = geomComp->GetID(); FindComponent(aPass == 0 ? "GEOM" : "SHAPERSTUDY");
geomID = entry.in(); if (geomComp->_is_nil()) continue;
CORBA::String_var entry = geomComp->GetID();
geomID = entry.in();
// find a SMESH entry // find a SMESH entry
_pyID smeshID; _pyID smeshID;
Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString e2n( theObjectNames ); Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString e2n(theObjectNames);
for ( ; e2n.More() && smeshID.IsEmpty(); e2n.Next() ) for (; e2n.More() && smeshID.IsEmpty(); e2n.Next())
if ( _pyCommand::IsStudyEntry( e2n.Key() )) if (_pyCommand::IsStudyEntry(e2n.Key()))
smeshID = e2n.Key(); smeshID = e2n.Key();
// find 1st difference between smeshID and geomID // find 1st difference between smeshID and geomID
if ( !geomID.IsEmpty() && !smeshID.IsEmpty() ) if (!geomID.IsEmpty() && !smeshID.IsEmpty())
for ( int i = 1; i <= geomID.Length() && i <= smeshID.Length(); ++i ) for (int i = 1; i <= geomID.Length() && i <= smeshID.Length(); ++i)
if ( geomID.Value( i ) != smeshID.Value( i )) if (geomID.Value(i) != smeshID.Value(i))
{ {
myGeomIDNb = geomID.Value( i ); if (aPass == 0) {
myGeomIDIndex = i; myGeomIDNb = geomID.Value(i);
} myGeomIDIndex = i;
} else {
myShaperIDNb = geomID.Value(i);
myShaperIDIndex = i;
}
}
}
} }
} }
@ -1680,13 +1689,11 @@ Handle(_pyObject) _pyGen::FindObject( const _pyID& theObjID ) const
bool _pyGen::IsGeomObject(const _pyID& theObjID) const bool _pyGen::IsGeomObject(const _pyID& theObjID) const
{ {
if ( myGeomIDNb ) bool isGeom = myGeomIDNb && myGeomIDIndex <= theObjID.Length() &&
{ int( theObjID.Value( myGeomIDIndex )) == myGeomIDNb;
return ( myGeomIDIndex <= theObjID.Length() && bool isShaper = myShaperIDNb && myShaperIDIndex <= theObjID.Length() &&
int( theObjID.Value( myGeomIDIndex )) == myGeomIDNb && int( theObjID.Value( myShaperIDIndex )) == myShaperIDNb;
_pyCommand::IsStudyEntry( theObjID )); return ((isGeom || isShaper) && _pyCommand::IsStudyEntry( theObjID ));
}
return false;
} }
//================================================================================ //================================================================================

View File

@ -323,7 +323,10 @@ private:
Handle(_pyCommand) myLastCommand; Handle(_pyCommand) myLastCommand;
int myNbFilters; int myNbFilters;
bool myToKeepAllCommands; bool myToKeepAllCommands;
// difference of entry and index of this difference
int myGeomIDNb, myGeomIDIndex; int myGeomIDNb, myGeomIDIndex;
// difference of entry and index of this difference, specific for the SHAPER study
int myShaperIDNb, myShaperIDIndex;
std::map< _AString, ExportedMeshData > myFile2ExportedMesh; std::map< _AString, ExportedMeshData > myFile2ExportedMesh;
Handle( _pyHypothesisReader ) myHypReader; Handle( _pyHypothesisReader ) myHypReader;