From: eap Date: Tue, 1 Nov 2011 12:16:50 +0000 (+0000) Subject: 0021406: EDF 1975 NETGENPLUGIN: Submesh hypothesis not taken into account X-Git-Tag: V6_4_0b1~19 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1b8f195eb53e44dad234faa3fd843f65ecf60fcf;p=modules%2Fsmesh.git 0021406: EDF 1975 NETGENPLUGIN: Submesh hypothesis not taken into account Pass theShapeToMesh to IsMoreLocalThanPredicate --- diff --git a/src/SMESH/SMESH_HypoFilter.cxx b/src/SMESH/SMESH_HypoFilter.cxx index 1bfef1249..ce3093379 100644 --- a/src/SMESH/SMESH_HypoFilter.cxx +++ b/src/SMESH/SMESH_HypoFilter.cxx @@ -129,6 +129,9 @@ bool SMESH_HypoFilter::IsAssignedToPredicate::IsOk(const SMESH_Hypothesis* aHyp, bool SMESH_HypoFilter::IsMoreLocalThanPredicate::IsOk(const SMESH_Hypothesis* aHyp, const TopoDS_Shape& aShape) const { + if ( aShape.IsSame( _shapeToMesh )) + return false; // aHyp is global + if ( SMESH_MesherHelper::IsSubShape( aShape, /*mainShape=*/_shape )) return true; @@ -293,9 +296,10 @@ SMESH_HypoPredicate* SMESH_HypoFilter::IsApplicableTo(const TopoDS_Shape& theSha //purpose : //======================================================================= -SMESH_HypoPredicate* SMESH_HypoFilter::IsMoreLocalThan(const TopoDS_Shape& theShape) +SMESH_HypoPredicate* SMESH_HypoFilter::IsMoreLocalThan(const TopoDS_Shape& theShape, + const TopoDS_Shape& theShapeToMesh) { - return new IsMoreLocalThanPredicate( theShape ); + return new IsMoreLocalThanPredicate( theShape, theShapeToMesh); } //======================================================================= diff --git a/src/SMESH/SMESH_HypoFilter.hxx b/src/SMESH/SMESH_HypoFilter.hxx index 31327f1ec..79825295b 100644 --- a/src/SMESH/SMESH_HypoFilter.hxx +++ b/src/SMESH/SMESH_HypoFilter.hxx @@ -72,7 +72,8 @@ class SMESH_EXPORT SMESH_HypoFilter: public SMESH_HypoPredicate static SMESH_HypoPredicate* IsAssignedTo(const TopoDS_Shape& theShape); static SMESH_HypoPredicate* Is(const SMESH_Hypothesis* theHypo); static SMESH_HypoPredicate* IsGlobal(const TopoDS_Shape& theMainShape); - static SMESH_HypoPredicate* IsMoreLocalThan(const TopoDS_Shape& theShape); + static SMESH_HypoPredicate* IsMoreLocalThan(const TopoDS_Shape& theShape, + const TopoDS_Shape& theShapeToMesh); static SMESH_HypoPredicate* HasName(const std::string & theName); static SMESH_HypoPredicate* HasDim(const int theDim); static SMESH_HypoPredicate* HasType(const int theHypType); @@ -169,8 +170,10 @@ class SMESH_EXPORT SMESH_HypoFilter: public SMESH_HypoPredicate }; struct IsMoreLocalThanPredicate : public SMESH_HypoPredicate { - TopoDS_Shape _shape; - IsMoreLocalThanPredicate( const TopoDS_Shape& shape ):_shape(shape){} + TopoDS_Shape _shape, _shapeToMesh; + IsMoreLocalThanPredicate( const TopoDS_Shape& shape, + const TopoDS_Shape& shapeToMesh ) + :_shape(shape),_shapeToMesh(shapeToMesh){} bool IsOk(const SMESH_Hypothesis* aHyp, const TopoDS_Shape& aShape) const; };