X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FControls%2FSMESH_ControlsDef.hxx;h=32cd281f560ac879d4ed2873f0cebad57ef0d7dc;hp=50fb06558b6a8a8ae904dab61ee4ae52bec7bb57;hb=c3dcb1d5ce71049bef3434d77e015095d92ff646;hpb=090aff07266d376ae028ae43434bdea7c0a0f9bb diff --git a/src/Controls/SMESH_ControlsDef.hxx b/src/Controls/SMESH_ControlsDef.hxx index 50fb06558..32cd281f5 100644 --- a/src/Controls/SMESH_ControlsDef.hxx +++ b/src/Controls/SMESH_ControlsDef.hxx @@ -15,7 +15,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com #ifndef _SMESH_CONTROLSDEF_HXX_ #define _SMESH_CONTROLSDEF_HXX_ @@ -93,18 +93,26 @@ namespace SMESH{ const_reference operator[](size_type n) const; }; + /* + Class : Functor + Description : Root of all Functors + */ class Functor { public: ~Functor(){} - virtual void SetMesh( SMDS_Mesh* theMesh ) = 0; + virtual void SetMesh( const SMDS_Mesh* theMesh ) = 0; virtual SMDSAbs_ElementType GetType() const = 0; }; + /* + Class : NumericalFunctor + Description : Root of all Functors returning numeric value + */ class NumericalFunctor: public virtual Functor{ public: NumericalFunctor(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual double GetValue( long theElementId ); virtual double GetValue(const TSequenceOfXYZ& thePoints) { return -1.0;}; virtual SMDSAbs_ElementType GetType() const = 0; @@ -117,11 +125,25 @@ namespace SMESH{ static bool GetPoints(const SMDS_MeshElement* theElem, TSequenceOfXYZ& theRes); protected: - SMDS_Mesh* myMesh; + const SMDS_Mesh* myMesh; + const SMDS_MeshElement* myCurrElement; long myPrecision; }; + /* + Class : Volume + Description : Functor calculating volume of 3D mesh element + */ + class Volume: public virtual NumericalFunctor{ + public: + virtual double GetValue( long theElementId ); + //virtual double GetValue( const TSequenceOfXYZ& thePoints ); + virtual double GetBadRate( double Value, int nbNodes ) const; + virtual SMDSAbs_ElementType GetType() const; + }; + + /* Class : SMESH_MinimumAngle Description : Functor for calculation of minimum angle @@ -295,12 +317,28 @@ namespace SMESH{ class FreeBorders: public virtual Predicate{ public: FreeBorders(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); + virtual bool IsSatisfy( long theElementId ); + virtual SMDSAbs_ElementType GetType() const; + + protected: + const SMDS_Mesh* myMesh; + }; + + + /* + Class : BadOrientedVolume + Description : Predicate bad oriented volumes + */ + class BadOrientedVolume: public virtual Predicate{ + public: + BadOrientedVolume(); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual bool IsSatisfy( long theElementId ); virtual SMDSAbs_ElementType GetType() const; protected: - SMDS_Mesh* myMesh; + const SMDS_Mesh* myMesh; }; @@ -311,7 +349,7 @@ namespace SMESH{ class FreeEdges: public virtual Predicate{ public: FreeEdges(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual bool IsSatisfy( long theElementId ); virtual SMDSAbs_ElementType GetType() const; static bool IsFreeEdge( const SMDS_MeshNode** theNodes, const int theFaceId ); @@ -326,7 +364,7 @@ namespace SMESH{ void GetBoreders(TBorders& theBorders); protected: - SMDS_Mesh* myMesh; + const SMDS_Mesh* myMesh; }; typedef boost::shared_ptr FreeEdgesPtr; @@ -343,7 +381,7 @@ namespace SMESH{ { public: RangeOfIds(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual bool IsSatisfy( long theNodeId ); virtual SMDSAbs_ElementType GetType() const; virtual void SetType( SMDSAbs_ElementType theType ); @@ -353,7 +391,7 @@ namespace SMESH{ bool SetRangeStr( const TCollection_AsciiString& ); protected: - SMDS_Mesh* myMesh; + const SMDS_Mesh* myMesh; TColStd_SequenceOfInteger myMin; TColStd_SequenceOfInteger myMax; @@ -373,7 +411,7 @@ namespace SMESH{ public: Comparator(); virtual ~Comparator(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual void SetMargin(double theValue); virtual void SetNumFunctor(NumericalFunctorPtr theFunct); virtual bool IsSatisfy( long theElementId ) = 0; @@ -433,7 +471,7 @@ namespace SMESH{ LogicalNOT(); virtual ~LogicalNOT(); virtual bool IsSatisfy( long theElementId ); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual void SetPredicate(PredicatePtr thePred); virtual SMDSAbs_ElementType GetType() const; @@ -451,7 +489,7 @@ namespace SMESH{ public: LogicalBinary(); virtual ~LogicalBinary(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual void SetPredicate1(PredicatePtr thePred); virtual void SetPredicate2(PredicatePtr thePred); virtual SMDSAbs_ElementType GetType() const; @@ -516,7 +554,7 @@ namespace SMESH{ ManifoldPart(); ~ManifoldPart(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); // inoke when all parameters already set virtual bool IsSatisfy( long theElementId ); virtual SMDSAbs_ElementType GetType() const; @@ -544,7 +582,7 @@ namespace SMESH{ TVectorOfFacePtr& theFaces ) const; private: - SMDS_Mesh* myMesh; + const SMDS_Mesh* myMesh; TColStd_MapOfInteger myMapIds; TColStd_MapOfInteger myMapBadGeomIds; TVectorOfFacePtr myAllFacePtr; @@ -566,7 +604,7 @@ namespace SMESH{ public: ElementsOnSurface(); ~ElementsOnSurface(); - virtual void SetMesh( SMDS_Mesh* theMesh ); + virtual void SetMesh( const SMDS_Mesh* theMesh ); virtual bool IsSatisfy( long theElementId ); virtual SMDSAbs_ElementType GetType() const; @@ -581,7 +619,7 @@ namespace SMESH{ bool isOnSurface( const SMDS_MeshNode* theNode ) const; private: - SMDS_Mesh* myMesh; + const SMDS_Mesh* myMesh; TColStd_MapOfInteger myIds; SMDSAbs_ElementType myType; Handle(Geom_Surface) mySurf; @@ -599,9 +637,20 @@ namespace SMESH{ Filter(); virtual ~Filter(); virtual void SetPredicate(PredicatePtr thePred); + typedef std::vector TIdSequence; - virtual TIdSequence GetElementsId( SMDS_Mesh* theMesh ); - + + virtual + void + GetElementsId( const SMDS_Mesh* theMesh, + TIdSequence& theSequence ); + + static + void + GetElementsId( const SMDS_Mesh* theMesh, + PredicatePtr thePredicate, + TIdSequence& theSequence ); + protected: PredicatePtr myPredicate; };