]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
0020483: Mesh with descending connectivity. Fix for the case when the same entities... NEWBOP_OCCdev_74f764ba61 V6_main_20130321 V6_main_20130322 V6_main_20130326 V6_main_20130327 V6_main_20130328 V6_main_20130329 mergeto_V7_main_19Mar13
authorjfa <jfa@opencascade.com>
Tue, 19 Mar 2013 10:23:02 +0000 (10:23 +0000)
committerjfa <jfa@opencascade.com>
Tue, 19 Mar 2013 10:23:02 +0000 (10:23 +0000)
src/CONVERTOR/VISU_MedConvertor.cxx

index ffe4cbc8a37efe904618a62ed0267db21834208e..c779f00a9facc871676aebc96ad08dc0ce220484 100644 (file)
@@ -18,7 +18,6 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
 
 //  VISU OBJECT : interactive object for VISU entities implementation
 //  File   : VISU_MedConvertor.cxx
@@ -41,6 +40,8 @@
 #define NO_CAS_CATCH
 #endif
 
+#include <NCollection_Map.hxx>
+
 #include <Standard_Failure.hxx>
 
 #ifdef NO_CAS_CATCH
@@ -1436,9 +1437,11 @@ VISU_MedConvertor
   TInt aNbMeshes = myMed->GetNbMeshes();
   VISU::TMeshMap& aMeshMap = myMeshMap;
 
+  bool isDescConn = false; // Mantis issue 0020483
+
   INITMSG(MYDEBUG,"BuildEntities aNbMeshes = "<<aNbMeshes<<"\n");
 
-  for(TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++){
+  for (TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++) {
 #ifndef _DEXCEPT_
     try{
 #endif
@@ -1469,18 +1472,25 @@ VISU_MedConvertor
           aMesh->myEntityInfo = anEntityInfo;
 
           // Check connectivity (Mantis issue 0020483)
-          {
-            bool isDescConn = false;
+          if (!isDescConn) {
+            NCollection_Map<MED::EEntiteMaillage> aDescendingEntitiesMap;
 
             MED::TEntityInfo aEntityInfoDesc = myMed->GetEntityInfo(aMeshInfo, MED::eDESC);
             MED::TEntityInfo::iterator anEntityIterDesc = aEntityInfoDesc.begin();
-            for (; anEntityIterDesc != aEntityInfoDesc.end() && !isDescConn; anEntityIterDesc++) {
+            //for (; anEntityIterDesc != aEntityInfoDesc.end() && !isDescConn; anEntityIterDesc++) {
+            for (; anEntityIterDesc != aEntityInfoDesc.end(); anEntityIterDesc++) {
               const MED::EEntiteMaillage& anEntity = anEntityIterDesc->first;
-              if (anEntity != MED::eNOEUD) isDescConn = true;
+              aDescendingEntitiesMap.Add(anEntity);
+              //if (anEntity != MED::eNOEUD) isDescConn = true;
+            }
+            MED::TEntityInfo aEntityInfo = myMed->GetEntityInfo(aMeshInfo, MED::eNOD);
+            MED::TEntityInfo::iterator anEntityIter = aEntityInfo.begin();
+            for (; anEntityIter != aEntityInfo.end(); anEntityIter++) {
+              const MED::EEntiteMaillage& anEntity = anEntityIter->first;
+              aDescendingEntitiesMap.Remove(anEntity);
             }
 
-            if (isDescConn)
-              INFOS("There are some elements in descending connectivity in med file. They were not read !!!");
+            if (aDescendingEntitiesMap.Extent()) isDescConn = true;
           }
 
 #ifndef _DEXCEPT_
@@ -1544,7 +1554,11 @@ VISU_MedConvertor
       MSG(MYDEBUG,"Unknown exception !!!");
     }
 #endif
-  } 
+  }
+
+  // Mantis issue 0020483
+  if (isDescConn)
+    INFOS("There are some elements in descending connectivity in med file. They were not read !!!");
 
   return this; 
 }