X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHFiltersSelection%2FSMESH_TypeFilter.cxx;h=f406022d264b4c852e47da78af1f6e5d218ae115;hp=856131720ea3e0e23121babd15e85a04b3846df9;hb=80b2ef84c3197c4159cd6b82cc6a476853e76022;hpb=5e356c3e2c3f58ecba541d647be65193099cd67c diff --git a/src/SMESHFiltersSelection/SMESH_TypeFilter.cxx b/src/SMESHFiltersSelection/SMESH_TypeFilter.cxx index 856131720..f406022d2 100644 --- a/src/SMESHFiltersSelection/SMESH_TypeFilter.cxx +++ b/src/SMESHFiltersSelection/SMESH_TypeFilter.cxx @@ -3,7 +3,7 @@ #include #include -#include +#include SMESH_TypeFilter::SMESH_TypeFilter (MeshObjectType theType) { @@ -16,10 +16,10 @@ SMESH_TypeFilter::~SMESH_TypeFilter() bool SMESH_TypeFilter::isOk (const SUIT_DataOwner* theDataOwner) const { - bool Ok = false; + bool Ok = false, extractReference = true; - const SalomeApp_DataOwner* owner = - dynamic_cast(theDataOwner); + const LightApp_DataOwner* owner = + dynamic_cast(theDataOwner); SalomeApp_Study* appStudy = dynamic_cast (SUIT_Session::session()->activeApplication()->activeStudy()); @@ -27,7 +27,9 @@ bool SMESH_TypeFilter::isOk (const SUIT_DataOwner* theDataOwner) const _PTR(Study) study = appStudy->studyDS(); QString entry = owner->entry(); - _PTR(SObject) obj (study->FindObjectID(entry.latin1())); + _PTR(SObject) obj (study->FindObjectID(entry.latin1())), aRefSO; + if( extractReference && obj && obj->ReferencedObject( aRefSO ) ) + obj = aRefSO; if (!obj) return false; _PTR(SObject) objFather = obj->GetFather(); @@ -38,18 +40,21 @@ bool SMESH_TypeFilter::isOk (const SUIT_DataOwner* theDataOwner) const int aLevel = obj->Depth() - objComponent->Depth(); - // Max level under the component is 4: + // Max level under the component is 5: // // 0 Mesh Component // 1 |- Hypotheses // 2 | |- Regular 1D // |- Algorithms // |- Mesh 1 + // |- * Main Shape // |- Applied Hypotheses // |- Applied Algorithms // |- Submeshes on Face // 3 | |- SubmeshFace + // 4 | |- * Face 1 // 4 | |- Applied algorithms ( selectable in Use Case Browser ) + // 5 | |- Regular 1D // |- Group Of Nodes if (aLevel <= 0) @@ -59,13 +64,21 @@ bool SMESH_TypeFilter::isOk (const SUIT_DataOwner* theDataOwner) const { case HYPOTHESIS: { - if ( aLevel == 2 && ( objFather->Tag() == 1 )) + if ( aLevel == 2 && ( objFather->Tag() == 1 )) // hypo definition + Ok = true; + else if ( aLevel == 3 && ( objFather->Tag() == 2 )) // applied global hypo + Ok = true; + else if ( aLevel == 5 && ( objFather->Tag() == 2 )) // applied local hypo Ok = true; break; } case ALGORITHM: { - if ( aLevel == 2 && ( objFather->Tag() == 2 )) + if ( aLevel == 2 && ( objFather->Tag() == 2 )) // algo definition + Ok = true; + else if ( aLevel == 3 && ( objFather->Tag() == 3 )) // applied global algo + Ok = true; + else if ( aLevel == 5 && ( objFather->Tag() == 3 )) // applied local algo Ok = true; break; }