Salome HOME
21680: EDF 2288 SMESH: creation of 0D elements from other elements
[modules/smesh.git] / src / DriverGMF / DriverGMF_Write.cxx
index d65f950b525b57006dd058ad8d5691129c0d8e0f..cdddd629d11af0c0ba9f1c03ccef63eb5b2f5d95 100644 (file)
@@ -282,31 +282,29 @@ 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