Salome HOME
This commit was generated by cvs2git to track changes on a CVS vendor
[modules/smesh.git] / src / SMESHFiltersSelection / SMESH_TypeFilter.cxx
1 using namespace std;
2 //  File      : SMESH_TypeFilter.cxx
3 //  Created   : Fri Dec 07 09:57:24 2001
4 //  Author    : Nicolas REJNERI
5 //  Project   : SALOME
6 //  Module    : SMESH
7 //  Copyright : Open CASCADE
8 //  $Header$
9
10 #include "SMESH_TypeFilter.ixx"
11
12 #include "SALOME_InteractiveObject.hxx"
13 #include "SALOME_TypeFilter.hxx"
14
15 #include "utilities.h"
16 #include "QAD_Application.h"
17 #include "QAD_Desktop.h"
18 #include "QAD_Study.h"
19
20
21 SMESH_TypeFilter::SMESH_TypeFilter(MeshObjectType aType) 
22 {
23   myKind = aType;
24 }
25
26 Standard_Boolean SMESH_TypeFilter::IsOk(const Handle(SALOME_InteractiveObject)& anObj) const 
27 {
28   Handle(SALOME_TypeFilter) meshFilter = new SALOME_TypeFilter( "MESH" );
29   if ( !meshFilter->IsOk(anObj) ) 
30     return false;
31
32   if ( anObj->hasEntry() ) {
33     QAD_Study* ActiveStudy = QAD_Application::getDesktop()->getActiveStudy();
34     SALOMEDS::Study_var aStudy = ActiveStudy->getStudyDocument();
35     SALOMEDS::SObject_var obj = aStudy->FindObjectID( anObj->getEntry() );
36
37     bool Ok = false;
38
39     switch ( myKind )
40       {
41       case HYPOTHESIS:
42         {
43           SALOMEDS::SObject_var objFather = obj->GetFather();
44           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
45           if (( objFather->Tag() == 1 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) )
46             Ok = true;
47           break;
48         }
49       case ALGORITHM:
50         {
51           SALOMEDS::SObject_var objFather = obj->GetFather();
52           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
53           if (( objFather->Tag() == 2 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) )
54             Ok = true;
55           break;
56         }
57       case MESH:
58         {
59           SALOMEDS::SObject_var objFather = obj->GetFather();
60           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
61           
62           if (( obj->Tag() >= 3 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) == 0 ) )
63             Ok = true;
64           break;
65         }
66       case SUBMESH:
67         {
68           SALOMEDS::SObject_var objFather = obj->GetFather();
69           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
70           
71           if (( objFather->Tag() >= 4 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) )
72             Ok = true;
73           break;
74         }
75       case MESHorSUBMESH:
76         {
77           SALOMEDS::SObject_var objFather = obj->GetFather();
78           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
79           
80           if (( obj->Tag() >= 3 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) == 0 ) )
81             Ok = true;
82
83            if (( objFather->Tag() >= 4 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) )
84             Ok = true;
85
86           break;
87         }
88       case SUBMESH_VERTEX:
89         {
90           SALOMEDS::SObject_var objFather = obj->GetFather();
91           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
92           
93           if (( obj->Tag() == 4 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) && ( objFather->Tag() >= 3 ))
94             Ok = true;
95           break;
96         }
97       case SUBMESH_EDGE:
98         {
99           SALOMEDS::SObject_var objFather = obj->GetFather();
100           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
101           
102           if (( obj->Tag() == 5 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) && ( objFather->Tag() >= 3 ))
103             Ok = true;
104           break;
105         }
106       case SUBMESH_FACE:
107         {
108           SALOMEDS::SObject_var objFather = obj->GetFather();
109           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
110           
111           if (( obj->Tag() == 6 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) && ( objFather->Tag() >= 3 ))
112             Ok = true;
113           break;
114         }
115       case SUBMESH_SOLID:
116         {
117           SALOMEDS::SObject_var objFather = obj->GetFather();
118           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
119           
120           if (( obj->Tag() == 7 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) && ( objFather->Tag() >= 3 ))
121             Ok = true;
122           break;
123         }
124       case SUBMESH_COMPOUND:
125         {
126           SALOMEDS::SObject_var objFather = obj->GetFather();
127           SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
128           
129           if (( obj->Tag() == 8 ) && (strcmp( objFather->GetID(), objComponent->GetID() ) != 0 ) && ( objFather->Tag() >= 3 ))
130             Ok = true;
131           break;
132         }
133       }
134
135     if ( Ok )
136       return true;
137   }
138   return false;
139 }