]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
bos #42143 [CEA] Structured CGNS: wrong groups exported from savec hdf 42143_warningBox
authorEsukhareva <ekaterina.sukhareva@opencascade.com>
Fri, 22 Nov 2024 14:51:32 +0000 (14:51 +0000)
committerEsukhareva <ekaterina.sukhareva@opencascade.com>
Fri, 22 Nov 2024 14:51:32 +0000 (14:51 +0000)
src/Driver/Driver_Mesh.h
src/SMESH/SMESH_Mesh.cxx

index 7293e22846dc7831018d93500d5f0747f1d42c54..6f429d22e399f40f1d40cc62e282fa2310bf458b 100644 (file)
@@ -52,13 +52,14 @@ class MESHDRIVER_EXPORT Driver_Mesh
 
   enum Status {
     DRS_OK,
-    DRS_EMPTY,           // a file contains no mesh with the given name
-    DRS_WARN_RENUMBER,   // a file has overlapped ranges of element numbers,
-                         // so the numbers from the file are ignored
-    DRS_WARN_SKIP_ELEM,  // some elements were skipped due to incorrect file data
-    DRS_WARN_DESCENDING, // some elements were skipped due to descending connectivity
-    DRS_FAIL,            // general failure (exception etc.)
-    DRS_TOO_LARGE_MESH   // mesh is too large for export
+    DRS_EMPTY,               // a file contains no mesh with the given name
+    DRS_WARN_RENUMBER,       // a file has overlapped ranges of element numbers,
+                             // so the numbers from the file are ignored
+    DRS_WARN_SKIP_ELEM,      // some elements were skipped due to incorrect file data
+    DRS_WARN_DESCENDING,     // some elements were skipped due to descending connectivity
+    DRS_WARN_NO_STRUCT_GRID, // have no filled structured grid, probably loaded from the hdf file, need recompute
+    DRS_FAIL,                // general failure (exception etc.)
+    DRS_TOO_LARGE_MESH       // mesh is too large for export
   };
 
   void                SetMeshId(int theMeshId);
index 8d545cc58155d5a2427824b476fa03ca486c54d5..3d6aa687350b35c546ae94346a5438188ad7768d 100644 (file)
@@ -1702,8 +1702,10 @@ void SMESH_Mesh::ExportStructuredCGNS(const char * file, const SMESHDS_Mesh* mes
 #ifdef WITH_CGNS
   auto myMesh =  meshPart ? (SMESHDS_Mesh*) meshPart : _meshDS;
   
-  if ( myMesh->HasSomeStructuredGridFilled() )
-  {
+  if ( !myMesh->HasSomeStructuredGridFilled() ){
+    res = Driver_Mesh::DRS_WARN_NO_STRUCT_GRID;
+  }
+  else{
     DriverStructuredCGNS_Write writer;
     writer.SetFile( file );
     writer.SetMesh( const_cast<SMESHDS_Mesh*>( myMesh ));
@@ -1728,6 +1730,12 @@ void SMESH_Mesh::ExportStructuredCGNS(const char * file, const SMESHDS_Mesh* mes
     std::cout << "\n\n\n Going into too large mesh file path\n\n\n\n";
     throw TooLargeForExport("CGNS");
   }
+  else if( res == Driver_Mesh::DRS_WARN_NO_STRUCT_GRID )
+  {
+     throw SALOME_Exception("The mesh does not contain a structured grid. If you are attempting to export "
+      "a quadrilateral mesh loaded from an HDF file, please perform a Clean + Compute operation before exporting. "
+      "This step is necessary due to a current limitation.");
+  }
 
   if ( res != Driver_Mesh::DRS_OK )
     throw SALOME_Exception("Export failed");