]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To improve Group to Family bindings
authorapo <apo@opencascade.com>
Tue, 30 Aug 2005 13:17:24 +0000 (13:17 +0000)
committerapo <apo@opencascade.com>
Tue, 30 Aug 2005 13:17:24 +0000 (13:17 +0000)
src/CONVERTOR/VISUConvertor.cxx
src/CONVERTOR/VISU_Convertor.hxx
src/CONVERTOR/VISU_Convertor_impl.cxx
src/CONVERTOR/VISU_Convertor_impl.hxx
src/CONVERTOR/VISU_MedConvertor.cxx
src/CONVERTOR/VISU_MedConvertor.hxx
src/VISU_I/VISU_CorbaMedConvertor.cxx
src/VISU_I/VISU_CorbaMedConvertor.hxx
src/VISU_I/VISU_Mesh_i.cc
src/VISU_I/VISU_Result_i.cc

index 34c4de0b3a739756721e764291492a64e7378e13..b789f480e0f61609e69a378d3ad9ce6ae6f984d2 100644 (file)
@@ -111,7 +111,7 @@ void parseFile(const char* theFileName)
        VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin();
        for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
          const string& aFamilyName = aFamilyMapIter->first;
-         aCon->GetMeshOnEntity(aMeshName,anEntity,aFamilyName);
+         aCon->GetFamilyOnEntity(aMeshName,anEntity,aFamilyName);
        }
       }
 
index f788a3e581185ebf27a65029a7544fd50abae721..dcf3b10c06674a583c587bd8cb1985572e08be4e 100644 (file)
 #include "MED_Vector.hxx"
 
 #include <vtkSystemIncludes.h>
-//pkv f
-class vtkCell;
-//pkv t
+
 class vtkUnstructuredGrid;
+class vtkCell;
 
 namespace VISU
 {
@@ -145,7 +144,6 @@ namespace VISU
     vtkIdType 
     GetElemObjID(int theVtkI) const = 0;
 
-    //pkv f
     virtual
     vtkCell* 
     GetElemCell(int theObjID) = 0;
@@ -153,7 +151,6 @@ namespace VISU
     virtual
     float* 
     GetNodeCoord(int theObjID) = 0;
-    //pkv t
   };
 
 
@@ -220,16 +217,17 @@ namespace VISU
   struct TFamily: virtual TIntId
   {
     TEntity myEntity;
+    TName myName;
   };
 
 
   //---------------------------------------------------------------
   typedef std::pair<TName,TEntity> TFamilyAndEntity;
-  typedef std::set<TFamilyAndEntity> TFamilyAndEntitySet;
+  typedef std::set<PFamily> TFamilySet;
 
   struct TGroup: virtual TBaseStructure
   {
-    TFamilyAndEntitySet myFamilyAndEntitySet;
+    TFamilySet myFamilySet;
   };
 
 
@@ -320,15 +318,23 @@ public:
   virtual
   TOutput* 
   GetMeshOnEntity(const std::string& theMeshName, 
-                 const VISU::TEntity& theEntity,
-                 const std::string& theFamilyName = "") = 0;
+                 const VISU::TEntity& theEntity) = 0;
   
+  virtual 
+  TOutput* 
+  GetFamilyOnEntity(const std::string& theMeshName, 
+                   const VISU::TEntity& theEntity,
+                   const std::string& theFamilyName) = 0;
   virtual
   float
   GetMeshOnEntitySize(const std::string& theMeshName, 
-                     const VISU::TEntity& theEntity,
-                     const std::string& theFamilyName = "") = 0;
+                     const VISU::TEntity& theEntity) = 0;
   
+  virtual 
+  float 
+  GetFamilyOnEntitySize(const std::string& theMeshName, 
+                       const VISU::TEntity& theEntity,
+                       const std::string& theFamilyName) = 0;
   virtual
   TOutput*
   GetMeshOnGroup(const std::string& theMeshName, 
index acac4c18127b4c08de2d0a3df721925519b45944..e552fd7fe4ec543650a07e9afc7f06a5979feaf6 100644 (file)
@@ -759,33 +759,28 @@ namespace
   void
   GetCellsOnGroup(const TVTKSource& theSource,
                  const PMeshImpl& theMesh,
-                 const TFamilyAndEntitySet& theFamilyAndEntitySet) 
+                 const TFamilySet& theFamilySet) 
   {
     //Calculate dimentions of the group
     INITMSG(MYDEBUG,"GetCellsOnGroup\n");
     int aNbCells = 0, aCellsSize = 0;
-    VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-    for(; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-      const VISU::TFamilyAndEntity& aFamilyAndEntity = *aFamilyAndEntitySetIter;
-      const string& aFamilyName = aFamilyAndEntity.first;
-      VISU::TEntity anEntity = aFamilyAndEntity.second;
-      VISU::PMeshOnEntityImpl aMeshOnEntity = theMesh->myMeshOnEntityMap[anEntity];
-      pair<int,int> aCellsDim = aMeshOnEntity->GetCellsDims(aFamilyName);
-      aNbCells += aCellsDim.first;
-      aCellsSize += aCellsDim.second;
+    VISU::TFamilySet::const_iterator aFamilyIter = theFamilySet.begin();
+    for(; aFamilyIter != theFamilySet.end(); aFamilyIter++){
+      VISU::PFamilyImpl aFamily = *aFamilyIter;
+      aCellsSize += aFamily->myCellsSize;
+      aNbCells += aFamily->myNbCells;
     }
     vtkCellArray* aConnectivity = vtkCellArray::New();
     aConnectivity->Allocate(aCellsSize,0);
     vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
     aCellTypesArray->SetNumberOfComponents(1);
     aCellTypesArray->SetNumberOfTuples(aNbCells);
-    aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-    for(int i = 0, j = 0; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-      const VISU::TFamilyAndEntity& aFamilyAndEntity = *aFamilyAndEntitySetIter;
-      const string& aFamilyName = aFamilyAndEntity.first;
-      const VISU::TEntity& anEntity = aFamilyAndEntity.second;
+    aFamilyIter = theFamilySet.begin();
+    for(int i = 0, j = 0; aFamilyIter != theFamilySet.end(); aFamilyIter++){
+      VISU::PFamilyImpl aFamily = *aFamilyIter;
+      const std::string& aFamilyName = aFamily->myName;
+      const VISU::TEntity& anEntity = aFamily->myEntity;
       PMeshOnEntityImpl aMeshOnEntity = theMesh->myMeshOnEntityMap[anEntity];
-      PFamilyImpl aFamily = GetFamily(aMeshOnEntity,aFamilyName);
       const VISU::TGeom2Cell2Connect &aGeom2Cell2Connect = aMeshOnEntity->myGeom2Cell2Connect;
       VISU::TGeom2Cell2Connect::const_iterator aGeom2Cell2ConnectIter = aGeom2Cell2Connect.begin();
       for(; aGeom2Cell2ConnectIter != aGeom2Cell2Connect.end(); aGeom2Cell2ConnectIter++){
@@ -1330,23 +1325,9 @@ VISU_Convertor_impl
 VISU_Convertor::TOutput* 
 VISU_Convertor_impl
 ::GetMeshOnEntity(const string& theMeshName, 
-                 const VISU::TEntity& theEntity,
-                 const string& theFamilyName)
+                 const VISU::TEntity& theEntity)
 {
-  if(theFamilyName == "")
-    return GetMeshOnEntity2(theMeshName,theEntity);
-  else
-    return GetFamilyOnEntity(theMeshName,theEntity,theFamilyName);
-}
-
-
-//---------------------------------------------------------------
-VISU_Convertor::TOutput* 
-VISU_Convertor_impl
-::GetMeshOnEntity2(const string& theMeshName, 
-                  const VISU::TEntity& theEntity)
-{
-  INITMSG(MYDEBUG,"GetMeshOnEntity2"<<
+  INITMSG(MYDEBUG,"GetMeshOnEntity"<<
          "; theMeshName = '"<<theMeshName<<"'"<<
          "; theEntity = "<<theEntity<<
          endl);
@@ -1440,7 +1421,7 @@ VISU_Convertor_impl
     }
 
     if(MYVTKDEBUG){
-      GetMeshOnEntitySize(theMeshName,theEntity,theFamilyName);
+      GetFamilyOnEntitySize(theMeshName,theEntity,theFamilyName);
       PrintMemorySize(aSource.GetPointer());
     }
 
@@ -1470,7 +1451,7 @@ VISU_Convertor_impl
   TFindMeshOnGroup aFindMeshOnGroup = FindMeshOnGroup(theMeshName,theGroupName);
   PMeshImpl aMesh = boost::get<0>(aFindMeshOnGroup);
   PGroupImpl aGroup = boost::get<1>(aFindMeshOnGroup);
-  const VISU::TFamilyAndEntitySet& aFamilyAndEntitySet = aGroup->myFamilyAndEntitySet;
+  const VISU::TFamilySet& aFamilySet = aGroup->myFamilySet;
 
   //Main part of code
   const TVTKSource& aSource = aGroup->GetSource();
@@ -1478,16 +1459,16 @@ VISU_Convertor_impl
   try{
 #endif
     if(!aGroup->myIsVTKDone){
-      LoadMeshOnGroup(aMesh,aFamilyAndEntitySet);
+      LoadMeshOnGroup(aMesh,aFamilySet);
       GetPoints(aSource,aMesh);
-      GetCellsOnGroup(aSource,aMesh,aFamilyAndEntitySet);
+      GetCellsOnGroup(aSource,aMesh,aFamilySet);
 
       aGroup->myIsVTKDone = true;
 
       if(MYDEBUGWITHFILES){
-       string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
-       string aGroupName = QString(theGroupName.c_str()).simplifyWhiteSpace().latin1();
-       string aFileName = string("/users/")+getenv("USER")+"/"+getenv("USER")+"-";
+       std::string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
+       std::string aGroupName = QString(theGroupName.c_str()).simplifyWhiteSpace().latin1();
+       std::string aFileName = string("/users/")+getenv("USER")+"/"+getenv("USER")+"-";
        aFileName += aMeshName + "-" + aGroupName + "-Conv.vtk";
        VISU::WriteToFile(aSource.GetPointer(),aFileName);
       }
@@ -1803,7 +1784,7 @@ VISU_Convertor_impl
       VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin();
       for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
        const string& aFamilyName = aFamilyMapIter->first;
-       aResult += GetMeshOnEntitySize(aMeshName,anEntity,aFamilyName);
+       aResult += GetFamilyOnEntitySize(aMeshName,anEntity,aFamilyName);
       }
       //Import mesh on entity
       aResult += GetMeshOnEntitySize(aMeshName,anEntity);
@@ -1818,21 +1799,7 @@ VISU_Convertor_impl
 float
 VISU_Convertor_impl
 ::GetMeshOnEntitySize(const std::string& theMeshName, 
-                     const VISU::TEntity& theEntity,
-                     const std::string& theFamilyName)
-{
-  if(theFamilyName == "")
-    return GetMeshOnEntitySize2(theMeshName,theEntity);
-  else
-    return GetFamilyOnEntitySize(theMeshName,theEntity,theFamilyName);
-}
-
-
-//---------------------------------------------------------------
-float
-VISU_Convertor_impl
-::GetMeshOnEntitySize2(const std::string& theMeshName, 
-                      const VISU::TEntity& theEntity)
+                     const VISU::TEntity& theEntity)
 {
   TFindMeshOnEntity aFindMeshOnEntity = 
     FindMeshOnEntity(theMeshName,theEntity);
@@ -1853,7 +1820,7 @@ VISU_Convertor_impl
   aLinksSize = 0;
   vtkIdType aResult = aPointsSize + aConnectivitySize + aTypesSize + aLocationsSize + aLinksSize;
 
-  MSG(MYDEBUG,"GetMeshOnEntitySize2 "<<
+  MSG(MYDEBUG,"GetMeshOnEntitySize "<<
       "- aResult = "<<float(aResult)<<
       "; theMeshName = '"<<theMeshName<<"'"<<
       "; theEntity = "<<theEntity);
index 26de9e714a5171185c3d6ade4e483ba8bf1771a0..cd4ec772a41271b68858470a6b67849f035f974b 100644 (file)
@@ -393,12 +393,6 @@ public:
   virtual 
   float 
   GetMeshOnEntitySize(const std::string& theMeshName, 
-                     const VISU::TEntity& theEntity,
-                     const std::string& theFamilyName = "");
-
-  virtual 
-  float 
-  GetMeshOnEntitySize2(const std::string& theMeshName, 
                       const VISU::TEntity& theEntity);
 
   virtual 
@@ -450,13 +444,7 @@ public:
   virtual 
   TOutput* 
   GetMeshOnEntity(const std::string& theMeshName, 
-                 const VISU::TEntity& theEntity,
-                 const std::string& theFamilyName = "");
-
-  virtual 
-  TOutput* 
-  GetMeshOnEntity2(const std::string& theMeshName, 
-                  const VISU::TEntity& theEntity);
+                 const VISU::TEntity& theEntity);
 
   virtual 
   TOutput* 
@@ -551,7 +539,7 @@ protected:
   virtual 
   int
   LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                 const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet) = 0;
+                 const VISU::TFamilySet& theFamilySet) = 0;
 
   virtual 
   int
index c6f13fe70c7cd8927981081b93750bfabd79228c..95daccbd5395fdf2b203eaf20a44b7b7e6f06389 100644 (file)
@@ -643,6 +643,7 @@ namespace
        PMEDFamily aFamily = aFamilyMap[aFamilyName](new TMEDFamily());
        aFamily->myId = anId;
        aFamily->myEntity = aVEntity;
+       aFamily->myName = aFamilyName;
        aFamily->myNbCells = aSize;
 
        aFamily->myCellsSize = 0;
@@ -686,7 +687,8 @@ namespace
       INITMSG(MY_GROUP_DEBUG,"aGroupName = '"<<aGroupName<<"'\n");
 
       PMEDGroup aGroup(new TMEDGroup());
-      
+      TFamilySet& aFamilySet = aGroup->myFamilySet;
+
       const MED::TFamilyInfoSet& aFamilyInfoSet = aGroupInfoIter->second;
       MED::TFamilyInfoSet::const_iterator aFamilyIter = aFamilyInfoSet.begin();
       for(; aFamilyIter != aFamilyInfoSet.end(); aFamilyIter++){
@@ -711,10 +713,10 @@ namespace
              goto exit_lable;
            }
          }
-       }
+       } 
       exit_lable:
        if(aFamily && aVEntity >= 0){
-         aGroup->myFamilyAndEntitySet.insert(TFamilyAndEntity(aFamilyName,aVEntity));
+         aFamilySet.insert(aFamily);
          INITMSG(MY_GROUP_DEBUG,
                  "- aFamilyName = '"<<aFamilyName<<"'"<<
                  "; aVEntity = "<<aVEntity<<
@@ -724,7 +726,7 @@ namespace
          aGroup->myCellsSize += aFamily->myCellsSize;
        }
       }
-      if(!aGroup->myFamilyAndEntitySet.empty() && aGroup->myNbCells > 0){
+      if(!aFamilySet.empty() && aGroup->myNbCells > 0){
        BEGMSG(MY_GROUP_DEBUG,
               "- myNbCells = "<<aGroup->myNbCells<<
               "; myCellsSize = "<<aGroup->myCellsSize<<
@@ -915,16 +917,15 @@ VISU_MedConvertor
 int
 VISU_MedConvertor
 ::LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                 const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet)
+                 const VISU::TFamilySet& theFamilySet)
 {
   MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
   int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
-  TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-  for(; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-    const std::string& aFamilyName = aFamilyAndEntitySetIter->first;
-    const TEntity& anEntity = aFamilyAndEntitySetIter->second;
+  TFamilySet::const_iterator aFamilyIter = theFamilySet.begin();
+  for(; aFamilyIter != theFamilySet.end(); aFamilyIter++){
+    PMEDFamily aFamily = *aFamilyIter;
+    const TEntity& anEntity = aFamily->myEntity;
     const PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[anEntity];
-    PMEDFamily aFamily = VISU::GetFamily(aMeshOnEntity,aFamilyName);
     if(anEntity == NODE_ENTITY){
       isPointsUpdated += LoadPointsOnFamily(aMed,theMesh,aFamily);
     }else{
index 35d903fea2a34d5bd6f7c161898c4133edd700ca..d63622095174d67ec1ab8abd6d538f024e1296fa 100644 (file)
@@ -137,7 +137,7 @@ protected:
   virtual
   int
   LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                 const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet);
+                 const VISU::TFamilySet& theFamilySet);
   
   virtual
   int
index 0b04fbe529cbcad475308bf16094db1931ed3e75..56f5c2b3ce3ddf39a842f29c09b2e868e461d889 100644 (file)
@@ -668,7 +668,7 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
 
          PCGroup aGroup(new TCGroup());
          aGroup->myGroup = aMEDGroup;
-         VISU::TFamilyAndEntitySet& aFamilyAndEntitySet = aGroup->myFamilyAndEntitySet;
+         VISU::TFamilySet& aFamilySet = aGroup->myFamilySet;
          
          SALOME_MED::Family_array_var aFamilies = aMEDGroup->getFamilies();
          int iFamilyEnd = aFamilies->length();
@@ -678,15 +678,14 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
            PCFamily aFamily = FindFamily(aMesh,aFamilyName.in());
            if(MYDEBUG) MESSAGE("VISU_MEDConvertor::Build - aGroup - aFamilyName = '"<<aFamilyName.in()<<"' = "<<bool(aFamily));
            if(aFamily){
-             TFamilyAndEntity aFamilyAndEntity(aFamilyName.in(),aFamily->myEntity);
-             aFamilyAndEntitySet.insert(aFamilyAndEntity);
+             aFamilySet.insert(aFamily);
              
              aGroup->myNbCells += aFamily->myNbCells;
              aGroup->myCellsSize += aFamily->myCellsSize;
            }
          }
          
-         if(!aGroup->myFamilyAndEntitySet.empty()){
+         if(!aFamilySet.empty()){
            TGroupMap& aGroupMap = aMesh->myGroupMap;
            aGroupMap[aSupportName.in()] = aGroup;
          }
@@ -907,17 +906,16 @@ VISU_MEDConvertor
 int 
 VISU_MEDConvertor
 ::LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                 const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet)
+                 const VISU::TFamilySet& theFamilySet)
 {
   //Main part of code
   int isPointsUpdated = 0;
   int isCellsOnEntityUpdated = 0;
-  VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-  for(; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-    const string& aFamilyName = aFamilyAndEntitySetIter->first;
-    const VISU::TEntity& aVEntity = aFamilyAndEntitySetIter->second;
+  TFamilySet::const_iterator aFamilyIter = theFamilySet.begin();
+  for(; aFamilyIter != theFamilySet.end(); aFamilyIter++){
+    PCFamily aFamily = *aFamilyIter;
+    const VISU::TEntity& aVEntity = aFamily->myEntity;
     PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[aVEntity];
-    PCFamily aFamily = VISU::GetFamily(aMeshOnEntity,aFamilyName);
     if(aVEntity == VISU::NODE_ENTITY){
       isPointsUpdated += LoadPointsOnFamily(theMesh,aFamily);
       isCellsOnEntityUpdated += LoadCellsOnEntity(theMesh,aMeshOnEntity);
index f6f3b7d790ec12a318a57a5c52851ca439d8b6a0..b0282c7514cd83c3100fb5ef31620f318ec4ef41 100644 (file)
@@ -124,7 +124,7 @@ class VISU_MEDConvertor: public VISU_Convertor_impl{
   virtual
   int
   LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                 const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet);
+                 const VISU::TFamilySet& theFamilySet);
 
   virtual 
   int
index 6d8851026cffc5f8d9b7b9b16bb237ee8807cdaf..10462c6a3cd5d8936b1e905e27c21affc730bd4b 100644 (file)
@@ -92,7 +92,7 @@ int VISU::Mesh_i::IsPossible (Result_i* theResult, const char* theMeshName,
   try{
     MESSAGE("Mesh_i::IsPossible - theMeshName = '"<<theMeshName<<"'; theEntity = "<<theEntity<<"; theFamilyName = '"<<theFamilyName<<"'");
     float aSize = INCMEMORY*
-      theResult->GetInput()->GetMeshOnEntitySize(theMeshName,(VISU::TEntity)theEntity,theFamilyName);
+      theResult->GetInput()->GetMeshOnEntitySize(theMeshName,(VISU::TEntity)theEntity);
     bool aResult = VISU_PipeLine::CheckAvailableMemory(aSize);
     MESSAGE("Mesh_i::IsPossible - CheckAvailableMemory = "<<float(aSize)<<"; aResult = "<<aResult);
     return aResult;
@@ -235,8 +235,7 @@ VISU::Storable* VISU::Mesh_i::Build (int theRestoring)
       break;
     case VISU::TFAMILY :
       //jfa IPAL9284:anOutput = myResult->GetInput()->GetMeshOnEntity(myMeshName,myEntity,mySubMeshName);
-      anOutput = myResult->GetInput()->GetMeshOnEntity
-        (myMeshName,(VISU::TEntity)myEntity,mySubMeshName);//jfa IPAL9284
+      anOutput = myResult->GetInput()->GetFamilyOnEntity(myMeshName,(VISU::TEntity)myEntity,mySubMeshName);//jfa IPAL9284
       aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s",
                       VISU::TFAMILY,myMeshName.c_str(),myEntity,mySubMeshName.c_str());
       break;
index 359aea091d4f8d62c4c04eecd392897060ea3b11..cceb492bebf0b23781c9f6016ee8110dad2110e6 100644 (file)
@@ -218,7 +218,7 @@ BuildAll()
        for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
          const string& aFamilyName = aFamilyMapIter->first;
          try{
-           myInput->GetMeshOnEntity(aMeshName,anEntity,aFamilyName);
+           myInput->GetFamilyOnEntity(aMeshName,anEntity,aFamilyName);
          }catch(std::exception& exc){
            INFOS("Follow exception was occured :\n"<<exc.what());
          }catch(...){
@@ -361,12 +361,12 @@ Build(SALOMEDS::SObject_ptr theSObject)
          string aGroupEntry = CreateAttributes(myStudyDocument,aGroupsEntry.c_str(),aRefFatherEntry.c_str(),
                                                "",aGroupName.c_str(),"",aComment.latin1(),true);
          const VISU::PGroup aGroup = aGroupMapIter->second;
-         const VISU::TFamilyAndEntitySet& aFamilyAndEntitySet = aGroup->myFamilyAndEntitySet;
-         VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = aFamilyAndEntitySet.begin();
-         for(; aFamilyAndEntitySetIter != aFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-           const VISU::TFamilyAndEntity& aFamilyAndEntity = *aFamilyAndEntitySetIter;
-           const string& aFamilyName = aFamilyAndEntity.first;
-           const VISU::TEntity& anEntity = aFamilyAndEntity.second;
+         const VISU::TFamilySet& aFamilySet = aGroup->myFamilySet;
+         VISU::TFamilySet::const_iterator aFamilyIter = aFamilySet.begin();
+         for(; aFamilyIter != aFamilySet.end(); aFamilyIter++){
+           const VISU::PFamily& aFamily = *aFamilyIter;
+           const string& aFamilyName = aFamily->myName;
+           const VISU::TEntity& anEntity = aFamily->myEntity;
            aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s",
                             VISU::TFAMILY,
                             aMeshName.c_str(),