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;
static bool GetPoints(const SMDS_MeshElement* theElem,
TSequenceOfXYZ& theRes);
protected:
- SMDS_Mesh* myMesh;
+ const SMDS_Mesh* myMesh;
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
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:
- SMDS_Mesh* myMesh;
+ const SMDS_Mesh* myMesh;
};
class BadOrientedVolume: public virtual Predicate{
public:
BadOrientedVolume();
- virtual void SetMesh( SMDS_Mesh* theMesh );
+ 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;
};
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 );
void GetBoreders(TBorders& theBorders);
protected:
- SMDS_Mesh* myMesh;
+ const SMDS_Mesh* myMesh;
};
typedef boost::shared_ptr<FreeEdges> FreeEdgesPtr;
{
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 );
bool SetRangeStr( const TCollection_AsciiString& );
protected:
- SMDS_Mesh* myMesh;
+ const SMDS_Mesh* myMesh;
TColStd_SequenceOfInteger myMin;
TColStd_SequenceOfInteger myMax;
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;
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;
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;
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;
TVectorOfFacePtr& theFaces ) const;
private:
- SMDS_Mesh* myMesh;
+ const SMDS_Mesh* myMesh;
TColStd_MapOfInteger myMapIds;
TColStd_MapOfInteger myMapBadGeomIds;
TVectorOfFacePtr myAllFacePtr;
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;
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;
Filter();
virtual ~Filter();
virtual void SetPredicate(PredicatePtr thePred);
+
typedef std::vector<long> 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;
};