Salome HOME
Merge branch 'master' of https://codev-tuleap.cea.fr/plugins/git/salome/smesh
[modules/smesh.git] / src / SMESH_I / SMESH_PythonDump.cxx
index 0204a498a17234c4d6373470aa5e4cf3016ff869..5c9163bf42e3d55b2439accd1f2d58e33f2f5636 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019  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
@@ -426,6 +426,7 @@ namespace SMESH
       case FT_MultiConnection2D:     myStream<< "aMultiConnection2D";     break;
       case FT_Length:                myStream<< "aLength";                break;
       case FT_Length2D:              myStream<< "aLength2D";              break;
+      case FT_Length3D:              myStream<< "aLength3D";              break;
       case FT_Deflection2D:          myStream<< "aDeflection2D";          break;
       case FT_NodeConnectivityNumber:myStream<< "aNodeConnectivityNumber";break;
       case FT_BelongToMeshGroup:     myStream<< "aBelongToMeshGroup";     break;
@@ -540,6 +541,16 @@ namespace SMESH
     DumpArray( theList, *this );
     return *this;
   }
+  TPythonDump& TPythonDump::operator<<(const SMESH::submesh_array& theList)
+  {
+    DumpArray( theList, *this );
+    return *this;
+  }
+  TPythonDump& TPythonDump::operator<<(const SMESH::ListOfHypothesis& theList)
+  {
+    DumpArray( theList, *this );
+    return *this;
+  }
   TPythonDump& TPythonDump::operator<<(const SMESH::CoincidentFreeBorders& theCFB)
   {
     // dump CoincidentFreeBorders as a list of lists, each enclosed list
@@ -678,33 +689,33 @@ namespace SMESH
     cout << "Exception in SMESH_Gen_i::DumpPython(): " << text << endl;
 #endif
   }
-}
 
 //=======================================================================
 //function : RemoveTabulation
 //purpose  : 
 //=======================================================================
-void RemoveTabulation( TCollection_AsciiString& theScript )
-{
-  std::string aString( theScript.ToCString() );
-  std::string::size_type aPos = 0;
-  while( aPos < aString.length() )
+  void RemoveTabulation( TCollection_AsciiString& theScript )
   {
-    aPos = aString.find( "\n\t", aPos );
-    if( aPos == std::string::npos )
-      break;
-    aString.replace( aPos, 2, "\n" );
-    aPos++;
+    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();
   }
-  theScript = aString.c_str();
 }
 
 //=======================================================================
 //function : DumpPython
 //purpose  :
 //=======================================================================
-Engines::TMPFile* SMESH_Gen_i::DumpPython (CORBA::Boolean isPublished,
-                                           CORBA::Boolean isMultiFile,
+Engines::TMPFile* SMESH_Gen_i::DumpPython (CORBA::Boolean  isPublished,
+                                           CORBA::Boolean  isMultiFile,
                                            CORBA::Boolean& isValidScript)
 {
   SALOMEDS::Study_var aStudy = getStudyServant();
@@ -884,25 +895,25 @@ namespace {
     bool isValidName = true;
     int nbUnderscore = 0;
     int p;
-//    // replace not allowed chars by underscore
-//    const char* name = aName.ToCString();
-//    for ( p = 0; name[p]; ++p ) {
-//      if ( !isalnum( name[p] ) && name[p] != '_' )
-//      {
-//        if ( p == 0 || p+1 == aName.Length() || name[p-1] == '_')
-//        {
-//          aName.Remove( p+1, 1 ); // remove __ and _ from the start and the end
-//          --p;
-//          name = aName.ToCString();
-//        }
-//        else
-//        {
-//          aName.SetValue( p+1, '_');
-//          nbUnderscore++;
-//        }
-//        isValidName = false;
-//      }
-//    }
+    // replace not allowed chars by underscore
+    const char* name = aName.ToCString();
+    for ( p = 0; name[p]; ++p ) {
+      if ( !isalnum( name[p] ) && name[p] != '_' )
+      {
+        if ( p == 0 || p+1 == aName.Length() || name[p-1] == '_')
+        {
+          aName.Remove( p+1, 1 ); // remove __ and _ from the start and the end
+          --p;
+          name = aName.ToCString();
+        }
+        else
+        {
+          aName.SetValue( p+1, '_');
+          nbUnderscore++;
+        }
+        isValidName = false;
+      }
+    }
     // aName must not start with a digit
     if ( aName.IsIntegerValue() ) {
       aName.Insert( 1, 'a' );
@@ -991,14 +1002,16 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
   const TCollection_AsciiString anOldGen ( SMESH::TPythonDump::SMESHGenName() );
   const TCollection_AsciiString helper; // to comfortably append C strings to TCollection_AsciiString
   const TCollection_AsciiString tab( isMultiFile ? "\t" : "" ), nt = helper + "\n" + tab;
-
+  TCollection_AsciiString optionalComment;
+  
   std::list< TCollection_AsciiString > lines; // lines of a script
   std::list< TCollection_AsciiString >::iterator linesIt;
   
+  lines.push_back(  aSMESHGen + " = smeshBuilder.New()" );
   if ( isPublished )
-    lines.push_back(  aSMESHGen + " = smeshBuilder.New()" );
-   else
-    lines.push_back(  aSMESHGen + " = smeshBuilder.New(False)" );
+    optionalComment = "#";
+  lines.push_back( optionalComment + aSMESHGen + ".SetEnablePublish( False ) # Set to False to avoid publish in study if not needed or in some particular situations:" );
+  lines.push_back( "                                 # multiples meshes built in parallel, complex and numerous mesh edition (performance)\n" );
   lines.push_back( helper + "aFilterManager = " + aSMESHGen + ".CreateFilterManager()" );
   lines.push_back( helper + "aMeasurements = "  + aSMESHGen + ".CreateMeasurements()" );