Salome HOME
Make ElemEntityType pass nodes through as well
[modules/smesh.git] / src / Controls / SMESH_ControlsDef.hxx
index 9b9c26525d83d93f511e8a3c853444cec46c4c80..bc5b9bb745a4f2f0d61bc5c98517622650e94d17 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013  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
@@ -245,7 +245,6 @@ namespace SMESH{
       virtual SMDSAbs_ElementType GetType() const;
     };
 
-
     /*
       Class       : Skew
       Description : Functor for calculating skew in degrees
@@ -303,7 +302,7 @@ namespace SMESH{
 
     /*
       Class       : MultiConnection
-      Description : Functor for calculating number of faces conneted to the edge
+      Description : Functor for calculating number of faces connected to the edge
     */
     class SMESHCONTROLS_EXPORT MultiConnection: public virtual NumericalFunctor{
     public:
@@ -315,7 +314,7 @@ namespace SMESH{
     
     /*
       Class       : MultiConnection2D
-      Description : Functor for calculating number of faces conneted to the edge
+      Description : Functor for calculating number of faces connected to the edge
     */
     class SMESHCONTROLS_EXPORT MultiConnection2D: public virtual NumericalFunctor{
     public:
@@ -429,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<ElemEntityType> ElemEntityTypePtr;
+
+
     /*
       BareBorderVolume
     */
@@ -924,7 +945,7 @@ namespace SMESH{
       void                 SetType( SMDSAbs_ElementType theType );
       virtual              SMDSAbs_ElementType GetType() const;
       void                 SetGeomType( SMDSAbs_GeometryType theType );
-      virtual SMDSAbs_GeometryType GetGeomType() const;
+      SMDSAbs_GeometryType GetGeomType() const;
 
     private:
       const SMDS_Mesh*     myMesh;
@@ -958,10 +979,43 @@ namespace SMESH{
     };
     typedef boost::shared_ptr<CoplanarFaces> CoplanarFacesPtr;
 
+    /*
+      Class       : ConnectedElements
+      Description : Predicate to get elements of one domain
+    */
+    class SMESHCONTROLS_EXPORT ConnectedElements: public virtual Predicate
+    {
+    public:
+      ConnectedElements();
+      void                 SetNode( int nodeID );
+      void                 SetPoint( double x, double y, double z );
+      int                  GetNode() const;
+      std::vector<double>  GetPoint() const;
+
+      void                 SetType( SMDSAbs_ElementType theType );
+      virtual              SMDSAbs_ElementType GetType() const;
+
+      virtual void         SetMesh( const SMDS_Mesh* theMesh );
+      virtual bool         IsSatisfy( long theElementId );
+
+      //const std::set<long>& GetDomainIDs() const { return myOkIDs; }
+
+    private:
+      int                 myNodeID;
+      std::vector<double> myXYZ;
+      SMDSAbs_ElementType myType;
+      TMeshModifTracer    myMeshModifTracer;
+
+      void                clearOkIDs();
+      bool                myOkIDsReady;
+      std::set< int >     myOkIDs; // empty means that there is one domain
+    };
+    typedef boost::shared_ptr<ConnectedElements> ConnectedElementsPtr;
+
     /*
       FILTER
     */
-    class SMESHCONTROLS_EXPORT Filter{
+    class SMESHCONTROLS_EXPORT Filter {
     public:
       Filter();
       virtual ~Filter();