- SMESH_Actor * anActor = SMESH::FindActorByObject(myMesh);
- if (!anActor)
- anActor = myActor;
- if (anActor != 0)
- {
- // skl 07.02.2006
- SMDS_Mesh* aMesh = myActor->GetObject()->GetMesh();
- if( myFilterType == SMESHGUI_TriaFilter ||
- myFilterType == SMESHGUI_QuadFilter ||
- myFilterType == SMESHGUI_FaceFilter ) {
- SMDS_FaceIteratorPtr it = aMesh->facesIterator();
- while(it->more()) {
- const SMDS_MeshFace* f = it->next();
- if(myFilterType == SMESHGUI_FaceFilter) {
- myIds.Add(f->GetID());
- }
- else if( myFilterType==SMESHGUI_TriaFilter &&
- ( f->NbNodes()==3 || f->NbNodes()==6 ) ) {
- myIds.Add(f->GetID());
- }
- else if( myFilterType==SMESHGUI_QuadFilter &&
- ( f->NbNodes()==4 || f->NbNodes()==8 ) ) {
- myIds.Add(f->GetID());
- }
- }
- }
- else if(myFilterType == SMESHGUI_VolumeFilter) {
- SMDS_VolumeIteratorPtr it = aMesh->volumesIterator();
- while(it->more()) {
- const SMDS_MeshVolume* f = it->next();
- myIds.Add(f->GetID());
- }
- }
- /* commented by skl 07.02.2006
- TVisualObjPtr aVisualObj = anActor->GetObject();
- vtkUnstructuredGrid* aGrid = aVisualObj->GetUnstructuredGrid();
- if (aGrid != 0) {
- for (int i = 0, n = aGrid->GetNumberOfCells(); i < n; i++) {
- vtkCell* aCell = aGrid->GetCell(i);
- if (aCell != 0) {
- vtkTriangle* aTri = vtkTriangle::SafeDownCast(aCell);
- vtkQuad* aQua = vtkQuad::SafeDownCast(aCell);
- vtkPolygon* aPG = vtkPolygon::SafeDownCast(aCell);
-
- vtkCell3D* a3d = vtkCell3D::SafeDownCast(aCell);
- vtkConvexPointSet* aPH = vtkConvexPointSet::SafeDownCast(aCell);
-
- if (aTri && myFilterType == SMESHGUI_TriaFilter ||
- aQua && myFilterType == SMESHGUI_QuadFilter ||
- (aTri || aQua || aPG) && myFilterType == SMESHGUI_FaceFilter ||
- (a3d || aPH) && myFilterType == SMESHGUI_VolumeFilter) {
- int anObjId = aVisualObj->GetElemObjId(i);
- myIds.Add(anObjId);
- }
- }
- }
- }
- */
- }