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 ),
myNbFilters( 0 ),
myToKeepAllCommands( theToKeepAllCommands ),
myGeomIDNb(0), myGeomIDIndex(-1)
myGeomIDNb(0), myGeomIDIndex(-1),
myShaperIDNb(0), myShaperIDIndex(-1)
{
// make that GetID() to return TPythonDump::SMESHGenName()
GetCreationCmd()->Clear();
@ -577,10 +578,12 @@ _pyGen::_pyGen(Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod
// Find 1st digit of study entry by which a GEOM object differs from a SMESH object
if (!theObjectNames.IsEmpty())
{
// find a GEOM entry
// find a GEOM (aPass == 0) and SHAPERSTUDY (aPass == 1) entries
for(int aPass = 0; aPass < 2; aPass++) {
_pyID geomID;
SALOMEDS::SComponent_wrap geomComp = SMESH_Gen_i::getStudyServant()->FindComponent("GEOM");
if ( geomComp->_is_nil() ) return;
SALOMEDS::SComponent_wrap geomComp = SMESH_Gen_i::getStudyServant()->
FindComponent(aPass == 0 ? "GEOM" : "SHAPERSTUDY");
if (geomComp->_is_nil()) continue;
CORBA::String_var entry = geomComp->GetID();
geomID = entry.in();
@ -596,8 +599,14 @@ _pyGen::_pyGen(Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod
for (int i = 1; i <= geomID.Length() && i <= smeshID.Length(); ++i)
if (geomID.Value(i) != smeshID.Value(i))
{
if (aPass == 0) {
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
{
if ( myGeomIDNb )
{
return ( myGeomIDIndex <= theObjID.Length() &&
int( theObjID.Value( myGeomIDIndex )) == myGeomIDNb &&
_pyCommand::IsStudyEntry( theObjID ));
}
return false;
bool isGeom = myGeomIDNb && myGeomIDIndex <= theObjID.Length() &&
int( theObjID.Value( myGeomIDIndex )) == myGeomIDNb;
bool isShaper = myShaperIDNb && myShaperIDIndex <= theObjID.Length() &&
int( theObjID.Value( myShaperIDIndex )) == myShaperIDNb;
return ((isGeom || isShaper) && _pyCommand::IsStudyEntry( theObjID ));
}
//================================================================================

View File

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