Salome HOME
Allow saving groups with non-ascii names.
[modules/smesh.git] / src / DriverMED / DriverMED_R_SMESHDS_Mesh.cxx
index b8d73352b99bac97cfa98667350f9a222664f265..362874425a1428fc38efa13e0fd4d08130a15e86 100644 (file)
@@ -156,7 +156,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
             }
             if(MYDEBUG) MESSAGE(aGroupName);
             if ( strncmp( aGroupName.c_str(), NIG_GROUP_PREFIX, strlen(NIG_GROUP_PREFIX) ) != 0 )
-              aFamily->AddGroupName(aGroupName);
+              aFamily->AddGroupName( fixUTF8( aGroupName ));
           }
           aFamily->SetId( aFamId );
           myFamilies[aFamId] = aFamily;
@@ -273,7 +273,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
             if ( anIsElemNum && !aBallInfo->myElemNum->empty() )
               maxID = *std::max_element( aBallInfo->myElemNum->begin(),
                                          aBallInfo->myElemNum->end() );
-            myMesh->getGrid()->AllocateDiameters( maxID ); // performance optimization
+            myMesh->GetGrid()->AllocateDiameters( maxID ); // performance optimization
 
             // create balls
             SMDS_MeshElement* anElement;
@@ -1038,8 +1038,6 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
     aResult = addMessage( "Unknown exception", /*isFatal=*/true );
   }
 #endif
-  if (myMesh)
-    myMesh->compactMesh();
 
   // Mantis issue 0020483
   if (aResult == DRS_OK && isDescConn) {
@@ -1137,6 +1135,14 @@ void DriverMED_R_SMESHDS_Mesh::GetGroup(SMESHDS_Group* theGroup)
 
   if (( famVecPtr = myGroups2FamiliesMap.ChangeSeek( aGroupName )))
   {
+    size_t groupSize = 0;
+    for ( size_t i = 0; i < famVecPtr->size(); ++i )
+    {
+      DriverMED_FamilyPtr aFamily = (*famVecPtr)[i];
+      groupSize += aFamily->NbElements( theGroup->GetType() );
+    }
+    theGroup->SMDSGroup().Reserve( groupSize );
+
     for ( size_t i = 0; i < famVecPtr->size(); ++i )
     {
       DriverMED_FamilyPtr aFamily = (*famVecPtr)[i];