X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FControls%2FSMESH_ControlsDef.hxx;h=972cb042ac4b99a55cad06ab7f22ac28dc48455d;hb=refs%2Ftags%2FdistribGeom_06Mar13;hp=587f5b6d609bf79b6c09b933764aaaf81758953b;hpb=f0bf265fc0ea849ad1a359e10ad0c9cf6b0b9bb8;p=modules%2Fsmesh.git diff --git a/src/Controls/SMESH_ControlsDef.hxx b/src/Controls/SMESH_ControlsDef.hxx index 587f5b6d6..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; @@ -244,7 +245,6 @@ namespace SMESH{ virtual SMDSAbs_ElementType GetType() const; }; - /* Class : Skew Description : Functor for calculating skew in degrees @@ -428,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 */ @@ -820,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;