Salome HOME
Copyright update 2021
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_Measurements.h
index a9ea2b7e774e77c5787211653cd81f1cd10e81f5..ea9f3e0d6b235bcb66b2fd28bac76b55b5c9b21c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  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
@@ -37,13 +37,16 @@ class SUIT_SelectionFilter;
 class SALOME_Actor;
 class SMESH_Actor;
 class SMESHGUI_IdValidator;
+class SMESHGUI_MeshEditPreview;
 
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
 
+#include <gp_Vec.hxx>
+
 class SMESHGUI_EXPORT SMESHGUI_MinDistance : public QWidget
 {
-  Q_OBJECT;
+  Q_OBJECT
 
   enum { NoTgt, FirstTgt, SecondTgt };
   enum { OriginTgt, NodeTgt, ElementTgt, ObjectTgt };
@@ -92,7 +95,7 @@ private:
 
 class SMESHGUI_EXPORT SMESHGUI_BoundingBox : public QWidget
 {
-  Q_OBJECT;
+  Q_OBJECT
 
   enum { ObjectsSrc, NodesSrc, ElementsSrc };
   
@@ -138,7 +141,7 @@ private:
 
 class SMESHGUI_EXPORT SMESHGUI_BasicProperties : public QWidget
 {
-  Q_OBJECT;
+  Q_OBJECT
   
 public:
   //! Property type
@@ -167,9 +170,43 @@ private:
   SUIT_SelectionFilter*     myFilter;
 };
 
+class SMESHGUI_EXPORT SMESHGUI_Angle : public QWidget
+{
+  Q_OBJECT
+  
+public:
+
+  SMESHGUI_Angle( QWidget* = 0 );
+  ~SMESHGUI_Angle();
+
+  void deactivate();
+  void updateSelection();
+
+private slots:
+  void selectionChanged();
+  void nodesEdited();
+  void compute();
+  void clear();
+
+private:
+
+  bool addPointByActor( int id );
+  bool addPointByIDSource( int id );
+  gp_Vec getNormal(const gp_Vec& vec10 );
+
+  QLineEdit* myNodes;
+  QLineEdit* myResult;
+
+  SMESH::SMESH_IDSource_var myIDSrc;
+  SMESH_Actor*              myActor;
+
+  std::vector< SMESH::PointStruct > myPoints;
+  SMESHGUI_MeshEditPreview*         myPreview;
+};
+
 class SMESHGUI_EXPORT SMESHGUI_MeasureDlg : public QDialog
 { 
-  Q_OBJECT;
+  Q_OBJECT
 
   enum { NodeMode, ElemMode };
 
@@ -180,7 +217,8 @@ public:
     BoundingBox,   //!< bounding box
     Length,        //!< length
     Area,          //!< area
-    Volume         //!< volume
+    Volume,        //!< volume
+    Angle
   };
 
   SMESHGUI_MeasureDlg( QWidget* = 0, int = MinDistance );
@@ -203,6 +241,7 @@ private:
   SMESHGUI_MinDistance* myMinDist;   
   SMESHGUI_BoundingBox* myBndBox;
   SMESHGUI_BasicProperties* myBasicProps;
+  SMESHGUI_Angle*       myAngle;
 };
 
 #endif // SMESHGUI_MEASUREMENTS_H