+ // Read fault entities into groups
+ if ( _makeFaultGroups )
+ {
+
+ const int kes[7][3] = { { GmfFault_SmallTri, SMDSAbs_Face, triaIDShift },
+ { GmfFault_BadShape, SMDSAbs_Face, triaIDShift },
+ { GmfFault_Overlap, SMDSAbs_Face, triaIDShift },
+ { GmfFault_Inter, SMDSAbs_Face, triaIDShift },
+ { GmfFault_NearTri, SMDSAbs_Face, triaIDShift },
+ { GmfFault_FreeEdge, SMDSAbs_Face, triaIDShift },
+ { GmfFault_MultipleEdge, SMDSAbs_Face, triaIDShift }
+ };
+ const char* names[7] = { "Fault_SmallTri",
+ "Fault_BadShape",
+ "Fault_Overlap",
+ "Fault_Inter",
+ "Fault_NearTri",
+ "Fault_FreeEdge",
+ "Fault_MultipleEdge"
+ };
+ for ( int i = 0; i < 7; ++i )
+ {
+ int gmfKwd = kes[i][0];
+ SMDSAbs_ElementType entity = (SMDSAbs_ElementType) kes[i][1];
+ int shift = kes[i][2];
+ if ( int nb = GmfStatKwd(meshID, gmfKwd))
+ {
+ const int newID = *groupIDs.rbegin() + 1;
+ groupIDs.insert( newID );
+ SMESHDS_Group* group = new SMESHDS_Group( newID, myMesh, entity );
+ group->SetStoreName( names[i] );
+ myMesh->AddGroup( group );
+
+ GmfGotoKwd(meshID, gmfKwd);
+ for ( int i = 0; i < nb; ++i )
+ {
+ GmfGetLin(meshID, gmfKwd, &iN[0] );
+ group->Add( shift + iN[0] );
+ }
+ }
+ }
+ }
+
+
+ myMesh->Modified();
+ myMesh->CompactMesh();
+