X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSMESH_I%2FSMESH_Filter_i.cxx;h=ac5273396741e51615d7d3a25b0a1526ce7df638;hb=7aebb99e42c6b0c3c056a5eecb0f29033db2231a;hp=f7040c5abbea6916a6efc1c672d8a54192e68fa3;hpb=9a54694a0ab1e5cbc558a35c4606ceea4f7af2ef;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Filter_i.cxx b/src/SMESH_I/SMESH_Filter_i.cxx index f7040c5ab..ac5273396 100644 --- a/src/SMESH_I/SMESH_Filter_i.cxx +++ b/src/SMESH_I/SMESH_Filter_i.cxx @@ -702,7 +702,6 @@ FunctorType Taper_i::GetFunctorType() return SMESH::FT_Taper; } - /* Class : Skew_i Description : Functor for calculating skew in degrees @@ -1637,6 +1636,37 @@ FunctorType ElemGeomType_i::GetFunctorType() return SMESH::FT_ElemGeomType; } +/* + Class : ElemEntityType_i + Description : Predicate check is element has indicated entity type +*/ +ElemEntityType_i::ElemEntityType_i() +{ + myElemEntityTypePtr.reset(new Controls::ElemEntityType()); + myFunctorPtr = myPredicatePtr = myElemEntityTypePtr; +} + +void ElemEntityType_i::SetElementType(ElementType theType) +{ + myElemEntityTypePtr->SetType(SMDSAbs_ElementType(theType)); + TPythonDump()<SetElemEntityType(SMDSAbs_EntityType (theEntityType)); + TPythonDump()<GetElemEntityType(); +} + +FunctorType ElemEntityType_i::GetFunctorType() +{ + return SMESH::FT_EntityType; +} + /* Class : CoplanarFaces_i Description : Returns true if a mesh face is a coplanar neighbour to a given one @@ -2312,6 +2342,14 @@ ElemGeomType_ptr FilterManager_i::CreateElemGeomType() return anObj._retn(); } +ElemEntityType_ptr FilterManager_i::CreateElemEntityType() +{ + SMESH::ElemEntityType_i* aServant = new SMESH::ElemEntityType_i(); + SMESH::ElemEntityType_var anObj = aServant->_this(); + TPythonDump()<GetGeometryType(); return true; } + case FT_EntityType: + { + CORBA::ULong i = theCriteria->length(); + theCriteria->length( i + 1 ); + + theCriteria[ i ] = createCriterion(); + + ElemEntityType_i* aPred = dynamic_cast( thePred ); + theCriteria[ i ].Type = aFType; + theCriteria[ i ].Threshold = (double)aPred->GetEntityType(); + return true; + } case FT_Undefined: return false; @@ -3043,6 +3093,14 @@ CORBA::Boolean Filter_i::SetCriteria( const SMESH::Filter::Criteria& theCriteria aPredicate = tmpPred; break; } + case SMESH::FT_EntityType: + { + SMESH::ElemEntityType_ptr tmpPred = aFilterMgr->CreateElemEntityType(); + tmpPred->SetElementType( aTypeOfElem ); + tmpPred->SetEntityType( EntityType( (int (aThreshold + 0.5)))); + aPredicate = tmpPred; + break; + } case SMESH::FT_CoplanarFaces: { SMESH::CoplanarFaces_ptr tmpPred = aFilterMgr->CreateCoplanarFaces(); @@ -3289,6 +3347,7 @@ static inline LDOMString toString( CORBA::Long theType ) case FT_GroupColor : return "Color of Group"; case FT_LinearOrQuadratic : return "Linear or Quadratic"; case FT_ElemGeomType : return "Element geomtry type"; + case FT_EntityType : return "Entity type"; case FT_Undefined : return ""; default : return ""; } @@ -3341,6 +3400,7 @@ static inline SMESH::FunctorType toFunctorType( const LDOMString& theStr ) else if ( theStr.equals( "Color of Group" ) ) return FT_GroupColor; else if ( theStr.equals( "Linear or Quadratic" ) ) return FT_LinearOrQuadratic; else if ( theStr.equals( "Element geomtry type" ) ) return FT_ElemGeomType; + else if ( theStr.equals( "Entity type" ) ) return FT_EntityType; else if ( theStr.equals( "" ) ) return FT_Undefined; else return FT_Undefined; } @@ -3903,6 +3963,7 @@ static const char** getFunctNames() "FT_LinearOrQuadratic", "FT_GroupColor", "FT_ElemGeomType", + "FT_EntityType", "FT_CoplanarFaces", "FT_BallDiameter", "FT_LessThan", @@ -3911,7 +3972,7 @@ static const char** getFunctNames() "FT_LogicalNOT", "FT_LogicalAND", "FT_LogicalOR", - "FT_Undefined" }; + "FT_Undefined"}; return functName; }