X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Filter.cxx;h=19b3fcb1ab62d0a354d550b888be0701a19603a0;hb=9a358116f4ee87b52d3d86752c4fb6b3f814a69f;hp=08da7c92330c2b71942d566e0d7161b7ed55b567;hpb=cca99353e89b8c895efbb7377f8830ec2f3fb5ea;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_Filter.cxx b/src/SMESHGUI/SMESHGUI_Filter.cxx index 08da7c923..19b3fcb1a 100755 --- a/src/SMESHGUI/SMESHGUI_Filter.cxx +++ b/src/SMESHGUI/SMESHGUI_Filter.cxx @@ -26,17 +26,21 @@ // Module : SMESH #include "SMESHGUI_Filter.h" + +#include "SMESHGUI.h" #include "SMESHGUI_Utils.h" + +#include "SMESH_Actor.h" #include "SMDS_Mesh.hxx" #include "SMDS_MeshElement.hxx" #include "SMDSAbs_ElementType.hxx" -#include - +// OCCT Includes #include #include -#include "SMESH_Actor.h" -#include "SMESHGUI.h" + +// VTK Includes +#include IMPLEMENT_STANDARD_HANDLE(SMESHGUI_Filter, VTKViewer_Filter) IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_Filter, VTKViewer_Filter) @@ -83,10 +87,10 @@ bool SMESHGUI_PredicateFilter::IsValid( const int theCellId ) const if ( myActor == 0 || myPred->_is_nil() ) return false; - SMESH_Actor* anActor = ( SMESH_Actor* )myActor; - if ( anActor->GetObject() == 0 ) + SMESH_Actor* anActor = dynamic_cast( myActor ); + if ( !anActor || anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); SMESH::ElementType anElemType = myPred->GetElementType(); int aMeshId = anElemType == SMESH::NODE ? anActor->GetNodeObjId( theCellId ) @@ -98,7 +102,7 @@ bool SMESHGUI_PredicateFilter::IsValid( const int theCellId ) const : aMesh->FindElement( aMeshId ); if ( anElem != 0 && anElem->GetType() != (SMDSAbs_ElementType)myPred->GetElementType() ) return true; - + return myPred->IsSatisfy( aMeshId ); } @@ -114,10 +118,10 @@ bool SMESHGUI_PredicateFilter::IsObjValid( const int theObjId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); SMESH::ElementType anElemType = myPred->GetElementType(); - + // if type of element != type of predicate return true because // this predicate is not intended for filtering sush elements const SMDS_MeshElement* anElem = anElemType == SMESH::NODE ? aMesh->FindNode( theObjId ) @@ -158,7 +162,10 @@ void SMESHGUI_PredicateFilter::SetActor( SALOME_Actor* theActor ) if ( myActor != 0 && !myPred->_is_nil() ) { - Handle(SALOME_InteractiveObject) anIO = myActor->getIO(); + SALOME_Actor* sActor = dynamic_cast( myActor ); + Handle(SALOME_InteractiveObject) anIO; + if( sActor ) + anIO = sActor->getIO(); if ( !anIO.IsNull() ) { SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface(anIO); @@ -214,10 +221,10 @@ bool SMESHGUI_QuadrangleFilter::IsValid( const int theCellId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) ); - + return anElem && anElem->GetType() == SMDSAbs_Face && anElem->NbNodes() == 4; } @@ -233,7 +240,7 @@ bool SMESHGUI_QuadrangleFilter::IsObjValid( const int theObjId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId ); @@ -291,7 +298,7 @@ bool SMESHGUI_TriangleFilter::IsValid( const int theCellId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) ); @@ -310,7 +317,7 @@ bool SMESHGUI_TriangleFilter::IsObjValid( const int theObjId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId ); @@ -367,7 +374,7 @@ bool SMESHGUI_FacesFilter::IsValid( const int theCellId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) ); @@ -386,7 +393,7 @@ bool SMESHGUI_FacesFilter::IsObjValid( const int theObjId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId ); @@ -444,7 +451,7 @@ bool SMESHGUI_VolumesFilter::IsValid( const int theCellId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) ); @@ -463,7 +470,7 @@ bool SMESHGUI_VolumesFilter::IsObjValid( const int theObjId ) const SMESH_Actor* anActor = ( SMESH_Actor* )myActor; if ( anActor->GetObject() == 0 ) return false; - + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId ); @@ -488,14 +495,3 @@ bool SMESHGUI_VolumesFilter::IsNodeFilter() const { return false; } - - - - - - - - - - -