mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-05-11 01:20:48 +05:00
0020943: EDF 1463 SMESH: additional fonctionnality to the feature 20749
+ class BareBorderVolume: public Predicate + class BareBorderFace: public Predicate
This commit is contained in:
parent
92f6294479
commit
8a18df0d9a
@ -291,6 +291,8 @@ namespace SMESH
|
|||||||
case FT_LyingOnGeom: myStream<< "aLyingOnGeom"; break;
|
case FT_LyingOnGeom: myStream<< "aLyingOnGeom"; break;
|
||||||
case FT_RangeOfIds: myStream<< "aRangeOfIds"; break;
|
case FT_RangeOfIds: myStream<< "aRangeOfIds"; break;
|
||||||
case FT_BadOrientedVolume:myStream<< "aBadOrientedVolume";break;
|
case FT_BadOrientedVolume:myStream<< "aBadOrientedVolume";break;
|
||||||
|
case FT_BareBorderVolume: myStream<< "aBareBorderVolume"; break;
|
||||||
|
case FT_BareBorderFace: myStream<< "aBareBorderFace"; break;
|
||||||
case FT_LinearOrQuadratic:myStream<< "aLinearOrQuadratic";break;
|
case FT_LinearOrQuadratic:myStream<< "aLinearOrQuadratic";break;
|
||||||
case FT_GroupColor: myStream<< "aGroupColor"; break;
|
case FT_GroupColor: myStream<< "aGroupColor"; break;
|
||||||
case FT_ElemGeomType: myStream<< "anElemGeomType"; break;
|
case FT_ElemGeomType: myStream<< "anElemGeomType"; break;
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "SMDS_MeshNode.hxx"
|
#include "SMDS_MeshNode.hxx"
|
||||||
#include "SMDS_MeshElement.hxx"
|
#include "SMDS_MeshElement.hxx"
|
||||||
#include "SMDS_ElemIterator.hxx"
|
#include "SMDS_ElemIterator.hxx"
|
||||||
|
#include "SMDS_VolumeTool.hxx"
|
||||||
|
|
||||||
#include "SMESHDS_Mesh.hxx"
|
#include "SMESHDS_Mesh.hxx"
|
||||||
|
|
||||||
@ -937,6 +938,38 @@ FunctorType BadOrientedVolume_i::GetFunctorType()
|
|||||||
return SMESH::FT_BadOrientedVolume;
|
return SMESH::FT_BadOrientedVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : BareBorderVolume_i
|
||||||
|
Description : Verify whether a mesh volume is incorrectly oriented from
|
||||||
|
the point of view of MED convention
|
||||||
|
*/
|
||||||
|
BareBorderVolume_i::BareBorderVolume_i()
|
||||||
|
{
|
||||||
|
Controls::PredicatePtr control( new Controls::BareBorderVolume() );
|
||||||
|
myFunctorPtr = myPredicatePtr = control;
|
||||||
|
};
|
||||||
|
|
||||||
|
FunctorType BareBorderVolume_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_BareBorderVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : BareBorderFace_i
|
||||||
|
Description : Verify whether a mesh volume is incorrectly oriented from
|
||||||
|
the point of view of MED convention
|
||||||
|
*/
|
||||||
|
BareBorderFace_i::BareBorderFace_i()
|
||||||
|
{
|
||||||
|
Controls::PredicatePtr control( new Controls::BareBorderFace() );
|
||||||
|
myFunctorPtr = myPredicatePtr = control;
|
||||||
|
};
|
||||||
|
|
||||||
|
FunctorType BareBorderFace_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_BareBorderFace;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : BelongToGeom_i
|
Class : BelongToGeom_i
|
||||||
Description : Predicate for selection on geometrical support
|
Description : Predicate for selection on geometrical support
|
||||||
@ -1985,6 +2018,22 @@ BadOrientedVolume_ptr FilterManager_i::CreateBadOrientedVolume()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BareBorderVolume_ptr FilterManager_i::CreateBareBorderVolume()
|
||||||
|
{
|
||||||
|
SMESH::BareBorderVolume_i* aServant = new SMESH::BareBorderVolume_i();
|
||||||
|
SMESH::BareBorderVolume_var anObj = aServant->_this();
|
||||||
|
TPythonDump()<<aServant<<" = "<<this<<".CreateBareBorderVolume()";
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
BareBorderFace_ptr FilterManager_i::CreateBareBorderFace()
|
||||||
|
{
|
||||||
|
SMESH::BareBorderFace_i* aServant = new SMESH::BareBorderFace_i();
|
||||||
|
SMESH::BareBorderFace_var anObj = aServant->_this();
|
||||||
|
TPythonDump()<<aServant<<" = "<<this<<".CreateBareBorderFace()";
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
LessThan_ptr FilterManager_i::CreateLessThan()
|
LessThan_ptr FilterManager_i::CreateLessThan()
|
||||||
{
|
{
|
||||||
SMESH::LessThan_i* aServant = new SMESH::LessThan_i();
|
SMESH::LessThan_i* aServant = new SMESH::LessThan_i();
|
||||||
@ -2409,6 +2458,34 @@ static inline bool getCriteria( Predicate_i* thePred,
|
|||||||
theCriteria[ i ].Type = FT_BadOrientedVolume;
|
theCriteria[ i ].Type = FT_BadOrientedVolume;
|
||||||
theCriteria[ i ].TypeOfElement = aPred->GetElementType();
|
theCriteria[ i ].TypeOfElement = aPred->GetElementType();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case FT_BareBorderVolume:
|
||||||
|
{
|
||||||
|
BareBorderVolume_i* aPred = dynamic_cast<BareBorderVolume_i*>( thePred );
|
||||||
|
|
||||||
|
CORBA::ULong i = theCriteria->length();
|
||||||
|
theCriteria->length( i + 1 );
|
||||||
|
|
||||||
|
theCriteria[ i ] = createCriterion();
|
||||||
|
|
||||||
|
theCriteria[ i ].Type = FT_BareBorderVolume;
|
||||||
|
theCriteria[ i ].TypeOfElement = aPred->GetElementType();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case FT_BareBorderFace:
|
||||||
|
{
|
||||||
|
BareBorderFace_i* aPred = dynamic_cast<BareBorderFace_i*>( thePred );
|
||||||
|
|
||||||
|
CORBA::ULong i = theCriteria->length();
|
||||||
|
theCriteria->length( i + 1 );
|
||||||
|
|
||||||
|
theCriteria[ i ] = createCriterion();
|
||||||
|
|
||||||
|
theCriteria[ i ].Type = FT_BareBorderFace;
|
||||||
|
theCriteria[ i ].TypeOfElement = aPred->GetElementType();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case FT_LessThan:
|
case FT_LessThan:
|
||||||
@ -2656,6 +2733,16 @@ CORBA::Boolean Filter_i::SetCriteria( const SMESH::Filter::Criteria& theCriteria
|
|||||||
aPredicate = aFilterMgr->CreateBadOrientedVolume();
|
aPredicate = aFilterMgr->CreateBadOrientedVolume();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SMESH::FT_BareBorderVolume:
|
||||||
|
{
|
||||||
|
aPredicate = aFilterMgr->CreateBareBorderVolume();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SMESH::FT_BareBorderFace:
|
||||||
|
{
|
||||||
|
aPredicate = aFilterMgr->CreateBareBorderFace();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case SMESH::FT_LinearOrQuadratic:
|
case SMESH::FT_LinearOrQuadratic:
|
||||||
{
|
{
|
||||||
SMESH::LinearOrQuadratic_ptr tmpPred = aFilterMgr->CreateLinearOrQuadratic();
|
SMESH::LinearOrQuadratic_ptr tmpPred = aFilterMgr->CreateLinearOrQuadratic();
|
||||||
@ -2888,7 +2975,9 @@ static inline LDOMString toString( CORBA::Long theType )
|
|||||||
case FT_BelongToCylinder: return "Belong to Cylinder";
|
case FT_BelongToCylinder: return "Belong to Cylinder";
|
||||||
case FT_BelongToGenSurface: return "Belong to Generic Surface";
|
case FT_BelongToGenSurface: return "Belong to Generic Surface";
|
||||||
case FT_LyingOnGeom : return "Lying on Geom";
|
case FT_LyingOnGeom : return "Lying on Geom";
|
||||||
case FT_BadOrientedVolume: return "Bad Oriented Volume";
|
case FT_BadOrientedVolume:return "Bad Oriented Volume";
|
||||||
|
case FT_BareBorderVolume: return "Volumes with bare border";
|
||||||
|
case FT_BareBorderFace : return "Faces with bare border";
|
||||||
case FT_RangeOfIds : return "Range of IDs";
|
case FT_RangeOfIds : return "Range of IDs";
|
||||||
case FT_FreeBorders : return "Free borders";
|
case FT_FreeBorders : return "Free borders";
|
||||||
case FT_FreeEdges : return "Free edges";
|
case FT_FreeEdges : return "Free edges";
|
||||||
@ -2942,6 +3031,8 @@ static inline SMESH::FunctorType toFunctorType( const LDOMString& theStr )
|
|||||||
// else if ( theStr.equals( "Length2D" ) ) return FT_Length2D;
|
// else if ( theStr.equals( "Length2D" ) ) return FT_Length2D;
|
||||||
else if ( theStr.equals( "Range of IDs" ) ) return FT_RangeOfIds;
|
else if ( theStr.equals( "Range of IDs" ) ) return FT_RangeOfIds;
|
||||||
else if ( theStr.equals( "Bad Oriented Volume" ) ) return FT_BadOrientedVolume;
|
else if ( theStr.equals( "Bad Oriented Volume" ) ) return FT_BadOrientedVolume;
|
||||||
|
else if ( theStr.equals( "Volumes with bare border" ) ) return FT_BareBorderVolume;
|
||||||
|
else if ( theStr.equals( "Faces with bare border" ) ) return FT_BareBorderFace;
|
||||||
else if ( theStr.equals( "Less than" ) ) return FT_LessThan;
|
else if ( theStr.equals( "Less than" ) ) return FT_LessThan;
|
||||||
else if ( theStr.equals( "More than" ) ) return FT_MoreThan;
|
else if ( theStr.equals( "More than" ) ) return FT_MoreThan;
|
||||||
else if ( theStr.equals( "Equal to" ) ) return FT_EqualTo;
|
else if ( theStr.equals( "Equal to" ) ) return FT_EqualTo;
|
||||||
|
@ -44,6 +44,7 @@ class SMESHDS_Mesh;
|
|||||||
namespace SMESH
|
namespace SMESH
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// ================================================================================
|
||||||
namespace Controls
|
namespace Controls
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -123,8 +124,10 @@ namespace SMESH
|
|||||||
Controls::ElementsOnShapePtr myElementsOnShapePtr; // only if myIsSubshape == false
|
Controls::ElementsOnShapePtr myElementsOnShapePtr; // only if myIsSubshape == false
|
||||||
};
|
};
|
||||||
typedef boost::shared_ptr<LyingOnGeom> LyingOnGeomPtr;
|
typedef boost::shared_ptr<LyingOnGeom> LyingOnGeomPtr;
|
||||||
}
|
|
||||||
|
} // namespace Controls
|
||||||
|
|
||||||
|
// ================================================================================
|
||||||
/*
|
/*
|
||||||
FUNCTORS
|
FUNCTORS
|
||||||
*/
|
*/
|
||||||
@ -387,6 +390,32 @@ namespace SMESH
|
|||||||
FunctorType GetFunctorType();
|
FunctorType GetFunctorType();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : BareBorderVolume_i
|
||||||
|
Description : Verify whether a mesh volume is incorrectly oriented from
|
||||||
|
the point of view of MED convention
|
||||||
|
*/
|
||||||
|
class SMESH_I_EXPORT BareBorderVolume_i: public virtual POA_SMESH::BareBorderVolume,
|
||||||
|
public virtual Predicate_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BareBorderVolume_i();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : BareBorderFace_i
|
||||||
|
Description : Verify whether a mesh volume is incorrectly oriented from
|
||||||
|
the point of view of MED convention
|
||||||
|
*/
|
||||||
|
class SMESH_I_EXPORT BareBorderFace_i: public virtual POA_SMESH::BareBorderFace,
|
||||||
|
public virtual Predicate_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BareBorderFace_i();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : BelongToGeom_i
|
Class : BelongToGeom_i
|
||||||
Description : Predicate for selection on geometrical support
|
Description : Predicate for selection on geometrical support
|
||||||
@ -935,6 +964,8 @@ namespace SMESH
|
|||||||
RangeOfIds_ptr CreateRangeOfIds();
|
RangeOfIds_ptr CreateRangeOfIds();
|
||||||
|
|
||||||
BadOrientedVolume_ptr CreateBadOrientedVolume();
|
BadOrientedVolume_ptr CreateBadOrientedVolume();
|
||||||
|
BareBorderFace_ptr CreateBareBorderFace();
|
||||||
|
BareBorderVolume_ptr CreateBareBorderVolume();
|
||||||
LinearOrQuadratic_ptr CreateLinearOrQuadratic();
|
LinearOrQuadratic_ptr CreateLinearOrQuadratic();
|
||||||
|
|
||||||
GroupColor_ptr CreateGroupColor();
|
GroupColor_ptr CreateGroupColor();
|
||||||
|
@ -794,7 +794,8 @@ class smeshDC(SMESH._objref_SMESH_Gen):
|
|||||||
return None
|
return None
|
||||||
pass
|
pass
|
||||||
elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_BadOrientedVolume, FT_FreeNodes,
|
elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_BadOrientedVolume, FT_FreeNodes,
|
||||||
FT_FreeFaces, FT_LinearOrQuadratic]:
|
FT_FreeFaces, FT_LinearOrQuadratic,
|
||||||
|
FT_BareBorderFace, FT_BareBorderVolume]:
|
||||||
# At this point the treshold is unnecessary
|
# At this point the treshold is unnecessary
|
||||||
if aTreshold == FT_LogicalNOT:
|
if aTreshold == FT_LogicalNOT:
|
||||||
aCriterion.UnaryOp = self.EnumToLong(FT_LogicalNOT)
|
aCriterion.UnaryOp = self.EnumToLong(FT_LogicalNOT)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user