Salome HOME
Merging from V3_2_6pre4
[modules/smesh.git] / src / DriverMED / DriverMED_W_SMESHDS_Mesh.cxx
index 634accfba901519605222d0dd4e09473207e7f69..1043e55949fb7047fc7a6860accb0b795ffc1440 100644 (file)
@@ -295,17 +295,21 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
 
     // Storing SMDS groups and sub-meshes
     //-----------------------------------
-    int myNodesDefaultFamilyId = 0;
-    int myEdgesDefaultFamilyId = 0;
-    int myFacesDefaultFamilyId = 0;
+    int myNodesDefaultFamilyId   = 0;
+    int myEdgesDefaultFamilyId   = 0;
+    int myFacesDefaultFamilyId   = 0;
     int myVolumesDefaultFamilyId = 0;
-    if (myDoGroupOfNodes)
+    int nbNodes   = myMesh->NbNodes();
+    int nbEdges   = myMesh->NbEdges();
+    int nbFaces   = myMesh->NbFaces();
+    int nbVolumes = myMesh->NbVolumes();
+    if (myDoGroupOfNodes && nbNodes)
       myNodesDefaultFamilyId = REST_NODES_FAMILY;
-    if (myDoGroupOfEdges)
+    if (myDoGroupOfEdges && nbEdges)
       myEdgesDefaultFamilyId = REST_EDGES_FAMILY;
-    if (myDoGroupOfFaces)
+    if (myDoGroupOfFaces && nbFaces)
       myFacesDefaultFamilyId = REST_FACES_FAMILY;
-    if (myDoGroupOfVolumes)
+    if (myDoGroupOfVolumes && nbVolumes)
       myVolumesDefaultFamilyId = REST_VOLUMES_FAMILY;
 
     MESSAGE("Perform - aFamilyInfo");
@@ -314,11 +318,17 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
     if (myAllSubMeshes) {
       aFamilies = DriverMED_Family::MakeFamilies
         (myMesh->SubMeshes(), myGroups,
-         myDoGroupOfNodes, myDoGroupOfEdges, myDoGroupOfFaces, myDoGroupOfVolumes);
+         myDoGroupOfNodes   && nbNodes,
+         myDoGroupOfEdges   && nbEdges,
+         myDoGroupOfFaces   && nbFaces,
+         myDoGroupOfVolumes && nbVolumes);
     } else {
       aFamilies = DriverMED_Family::MakeFamilies
         (mySubMeshes, myGroups,
-         myDoGroupOfNodes, myDoGroupOfEdges, myDoGroupOfFaces, myDoGroupOfVolumes);
+         myDoGroupOfNodes   && nbNodes,
+         myDoGroupOfEdges   && nbEdges,
+         myDoGroupOfFaces   && nbFaces,
+         myDoGroupOfVolumes && nbVolumes);
     }
     list<DriverMED_FamilyPtr>::iterator aFamsIter = aFamilies.begin();
 
@@ -454,7 +464,7 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
         if ( edge_fam != anElemFamMap.end() )
           aFamilyNums->push_back( edge_fam->second );
         else
-          aFamilyNums->push_back( myFacesDefaultFamilyId );
+          aFamilyNums->push_back( myEdgesDefaultFamilyId );
       }
       
       if ( aNbSeg2 ) {
@@ -987,9 +997,11 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
   }
   catch(const std::exception& exc) {
     INFOS("Follow exception was cought:\n\t"<<exc.what());
+    throw;
   }
   catch(...) {
     INFOS("Unknown exception was cought !!!");
+    throw;
   }
 
   myMeshId = -1;