Salome HOME
22806: EDF SMESH: Regression: Prism_3D error
[modules/smesh.git] / src / SMESH_I / SMESH_DumpPython.cxx
index d850950d4e411e7eea11b4d9baa0153d1e5db0b4..4289342dc1b83065d3918c7a358e7ab42a9ff9ea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014  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
@@ -6,7 +6,7 @@
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -240,13 +240,20 @@ namespace SMESH
   template<class TArray>
   void DumpArray(const TArray& theArray, TPythonDump & theStream)
   {
-    theStream << "[ ";
-    for (int i = 1; i <= theArray.length(); i++) {
-      theStream << theArray[i-1];
-      if ( i < theArray.length() )
-        theStream << ", ";
+    if ( theArray.length() == 0 )
+    {
+      theStream << "[]";
+    }
+    else
+    {
+      theStream << "[ ";
+      for (int i = 1; i <= theArray.length(); i++) {
+        theStream << theArray[i-1];
+        if ( i < theArray.length() )
+          theStream << ", ";
+      }
+      theStream << " ]";
     }
-    theStream << " ]";
   }
 
   TPythonDump&
@@ -263,6 +270,13 @@ namespace SMESH
     return *this;
   }
 
+  TPythonDump&
+  TPythonDump::operator<<(const SMESH::nodes_array& theArg)
+  {
+    DumpArray( theArg, *this );
+    return *this;
+  }
+
   TPythonDump&
   TPythonDump::operator<<(const SMESH::string_array& theArray)
   {
@@ -517,6 +531,16 @@ namespace SMESH
     DumpArray( *theList, *this );
     return *this;
   }
+  TPythonDump& TPythonDump::operator<<(const GEOM::ListOfGO& theList)
+  {
+    DumpArray( theList, *this );
+    return *this;
+  }
+  TPythonDump& TPythonDump::operator<<(const GEOM::ListOfGBO& theList)
+  {
+    DumpArray( theList, *this );
+    return *this;
+  }
   TPythonDump& TPythonDump::operator<<(const SMESH::ListOfIDSources& theList)
   {
     DumpArray( theList, *this );
@@ -949,11 +973,11 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
   std::list< TCollection_AsciiString >::iterator linesIt;
   
   if ( isPublished )
-    lines.push_back(  tab + aSMESHGen + " = smeshBuilder.New(theStudy)" );
+    lines.push_back(  aSMESHGen + " = smeshBuilder.New(theStudy)" );
    else
-    lines.push_back(  tab + aSMESHGen + " = smeshBuilder.New(None)" );
-  lines.push_back(  tab + "aFilterManager = " + aSMESHGen + ".CreateFilterManager()" );
-  lines.push_back(  tab + "aMeasurements = "  + aSMESHGen + ".CreateMeasurements()" );
+    lines.push_back(  aSMESHGen + " = smeshBuilder.New(None)" );
+  lines.push_back( helper + "aFilterManager = " + aSMESHGen + ".CreateFilterManager()" );
+  lines.push_back( helper + "aMeasurements = "  + aSMESHGen + ".CreateMeasurements()" );
 
   // Treat dump trace of restored study
   if (theSavedTrace.Length() > 0)
@@ -1056,7 +1080,7 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
       anEntry = aLine.SubString( aSeq->Value(i), aSeq->Value(i + 1) );
       // is a GEOM object?
       CORBA::String_var geomName = geom->GetDumpName( anEntry.ToCString() );
-      if ( !geomName.in() || !geomName[0] ) {
+      if ( !geomName.in() || !geomName.in()[0] ) {
         // is a SMESH object
         if ( theObjectNames.IsBound( anEntry )) {
           // The Object is in Study
@@ -1185,6 +1209,7 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
     if ( theNames.IsBound( anEntry ))
     {
       aGUIName = theNames.Find(anEntry);
+      aGUIName.RemoveAll('\''); // remove a quote from a name (issue 22360)
       setNamePart += nt + aSMESHGen + ".SetName(" + aName;
       if ( anEntry2AccessorMethod.IsBound( anEntry ) )
         setNamePart += helper + "." + anEntry2AccessorMethod( anEntry );
@@ -1204,7 +1229,7 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
     //Output the script that sets up the visual parameters.
     CORBA::String_var compDataType = ComponentDataType();
     CORBA::String_var script = theStudy->GetDefaultScript( compDataType.in(), tab.ToCString() );
-    if ( script.in() && script[0] ) {
+    if ( script.in() && script.in()[0] ) {
       visualPropertiesPart += nt + "### Store presentation parameters of displayed objects\n";
       visualPropertiesPart += script.in();
     }