Version: 9.12.0
SMESHGUI_Measurements.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 // File : SMESHGUI_Measurements.h
23 // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
24 
25 #ifndef SMESHGUI_MEASUREMENTS_H
26 #define SMESHGUI_MEASUREMENTS_H
27 
28 #include "SMESH_SMESHGUI.hxx"
29 
30 #include <QDialog>
31 
32 class QButtonGroup;
33 class QLineEdit;
34 class QTabWidget;
35 class QGroupBox;
37 class SALOME_Actor;
38 class SMESH_Actor;
41 
42 #include <SALOMEconfig.h>
43 #include CORBA_SERVER_HEADER(SMESH_Mesh)
44 
45 #include <gp_Vec.hxx>
46 
48 {
49  Q_OBJECT
50 
51  enum { NoTgt, FirstTgt, SecondTgt };
52  enum { OriginTgt, NodeTgt, ElementTgt, ObjectTgt };
53 
54 public:
57 
58  bool eventFilter( QObject*, QEvent* );
59  void updateSelection();
60  void deactivate();
61 
62 private:
63  void setTarget( int );
64  void erasePreview();
65  void displayPreview();
66  void createPreview( double, double, double, double, double, double );
67 
68 private slots:
69  void selectionChanged();
70  void firstChanged();
71  void secondChanged();
72  void firstEdited();
73  void secondEdited();
74  void compute();
75  void clear();
76 
77 private:
78  QButtonGroup* myFirst;
79  QButtonGroup* mySecond;
80  QLineEdit* myFirstTgt;
81  QLineEdit* mySecondTgt;
82  QLineEdit* myDX;
83  QLineEdit* myDY;
84  QLineEdit* myDZ;
85  QLineEdit* myDistance;
87  SMESH::SMESH_IDSource_var myFirstSrc;
88  SMESH::SMESH_IDSource_var mySecondSrc;
94 };
95 
97 {
98  Q_OBJECT
99 
100  enum { ObjectsSrc, NodesSrc, ElementsSrc };
101 
102 public:
105 
106  void updateSelection();
107  void deactivate();
108  void erasePreview();
109 
110 private:
111  void displayPreview();
112  void createPreview( double, double, double, double, double, double );
113 
114 private slots:
115  void selectionChanged();
116  void sourceChanged();
117  void sourceEdited();
118  void compute();
119  void clear();
120 
121 private:
122  typedef QList<SMESH::SMESH_IDSource_var> SourceList;
123  QButtonGroup* mySourceMode;
124  QLineEdit* mySource;
125  QLineEdit* myXmin;
126  QLineEdit* myXmax;
127  QLineEdit* myDX;
128  QLineEdit* myYmin;
129  QLineEdit* myYmax;
130  QLineEdit* myDY;
131  QLineEdit* myZmin;
132  QLineEdit* myZmax;
133  QLineEdit* myDZ;
137  QString myIDs;
140 };
141 
143 {
144  Q_OBJECT
145 
146 public:
148  enum Mode { Length, Area, Volume };
149 
152 
153  void setMode( const Mode );
154 
155  void updateSelection();
156  void deactivate();
157 
158 private slots:
159  void selectionChanged();
160  void modeChanged( int);
161  void compute();
162  void clear();
163 
164 private:
165  QButtonGroup* myMode;
166  QLineEdit* mySource;
168  QLineEdit* myResult;
169  SMESH::SMESH_IDSource_var mySrc;
171 };
172 
174 {
175  Q_OBJECT
176 
177 public:
178 
179  SMESHGUI_Angle( QWidget* = 0 );
180  ~SMESHGUI_Angle();
181 
182  void deactivate();
183  void updateSelection();
184 
185 private slots:
186  void selectionChanged();
187  void nodesEdited();
188  void compute();
189  void clear();
190 
191 private:
192 
193  bool addPointByActor( int id );
194  bool addPointByIDSource( int id );
195  gp_Vec getNormal(const gp_Vec& vec10 );
196 
197  QLineEdit* myNodes;
198  QLineEdit* myResult;
199 
200  SMESH::SMESH_IDSource_var myIDSrc;
202 
203  std::vector< SMESH::PointStruct > myPoints;
205 };
206 
208 {
209  Q_OBJECT
210 
211  enum { NodeMode, ElemMode };
212 
213 public:
215  enum {
221  Angle
222  };
223 
224  SMESHGUI_MeasureDlg( QWidget* = 0, int = MinDistance );
226 
227  void reject();
228 
229 protected:
230  void keyPressEvent( QKeyEvent* );
231  void enterEvent( QEvent* );
232 
233 private slots:
234  void help();
235  void updateSelection();
236  void activate();
237  void deactivate();
238 
239 private:
240  QTabWidget* myTabWidget;
245 };
246 
247 #endif // SMESHGUI_MEASUREMENTS_H
#define SMESHGUI_EXPORT
Definition: SMESH_SMESHGUI.hxx:36
Angle measurement widget.
Definition: SMESHGUI_Measurements.h:174
SMESH::SMESH_IDSource_var myIDSrc
Definition: SMESHGUI_Measurements.h:200
SMESH_Actor * myActor
Definition: SMESHGUI_Measurements.h:201
SMESHGUI_MeshEditPreview * myPreview
Definition: SMESHGUI_Measurements.h:204
QLineEdit * myNodes
Definition: SMESHGUI_Measurements.h:197
QLineEdit * myResult
Definition: SMESHGUI_Measurements.h:198
std::vector< SMESH::PointStruct > myPoints
Definition: SMESHGUI_Measurements.h:203
basic properties measurement widget.
Definition: SMESHGUI_Measurements.h:143
QLineEdit * mySource
Definition: SMESHGUI_Measurements.h:166
SMESH::SMESH_IDSource_var mySrc
Definition: SMESHGUI_Measurements.h:169
QGroupBox * myResultGrp
Definition: SMESHGUI_Measurements.h:167
SUIT_SelectionFilter * myFilter
Definition: SMESHGUI_Measurements.h:170
QButtonGroup * myMode
Definition: SMESHGUI_Measurements.h:165
QLineEdit * myResult
Definition: SMESHGUI_Measurements.h:168
Mode
Property type.
Definition: SMESHGUI_Measurements.h:148
@ Area
Definition: SMESHGUI_Measurements.h:148
Bounding box measurement widget.
Definition: SMESHGUI_Measurements.h:97
QLineEdit * myDY
Definition: SMESHGUI_Measurements.h:130
SMESH_Actor * myActor
Definition: SMESHGUI_Measurements.h:135
QLineEdit * myYmin
Definition: SMESHGUI_Measurements.h:128
SMESHGUI_IdValidator * myValidator
Definition: SMESHGUI_Measurements.h:136
QLineEdit * myYmax
Definition: SMESHGUI_Measurements.h:129
QLineEdit * myZmax
Definition: SMESHGUI_Measurements.h:132
QLineEdit * myDZ
Definition: SMESHGUI_Measurements.h:133
SUIT_SelectionFilter * myFilter
Definition: SMESHGUI_Measurements.h:138
QLineEdit * myDX
Definition: SMESHGUI_Measurements.h:127
QString myIDs
Definition: SMESHGUI_Measurements.h:137
SourceList mySrc
Definition: SMESHGUI_Measurements.h:134
QLineEdit * myZmin
Definition: SMESHGUI_Measurements.h:131
QList< SMESH::SMESH_IDSource_var > SourceList
Definition: SMESHGUI_Measurements.h:122
QLineEdit * mySource
Definition: SMESHGUI_Measurements.h:124
QLineEdit * myXmin
Definition: SMESHGUI_Measurements.h:125
SALOME_Actor * myPreview
Definition: SMESHGUI_Measurements.h:139
QButtonGroup * mySourceMode
Definition: SMESHGUI_Measurements.h:123
QLineEdit * myXmax
Definition: SMESHGUI_Measurements.h:126
Definition: SMESHGUI_IdValidator.h:39
Definition: SMESHGUI_Measurements.h:208
SMESHGUI_BoundingBox * myBndBox
Definition: SMESHGUI_Measurements.h:242
SMESHGUI_MinDistance * myMinDist
Definition: SMESHGUI_Measurements.h:241
SMESHGUI_Angle * myAngle
Definition: SMESHGUI_Measurements.h:244
QTabWidget * myTabWidget
Definition: SMESHGUI_Measurements.h:240
@ Length
length
Definition: SMESHGUI_Measurements.h:218
@ Volume
volume
Definition: SMESHGUI_Measurements.h:220
@ MinDistance
minimum distance
Definition: SMESHGUI_Measurements.h:216
@ BoundingBox
bounding box
Definition: SMESHGUI_Measurements.h:217
@ Area
area
Definition: SMESHGUI_Measurements.h:219
SMESHGUI_BasicProperties * myBasicProps
Definition: SMESHGUI_Measurements.h:243
Displayer of the mesh edition preview.
Definition: SMESHGUI_MeshEditPreview.h:47
Minimum distance measurement widget.
Definition: SMESHGUI_Measurements.h:48
QLineEdit * myFirstTgt
Definition: SMESHGUI_Measurements.h:80
QLineEdit * myDZ
Definition: SMESHGUI_Measurements.h:84
@ ElementTgt
Definition: SMESHGUI_Measurements.h:52
SMESHGUI_IdValidator * myValidator
Definition: SMESHGUI_Measurements.h:91
SMESH_Actor * myFirstActor
Definition: SMESHGUI_Measurements.h:89
QLineEdit * myDistance
Definition: SMESHGUI_Measurements.h:85
SMESH::SMESH_IDSource_var myFirstSrc
Definition: SMESHGUI_Measurements.h:87
QButtonGroup * myFirst
Definition: SMESHGUI_Measurements.h:78
SMESH::SMESH_IDSource_var mySecondSrc
Definition: SMESHGUI_Measurements.h:88
QLineEdit * mySecondTgt
Definition: SMESHGUI_Measurements.h:81
SMESH_Actor * mySecondActor
Definition: SMESHGUI_Measurements.h:90
QButtonGroup * mySecond
Definition: SMESHGUI_Measurements.h:79
QLineEdit * myDX
Definition: SMESHGUI_Measurements.h:82
@ FirstTgt
Definition: SMESHGUI_Measurements.h:51
QLineEdit * myDY
Definition: SMESHGUI_Measurements.h:83
int myCurrentTgt
Definition: SMESHGUI_Measurements.h:86
SALOME_Actor * myPreview
Definition: SMESHGUI_Measurements.h:93
SUIT_SelectionFilter * myFilter
Definition: SMESHGUI_Measurements.h:92
Definition: SMESH_Actor.h:55
@ Volume
Selection of volumes.
Definition: libSMESH_Swig.h:57
Mode
Definition: SMESHGUI_ClippingDlg.h:74