X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_DumpPython.cxx;h=c50fa07edb871fdfe5210bda4120eedf89a99bdf;hb=290a70345b8930a17fdcc5d9c3c6c65d3fb72f68;hp=ad409b786361820fdeee672c71dc1fbaae27c42b;hpb=0635c9fc80f67d1e5dc0e94ec85f487286a92070;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_DumpPython.cxx b/src/SMESH_I/SMESH_DumpPython.cxx index ad409b786..c50fa07ed 100644 --- a/src/SMESH_I/SMESH_DumpPython.cxx +++ b/src/SMESH_I/SMESH_DumpPython.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // File : SMESH_Gen_i_DumpPython.cxx // Created : Thu Mar 24 17:17:59 2005 // Author : Julia DOROVSKIKH @@ -33,6 +34,7 @@ #include #include +#include #ifdef _DEBUG_ @@ -65,8 +67,8 @@ namespace SMESH TCollection_AsciiString aCollection(Standard_CString(aString.c_str())); SALOMEDS::Study_ptr aStudy = aSMESHGen->GetCurrentStudy(); if(!aStudy->_is_nil() && !aCollection.IsEmpty()){ - aSMESHGen->AddToPythonScript(aStudy->StudyId(),aCollection); - if(MYDEBUG) MESSAGE(aString); + aSMESHGen->AddToPythonScript(aStudy->StudyId(),aCollection); + if(MYDEBUG) MESSAGE(aString); } } } @@ -129,6 +131,26 @@ namespace SMESH return *this; } + TPythonDump& + TPythonDump:: + operator<<(const SMESH::GeometryType& theArg) + { + myStream<<"SMESH."; + switch(theArg){ + case Geom_POINT: myStream<<"Geom_POINT"; break; + case Geom_EDGE: myStream<<"Geom_EDGE"; break; + case Geom_TRIANGLE: myStream<<"Geom_TRIANGLE"; break; + case Geom_QUADRANGLE: myStream<<"Geom_QUADRANGLE"; break; + case Geom_POLYGON: myStream<<"Geom_POLYGON"; break; + case Geom_TETRA: myStream<<"Geom_TETRA"; break; + case Geom_PYRAMID: myStream<<"Geom_PYRAMID"; break; + case Geom_HEXA: myStream<<"Geom_HEXA"; break; + case Geom_PENTA: myStream<<"Geom_PENTA"; break; + case Geom_POLYHEDRA: myStream<<"Geom_POLYHEDRA"; break; + } + return *this; + } + template void DumpArray(const TArray& theArray, std::ostringstream & theStream) { @@ -171,10 +193,11 @@ namespace SMESH operator<<(CORBA::Object_ptr theArg) { SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); - SALOMEDS::Study_ptr aStudy = aSMESHGen->GetCurrentStudy(); + SALOMEDS::Study_var aStudy = aSMESHGen->GetCurrentStudy(); SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,theArg); if(!aSObject->_is_nil()) { - myStream << aSObject->GetID(); + CORBA::String_var id = aSObject->GetID(); + myStream << id; } else if ( !CORBA::is_nil(theArg)) { if ( aSMESHGen->CanPublishInStudy( theArg )) // not published SMESH object myStream << "smeshObj_" << size_t(theArg); @@ -186,6 +209,32 @@ namespace SMESH return *this; } + TPythonDump& + TPythonDump:: + operator<<(SMESH::SMESH_Hypothesis_ptr theArg) + { + SALOMEDS::Study_var aStudy = SMESH_Gen_i::GetSMESHGen()->GetCurrentStudy(); + SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,theArg); + if(aSObject->_is_nil() && !CORBA::is_nil(theArg)) + myStream << "hyp_" << theArg->GetId(); + else + *this << CORBA::Object_ptr( theArg ); + return *this; + } + + TPythonDump& + TPythonDump:: + operator<<(SMESH::SMESH_IDSource_ptr theArg) + { + SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); + SALOMEDS::Study_var aStudy = aSMESHGen->GetCurrentStudy(); + SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,theArg); + if(!aSObject->_is_nil() || CORBA::is_nil( theArg )) + return *this << aSObject; + SMESH::long_array_var anElementsId = theArg->GetIDs(); + return *this << anElementsId; + } + TPythonDump& TPythonDump:: operator<<(SMESH::FilterLibrary_i* theArg) @@ -224,9 +273,11 @@ namespace SMESH 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_FreeBorders: myStream<< "aFreeBorders"; break; case FT_FreeEdges: myStream<< "aFreeEdges"; break; case FT_FreeNodes: myStream<< "aFreeNodes"; break; + case FT_FreeFaces: myStream<< "aFreeFaces"; break; case FT_MultiConnection: myStream<< "aMultiConnection"; break; case FT_MultiConnection2D:myStream<< "aMultiConnection2D";break; case FT_Length: myStream<< "aLength"; break; @@ -238,13 +289,17 @@ namespace SMESH case FT_LyingOnGeom: myStream<< "aLyingOnGeom"; break; case FT_RangeOfIds: myStream<< "aRangeOfIds"; break; case FT_BadOrientedVolume:myStream<< "aBadOrientedVolume";break; + case FT_LinearOrQuadratic:myStream<< "aLinearOrQuadratic";break; + case FT_GroupColor: myStream<< "aGroupColor"; break; + case FT_ElemGeomType: myStream<< "anElemGeomType"; break; case FT_LessThan: myStream<< "aLessThan"; break; case FT_MoreThan: myStream<< "aMoreThan"; break; case FT_EqualTo: myStream<< "anEqualTo"; break; case FT_LogicalNOT: myStream<< "aLogicalNOT"; break; case FT_LogicalAND: myStream<< "aLogicalAND"; break; case FT_LogicalOR: myStream<< "aLogicalOR"; break; - case FT_Undefined: myStream<< "anUndefined"; break; + case FT_Undefined: + default: myStream<< "anUndefined"; break; } myStream<length() > 0 ) { - SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); - SALOMEDS::Study_ptr aStudy = aSMESHGen->GetCurrentStudy(); - myStream << "["; - int aListLen = theList->length(); - for(int i = 0 ; i < aListLen; i++){ - SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,(*theList)[i]); - if(!aSObject->_is_nil()) { - myStream << aSObject->GetID(); - i < (aListLen - 1) ? myStream<<", " : myStream<<"]"; - } - + TPythonDump& TPythonDump::operator<<(const SMESH::ListOfGroups& theList) + { + SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen(); + SALOMEDS::Study_ptr aStudy = aSMESHGen->GetCurrentStudy(); + myStream << "["; + int aListLen = theList.length(); + for(int i = 0 ; i < aListLen; i++) + { + SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,theList[i]); + if(!aSObject->_is_nil()) { + CORBA::String_var entry = aSObject->GetID(); + myStream << entry; + if ( i < (aListLen - 1) ) + myStream<<", "; } } + myStream<<"]"; return *this; } @@ -322,10 +379,10 @@ namespace SMESH //================================================================================ /*! - * \brief Return marker of long string literal beginning - * \param type - a name of functionality producing the string literal - * \retval TCollection_AsciiString - the marker string to be written into - * a raw python script + * \brief Return marker of long string literal beginning + * \param type - a name of functionality producing the string literal + * \retval TCollection_AsciiString - the marker string to be written into + * a raw python script */ //================================================================================ @@ -456,8 +513,7 @@ Engines::TMPFile* SMESH_Gen_i::DumpPython (CORBA::Object_ptr theStudy, TCollection_AsciiString aSavedTrace (oldValue); // Add trace of API methods calls and replace study entries by names - TCollection_AsciiString aScript = - "### This file is generated by SALOME automatically by dump python functionality of SMESH component\n\n"; + TCollection_AsciiString aScript; aScript += DumpPython_impl(aStudy, aMap, aMapNames, isPublished, isValidScript, aSavedTrace); @@ -558,8 +614,8 @@ Handle(TColStd_HSequenceOfInteger) FindEntries (TCollection_AsciiString& theStri isFound = Standard_False; while((j < aLen) && ( isdigit(c) || c == ':' )) { //Check if it is an entry - c = (int)arr[j++]; - if(c == ':') isFound = Standard_True; + c = (int)arr[j++]; + if(c == ':') isFound = Standard_True; } if (isFound) { @@ -757,7 +813,7 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl } // set initial part of aSript - TCollection_AsciiString initPart = "import salome, SMESH\n"; + TCollection_AsciiString initPart = "import salome, SMESH, SALOMEDS\n"; initPart += helper + "import " + aSmeshpy + "\n\n"; if ( importGeom ) { @@ -772,48 +828,33 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl if (aSeq->Value(aLen) < aScriptLength) anUpdatedScript += aScript.SubString(aSeq->Value(aLen) + 1, aScriptLength); - - //SMESH_Gen_i* aSMESHGenI = SMESH_Gen_i::GetSMESHGen(); - if( !CORBA::is_nil(theStudy) ) + // Set colors + SALOMEDS::SObject_var aComp = theStudy->FindComponent(ComponentDataType()); + if( !CORBA::is_nil(aComp) ) { - SALOMEDS::SObject_var aComp = theStudy->FindComponent(ComponentDataType()); - if( !CORBA::is_nil(aComp) ) + SALOMEDS::ChildIterator_var Itr = theStudy->NewChildIterator(aComp); + for( Itr->InitEx(true); Itr->More(); Itr->Next() ) { - SALOMEDS::ChildIterator_var Itr = theStudy->NewChildIterator(aComp); - for( Itr->InitEx(true); Itr->More(); Itr->Next() ) + SALOMEDS::SObject_var aSObj = Itr->Value(); + SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( SObjectToObject( aSObj ) ); + // mesh auto color + if( !CORBA::is_nil(aMesh) && aMesh->GetAutoColor() ) { - SALOMEDS::SObject_var aSObj = Itr->Value(); - CORBA::String_var aName = aSObj->GetName(); - - SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( SMESH_Gen_i::SObjectToObject( aSObj ) ); - if( !CORBA::is_nil(aMesh) ) - { - bool isAutoColor = aMesh->GetAutoColor(); - if( isAutoColor ) - { - anUpdatedScript += "\n\t"; - anUpdatedScript += (char*)aName.in(); - anUpdatedScript += ".SetAutoColor(1)"; - } - } - - SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH_Gen_i::SObjectToObject( aSObj ) ); - if( !CORBA::is_nil(aGroup) ) - { - SALOMEDS::Color aColor = aGroup->GetColor(); - if ( aColor.R > 0 || aColor.G > 0 || aColor.B > 0 ) - { - anUpdatedScript += "\n\t"; - anUpdatedScript += (char*)aName.in(); - anUpdatedScript += ".SetColor(SALOMEDS.Color("; - anUpdatedScript += aColor.R; - anUpdatedScript += ","; - anUpdatedScript += aColor.G; - anUpdatedScript += ","; - anUpdatedScript += aColor.B; - anUpdatedScript += "))"; - } - } + CORBA::String_var anEntry = aSObj->GetID(); + anUpdatedScript += + SMESH_Comment("\n\t") << theObjectNames(anEntry.inout()) << ".SetAutoColor(1)"; + } + SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SObjectToObject(aSObj)); + if( !CORBA::is_nil(aGroup) ) + { + SALOMEDS::Color aColor = aGroup->GetColor(); + if ( aColor.R >= 0 || aColor.G >= 0 || aColor.B >= 0 ) + { + CORBA::String_var anEntry = aSObj->GetID(); + anUpdatedScript += SMESH_Comment("\n\t") + << theObjectNames(anEntry.inout()) << ".SetColor(SALOMEDS.Color(" + << aColor.R <<", "<< aColor.G <<", "<< aColor.B <<" ))"; + } } } }