-// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012 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
std::vector<gp_XYZ> myArray;
};
+ /*!
+ * \brief Class used to detect mesh modification: IsMeshModified() returns
+ * true if a mesh has changed since last calling IsMeshModified()
+ */
+ class SMESHCONTROLS_EXPORT TMeshModifTracer
+ {
+ unsigned long myMeshModifTime;
+ const SMDS_Mesh* myMesh;
+ public:
+ TMeshModifTracer();
+ void SetMesh( const SMDS_Mesh* theMesh );
+ const SMDS_Mesh* GetMesh() const { return myMesh; }
+ bool IsMeshModified();
+ };
+
/*
Class : NumericalFunctor
Description : Root of all Functors returning numeric value
class SMESHCONTROLS_EXPORT MaxElementLength2D: public virtual NumericalFunctor{
public:
virtual double GetValue( long theElementId );
+ virtual double GetValue( const TSequenceOfXYZ& P );
virtual double GetBadRate( double Value, int nbNodes ) const;
virtual SMDSAbs_ElementType GetType() const;
};
*/
class SMESHCONTROLS_EXPORT AspectRatio: 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;
void GetValues(MValues& theValues);
};
typedef boost::shared_ptr<MultiConnection2D> MultiConnection2DPtr;
+
+ /*
+ Class : BallDiameter
+ Description : Functor returning diameter of a ball element
+ */
+ class SMESHCONTROLS_EXPORT BallDiameter: public virtual NumericalFunctor{
+ public:
+ virtual double GetValue( long theElementId );
+ virtual double GetBadRate( double Value, int nbNodes ) const;
+ virtual SMDSAbs_ElementType GetType() const;
+ };
+
+
/*
PREDICATES
*/
class SMESHCONTROLS_EXPORT CoincidentNodes: public Predicate {
public:
CoincidentNodes();
- void SetTolerance (const double theToler) { myToler = theToler; }
- void SetMesh( const SMDS_Mesh* theMesh, TIDSortedNodeSet* nodesToCheck );
- virtual void SetMesh( const SMDS_Mesh* theMesh ) { SetMesh( theMesh, 0 ); }
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
virtual SMDSAbs_ElementType GetType() const;
+ void SetTolerance (const double theToler) { myToler = theToler; }
+ double GetTolerance () const { return myToler; }
+
private:
- TColStd_MapOfInteger myCoincidentIDs;
double myToler;
+ TColStd_MapOfInteger myCoincidentIDs;
+ TMeshModifTracer myMeshModifTracer;
};
+ typedef boost::shared_ptr<CoincidentNodes> CoincidentNodesPtr;
/*
Class : CoincidentElements
class SMESHCONTROLS_EXPORT CoincidentElements: public Predicate {
public:
CoincidentElements();
- void SetMesh( const SMDS_Mesh* theMesh, TIDSortedElemSet* elemsToCheck );
- virtual void SetMesh( const SMDS_Mesh* theMesh ) { SetMesh( theMesh, 0 ); }
+ virtual void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
private:
- const SMDS_Mesh* myMesh;
- TIDSortedElemSet* myElemsToCheck;
- TColStd_MapOfInteger myCoincidentIDs;
+ const SMDS_Mesh* myMesh;
};
class SMESHCONTROLS_EXPORT CoincidentElements1D: public CoincidentElements {
public:
virtual bool IsSatisfy( long theElementId );
protected:
const SMDS_Mesh* myMesh;
- std::vector< const SMDS_MeshNode* > myLinkNodes;
};
typedef boost::shared_ptr<OverConstrainedFace> OverConstrainedFacePtr;
bool isOnSurface( const SMDS_MeshNode* theNode );
private:
- const SMDS_Mesh* myMesh;
+ TMeshModifTracer myMeshModifTracer;
TColStd_MapOfInteger myIds;
SMDSAbs_ElementType myType;
//Handle(Geom_Surface) mySurf;
void process (const SMDS_MeshElement* theElem);
private:
- const SMDS_Mesh* myMesh;
+ TMeshModifTracer myMeshModifTracer;
TColStd_MapOfInteger myIds;
SMDSAbs_ElementType myType;
TopoDS_Shape myShape;
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 void SetMesh( const SMDS_Mesh* theMesh );
virtual bool IsSatisfy( long theElementId );
private:
- const SMDS_Mesh* myMesh;
+ TMeshModifTracer myMeshModifTracer;
long myFaceID;
double myToler;
std::set< long > myCoplanarIDs;