X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FControls%2FSMESH_ControlsDef.hxx;h=972cb042ac4b99a55cad06ab7f22ac28dc48455d;hb=refs%2Ftags%2FdistribGeom_06Mar13;hp=0609c99e79595753e5b3109d572b155b2a5aa9ae;hpb=61cd810fbe6cf0f69f313e61e03cd80c1fd45fbe;p=modules%2Fsmesh.git diff --git a/src/Controls/SMESH_ControlsDef.hxx b/src/Controls/SMESH_ControlsDef.hxx index 0609c99e7..972cb042a 100644 --- a/src/Controls/SMESH_ControlsDef.hxx +++ b/src/Controls/SMESH_ControlsDef.hxx @@ -125,7 +125,8 @@ namespace SMESH{ std::vector& nbEvents, std::vector& funValues, const std::vector& elements, - const double* minmax=0); + const double* minmax=0, + const bool isLogarithmic = false); virtual SMDSAbs_ElementType GetType() const = 0; virtual double GetBadRate( double Value, int nbNodes ) const = 0; long GetPrecision() const; @@ -162,6 +163,7 @@ namespace SMESH{ 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; }; @@ -243,7 +245,6 @@ namespace SMESH{ virtual SMDSAbs_ElementType GetType() const; }; - /* Class : Skew Description : Functor for calculating skew in degrees @@ -427,6 +428,28 @@ namespace SMESH{ const SMDS_Mesh* myMesh; }; + /* + Class : ElemEntityType + Description : Functor for calculating entity type + */ + class SMESHCONTROLS_EXPORT ElemEntityType: public virtual Predicate{ + public: + ElemEntityType(); + virtual void SetMesh( const SMDS_Mesh* theMesh ); + virtual bool IsSatisfy( long theElementId ); + void SetType( SMDSAbs_ElementType theType ); + virtual SMDSAbs_ElementType GetType() const; + void SetElemEntityType( SMDSAbs_EntityType theEntityType ); + SMDSAbs_EntityType GetElemEntityType() const; + + private: + const SMDS_Mesh* myMesh; + SMDSAbs_ElementType myType; + SMDSAbs_EntityType myEntityType; + }; + typedef boost::shared_ptr ElemEntityTypePtr; + + /* BareBorderVolume */ @@ -783,7 +806,7 @@ namespace SMESH{ bool isOnSurface( const SMDS_MeshNode* theNode ); private: - const SMDS_Mesh* myMesh; + TMeshModifTracer myMeshModifTracer; TColStd_MapOfInteger myIds; SMDSAbs_ElementType myType; //Handle(Geom_Surface) mySurf; @@ -819,25 +842,36 @@ namespace SMESH{ const SMDSAbs_ElementType theType); private: - void addShape (const TopoDS_Shape& theShape); - void process(); - void process (const SMDS_MeshElement* theElem); - private: - TMeshModifTracer myMeshModifTracer; - TColStd_MapOfInteger myIds; - SMDSAbs_ElementType myType; - TopoDS_Shape myShape; - double myToler; - bool myAllNodesFlag; - - TopTools_MapOfShape myShapesMap; - TopAbs_ShapeEnum myCurShapeType; // type of current sub-shape - BRepClass3d_SolidClassifier myCurSC; // current SOLID - GeomAPI_ProjectPointOnSurf myCurProjFace; // current FACE - TopoDS_Face myCurFace; // current FACE - GeomAPI_ProjectPointOnCurve myCurProjEdge; // current EDGE - gp_Pnt myCurPnt; // current VERTEX + struct TClassifier + { + TClassifier(const TopoDS_Shape& s, double tol) { Init(s,tol); } + void Init(const TopoDS_Shape& s, double tol); + bool IsOut(const gp_Pnt& p); + TopAbs_ShapeEnum ShapeType() const; + private: + bool isOutOfSolid (const gp_Pnt& p); + bool isOutOfFace (const gp_Pnt& p); + bool isOutOfEdge (const gp_Pnt& p); + bool isOutOfVertex(const gp_Pnt& p); + + bool (TClassifier::* myIsOutFun)(const gp_Pnt& p); + BRepClass3d_SolidClassifier mySolidClfr; + GeomAPI_ProjectPointOnSurf myProjFace; + GeomAPI_ProjectPointOnCurve myProjEdge; + gp_Pnt myVertexXYZ; + TopoDS_Shape myShape; + double myTol; + }; + void clearClassifiers(); + + std::vector< TClassifier* > myClassifiers; + const SMDS_Mesh* myMesh; + SMDSAbs_ElementType myType; + TopoDS_Shape myShape; + double myToler; + bool myAllNodesFlag; + }; typedef boost::shared_ptr ElementsOnShapePtr;