1 // File : SMESH_TypeFilter.cxx
2 // Created : Fri Dec 07 09:57:24 2001
3 // Author : Nicolas REJNERI
6 // Copyright : Open CASCADE
9 #include "SMESH_TypeFilter.ixx"
11 #include "SALOME_InteractiveObject.hxx"
12 #include "SALOME_TypeFilter.hxx"
14 #include "utilities.h"
15 #include "QAD_Application.h"
16 #include "QAD_Desktop.h"
17 #include "QAD_Study.h"
21 SMESH_TypeFilter::SMESH_TypeFilter(MeshObjectType aType)
26 Standard_Boolean SMESH_TypeFilter::IsOk(const Handle(SALOME_InteractiveObject)& anObj) const
28 Handle(SALOME_TypeFilter) meshFilter = new SALOME_TypeFilter( "SMESH" );
29 if ( !meshFilter->IsOk(anObj) )
34 if ( anObj->hasEntry() ) {
35 QAD_Study* ActiveStudy = QAD_Application::getDesktop()->getActiveStudy();
36 SALOMEDS::Study_var aStudy = ActiveStudy->getStudyDocument();
37 SALOMEDS::SObject_var obj = aStudy->FindObjectID( anObj->getEntry() );
39 SALOMEDS::SObject_var objFather = obj->GetFather();
40 SALOMEDS::SComponent_var objComponent = obj->GetFatherComponent();
42 int aLevel = obj->Depth() - objComponent->Depth();
44 // Max level under the component is 4:
51 // |- Applied Hypotheses
52 // |- Applied Algorithms
53 // |- Submeshes on Face
55 // 4 | |- Applied algorithms ( selectable in Use Case Browser )
65 if ( aLevel == 2 && ( objFather->Tag() == 1 ))
71 if ( aLevel == 2 && ( objFather->Tag() == 2 ))
77 if ( aLevel == 1 && ( obj->Tag() >= 3 ))
83 // see SMESH_Gen_i.cxx for tag numbers
84 if ( aLevel == 3 && ( objFather->Tag() >= 4 && objFather->Tag() <= 10 ))
90 if ( aLevel == 1 && ( obj->Tag() >= 3 ))
92 else if ( aLevel == 3 && ( objFather->Tag() >= 4 && objFather->Tag() <= 10 ))
96 case SUBMESH_VERTEX: // Label "SubMeshes on vertexes"
98 if ( aLevel == 3 && ( objFather->Tag() == 4 ))
104 if ( aLevel == 3 && ( objFather->Tag() == 5 ))
110 if ( aLevel == 3 && ( objFather->Tag() == 7 ))
116 if ( aLevel == 3 && ( objFather->Tag() == 9 ))
120 case SUBMESH_COMPOUND:
122 if ( aLevel == 3 && ( objFather->Tag() == 10 ))
128 if ( aLevel == 3 && ( objFather->Tag() > 10 ))