#include <SMESH_TypeFilter.hxx>

Public Member Functions | |
| SMESH_TypeFilter (MeshObjectType theType) | |
| ~SMESH_TypeFilter () | |
| virtual bool | isOk (const SUIT_DataOwner *) const |
| MeshObjectType | type () const |
Protected Attributes | |
| MeshObjectType | myType |
Definition at line 34 of file SMESH_TypeFilter.hxx.
| SMESH_TypeFilter::SMESH_TypeFilter | ( | MeshObjectType | theType | ) |
Definition at line 33 of file SMESH_TypeFilter.cxx.
References myType.
Referenced by isOk().
{
myType = theType;
}
| SMESH_TypeFilter::~SMESH_TypeFilter | ( | ) |
Definition at line 38 of file SMESH_TypeFilter.cxx.
{
}
| bool SMESH_TypeFilter::isOk | ( | const SUIT_DataOwner * | theDataOwner | ) | const [virtual] |
Definition at line 42 of file SMESH_TypeFilter.cxx.
References _PTR(), ALGORITHM, GROUP, GROUP_0D, GROUP_EDGE, GROUP_FACE, GROUP_NODE, GROUP_VOLUME, HYPOTHESIS, IDSOURCE, MESHorSUBMESH, myType, SMESH_TypeFilter(), SUBMESH, SUBMESH_COMPOUND, SUBMESH_EDGE, SUBMESH_FACE, SUBMESH_SOLID, SUBMESH_VERTEX, batchmode_smesh.Tag_AlgorithmsRoot, SMESH.Tag_EdgeGroups, SMESH.Tag_FaceGroups, SMESH.Tag_FirstGroup, SMESH.Tag_FirstMeshRoot, SMESH.Tag_FirstSubMesh, batchmode_smesh.Tag_HypothesisRoot, SMESH.Tag_LastSubMesh, SMESH.Tag_NodeGroups, batchmode_smesh.Tag_RefOnAppliedAlgorithms, batchmode_smesh.Tag_RefOnAppliedHypothesis, batchmode_smesh.Tag_SubMeshOnCompound, batchmode_smesh.Tag_SubMeshOnEdge, batchmode_smesh.Tag_SubMeshOnFace, batchmode_smesh.Tag_SubMeshOnSolid, batchmode_smesh.Tag_SubMeshOnVertex, and SMESH.Tag_VolumeGroups.
Referenced by CheckOIType().
{
bool Ok = false, extractReference = true;
const LightApp_DataOwner* owner =
dynamic_cast<const LightApp_DataOwner*>(theDataOwner);
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>
(SUIT_Session::session()->activeApplication()->activeStudy());
if (owner && appStudy) {
_PTR(Study) study = appStudy->studyDS();
QString entry = owner->entry();
_PTR(SObject) obj (study->FindObjectID(entry.toLatin1().data())), aRefSO;
if( extractReference && obj && obj->ReferencedObject( aRefSO ) )
obj = aRefSO;
if (!obj) return false;
_PTR(SObject) objFather = obj->GetFather();
_PTR(SComponent) objComponent = obj->GetFatherComponent();
if( objComponent->ComponentDataType()!="SMESH" )
return false;
int aLevel = obj->Depth() - objComponent->Depth();
// 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
// |- Group 1
if (aLevel <= 0)
return false;
switch (myType)
{
case HYPOTHESIS:
{
if (aLevel == 2 && (objFather->Tag() == SMESH::Tag_HypothesisRoot))
// hypo definition
Ok = true;
else if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_RefOnAppliedHypothesis))
// applied global hypo
Ok = true;
else if (aLevel == 5 && (objFather->Tag() == SMESH::Tag_RefOnAppliedHypothesis))
// applied local hypo
Ok = true;
break;
}
case ALGORITHM:
{
if (aLevel == 2 && (objFather->Tag() == SMESH::Tag_AlgorithmsRoot))
// algo definition
Ok = true;
else if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_RefOnAppliedAlgorithms))
// applied global algo
Ok = true;
else if (aLevel == 5 && (objFather->Tag() == SMESH::Tag_RefOnAppliedAlgorithms))
// applied local algo
Ok = true;
break;
}
case MESH:
{
if (aLevel == 1 && (obj->Tag() >= SMESH::Tag_FirstMeshRoot))
Ok = true;
break;
}
case SUBMESH:
{
// see SMESH_Gen_i.cxx for tag numbers
if (aLevel == 3 && (objFather->Tag() >= SMESH::Tag_FirstSubMesh &&
objFather->Tag() <= SMESH::Tag_LastSubMesh))
Ok = true;
break;
}
case MESHorSUBMESH:
{
if (aLevel == 1 && (obj->Tag() >= SMESH::Tag_FirstMeshRoot))
Ok = true; // mesh
else if (aLevel == 3 && (objFather->Tag() >= SMESH::Tag_FirstSubMesh &&
objFather->Tag() <= SMESH::Tag_LastSubMesh))
Ok = true;
break;
}
case SUBMESH_VERTEX: // Label "SubMeshes on vertexes"
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnVertex))
Ok = true;
break;
}
case SUBMESH_EDGE:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnEdge))
Ok = true;
break;
}
case SUBMESH_FACE:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnFace))
Ok = true;
break;
}
case SUBMESH_SOLID:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnSolid))
Ok = true;
break;
}
case SUBMESH_COMPOUND:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnCompound))
Ok = true;
break;
}
case GROUP:
{
if (aLevel == 3 && (objFather->Tag() >= SMESH::Tag_FirstGroup))
Ok = true;
break;
}
case GROUP_NODE:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_NodeGroups))
Ok = true;
break;
}
case GROUP_EDGE:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_EdgeGroups))
Ok = true;
break;
}
case GROUP_FACE:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_FaceGroups))
Ok = true;
break;
}
case GROUP_VOLUME:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_VolumeGroups))
Ok = true;
break;
}
case GROUP_0D:
{
if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_VolumeGroups+1))
Ok = true;
break;
}
case IDSOURCE:
{
Ok = ( SMESH_TypeFilter(MESHorSUBMESH).isOk( theDataOwner ) ||
SMESH_TypeFilter(GROUP) .isOk( theDataOwner ));
break;
}
}
}
return Ok;
}
| MeshObjectType SMESH_TypeFilter::type | ( | ) | const |
MeshObjectType SMESH_TypeFilter.myType [protected] |
Definition at line 44 of file SMESH_TypeFilter.hxx.
Referenced by isOk(), SMESH_TypeFilter(), and type().