22 #include <qmessagebox.h>
23 #include <qpushbutton.h>
24 #include <qlineedit.h>
29 #include <QHBoxLayout>
31 #include <QGridLayout>
32 #include <QVBoxLayout>
51 #define TR(id) OLocalizator::getString("TYRectangularMaillageEditor", (id))
111 Qt::KeyboardModifiers state)
113 if ((button == Qt::LeftButton) &&
_active)
115 if (
getTYApp()->getCurProjet() &&
getTYApp()->getCurProjet()->getCurrentCalcul())
129 QString msg(
TR(
"id_warning_no_curcalcul"));
131 QMessageBox::warning(
_pModeler,
"Tympan", msg, QMessageBox::Ok, QMessageBox::NoButton);
137 Qt::KeyboardModifiers state)
154 pt0.
_y = -point0.z();
157 pt1.
_y = -point1.z();
160 pt2.
_y = -point2.z();
179 pDlg->setWindowTitle(
TR(
"id_caption"));
181 QGridLayout* pLayout =
new QGridLayout();
182 pDlg->setLayout(pLayout);
184 QGridLayout* pEditLayout =
new QGridLayout();
185 pEditLayout->setContentsMargins(10, 10, 10, 10);
186 pLayout->addLayout(pEditLayout, 0, 0);
189 QLabel* pHauteurLabelName =
new QLabel(
TR(
"id_hauteur_label"));
191 pHauteurLineEdit->setFixedWidth(60);
192 pHauteurLineEdit->setText(QString().setNum(2.0,
'f', 2));
193 pEditLayout->addWidget(pHauteurLabelName, 0, 0);
194 pEditLayout->addWidget(pHauteurLineEdit, 0, 1);
197 QLabel* pDistanceXLabelName =
new QLabel(
TR(
"id_distancex_label"));
199 pDistanceXLineEdit->setFixedWidth(60);
200 pDistanceXLineEdit->setText(QString().setNum(1.0f / TY_MAILLAGE_DEFAULT_DENSITE,
'f', 2));
201 pEditLayout->addWidget(pDistanceXLabelName, 1, 0);
202 pEditLayout->addWidget(pDistanceXLineEdit, 1, 1);
205 QLabel* pDistanceYLabelName =
new QLabel(
TR(
"id_distancey_label"));
207 pDistanceYLineEdit->setFixedWidth(60);
208 pDistanceYLineEdit->setText(QString().setNum(1.0f / TY_MAILLAGE_DEFAULT_DENSITE,
'f', 2));
209 pEditLayout->addWidget(pDistanceYLabelName, 2, 0);
210 pEditLayout->addWidget(pDistanceYLineEdit, 2, 1);
212 QBoxLayout* pBtnLayout =
new QHBoxLayout();
213 pLayout->addLayout(pBtnLayout, 1, 0);
215 pBtnLayout->addStretch(1);
217 QPushButton* pButtonOK =
new QPushButton(
TR(
"id_ok_btn"), pDlg);
218 pButtonOK->setDefault(
true);
219 QObject::connect(pButtonOK, &QPushButton::clicked, pDlg, &QDialog::accept);
220 pBtnLayout->addWidget(pButtonOK);
222 QPushButton* pButtonCancel =
new QPushButton(
TR(
"id_cancel_btn"), pDlg);
223 pButtonCancel->setShortcut(Qt::Key_Escape);
224 QObject::connect(pButtonCancel, &QPushButton::clicked, pDlg, &QDialog::reject);
225 pBtnLayout->addWidget(pButtonCancel);
228 int ret = pDlg->exec();
230 TYApplication::setOverrideCursor(Qt::WaitCursor);
233 if (ret == QDialog::Accepted)
252 pRectangle->
setSize(sizeX, sizeY);
260 if (pProjet !=
nullptr)
262 pMaillage->setHauteur(pHauteurLineEdit->text().toDouble());
263 pMaillage->make(pRectangle, 1.0f / (pDistanceXLineEdit->text().toDouble()),
264 1.0f / (pDistanceYLineEdit->text().toDouble()));
281 pMaillage->updateGraphicTree();
300 TYApplication::restoreOverrideCursor();
305 Qt::KeyboardModifiers state)
314 float pt0[3], pt1[3], pt2[3];
325 double sizeX =
ABS(pt1[0] - pt0[0]);
326 double sizeY =
ABS(pt2[1] - pt1[1]);
327 double sizeZ = (sizeX + sizeY) / 2.0;
336 QString(
TR(
"id_size_info")).arg(sizeX, 0,
'f', 2).arg(sizeY, 0,
'f', 2),
double ABS(double a)
Return the absolute value.
fichier contenant differents types d'actions (fichier header)
void writeOutputMsg(QString msg)
Affiche un message dans la fenetre de sortie.
TYApplication * getTYApp()
Retourne le pointeur sur l'application.
pour l'application Tympan (fichier header)
outil IHM pour une entrée utilisateur (fichier header)
Classe generique pour une fenetre de modeleur (fichier header)
Representation graphique d'un point (fichier header)
gestion de l'edition d'un maillage rectangulaire (fichier header)
TYGeometryNode TYRectangularMaillageGeoNode
Noeud geometrique de type TYRectangularMaillage.
Le role de cette classe est limite a emettre des signaux pouvant etre utilise pour interagir sur le r...
Classe Modeler specialisee pour l'edition des sites (fichier header)
double _y
y coordinate of OCoord3D
double _z
z coordinate of OCoord3D
double _x
x coordinate of OCoord3D
void setVisibility(bool bVisible)
void setPoint2(const QVector3D &point2)
void setColor(const OColor &oColor)
void setPoint3(const QVector3D &point3)
void setPoint0(const QVector3D &point0)
void setPoint1(const QVector3D &point1)
const QVector3D & getPoint1()
const QVector3D & getPoint0()
const QVector3D & getPoint2()
OPoint3D _origin
The origin point.
double norme() const
Computes the length of this vector.
double _gridMagnStep
Pas de la grille magnétique de positionnement.
static void snapToGrid(float &x, float &y, float &z, float &gridMagnStep)
Methode utilitaire qui adapte les coordonnees d'un point pour que celui-ci soit aligne avec la grille...
void refreshProjectFrame()
Rafraichit l'arborescence du TYProjectFrame.
void updateText(QString msg="", int posX=0, int posY=0, bool show=true)
Mets a jour le texte informatif sur la vue 3D.
TYModelerFrame * _pModeler
Le modeler associe a cet editor.
void showText(bool show=true)
Affiche ou pas le texte informatif sur la vue 3D.
TYRenderWindowInteractor * _pInteractor
La vue graphique associee a cet editor.
void addAction(TYAction *pAction)
Ajoute une nouvelle action a l'historique.
Definit une action, necessaire pour la gestion de l'undo.
static void setIsSavedOk(const bool &toSave)
TYRenderWindowInteractor * getView()
TYActionManager * getActionManager()
virtual float getDefaultZCoord()
Returns default Z coordinate for editors This value will depend on the type of modeler and of the fix...
bool askForResetResultat()
virtual void updateView(bool clipping=true, bool axesAndGrid=true)
Super-class for editors performing object construction.
void addOGLElement(OGLElement *pOGLElement)
void invalidateScene(void)
void removeOGLElement(OGLElement *pOGLElement)
classe de definition d'un projet.
bool addMaillage(LPTYMaillageGeoNode pMaillageGeoNode)
Ajout d'un maillage.
bool updateAltiMaillage(TYMaillageGeoNode *pMaillageGeoNode, const TYAltimetrie *pAlti)
Met a niveau l'altimetrie d'un maillage.
LPTYSiteNode getSite()
Get du site.
void setSize(float sizeX, float sizeY)
virtual void slotMousePressed(int x, int y, Qt::MouseButton button, Qt::KeyboardModifiers state)
bool _active
Indique si cet editor est actif.
~TYRectangularMaillageEditor()
virtual void slotMouseMoved(int x, int y, Qt::MouseButtons button, Qt::KeyboardModifiers state)
TYRectangularMaillageEditor(TYSiteModelerFrame *pModeler)
virtual void slotMouseReleased(int x, int y, Qt::MouseButton button, Qt::KeyboardModifiers state)
OGLRectangleElement * _pOGLRectangleElement
Pour le dessin de construction.
virtual void slotViewTypeChanged(int view)
Classe de definition d'un maillage rectangulaire.
QVector3D displayToWorld(const QVector3D &display) const
const TYRenderViewport & getViewport() const
TYOpenGLRenderer * getRenderer()
Classe Modeler specialisee pour l'edition des sites.
LPTYAltimetrie getAltimetry() const