diff --git a/src/GEOM/GEOM_Engine.cxx b/src/GEOM/GEOM_Engine.cxx index 6f830e15e..368323d22 100644 --- a/src/GEOM/GEOM_Engine.cxx +++ b/src/GEOM/GEOM_Engine.cxx @@ -561,6 +561,7 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID, std::vector& theObjectData, TVariablesList theVariables, bool isPublished, + bool isMultiFile, bool& aValidScript) { // Set "C" numeric locale to save numbers correctly @@ -569,13 +570,22 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID, TCollection_AsciiString aScript; Handle(TDocStd_Document) aDoc = GetDocument(theDocID); - if (aDoc.IsNull()) return TCollection_AsciiString("def RebuildData(theStudy): pass\n"); + if (aDoc.IsNull()) + { + TCollection_AsciiString anEmptyScript; + if( isMultiFile ) + anEmptyScript = "def RebuildData(theStudy): pass\n"; + return anEmptyScript; + } aScript = "import GEOM\n"; aScript += "import geompy\n"; aScript += "import math\n"; aScript += "import SALOMEDS\n\n"; - aScript += "def RebuildData(theStudy):"; + if( isMultiFile ) + aScript += "def RebuildData(theStudy):"; + else + aScript += "theStudy = salome.myStudy"; aScript += "\n\tgeompy.init_geom(theStudy)\n"; AddTextures(theDocID, aScript); diff --git a/src/GEOM/GEOM_Engine.hxx b/src/GEOM/GEOM_Engine.hxx index 865e8b8fd..4e8158a78 100644 --- a/src/GEOM/GEOM_Engine.hxx +++ b/src/GEOM/GEOM_Engine.hxx @@ -139,6 +139,7 @@ class GEOM_Engine std::vector& theObjectData, TVariablesList theVariables, bool isPublished, + bool isMultiFile, bool& aValidScript); Standard_EXPORT const char* GetDumpName (const char* theStudyEntry) const; diff --git a/src/GEOM_I/GEOM_DumpPython.cc b/src/GEOM_I/GEOM_DumpPython.cc index a38ccc58d..07c58fb70 100644 --- a/src/GEOM_I/GEOM_DumpPython.cc +++ b/src/GEOM_I/GEOM_DumpPython.cc @@ -36,6 +36,25 @@ #include #include +//======================================================================= +//function : RemoveTabulation +//purpose : +//======================================================================= +void RemoveTabulation( TCollection_AsciiString& theScript ) +{ + std::string aString( theScript.ToCString() ); + std::string::size_type aPos = 0; + while( aPos < aString.length() ) + { + aPos = aString.find( "\n\t", aPos ); + if( aPos == std::string::npos ) + break; + aString.replace( aPos, 2, "\n" ); + aPos++; + } + theScript = aString.c_str(); +} + //======================================================================= //function : DumpPython //purpose : @@ -43,7 +62,8 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy, CORBA::Boolean isPublished, - CORBA::Boolean& isValidScript) + CORBA::Boolean isMultiFile, + CORBA::Boolean& isValidScript) { SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(theStudy); if(CORBA::is_nil(aStudy)) @@ -98,7 +118,7 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy, } TCollection_AsciiString aScript; - aScript += _impl->DumpPython(aStudy->StudyId(), objectDataVec, aVariableMap, isPublished, isValidScript); + aScript += _impl->DumpPython(aStudy->StudyId(), objectDataVec, aVariableMap, isPublished, isMultiFile, isValidScript); if (isPublished) { @@ -111,7 +131,12 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy, } } - aScript += "\n\tpass\n"; + if( isMultiFile ) + aScript += "\n\tpass"; + aScript += "\n"; + + if( !isMultiFile ) // remove unnecessary tabulation + RemoveTabulation( aScript ); int aLen = aScript.Length(); unsigned char* aBuffer = new unsigned char[aLen+1]; diff --git a/src/GEOM_I/GEOM_Gen_i.hh b/src/GEOM_I/GEOM_Gen_i.hh index 9f24703c3..cc8096357 100644 --- a/src/GEOM_I/GEOM_Gen_i.hh +++ b/src/GEOM_I/GEOM_Gen_i.hh @@ -252,6 +252,7 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy, CORBA::Boolean isPublished, + CORBA::Boolean isMultiFile, CORBA::Boolean& isValidScript); char* GetDumpName (const char* theStudyEntry);