- const SMESHDS_GroupBase* group = *grIt;
- std::string groupName = group->GetStoreName();
- std::string::size_type pos = groupName.find( "_required_" );
- if ( pos == std::string::npos ) continue;
-
- int gmfKwd;
- SMDSAbs_EntityType smdsEntity;
- std::string entity = groupName.substr( pos + strlen("_required_"));
- if ( entity == "Vertices" ) {
- gmfKwd = GmfRequiredVertices;
- smdsEntity = SMDSEntity_Node;
- }
- else if ( entity == "Edges" ) {
- gmfKwd = GmfRequiredEdges;
- smdsEntity = SMDSEntity_Edge;
- }
- else if ( entity == "Triangles" ) {
- gmfKwd = GmfRequiredTriangles;
- smdsEntity = SMDSEntity_Triangle;
- }
- else if ( entity == "Quadrilaterals" ) {
- gmfKwd = GmfRequiredQuadrilaterals;
- smdsEntity = SMDSEntity_Quadrangle;
- }
- else {
- addMessage( SMESH_Comment("Invalig gmf entity name: ") << entity, /*fatal=*/false );
- continue;
- }
-
- // check elem type in the group
- int nbOkElems = 0;
- SMDS_ElemIteratorPtr elemIt = group->GetElements();
- while ( elemIt->more() )
- nbOkElems += ( elemIt->next()->GetEntityType() == smdsEntity );
-
- if ( nbOkElems != group->Extent() && nbOkElems == 0 )
+ // required entities
+ SMESH_Comment badGroups;
+ const std::set<SMESHDS_GroupBase*>& groupSet = myMesh->GetGroups();
+ std::set<SMESHDS_GroupBase*>::const_iterator grIt = groupSet.begin();
+ for ( ; grIt != groupSet.end(); ++grIt )