Salome HOME
21680: EDF 2288 SMESH: creation of 0D elements from other elements
[modules/smesh.git] / src / DriverGMF / DriverGMF_Write.cxx
index 78f414b43aeb08d1422aec3cc81fa6799a782172..cdddd629d11af0c0ba9f1c03ccef63eb5b2f5d95 100644 (file)
@@ -282,37 +282,35 @@ Driver_Mesh::Status DriverGMF_Write::Perform()
 
     // choose a TElem2IDMap
     TElem2IDMap* elem2IDMap = 0;
-    if ( smdsEntity == SMDSEntity_Quadrangle &&
-         myMesh->GetMeshInfo().NbEntities( smdsEntity ) != myMesh->NbFaces() )
+    if ( smdsEntity == SMDSEntity_Quadrangle && nbOkElems != myMesh->NbFaces() )
       elem2IDMap = & quad2IDMap;
-    else if ( smdsEntity == SMDSEntity_Triangle &&
-              myMesh->GetMeshInfo().NbEntities( smdsEntity ) != myMesh->NbFaces() )
+    else if ( smdsEntity == SMDSEntity_Triangle && nbOkElems != myMesh->NbFaces() )
       elem2IDMap = & tria2IDMap;
-    else if ( smdsEntity == SMDSEntity_Edge &&
-              myMesh->GetMeshInfo().NbEntities( smdsEntity ) != myMesh->NbEdges() )
+    else if ( smdsEntity == SMDSEntity_Edge && nbOkElems != myMesh->NbEdges() )
       elem2IDMap = & edge2IDMap;
 
     // write the group
     GmfSetKwd( meshID, gmfKwd, nbOkElems );
+    elemIt = group->GetElements();
     if ( elem2IDMap )
-      for ( elemIt = group->GetElements(); elemIt->more(); )
+      for ( ; elemIt->more(); )
       {
         const SMDS_MeshElement* elem = elemIt->next();
         if ( elem->GetEntityType() == smdsEntity )
           GmfSetLin( meshID, gmfKwd, (*elem2IDMap)[ elem ] );
       }
     else
-      for ( elemIt = group->GetElements(); elemIt->more(); )
+      for ( int gmfID = 1; elemIt->more(); ++gmfID)
       {
         const SMDS_MeshElement* elem = elemIt->next();
         if ( elem->GetEntityType() == smdsEntity )
-          GmfSetLin( meshID, gmfKwd, elem->GetID() );
+          GmfSetLin( meshID, gmfKwd, gmfID );
       }
 
   } // loop on groups
 
   if ( !badGroups.empty() )
-    addMessage( SMESH_Comment("Groups including elements of inappropriate geometry:")
+    addMessage( SMESH_Comment("Groups of elements of inappropriate geometry:")
                 << badGroups, /*fatal=*/false );
 
   return DRS_OK;