mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-11 16:19:16 +05:00
22316: EDF 2719 SMESH: Split hexas into prisms
namespace SMESH { enum SMESHGUI_FilterType { QuadFilter = 5, TriaFilter = 6, + FirstGeometryTypeFilter, + FirstEntityTypeFilter = FirstGeometryTypeFilter + SMDSGeom_NONE, + LastFilter = FirstEntityTypeFilter + SMDSEntity_Last }; }; +class SMESHGUI_VolumeShapeFilter : public SMESHGUI_Filter +{
This commit is contained in:
parent
b9b3af112d
commit
74b03c9f40
@ -51,6 +51,9 @@ IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_FacesFilter, SMESHGUI_Filter)
|
||||
IMPLEMENT_STANDARD_HANDLE(SMESHGUI_VolumesFilter, SMESHGUI_Filter)
|
||||
IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_VolumesFilter, SMESHGUI_Filter)
|
||||
|
||||
IMPLEMENT_STANDARD_HANDLE(SMESHGUI_VolumeShapeFilter, SMESHGUI_Filter)
|
||||
IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_VolumeShapeFilter, SMESHGUI_Filter)
|
||||
|
||||
/*
|
||||
Class : SMESHGUI_PredicateFilter
|
||||
Description : Selection filter for VTK viewer. This class aggregate object
|
||||
@ -492,3 +495,86 @@ bool SMESHGUI_VolumesFilter::IsNodeFilter() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Class : SMESHGUI_VolumeShapeFilter
|
||||
Description : Verify whether selected cell is a volume of a certain shape
|
||||
*/
|
||||
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_VolumeShapeFilter::SMESHGUI_VolumeShapeFilter
|
||||
// Purpose : Constructor
|
||||
//=======================================================================
|
||||
SMESHGUI_VolumeShapeFilter::SMESHGUI_VolumeShapeFilter(const SMDSAbs_GeometryType shape)
|
||||
: SMESHGUI_Filter(), myGeometryType( shape )
|
||||
{
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_VolumeShapeFilter::IsValid
|
||||
// Purpose : Verify whether selected cell is a volume of a certain shape
|
||||
//=======================================================================
|
||||
bool SMESHGUI_VolumeShapeFilter::IsValid( const int theCellId ) const
|
||||
{
|
||||
if ( myActor == 0 || theCellId < 1 )
|
||||
return false;
|
||||
|
||||
SMESH_Actor* anActor = dynamic_cast< SMESH_Actor* >( myActor );
|
||||
if ( !anActor || anActor->GetObject() == 0 )
|
||||
return false;
|
||||
|
||||
SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
|
||||
const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) );
|
||||
|
||||
return anElem && anElem->GetGeomType() == myGeometryType;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_VolumeShapeFilter::IsValid
|
||||
// Purpose : Verify whether selected cell is volume
|
||||
//=======================================================================
|
||||
bool SMESHGUI_VolumeShapeFilter::IsObjValid( const int theObjId ) const
|
||||
{
|
||||
if ( myActor == 0 )
|
||||
return false;
|
||||
|
||||
SMESH_Actor* anActor = dynamic_cast< SMESH_Actor* >( myActor );
|
||||
if ( !anActor || anActor->GetObject() == 0 )
|
||||
return false;
|
||||
|
||||
SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
|
||||
const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId );
|
||||
|
||||
return anElem && anElem->GetGeomType() == myGeometryType;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_VolumeShapeFilter::GetId
|
||||
// Purpose : Get ID of the filter. Must return value from SMESHGUI_FilterType
|
||||
// enumeration. All filters must have different ids
|
||||
//=======================================================================
|
||||
int SMESHGUI_VolumeShapeFilter::GetId() const
|
||||
{
|
||||
return GetId( myGeometryType );
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : GetId
|
||||
//purpose : Compose filter ID basing on
|
||||
//=======================================================================
|
||||
|
||||
int SMESHGUI_VolumeShapeFilter::GetId( SMDSAbs_GeometryType shape )
|
||||
{
|
||||
return SMESH::FirstGeometryTypeFilter + shape;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_VolumeShapeFilter::IsNodeFilter
|
||||
// Purpose : Returns true if filter is intended for nodes
|
||||
//=======================================================================
|
||||
bool SMESHGUI_VolumeShapeFilter::IsNodeFilter() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@
|
||||
|
||||
// SMESH includes
|
||||
#include "SMESH_SMESHGUI.hxx"
|
||||
#include "SMDSAbs_ElementType.hxx"
|
||||
|
||||
// SALOME GUI includes
|
||||
#include <VTKViewer_Filter.h>
|
||||
@ -42,15 +43,17 @@ class SALOME_Actor;
|
||||
namespace SMESH
|
||||
{
|
||||
enum SMESHGUI_FilterType {
|
||||
UnknownFilter = -1,
|
||||
NodeFilter = 0,
|
||||
EdgeFilter = 1,
|
||||
FaceFilter = 2,
|
||||
VolumeFilter = 3,
|
||||
AllElementsFilter = 4,
|
||||
QuadFilter = 5,
|
||||
TriaFilter = 6,
|
||||
LastFilter
|
||||
UnknownFilter = -1,
|
||||
NodeFilter = 0,
|
||||
EdgeFilter = 1,
|
||||
FaceFilter = 2,
|
||||
VolumeFilter = 3,
|
||||
AllElementsFilter = 4,
|
||||
QuadFilter = 5,
|
||||
TriaFilter = 6,
|
||||
FirstGeometryTypeFilter,
|
||||
FirstEntityTypeFilter = FirstGeometryTypeFilter + SMDSGeom_NONE,
|
||||
LastFilter = FirstEntityTypeFilter + SMDSEntity_Last
|
||||
};
|
||||
};
|
||||
|
||||
@ -181,10 +184,34 @@ public:
|
||||
Standard_EXPORT virtual bool IsValid( const int ) const;
|
||||
Standard_EXPORT virtual bool IsObjValid( const int ) const;
|
||||
Standard_EXPORT virtual int GetId() const;
|
||||
Standard_EXPORT virtual bool IsNodeFilter() const;
|
||||
Standard_EXPORT virtual bool IsNodeFilter() const;
|
||||
|
||||
public:
|
||||
DEFINE_STANDARD_RTTI(SMESHGUI_VolumesFilter)
|
||||
};
|
||||
|
||||
/*
|
||||
Class : SMESHGUI_VolumeShapeFilter
|
||||
Description : Verify whether selected cell is a volume of a certain shape
|
||||
*/
|
||||
|
||||
DEFINE_STANDARD_HANDLE(SMESHGUI_VolumeShapeFilter, SMESHGUI_Filter)
|
||||
|
||||
class SMESHGUI_VolumeShapeFilter : public SMESHGUI_Filter
|
||||
{
|
||||
SMDSAbs_GeometryType myGeometryType;
|
||||
public:
|
||||
Standard_EXPORT SMESHGUI_VolumeShapeFilter(const SMDSAbs_GeometryType shape);
|
||||
|
||||
Standard_EXPORT virtual bool IsValid( const int ) const;
|
||||
Standard_EXPORT virtual bool IsObjValid( const int ) const;
|
||||
Standard_EXPORT virtual int GetId() const;
|
||||
Standard_EXPORT virtual bool IsNodeFilter() const;
|
||||
|
||||
Standard_EXPORT static int GetId( SMDSAbs_GeometryType geom );
|
||||
|
||||
public:
|
||||
DEFINE_STANDARD_RTTI(SMESHGUI_VolumeShapeFilter)
|
||||
};
|
||||
|
||||
#endif // SMESHGUI_FILTER_H
|
||||
|
Loading…
Reference in New Issue
Block a user