-// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2010 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
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
#ifndef _SMESH_CONTROLSDEF_HXX_
#define _SMESH_CONTROLSDEF_HXX_
namespace SMESH{
namespace Controls{
- class SMESHCONTROLS_EXPORT TSequenceOfXYZ: public std::vector<gp_XYZ>
+ class SMESHCONTROLS_EXPORT TSequenceOfXYZ
{
+ typedef std::vector<gp_XYZ>::size_type size_type;
+
public:
- typedef std::vector<gp_XYZ> TSuperClass;
- TSequenceOfXYZ()
- {}
+ TSequenceOfXYZ();
- TSequenceOfXYZ(size_type n):
- TSuperClass(n)
- {}
+ TSequenceOfXYZ(size_type n);
- TSequenceOfXYZ(size_type n, const value_type& t):
- TSuperClass(n,t)
- {}
+ TSequenceOfXYZ(size_type n, const gp_XYZ& t);
- TSequenceOfXYZ(const TSequenceOfXYZ& theSequenceOfXYZ):
- TSuperClass(theSequenceOfXYZ)
- {}
+ TSequenceOfXYZ(const TSequenceOfXYZ& theSequenceOfXYZ);
template <class InputIterator>
- TSequenceOfXYZ(InputIterator theBegin, InputIterator theEnd):
- TSuperClass(theBegin,theEnd)
- {}
+ TSequenceOfXYZ(InputIterator theBegin, InputIterator theEnd);
- TSequenceOfXYZ& operator=(const TSequenceOfXYZ& theSequenceOfXYZ){
- TSuperClass::operator=(theSequenceOfXYZ);
- return *this;
- }
+ ~TSequenceOfXYZ();
- reference operator()(size_type n){
- return TSuperClass::operator[](n-1);
- }
+ TSequenceOfXYZ& operator=(const TSequenceOfXYZ& theSequenceOfXYZ);
- const_reference operator()(size_type n) const{
- return TSuperClass::operator[](n-1);
- }
+ gp_XYZ& operator()(size_type n);
- private:
- reference operator[](size_type n);
+ const gp_XYZ& operator()(size_type n) const;
+
+ void clear();
+
+ void reserve(size_type n);
- const_reference operator[](size_type n) const;
+ void push_back(const gp_XYZ& v);
+
+ size_type size() const;
+
+ private:
+ std::vector<gp_XYZ> myArray;
};
/*
virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual double GetValue( long theElementId );
virtual double GetValue(const TSequenceOfXYZ& thePoints) { return -1.0;};
+ void GetHistogram(int nbIntervals,
+ std::vector<int>& nbEvents,
+ std::vector<double>& funValues);
virtual SMDSAbs_ElementType GetType() const = 0;
virtual double GetBadRate( double Value, int nbNodes ) const = 0;
long GetPrecision() const;
void SetPrecision( const long thePrecision );
bool GetPoints(const int theId,
- TSequenceOfXYZ& theRes) const;
+ TSequenceOfXYZ& theRes) const;
static bool GetPoints(const SMDS_MeshElement* theElem,
- TSequenceOfXYZ& theRes);
+ TSequenceOfXYZ& theRes);
protected:
const SMDS_Mesh* myMesh;
const SMDS_MeshElement* myCurrElement;
};
+ /*
+ Class : MaxElementLength2D
+ Description : Functor calculating maximum length of 2D element
+ */
+ class SMESHCONTROLS_EXPORT MaxElementLength2D: public virtual NumericalFunctor{
+ public:
+ virtual double GetValue( long theElementId );
+ virtual double GetBadRate( double Value, int nbNodes ) const;
+ virtual SMDSAbs_ElementType GetType() const;
+ };
+
+
+ /*
+ Class : MaxElementLength3D
+ Description : Functor calculating maximum length of 3D element
+ */
+ class SMESHCONTROLS_EXPORT MaxElementLength3D: public virtual NumericalFunctor{
+ public:
+ virtual double GetValue( long theElementId );
+ virtual double GetBadRate( double Value, int nbNodes ) const;
+ virtual SMDSAbs_ElementType GetType() const;
+ };
+
+
/*
Class : SMESH_MinimumAngle
Description : Functor for calculation of minimum angle
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
struct Value{
- double myLength;
- long myPntId[2];
- Value(double theLength, long thePntId1, long thePntId2);
- bool operator<(const Value& x) const;
+ double myLength;
+ long myPntId[2];
+ Value(double theLength, long thePntId1, long thePntId2);
+ bool operator<(const Value& x) const;
};
typedef std::set<Value> TValues;
void GetValues(TValues& theValues);
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
struct Value{
- long myPntId[2];
- Value(long thePntId1, long thePntId2);
- bool operator<(const Value& x) const;
+ long myPntId[2];
+ Value(long thePntId1, long thePntId2);
+ bool operator<(const Value& x) const;
};
typedef std::map<Value,int> MValues;
static bool IsFreeEdge( const SMDS_MeshNode** theNodes, const int theFaceId );
typedef long TElemId;
struct Border{
- TElemId myElemId;
- TElemId myPntId[2];
- Border(long theElemId, long thePntId1, long thePntId2);
- bool operator<(const Border& x) const;
+ TElemId myElemId;
+ TElemId myPntId[2];
+ Border(long theElemId, long thePntId1, long thePntId2);
+ bool operator<(const Border& x) const;
};
typedef std::set<Border> TBorders;
void GetBoreders(TBorders& theBorders);
class SMESHCONTROLS_EXPORT ElemGeomType: public virtual Predicate{
public:
ElemGeomType();
- virtual void SetMesh( const SMDS_Mesh* theMesh );
- virtual bool IsSatisfy( long theElementId );
- void SetType( SMDSAbs_ElementType theType );
- virtual SMDSAbs_ElementType GetType() const;
- void SetGeomType( SMDSAbs_GeometryType theType );
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
+ virtual bool IsSatisfy( long theElementId );
+ void SetType( SMDSAbs_ElementType theType );
+ virtual SMDSAbs_ElementType GetType() const;
+ void SetGeomType( SMDSAbs_GeometryType theType );
virtual SMDSAbs_GeometryType GetGeomType() const;
private:
};
typedef boost::shared_ptr<ElemGeomType> ElemGeomTypePtr;
+ /*
+ Class : CoplanarFaces
+ Description : Predicate to check angle between faces
+ */
+ class SMESHCONTROLS_EXPORT CoplanarFaces: public virtual Predicate
+ {
+ public:
+ CoplanarFaces();
+ void SetFace( long theID ) { myFaceID = theID; }
+ long GetFace() const { return myFaceID; }
+ void SetTolerance (const double theToler) { myToler = theToler; }
+ double GetTolerance () const { return myToler; }
+ virtual void SetMesh( const SMDS_Mesh* theMesh ) { myMesh = theMesh; }
+ virtual SMDSAbs_ElementType GetType() const { return SMDSAbs_Face; }
+
+ virtual bool IsSatisfy( long theElementId );
+
+ private:
+ const SMDS_Mesh* myMesh;
+ long myFaceID;
+ double myToler;
+ std::set< long > myCoplanarIDs;
+ };
+ typedef boost::shared_ptr<CoplanarFaces> CoplanarFacesPtr;
+
/*
FILTER
*/
virtual
void
GetElementsId( const SMDS_Mesh* theMesh,
- TIdSequence& theSequence );
+ TIdSequence& theSequence );
static
void
GetElementsId( const SMDS_Mesh* theMesh,
- PredicatePtr thePredicate,
- TIdSequence& theSequence );
+ PredicatePtr thePredicate,
+ TIdSequence& theSequence );
protected:
PredicatePtr myPredicate;