X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_PythonDump.cxx;h=5a92bde8242a3d3acbf740d8ca4a4f065d29c2c3;hb=HEAD;hp=e1c3002c0a583800cfd546adf15618eb0b3c12ba;hpb=f435fe5c8210fd6b1f0c4e1ab62e91babc0cfd28;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_PythonDump.cxx b/src/SMESH_I/SMESH_PythonDump.cxx index e1c3002c0..a07d95377 100644 --- a/src/SMESH_I/SMESH_PythonDump.cxx +++ b/src/SMESH_I/SMESH_PythonDump.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -33,21 +33,19 @@ #include "SMESH_MeshEditor_i.hxx" #include +#include #include #include -#include #include #include -#include - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; +#if OCC_VERSION_LARGE < 0x07050000 +#include #endif +#include + #include "SMESH_TryCatch.hxx" namespace SMESH @@ -56,17 +54,22 @@ namespace SMESH size_t TPythonDump::myCounter = 0; const char theNotPublishedObjectName[] = "__NOT__Published__Object__"; - TVar::TVar(CORBA::Double value):myVals(1), myIsList(false) { myVals[0] = SMESH_Comment(value); } - TVar::TVar(CORBA::Long value):myVals(1), myIsList(false) { myVals[0] = SMESH_Comment(value); } - TVar::TVar(CORBA::Short value):myVals(1), myIsList(false) { myVals[0] = SMESH_Comment(value); } + TVar::TVar(CORBA::Double value):myVals(1), myIsList(false) { myVals[0] = SMESH_Comment(value); } + TVar::TVar(CORBA::Long value):myVals(1), myIsList(false) { myVals[0] = SMESH_Comment(value); } + TVar::TVar(CORBA::LongLong value):myVals(1), myIsList(false) { myVals[0] = SMESH_Comment(value); } + TVar::TVar(CORBA::Short value):myVals(1), myIsList(false) { myVals[0] = SMESH_Comment(value); } TVar::TVar(const SMESH::double_array& value):myVals(value.length()), myIsList(true) { for ( size_t i = 0; i < value.length(); i++) myVals[i] = SMESH_Comment(value[i]); } + + TPythonDump::TPythonDump():myVarsCounter(0),mySmesh(SMESH_Gen_i::GetSMESHGen()) + { + ++myCounter; + } - TPythonDump:: - TPythonDump():myVarsCounter(0) + TPythonDump::TPythonDump(SMESH_Gen_i *smesh):myVarsCounter(0),mySmesh(smesh) { ++myCounter; } @@ -83,7 +86,7 @@ namespace SMESH if ( !objEntry.empty() ) aCollection += (TVar::ObjPrefix() + objEntry ).c_str(); aSMESHGen->AddToPythonScript(aCollection); - if(MYDEBUG) MESSAGE(aString); + MESSAGE(aString); // prevent misuse of already treated variables aSMESHGen->UpdateParameters(CORBA::Object_var().in(),""); } @@ -135,6 +138,13 @@ namespace SMESH return *this; } + TPythonDump& + TPythonDump:: + operator<<(long long theArg){ + myStream<ObjectToSObject(theArg); if(!aSObject->_is_nil()) { CORBA::String_var id = aSObject->GetID(); myStream << id; @@ -319,7 +336,7 @@ namespace SMESH TPythonDump:: operator<<(SMESH::SMESH_Hypothesis_ptr theArg) { - SALOMEDS::SObject_wrap aSObject = SMESH_Gen_i::ObjectToSObject(theArg); + SALOMEDS::SObject_wrap aSObject = mySmesh->ObjectToSObject(theArg); if(aSObject->_is_nil() && !CORBA::is_nil(theArg)) myStream << "hyp_" << theArg->GetId(); else @@ -333,7 +350,7 @@ namespace SMESH { if ( CORBA::is_nil( theArg ) ) return *this << "None"; - SALOMEDS::SObject_wrap aSObject = SMESH_Gen_i::ObjectToSObject(theArg); + SALOMEDS::SObject_wrap aSObject = mySmesh->ObjectToSObject(theArg); if(!aSObject->_is_nil()) { return *this << aSObject; @@ -344,11 +361,12 @@ namespace SMESH } if ( SMESH_MeshEditor_i::IsTemporaryIDSource( theArg )) { - SMESH::SMESH_Mesh_var mesh = theArg->GetMesh(); - SMESH::long_array_var anElementsId = theArg->GetIDs(); - SMESH::array_of_ElementType_var types = theArg->GetTypes(); - SMESH::ElementType type = types->length() ? types[0] : SMESH::ALL; - SALOMEDS::SObject_wrap meshSO = SMESH_Gen_i::ObjectToSObject(mesh); + SMESH::SMESH_Mesh_var mesh = theArg->GetMesh(); + SMESH::smIdType_array_var anElementsId = theArg->GetIDs(); + SMESH::array_of_ElementType_var types = theArg->GetTypes(); + SMESH::ElementType type = types->length() ? types[0] : SMESH::ALL; + SALOMEDS::SObject_wrap meshSO = mySmesh->ObjectToSObject(mesh); + if ( meshSO->_is_nil() ) // don't waste memory for dumping not published objects return *this << mesh << ".GetIDSource([], " << type << ")"; else @@ -367,7 +385,7 @@ namespace SMESH TPythonDump& TPythonDump:: - operator<<(SMESH::FilterManager_i* theArg) + operator<<(SMESH::FilterManager_i* /*theArg*/) { myStream<<"aFilterManager"; return *this; @@ -391,11 +409,13 @@ namespace SMESH case FT_AspectRatio: myStream<< "aAspectRatio"; break; case FT_AspectRatio3D: myStream<< "aAspectRatio3D"; break; case FT_Warping: myStream<< "aWarping"; break; + case FT_Warping3D: myStream<< "aWarping3D"; break; case FT_MinimumAngle: myStream<< "aMinimumAngle"; break; case FT_Taper: myStream<< "aTaper"; break; case FT_Skew: myStream<< "aSkew"; break; case FT_Area: myStream<< "aArea"; break; case FT_Volume3D: myStream<< "aVolume3D"; break; + case FT_ScaledJacobian: myStream<< "aScaledJacobian"; break; case FT_MaxElementLength2D: myStream<< "aMaxElementLength2D"; break; case FT_MaxElementLength3D: myStream<< "aMaxElementLength3D"; break; case FT_FreeBorders: myStream<< "aFreeBorders"; break; @@ -448,13 +468,13 @@ namespace SMESH TPythonDump& TPythonDump:: - operator<<(SMESH::Measurements_i* theArg) + operator<<(SMESH::Measurements_i* /*theArg*/) { myStream<<"aMeasurements"; return *this; } - TPythonDump& TPythonDump:: operator<<(SMESH_Gen_i* theArg) + TPythonDump& TPythonDump:: operator<<(SMESH_Gen_i* /*theArg*/) { myStream << SMESHGenName(); return *this; } @@ -669,9 +689,8 @@ namespace SMESH void printException( const char* text ) { -#ifdef _DEBUG_ - std::cout << "Exception in SMESH_Gen_i::DumpPython(): " << text << std::endl; -#endif + if (SALOME::VerbosityActivated()) + std::cout << "Exception in SMESH_Gen_i::DumpPython(): " << text << std::endl; } //======================================================================= @@ -1080,10 +1099,15 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl TCollection_AsciiString anUpdatedScript; Resource_DataMapOfAsciiStringAsciiString mapRemoved; - Resource_DataMapOfAsciiStringAsciiString mapEntries; // names and entries present in anUpdatedScript + Resource_DataMapOfAsciiStringAsciiString mapEntries; // { entry: name } present in anUpdatedScript Standard_Integer objectCounter = 0; 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 for ( linesIt = lines.begin(); linesIt != lines.end(); ++linesIt ) { @@ -1135,15 +1159,22 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl } else { - // Removed Object - do { - aName = aBaseName + (++objectCounter); - } while (theObjectNames.IsBound(aName)); + if ( !anEntry.StartsWith( smeshEntry )) // not SMESH object + { + aName = SMESH::TPythonDump::NotPublishedObjectName(); + } + else + { + // Removed Object + do { + aName = aBaseName + (++objectCounter); + } while (theObjectNames.IsBound(aName)); - if ( !aRemovedObjIDs.count( anEntry ) && aLine.Value(1) != '#') - mapRemoved.Bind(anEntry, aName); + if ( !aRemovedObjIDs.count( anEntry ) && aLine.Value(1) != '#') + mapRemoved.Bind(anEntry, aName); - theObjectNames.Bind(anEntry, aName); + theObjectNames.Bind(anEntry, aName); + } } theObjectNames.Bind(aName, anEntry); // to detect same name of diff objects }