22 #include <qpushbutton.h>
23 #include <qcheckbox.h>
24 #include <qlineedit.h>
30 #include <qinputdialog.h>
31 #include <QMessageBox>
34 #include <QGridLayout>
35 #include <QHBoxLayout>
37 #include <QMdiSubWindow>
67 #define TR(id) OLocalizator::getString("TYPickEditor", (id))
68 #define IMG(id) OLocalizator::getPicture("TYPickEditor", (id))
113 if ((button == Qt::RightButton) || (button == Qt::LeftButton))
122 if ((button == Qt::RightButton) &&
_usePopup)
149 if ((button == Qt::RightButton) || (button == Qt::LeftButton))
158 if ((QString(
_pModeler->metaObject()->className()).compare(
"TYSiteModelerFrame") == 0) &&
162 bool hasMaillage =
false;
164 if (pProj !=
nullptr)
167 for (
int i = 0; i < pMaillages.size(); ++i)
169 if (pMaillages[i]->getGraphicObject()->getVisible())
184 if (state == Qt::NoButton)
222 if (key == Qt::Key_Escape)
249 if (QString(
_pModeler->metaObject()->className()).compare(
"TYSiteModelerFrame") == 0)
253 else if (QString(
_pModeler->metaObject()->className()).compare(
"TYMachineModelerFrame") == 0)
257 else if (QString(
_pModeler->metaObject()->className()).compare(
"TYBatimentModelerFrame") == 0)
281 pModelerSite = pModelerFrame->
getSite();
283 if (pModelerSite ==
nullptr)
288 QMenu* pPopup =
new QMenu(
nullptr);
290 std::map<QAction*, int> retCodes;
291 std::map<QAction*, TYGeometryNode*> posRetCodes;
292 std::map<QAction*, TYGeometryNode*> rotRetCodes;
293 std::map<QAction*, TYSiteNode*> copySiteNodeRetCodes;
294 std::map<QAction*, TYSiteNode*> remSiteNodeRetCodes;
295 std::map<QAction*, TYAcousticVolumeNode*> calculVolNodeRetCodes;
296 QAction* inverseNormales = NULL;
297 std::map<QAction*, TYMaillage*> copyMaillageRetCodes;
298 std::map<QAction*, TYMaillage*> remMaillageRetCodes;
299 std::map<QAction*, TYPointControl*> copyPtControlRetCodes;
300 std::map<QAction*, TYPointControl*> remPtControlRetCodes;
301 QAction* split = NULL;
302 std::map<QAction*, TYElement*> copyTopoRetCodes;
303 std::map<QAction*, TYElement*> remTopoRetCodes;
304 std::map<QAction*, TYElement*> copyInfraRetCodes;
305 std::map<QAction*, TYElement*> remInfraRetCodes;
306 QAction* code = NULL;
311 int volumeFound = -2, levelCurveFound = -2;
313 QFont font = pPopup->font();
318 for (
unsigned int i = 0; i < pElts->size(); i++)
320 elem_0 = pElts->at(i);
321 if ((i + 1) < pElts->size())
323 elem_1 = pElts->at(i + 1)._pObj;
325 if ((i + 2) < pElts->size())
327 elem_2 = pElts->at(i + 2)._pObj;
334 if ((pCurrentSite !=
nullptr) && (pCurrentSite->
getRoot()))
336 labelTxt =
TR(
"id_popup_siteroot");
342 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))), labelTxt);
346 if (pCurrentSite !=
nullptr)
350 if (i + 1 < pElts->size())
352 pCurrentSiteParent =
dynamic_cast<TYSiteNode*
>(elem_1);
355 if (pCurrentSiteParent == pModelerSite)
361 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
362 posRetCodes[code] = pEltGeoNode;
365 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
366 rotRetCodes[code] = pEltGeoNode;
369 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
370 copySiteNodeRetCodes[code] = pCurrentSite;
373 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
374 remSiteNodeRetCodes[code] = pCurrentSite;
382 inverseNormales = pPopup->addAction(
TR(
"id_popup_normales"));
386 if (pMaillage !=
nullptr)
389 if (
dynamic_cast<TYProjet*
>(elem_1) !=
nullptr)
393 if (pMaillageGeoNode !=
nullptr)
396 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
397 posRetCodes[code] =
dynamic_cast<TYGeometryNode*
>(pMaillageGeoNode);
401 pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
402 rotRetCodes[code] =
dynamic_cast<TYGeometryNode*
>(pMaillageGeoNode);
406 pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
407 copyMaillageRetCodes[code] = pMaillage;
410 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
411 remMaillageRetCodes[code] = pMaillage;
417 if (pPointCtrl !=
nullptr)
420 if (
dynamic_cast<TYProjet*
>(elem_1) !=
nullptr)
423 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
424 remPtControlRetCodes[code] = pPointCtrl;
432 if (pSite == pModelerSite)
437 split = pPopup->addAction(
TR(
"id_popup_split"));
441 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
442 copyTopoRetCodes[code] = pElts->at(i);
445 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
446 remTopoRetCodes[code] = pElts->at(i);
456 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
TR(
"id_popup_calculer"));
462 if (pSite == pModelerSite)
468 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
469 posRetCodes[code] = pEltGeoNode;
476 pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
477 rotRetCodes[code] = pEltGeoNode;
481 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
482 copyInfraRetCodes[code] = elem_0;
485 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
486 remInfraRetCodes[code] = elem_0;
490 pPopup->addSeparator();
494 pPopup->setMouseTracking(
true);
495 QAction* popupRet = pPopup->exec(QCursor::pos());
496 if (popupRet ==
nullptr)
500 qApp->processEvents();
502 if (retCodes.find(popupRet) != retCodes.end())
504 TYElement* pElement = pElts->at(retCodes[popupRet]);
507 else if (posRetCodes.find(popupRet) != posRetCodes.end())
510 if (
dynamic_cast<TYGeometryNode*
>(posRetCodes[popupRet])->getElement()->isA(
"TYSiteNode"))
516 else if (rotRetCodes.find(popupRet) != rotRetCodes.end())
520 else if (popupRet == inverseNormales)
526 if (copySiteNodeRetCodes.find(popupRet) != copySiteNodeRetCodes.end())
528 copySite(copySiteNodeRetCodes[popupRet]);
530 else if (remSiteNodeRetCodes.find(popupRet) != remSiteNodeRetCodes.end())
532 remSite(remSiteNodeRetCodes[popupRet]);
534 else if (calculVolNodeRetCodes.find(popupRet) != calculVolNodeRetCodes.end())
538 else if (popupRet == split)
542 else if (copyMaillageRetCodes.find(popupRet) != copyMaillageRetCodes.end())
546 else if (remMaillageRetCodes.find(popupRet) != remMaillageRetCodes.end())
550 else if (copyPtControlRetCodes.find(popupRet) != copyPtControlRetCodes.end())
554 else if (remPtControlRetCodes.find(popupRet) != remPtControlRetCodes.end())
556 remPtCtrl(remPtControlRetCodes[popupRet]);
558 else if (remTopoRetCodes.find(popupRet) != remTopoRetCodes.end())
562 else if (copyTopoRetCodes.find(popupRet) != copyTopoRetCodes.end())
566 else if (remInfraRetCodes.find(popupRet) != remInfraRetCodes.end())
570 else if (copyInfraRetCodes.find(popupRet) != copyInfraRetCodes.end())
581 QMenu* pPopup =
new QMenu(
nullptr);
583 std::map<QAction*, int> retCodes;
584 std::map<QAction*, TYAcousticVolumeNode*> calculVolNodeRetCodes;
585 QAction* inverseNormales =
nullptr;
586 std::map<QAction*, TYGeometryNode*> posRetCodes;
587 std::map<QAction*, TYGeometryNode*> rotRetCodes;
588 std::map<QAction*, TYAcousticVolume*> dimVolRetCodes;
589 std::map<QAction*, TYAcousticVolume*> remVolRetCodes;
590 std::map<QAction*, TYAcousticVolume*> copyVolRetCodes;
591 QAction* editFace =
nullptr;
592 QAction* code =
nullptr;
597 int rectFound = -2, volumeFound = -2;
599 QFont font = pPopup->font();
601 for (
unsigned int i = 0; i < pElts->size(); i++)
604 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
613 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
TR(
"id_popup_calculer"));
617 !(pElts->at(i)->isA(
"TYEtage")))
621 inverseNormales = pPopup->addAction(
TR(
"id_popup_normales"));
625 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
626 posRetCodes[code] = pEltGeoNode;
628 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
629 rotRetCodes[code] = pEltGeoNode;
632 code = pPopup->addAction(
TR(
"id_popup_dimension"));
636 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
640 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
647 editFace = pPopup->addAction(
TR(
"id_popup_editface"));
651 pPopup->addSeparator();
655 pPopup->setMouseTracking(
true);
656 QAction* popupRet = pPopup->exec(QCursor::pos());
657 if (popupRet ==
nullptr)
661 qApp->processEvents();
663 if (retCodes.find(popupRet) != retCodes.end())
665 TYElement* pElement = pElts->at(retCodes[popupRet]);
668 else if (posRetCodes.find(popupRet) != posRetCodes.end())
672 else if (rotRetCodes.find(popupRet) != rotRetCodes.end())
676 else if (dimVolRetCodes.find(popupRet) != dimVolRetCodes.end())
678 TYElement* pElement = dimVolRetCodes[popupRet];
681 else if (popupRet == editFace)
683 TYElement* pElement = pElts->at(rectFound)._pObj;
686 else if (popupRet == inverseNormales)
692 if (calculVolNodeRetCodes.find(popupRet) != calculVolNodeRetCodes.end())
696 else if (remVolRetCodes.find(popupRet) != remVolRetCodes.end())
700 else if (copyVolRetCodes.find(popupRet) != copyVolRetCodes.end())
711 QMenu* pPopup =
new QMenu(
nullptr);
713 QAction* code =
nullptr;
714 std::map<QAction*, int> retCodes;
715 std::map<QAction*, TYAcousticVolumeNode*> calculVolNodeRetCodes;
716 QAction* inverseNormales =
nullptr;
717 std::map<QAction*, TYGeometryNode*> posRetCodes;
718 std::map<QAction*, TYGeometryNode*> rotRetCodes;
719 QAction* hauteurEtage =
nullptr;
720 QAction* hauteurEcran =
nullptr;
721 QAction* epaisseurEcran =
nullptr;
722 QAction* editFace =
nullptr;
723 std::map<QAction*, TYAcousticVolume*> remVolRetCodes;
724 std::map<QAction*, TYAcousticVolume*> copyVolRetCodes;
725 std::map<QAction*, TYAcousticVolume*> dimVolRetCodes;
730 int etageFound = -2, ecranFound = -2, rectFound = -2, volumeFound = -2;
732 QFont font = pPopup->font();
734 for (
unsigned int i = 0; i < pElts->size(); i++)
737 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
746 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
TR(
"id_popup_calculer"));
753 inverseNormales = pPopup->addAction(
TR(
"id_popup_normales"));
758 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
759 posRetCodes[code] = pEltGeoNode;
761 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
762 rotRetCodes[code] = pEltGeoNode;
765 if (pElts->at(i)->isA(
"TYEtage"))
768 hauteurEtage = pPopup->addAction(
TR(
"id_popup_hauteur"));
770 else if (pElts->at(i)->isA(
"TYEcran"))
773 hauteurEcran = pPopup->addAction(
TR(
"id_popup_hauteur"));
774 epaisseurEcran = pPopup->addAction(
TR(
"id_popup_epaisseur"));
776 else if (pElts->at(i)->isA(
"TYAcousticCylinder"))
778 code = pPopup->addAction(
TR(
"id_popup_dimension"));
783 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
787 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
794 editFace = pPopup->addAction(
TR(
"id_popup_editface"));
798 pPopup->addSeparator();
802 pPopup->setMouseTracking(
true);
803 QAction* popupRet = pPopup->exec(QCursor::pos());
804 if (popupRet ==
nullptr)
808 qApp->processEvents();
810 if (retCodes.find(popupRet) != retCodes.end())
812 TYElement* pElement = pElts->at(retCodes[popupRet]);
815 else if (posRetCodes.find(popupRet) != posRetCodes.end())
817 bool bHeight =
false;
818 if (posRetCodes[popupRet]->isA(
"TYMachine"))
824 else if (rotRetCodes.find(popupRet) != rotRetCodes.end())
828 else if (popupRet == editFace)
830 TYElement* pElement = pElts->at(rectFound)._pObj;
833 else if (popupRet == hauteurEtage)
837 else if (popupRet == hauteurEcran)
841 else if (popupRet == epaisseurEcran)
845 else if (popupRet == inverseNormales)
849 else if (dimVolRetCodes.find(popupRet) != dimVolRetCodes.end())
851 TYElement* pElement = dimVolRetCodes[popupRet];
856 if (calculVolNodeRetCodes.find(popupRet) != calculVolNodeRetCodes.end())
860 else if (remVolRetCodes.find(popupRet) != remVolRetCodes.end())
864 else if (copyVolRetCodes.find(popupRet) != copyVolRetCodes.end())
893 std::shared_ptr<TYGeometryNode> pTempGeoNode = std::make_shared<TYGeometryNode>();
900 auto pElementClone = pElement->
clone();
904 pTempGeoNode->setElement(pElementCopy);
909 if (pRootGeometryNode)
912 pTempGeoNode->setPosition(oldZero);
916 pTempGeoNode->setHauteur(hauteur);
923 int ret = pDlg->exec();
926 if (ret == QDialog::Accepted)
931 OPoint3D newZero = pTempGeoNode->getORepere3D()._origin;
941 pGeoNode->
setHauteur(pTempGeoNode->getHauteur());
944 TR(
"id_action_setposition"));
949 pGeoNode->updateGraphicTree();
974 if (pRootGeometryNode)
976 oldTyMat = oldTyMat *
983 vec.
_x = oldTyMat.
_m[0][1];
984 vec.
_y = oldTyMat.
_m[1][1];
985 vec.
_z = oldTyMat.
_m[2][1];
989 xv.
_x = oldTyMat.
_m[0][0];
990 xv.
_y = oldTyMat.
_m[1][0];
991 xv.
_z = oldTyMat.
_m[2][0];
1010 int ret = pDlg->exec();
1013 if (ret == QDialog::Accepted)
1026 double dRotateX = rot.
_x;
1027 double dRotateY = rot.
_y;
1028 double dRotateZ = rot.
_z;
1042 tyMat =
Repere.asMatrix();
1043 tyMatTmpConcat = tyMat;
1046 tyMat = tyMat * tyMatTmpZ * tyMatTmpY * tyMatTmpX * tyMatTmpConcat;
1055 TR(
"id_action_setrotation"));
1087 int ret = pDlg->exec();
1090 if (ret == QDialog::Accepted)
1094 *pAccVol = *pBackupVolume;
1122 if (pMaillage !=
nullptr)
1124 LPTYPanel pPanel = pMaillage->getPanel();
1140 double X = pt.
_x, Y = pt.
_y, Z = pt.
_z;
1160 dynamic_cast<TYProjet*
>(pMaillage->getParent())->findMaillage(pMaillage);
1164 double minDistSquare = 0.0;
1174 minDistSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_y - Y, 2));
1177 minDistSquare = std::sqrt(std::pow(coord.
_y - Y, 2) + std::pow(coord.
_z - Z, 2));
1180 minDistSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_z - Z, 2));
1184 pResult = pPtCalcul;
1188 for (
unsigned int i = 1; i < pMaillage->getPtsCalcul().size(); i++)
1190 pPtCalcul = pMaillage->getPtsCalcul()[i];
1193 double distSquare = 0.0;
1197 distSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_y - Y, 2));
1200 distSquare = std::sqrt(std::pow(coord.
_y - Y, 2) + std::pow(coord.
_z - Z, 2));
1203 distSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_z - Z, 2));
1207 if (distSquare < minDistSquare)
1209 pResult = pPtCalcul;
1210 minDistSquare = distSquare;
1214 std::string value =
"dB : N/A";
1217 switch (pMaillage->getDataType())
1226 value =
"dB(Freq) : " +
1253 if (pMaillage !=
nullptr)
1255 pMaillage->getPanel()->getGraphicObject()->setVisible(
false);
1271 float* pos =
new float[3];
1290 if ((pElement !=
nullptr) && (pElement->edit(
_pModeler) == QDialog::Accepted))
1305 pElement->updateGraphicTree();
1311 if (pElement ==
nullptr)
1318 if (pParent ==
nullptr)
1333 if (
dynamic_cast<TYSiteNode*
>(pParent)->addSiteNode(pCopy))
1355 pCopy->updateGraphicTree();
1371 if (pElement ==
nullptr)
1376 if (pParent ==
nullptr)
1405 if (pCurrentCurve !=
nullptr)
1408 if (newCurve.
_pObj !=
nullptr)
1413 pNewGeoNode->
deepCopy(pCurrentGeoNode,
false);
1419 if (pTopo !=
nullptr)
1425 pTopo->updateGraphicTree();
1426 pTopo->updateGraphic();
1436 if (pElement ==
nullptr)
1441 if (pParent ==
nullptr)
1459 if ((
dynamic_cast<TYProjet*
>(pParent))->addMaillage(pCopy))
1462 double x = 10., y = 10.;
1463 if (pMaillage !=
nullptr)
1478 pCopy->updateGraphicTree();
1499 if (pElement ==
nullptr)
1504 if (pParent ==
nullptr)
1530 if (pElement ==
nullptr)
1535 if (pParent ==
nullptr)
1548 if ((
dynamic_cast<TYProjet*
>(pParent))->addPointControl(pCopy))
1555 pCopy->updateGraphicTree();
1561 TR(
"id_action_addptcontrol"));
1573 if (pElement ==
nullptr)
1578 if (pParent ==
nullptr)
1598 if (pElement ==
nullptr)
1603 if (pTopo ==
nullptr)
1612 if (pElement->
isA(
"TYCourbeNiveau"))
1616 else if (pElement->
isA(
"TYTerrain"))
1620 else if (pElement->
isA(
"TYCoursEau"))
1624 else if (pElement->
isA(
"TYPlanEau"))
1636 if (pElement ==
nullptr)
1641 if (pTopo ==
nullptr)
1648 if (pElement->
isA(
"TYCourbeNiveau"))
1656 pCopy->setParent(pElement->
getParent());
1665 else if (pElement->
isA(
"TYTerrain"))
1673 pCopy->setParent(pElement->getParent());
1682 else if (pElement->
isA(
"TYCoursEau"))
1690 pCopy->setParent(pElement->getParent());
1695 else if (pElement->
isA(
"TYPlanEau"))
1703 pCopy->setParent(pElement->
getParent());
1736 if (pElement ==
nullptr)
1741 if (pInfra ==
nullptr)
1750 if (pElement->
isA(
"TYRoute"))
1752 pInfra->remRoute((LPTYRoute&)pElement);
1755 if (pElement->
isA(
"TYReseauTransport"))
1759 else if (pElement->
isA(
"TYBatiment"))
1763 else if (pElement->
isA(
"TYMachine"))
1767 else if (pElement->
isA(
"TYUserSourcePonctuelle"))
1779 if (pElement ==
nullptr)
1784 if (pInfra ==
nullptr)
1794 if (pElement->
isA(
"TYRoute"))
1801 pCopy->
deepCopy(pInfra->findRoute((LPTYRoute&)pElement),
false);
1802 pCopy->
setParent(pElement->getParent());
1805 pInfra->addRoute(pCopy);
1808 if (pElement->
isA(
"TYReseauTransport"))
1816 pCopy->
setParent(pElement->getParent());
1821 else if (pElement->
isA(
"TYBatiment"))
1835 else if (pElement->
isA(
"TYMachine"))
1849 else if (pElement->
isA(
"TYUserSourcePonctuelle"))
1886 if (pCopy &&
getTYApp()->getCurProjet() &&
getTYApp()->getCurProjet()->getCurrentCalcul())
1898 if (pElement ==
nullptr)
1904 if (pVol ==
nullptr)
1909 float sizeX = 0, sizeY = 0, sizeZ = 0;
1911 if (pVol !=
nullptr)
1913 if (pVol->
isA(
"TYAcousticBox"))
1918 else if (pVol->
isA(
"TYAcousticCylinder"))
1922 else if (pVol->
isA(
"TYAcousticSemiCylinder"))
1940 org.
_z -= sizeZ / 2;
1943 if (pVol->
isA(
"TYAcousticBox"))
1948 else if (pVol->
isA(
"TYAcousticCylinder"))
1952 else if (pVol->
isA(
"TYAcousticSemiCylinder"))
1957 org.
_z += sizeZ / 2;
1965 if (pElement ==
nullptr)
1970 if (pParent ==
nullptr)
1975 if (pGeoNode ==
nullptr)
1992 if (pElement ==
nullptr)
1997 if (pVolParent ==
nullptr)
2002 if (pGeoNode ==
nullptr)
2033 pCopy->updateGraphicTree();
2048 if (pElement ==
nullptr)
2053 if (pAccRectNode ==
nullptr)
2060 pFaceMdF->setAttribute(Qt::WA_DeleteOnClose);
2063 pFaceMdF->showMaximized();
2068 if (pElement ==
nullptr)
2084 if (pElement ==
nullptr)
2089 if (pEtage ==
nullptr)
2101 pEtage->updateGraphic();
2119 pEcran->updateGraphic();
2137 pEcran->updateGraphic();
double RADTODEG(double a)
Converts an angle from radians to degrees.
double DEGTORAD(double a)
Converts an angle from degrees to radians.
TYGeometryNode TYAcousticVolumeGeoNode
Noeud geometrique de type TYAcousticVolume.
fichier contenant differents types d'actions (fichier header)
TYApplication * getTYApp()
Retourne le pointeur sur l'application.
TYMainWindow * getTYMainWnd()
Retourne le pointeur sur la fenetre principale.
pour l'application Tympan (fichier header)
TYGeometryNode TYBatimentGeoNode
Noeud geometrique de type TYBatiment.
TYGeometryNode TYCourbeNiveauGeoNode
Noeud geometrique de type TYCourbeNiveau.
TYGeometryNode TYCoursEauGeoNode
Noeud geometrique de type TYCoursEau.
boite de dialogue pour la gestion des dimensions des volumes (fichier header)
Classe Modeler specialisee pour l'edition des faces (fichier header)
TYGeometryNode TYMachineGeoNode
Noeud geometrique de type TYMachine.
TYGeometryNode TYMaillageGeoNode
Noeud geometrique de type TYMaillage.
std::vector< LPTYMaillageGeoNode > TYTabMaillageGeoNode
Collection de noeuds geometriques de type TYMaillage.
Fenetre principale de l'application Tympan (fichier header)
Classe generique pour une fenetre de modeleur (fichier header)
Representation graphique d'un panel d'informations (fichier header)
gestion de l'element actionne par picking (fichier header)
Objet pour le picking graphique (fichier header)
TYGeometryNode TYPlanEauGeoNode
Noeud geometrique de type TYPlanEau.
boite de dialogue pour la gestion de la position selon les modes 'moving', 'rotation',...
Frame pour la gestion de projet (fichier header)
Representation graphique d'un maillage rectangulaire (fichier header)
Le role de cette classe est limite a emettre des signaux pouvant etre utilise pour interagir sur le r...
TYGeometryNode TYReseauTransportGeoNode
Noeud geometrique de type TYReseauTransport.
Boite de dialogue pour la saisie de la l'angle des objets (fichier header)
TYGeometryNode TYRouteGeoNode
Geometrical node of type TYRoute.
Frame pour la gestion de site (fichier header)
Classe Modeler specialisee pour l'edition des sites (fichier header)
TYGeometryNode TYSiteNodeGeoNode
Noeud geometrique de type TYSiteNode.
TYGeometryNode TYSourcePonctuelleGeoNode
Noeud geometrique de type TYSourcePonctuelle.
TYGeometryNode TYTerrainGeoNode
Noeud geometrique de type TYTerrain.
double _y
y coordinate of OCoord3D
double _z
z coordinate of OCoord3D
double _x
x coordinate of OCoord3D
int setRotationOz(double a)
Update a rotation matrix (Oz axis).
int setRotationOy(double a)
Update a rotation matrix (Oy axis).
int setRotationOx(double a)
Update a rotation matrix (Ox axis).
double _m[4][4]
The 4x4 matrix array.
virtual OPrototype * clone() const =0
static OPrototype * safeDownCast(OPrototype *pObject)
bool isA(const char *className) const
3D frame with a point and 3 vectors.
OPoint3D _origin
The origin point.
double getValueReal(double freq)
void set(vec3 _U, vec3 _V, vec3 _W, vec3 _O)
Set global coordinates of local axis U,V,W and origin O.
T * _pObj
The real pointer, must derived IRefCount.
Classe abstraite pour la gestion de l'interaction entre la vue graphique (2D ou 3D) et le clavier et ...
void refreshProjectFrame()
Rafraichit l'arborescence du TYProjectFrame.
void updateSiteFrame()
Reconstruit l'arborescence du TYSiteFrame.
TYModelerFrame * _pModeler
Le modeler associe a cet editor.
TYRenderWindowInteractor * _pInteractor
La vue graphique associee a cet editor.
void getDimension(float &larg, float &lon, float &haut)
bool addAcousticVol(LPTYAcousticVolumeGeoNode pAccVolGeoNode, bool recursif=true)
LPTYAcousticVolumeGeoNode findAcousticVol(const LPTYAcousticVolume pAccVol)
bool remAcousticVol(const LPTYAcousticVolumeGeoNode pAccVolGeoNode)
virtual void inverseNormales()
void addAction(TYAction *pAction)
Ajoute une nouvelle action a l'historique.
Definit une action, necessaire pour la gestion de l'undo.
ajout d'un volume acoustique a un ensemble de volumes acoustiques
Action d'ajout d'un point de controle.
Action d'ajout d'un site a un ensemble de sites.
LPTYProjet getCurProjet()
Set/Get du projet courant.
TYCalculManager * getCalculManager()
Get du gestionnaire de calculs.
double _sizeX
Dimension en X.
double _sizeY
Dimension en Y.
bool updateAcoustic(TYElement *pElement)
Appelle la methode de calcul acoustique du volume node passe.
bool askForResetResultat()
Previent l'utilisateur que le resultat va etre efface, si celui-ci est valide.
void getCalculElements(LPTYSiteNode pSite)
Recover all the elements of the scene which take part in the calculation.
bool addToSelection(TYUUID id)
Adds the item to the selection of this Calculation.
LPTYCourbeNiveau split(const TYPoint &pt)
return a new level curve by spliting the actual one at indicated point
boite de dialogue pour la gestion des dimensions des volumes
void setEpaisseur(double epaisseur)
double getHauteur() const
double getEpaisseur() const
void setHauteur(double hauteur)
classe graphique pour un element de base
void setVisible(bool visible=true)
void elementPicked(TYElement *pElt)
Indique qu'un element a ete picke, sans connaitre son type. Celui-ci sera de type "bas niveau".
void reset()
Retourne dans son etat initial.
void highlightElement(TYElement *pElt)
Dessine la boite englobante de l'element passe.
bool pick(int x, int y)
Effectue un picking en (x, y).
void elementCollectionPicked(std::shared_ptr< LPTYElementArray > pElts)
Indique qu'un element a ete picke, sans connaitre son type. La collection d'elements pickes est compo...
TYElement * getParent() const
static void setIsSavedOk(const bool &toSave)
void setParent(TYElement *pParent)
virtual void setIsGeometryModified(bool isModified)
double getHauteur() const
void setHauteur(double hauteur)
Classe Modeler specialisee pour l'edition des faces.
const ORepere3D & getORepere3D() const
OMatrix localToGlobal() const
OMatrix globalToLocal() const
void setHauteur(const double &hauteur)
Set the heigth above the ground.
void setElement(LPTYElement pElt)
double getHauteur()
Get the height above the ground.
TYElement * getElement() const
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
static TYGeometryNode * GetGeoNode(TYElement *pElement)
void setPosition(const OPoint3D &pos)
Set the position of the element.
void setRepere(const ORepere3D &repere)
bool remSrc(const LPTYUserSourcePonctuelle pSrc)
LPTYMachineGeoNode findMachine(const LPTYMachine pMachine)
bool addBatiment(LPTYBatimentGeoNode pBatimentGeoNode)
bool addMachine(LPTYMachineGeoNode pMachineGeoNode)
LPTYBatimentGeoNode findBatiment(const LPTYBatiment pBatiment)
bool addSrc(LPTYUserSourcePonctuelle pSrc)
bool remResTrans(const LPTYReseauTransportGeoNode pResTransGeoNode)
bool remMachine(const LPTYMachine pMachine)
LPTYUserSourcePonctuelleGeoNode findSrc(const LPTYUserSourcePonctuelle pSrc)
bool remBatiment(const LPTYBatimentGeoNode pBatimentGeoNode)
LPTYReseauTransportGeoNode findResTrans(const LPTYReseauTransport pResTrans)
bool addResTrans(LPTYReseauTransportGeoNode pResTransGeoNode)
Classe de definition d'un maillage.
TYProjetFrame * getProjetFrame()
void updateModelers(bool clipping=true, bool axesAndGrid=true, bool displayList=true)
TYSiteFrame * getSiteFrame()
QMdiArea * getWorkspace()
Generic class for a modeler window.
virtual bool computeCurPos(int x, int y, float *pos)
TYRenderWindowInteractor * getView()
TYElementPicker * getElementPicker()
TYActionManager * getActionManager()
bool askForResetResultat()
static double getDouble(const QString &title, const QString &txt, double min, double max, double val, bool &ok, int dec=2)
Actions de deplacement d'un GeometryNode.
void invalidateScene(void)
classe graphique pour un panel d'informations
void setFirstPos(const std::string &firstPos)
Set de la premiere position.
void setValue(const std::string &value)
Set de la valeur.
void setSecondPos(const std::string &secondPos)
Set de la seconde position.
void remSite(TYElement *pElement)
void copyTopoElmt(TYElement *pElement)
void screenThick(TYElement *pElement)
void openFaceModeler(TYElement *pElement)
void inverseNormal(TYElement *pElement)
void copyMaillage(TYElement *pElement)
void updateCopyPosition(LPTYGeometryNode &pNode)
void copySite(TYElement *pElement)
void screenHeight(TYElement *pElement)
virtual void showPopupMenu(std::shared_ptr< LPTYElementArray > pElts)
void showRotationDialog(TYGeometryNode *pGeoNode)
void manageProperties(TYElement *pElement)
virtual void slotKeyPressed(int key)
bool realWorldPosition(OPoint3D &pt)
TYPickEditor(TYModelerFrame *pModeler)
void setVolumeSize(TYElement *pElement)
void showDimensionsDialog(TYAcousticVolume *pAccVol)
void removeVolume(TYElement *pElement)
void copyVolume(TYElement *pElement)
void batimentModelerPopupMenu(std::shared_ptr< LPTYElementArray > pElts)
void setRolloverTolerance(float tolerance)
void setPickTolerance(float tolerance)
virtual void slotMousePressed(int x, int y, Qt::MouseButton button, Qt::KeyboardModifiers state)
virtual void slotMouseLeave()
virtual void slotMouseReleased(int x, int y, Qt::MouseButton button, Qt::KeyboardModifiers state)
void floorHeight(TYElement *pElement)
void showPositionDialog(TYGeometryNode *pGeoNode, bool activeHeight)
void remTopoElmt(TYElement *pElement)
void copyInfraElmt(TYElement *pElement)
TYElementPicker * _pPicker
Le picker du modeler.
void siteModelerPopupMenu(std::shared_ptr< LPTYElementArray > pElts)
QPoint _lastPressedCurPos
Derniere position de la souris.
float _pickTolerance
Tolerance du picking.
void remPtCtrl(TYElement *pElement)
void machineModelerPopupMenu(std::shared_ptr< LPTYElementArray > pElts)
LPTYElement _pLastRolloverElt
void remInfraElmt(TYElement *pElement)
void remMaillage(TYElement *pElement)
void splitCurve(TYElement *pElement)
void copyPtCtrl(TYElement *pElement)
virtual void slotMouseMoved(int x, int y, Qt::MouseButtons button, Qt::KeyboardModifiers state)
bool _useHighlight
Flag pour l'activation du highlight.
void showPanel(TYElement *pElt)
bool _usePopup
Flag pour l'activation du popup menu.
virtual void slotWheeled(int x, int y, int delta, Qt::KeyboardModifiers state)
double getValLin()
Get de la valeur globale Lin au point.
virtual LPTYSpectre getSpectre()
Get du spectre resultat d'un calcul donne.
double getValA()
Get de la valeur globale A au point.
Classe de definition d'un point de controle.Le point de controle est un point de calcul avec une haut...
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
boite de dialogue pour la gestion de la position selon les modes 'moving', 'rotation',...
void setHauteurEnabled(const bool &enable)
Get/Set de l'etat de la zone de saisie des hauteurs.
classe de definition d'un projet.
TYTabMaillageGeoNode & getMaillages()
Get de la collection de maillages.
bool remPointControl(LPTYPointControl pPointControl)
bool remMaillage(const LPTYMaillageGeoNode pMaillageGeoNode)
Suppression d'un maillage.
LPTYSiteNode getSite()
Get du site.
LPTYCalcul getCurrentCalcul()
Set/Get du pointeur du Calcul courant.
Classe de definition d'un maillage rectangulaire.
LPTYRectangle getRectangle() const
Retourne le rectangle associe a ce maillage.
suppression d'un volume acoustique a un ensemble de volumes acoustiques
Suppression d'un element a une infrastructure.
Suppression d'un element a la topographie.
Action de suppression d'un point de controle.
Action de suppression d'un site a un ensemble de sites.
const TYRenderViewport & getViewport() const
TYOpenGLRenderer * getRenderer()
Actions de rotation d'un GeometryNode.
Boite de dialogue pour la saisie de la l'angle des objets.
void lockXY()
Empeche les rotations selon X et Y (utile pour les sites ...)
bool getConcatenateStatus()
Retourne l'etat du checkbox de concatenation des rotations.
Classe Modeler specialisee pour l'edition des sites.
LPTYTopographie getTopographie()
bool remSiteNode(const LPTYSiteNodeGeoNode pSiteNodeGeoNode)
void update(const bool &force=false)
LPTYCourbeNiveauGeoNode findCrbNiv(const LPTYCourbeNiveau pCrbNiv)
LPTYTerrainGeoNode findTerrain(const LPTYTerrain pTerrain)
bool remCrbNiv(const LPTYCourbeNiveauGeoNode pCrbNivGeoNode)
bool addCrsEau(LPTYCoursEauGeoNode pCoursEauGeoNode)
LPTYPlanEauGeoNode findPlanEau(const LPTYPlanEau pPlanEau)
bool remPlanEau(const LPTYPlanEauGeoNode pPlanEauGeoNode)
LPTYCoursEauGeoNode findCrsEau(const LPTYCoursEau pCrsEau)
bool addCrbNiv(LPTYCourbeNiveauGeoNode pCrbNivGeoNode)
bool addPlanEau(LPTYPlanEauGeoNode pPlanEauGeoNode)
bool remCrsEau(const LPTYCoursEauGeoNode pCoursEauGeoNode)
bool addTerrain(LPTYTerrainGeoNode pTerGeoNode)
bool remTerrain(const LPTYTerrainGeoNode pTerGeoNode)
std::string doubleToStrPre(double val, int precision=2)