From 1b8f195eb53e44dad234faa3fd843f65ecf60fcf Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 1 Nov 2011 12:16:50 +0000 Subject: [PATCH] 0021406: EDF 1975 NETGENPLUGIN: Submesh hypothesis not taken into account Pass theShapeToMesh to IsMoreLocalThanPredicate --- src/SMESH/SMESH_HypoFilter.cxx | 8 ++++++-- src/SMESH/SMESH_HypoFilter.hxx | 9 ++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) 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; }; -- 2.39.2