Salome HOME
Bug PAL8331: REGRESSION import mesh in "MED 2.2" format.
[modules/smesh.git] / src / DriverMED / DriverMED_Family.cxx
index f40810c948fbbf35d8e9904e5c36c1ab42f11cae..80b343e227f762e04e5baf3c4d78e9f5581ebb0c 100644 (file)
@@ -26,6 +26,8 @@
 //  $Header$
 
 #include "DriverMED_Family.h"
 //  $Header$
 
 #include "DriverMED_Family.h"
+#include "MED_Factory.hxx"
+
 #include <sstream>     
 
 using namespace std;
 #include <sstream>     
 
 using namespace std;
@@ -204,22 +206,37 @@ list<DriverMED_FamilyPtr> DriverMED_Family::MakeFamilies
  *  Create TFamilyInfo for this family
  */
 //=============================================================================
  *  Create TFamilyInfo for this family
  */
 //=============================================================================
-MEDA::PFamilyInfo DriverMED_Family::GetFamilyInfo
-                  (const MEDA::PMeshInfo& theMeshInfo) const
+MED::PFamilyInfo 
+DriverMED_Family::GetFamilyInfo(const MED::PWrapper& theWrapper, 
+                               const MED::PMeshInfo& theMeshInfo) const
 {
   string aValue;
 {
   string aValue;
+
   ostringstream aStr;
   ostringstream aStr;
-  aStr << myId;
+
+  aStr << "FAM_" << myId;
+  set<string>::iterator aGrIter = myGroupNames.begin();
+  for (; aGrIter != myGroupNames.end(); aGrIter++)
+  {
+    aStr << "_" << *aGrIter;
+  }
+
   aValue = aStr.str();
   aValue = aStr.str();
+  /*
   MED::TStringVector anAttrDescs (1, "");  // 1 attribute with empty description,
   MED::TIntVector anAttrIds (1, myId);        // Id=0,
   MED::TIntVector anAttrVals (1, myId);       // Value=0
   MED::TStringVector anAttrDescs (1, "");  // 1 attribute with empty description,
   MED::TIntVector anAttrIds (1, myId);        // Id=0,
   MED::TIntVector anAttrVals (1, myId);       // Value=0
-
-  MEDA::PFamilyInfo anInfo = MEDA::TWrapper::CrFamilyInfo(theMeshInfo,
-                                                          aValue,
-                                                          myId,
-                                                          myGroupNames,
-                                                          anAttrDescs,anAttrIds,anAttrVals);
+  */
+  
+  MED::PFamilyInfo anInfo = theWrapper->CrFamilyInfo(theMeshInfo,
+                                                    aValue,
+                                                    myId,
+                                                    myGroupNames);
+/*                                                  
+                                                   anAttrDescs,
+                                                   anAttrIds,
+                                                   anAttrVals);
+*/
 
 //  cout << endl;
 //  cout << "Groups: ";
 
 //  cout << endl;
 //  cout << "Groups: ";
@@ -345,14 +362,16 @@ void DriverMED_Family::Split (DriverMED_FamilyPtr by,
 {
   // Elements
   set<const SMDS_MeshElement *>::iterator anIter = by->myElements.begin();
 {
   // Elements
   set<const SMDS_MeshElement *>::iterator anIter = by->myElements.begin();
-  for (; anIter != by->myElements.end(); anIter++)
+  while ( anIter != by->myElements.end())
   {
     if (myElements.find(*anIter) != myElements.end())
     {
       common->myElements.insert(*anIter);
       myElements.erase(*anIter);
   {
     if (myElements.find(*anIter) != myElements.end())
     {
       common->myElements.insert(*anIter);
       myElements.erase(*anIter);
-      by->myElements.erase(*anIter);
+      by->myElements.erase(anIter++);
     }
     }
+    else
+      anIter++;
   }
 
   if (!common->IsEmpty())
   }
 
   if (!common->IsEmpty())