X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FControls%2FSMESH_ControlsDef.hxx;h=907157598c1f78aae0510a8411375546a586bf78;hp=74a4a263d270b1d0efb9f25506e7ccab49fe0bbe;hb=b8917880e4fa9abc35a42386a76dd222c6ff7ad6;hpb=d5029840731bccaa1718e65f0abf3b19198c7293 diff --git a/src/Controls/SMESH_ControlsDef.hxx b/src/Controls/SMESH_ControlsDef.hxx index 74a4a263d..907157598 100644 --- a/src/Controls/SMESH_ControlsDef.hxx +++ b/src/Controls/SMESH_ControlsDef.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -27,7 +27,6 @@ #include "SMESH_TypeDefs.hxx" -#include #include #include #include @@ -54,6 +53,9 @@ class SMESHDS_Mesh; class SMESHDS_SubMesh; class SMESHDS_GroupBase; +class BRepClass3d_SolidClassifier; +class ShapeAnalysis_Surface; +class gp_Pln; class gp_Pnt; namespace SMESH{ @@ -134,6 +136,8 @@ namespace SMESH{ const std::vector& elements, const double* minmax=0, const bool isLogarithmic = false); + bool IsApplicable( long theElementId ) const; + virtual bool IsApplicable( const SMDS_MeshElement* element ) const; virtual SMDSAbs_ElementType GetType() const = 0; virtual double GetBadRate( double Value, int nbNodes ) const = 0; long GetPrecision() const; @@ -174,8 +178,8 @@ namespace SMESH{ virtual double GetBadRate( double Value, int nbNodes ) const; virtual SMDSAbs_ElementType GetType() const; }; - - + + /* Class : MaxElementLength3D Description : Functor calculating maximum length of 3D element @@ -210,6 +214,7 @@ namespace SMESH{ virtual double GetValue( const TSequenceOfXYZ& thePoints ); virtual double GetBadRate( double Value, int nbNodes ) const; virtual SMDSAbs_ElementType GetType() const; + virtual bool IsApplicable( const SMDS_MeshElement* element ) const; }; @@ -223,6 +228,7 @@ namespace SMESH{ virtual double GetValue( const TSequenceOfXYZ& thePoints ); virtual double GetBadRate( double Value, int nbNodes ) const; virtual SMDSAbs_ElementType GetType() const; + virtual bool IsApplicable( const SMDS_MeshElement* element ) const; }; @@ -235,7 +241,8 @@ namespace SMESH{ virtual double GetValue( const TSequenceOfXYZ& thePoints ); virtual double GetBadRate( double Value, int nbNodes ) const; virtual SMDSAbs_ElementType GetType() const; - + virtual bool IsApplicable( const SMDS_MeshElement* element ) const; + private: double ComputeA( const gp_XYZ&, const gp_XYZ&, const gp_XYZ&, const gp_XYZ& ) const; }; @@ -250,6 +257,7 @@ namespace SMESH{ virtual double GetValue( const TSequenceOfXYZ& thePoints ); virtual double GetBadRate( double Value, int nbNodes ) const; virtual SMDSAbs_ElementType GetType() const; + virtual bool IsApplicable( const SMDS_MeshElement* element ) const; }; /* @@ -261,6 +269,7 @@ namespace SMESH{ virtual double GetValue( const TSequenceOfXYZ& thePoints ); virtual double GetBadRate( double Value, int nbNodes ) const; virtual SMDSAbs_ElementType GetType() const; + virtual bool IsApplicable( const SMDS_MeshElement* element ) const; }; @@ -289,11 +298,13 @@ namespace SMESH{ /* Class : Length2D - Description : Functor for calculating length of edge + Description : Functor for calculating minimal length of edges of element */ class SMESHCONTROLS_EXPORT Length2D: public virtual NumericalFunctor{ public: - virtual double GetValue( long theElementId ); + Length2D( SMDSAbs_ElementType type = SMDSAbs_Face ); + virtual bool IsApplicable( const SMDS_MeshElement* element ) const; + virtual double GetValue( const TSequenceOfXYZ& thePoints ); virtual double GetBadRate( double Value, int nbNodes ) const; virtual SMDSAbs_ElementType GetType() const; struct Value{ @@ -304,9 +315,38 @@ namespace SMESH{ }; typedef std::set TValues; void GetValues(TValues& theValues); + + private: + SMDSAbs_ElementType myType; }; typedef boost::shared_ptr Length2DPtr; + /* + Class : Length2D + Description : Functor for calculating minimal length of edges of 3D element + */ + class SMESHCONTROLS_EXPORT Length3D: public virtual Length2D { + public: + Length3D(); + }; + typedef boost::shared_ptr Length3DPtr; + + /* + Class : Deflection2D + Description : Functor for calculating distance between a face and geometry + */ + class SMESHCONTROLS_EXPORT Deflection2D: public virtual NumericalFunctor{ + public: + virtual void SetMesh( const SMDS_Mesh* theMesh ); + virtual double GetValue( const TSequenceOfXYZ& thePoints ); + virtual double GetBadRate( double Value, int nbNodes ) const; + virtual SMDSAbs_ElementType GetType() const; + private: + Handle(ShapeAnalysis_Surface) mySurface; + int myShapeIndex; + boost::shared_ptr myPlane; + }; + /* Class : MultiConnection Description : Functor for calculating number of faces connected to the edge @@ -379,7 +419,7 @@ namespace SMESH{ virtual bool IsSatisfy( long theElementId ); virtual SMDSAbs_ElementType GetType() const; - void SetTolerance (const double theToler) { myToler = theToler; } + void SetTolerance (const double theToler); double GetTolerance () const { return myToler; } private: @@ -779,7 +819,7 @@ namespace SMESH{ ~ManifoldPart(); //virtual Predicate* clone() const { return new ManifoldPart( *this ); } virtual void SetMesh( const SMDS_Mesh* theMesh ); - // inoke when all parameters already set + // invoke when all parameters already set virtual bool IsSatisfy( long theElementId ); virtual SMDSAbs_ElementType GetType() const; @@ -1160,14 +1200,16 @@ namespace SMESH{ virtual void - GetElementsId( const SMDS_Mesh* theMesh, - TIdSequence& theSequence ); + GetElementsId( const SMDS_Mesh* theMesh, + TIdSequence& theSequence, + SMDS_ElemIteratorPtr theElements=0); static void - GetElementsId( const SMDS_Mesh* theMesh, - PredicatePtr thePredicate, - TIdSequence& theSequence ); + GetElementsId( const SMDS_Mesh* theMesh, + PredicatePtr thePredicate, + TIdSequence& theSequence, + SMDS_ElemIteratorPtr theElements=0 ); protected: PredicatePtr myPredicate;