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>
66 #define TR(id) OLocalizator::getString("TYPickEditor", (id))
67 #define IMG(id) OLocalizator::getPicture("TYPickEditor", (id))
112 if ((button == Qt::RightButton) || (button == Qt::LeftButton))
121 if ((button == Qt::RightButton) &&
_usePopup)
148 if ((button == Qt::RightButton) || (button == Qt::LeftButton))
157 if ((QString(
_pModeler->metaObject()->className()).compare(
"TYSiteModelerFrame") == 0) &&
161 bool hasMaillage =
false;
163 if (pProj !=
nullptr)
166 for (
int i = 0; i < pMaillages.size(); ++i)
168 if (pMaillages[i]->getGraphicObject()->getVisible())
183 if (state == Qt::NoButton)
221 if (key == Qt::Key_Escape)
248 if (QString(
_pModeler->metaObject()->className()).compare(
"TYSiteModelerFrame") == 0)
252 else if (QString(
_pModeler->metaObject()->className()).compare(
"TYMachineModelerFrame") == 0)
256 else if (QString(
_pModeler->metaObject()->className()).compare(
"TYBatimentModelerFrame") == 0)
280 pModelerSite = pModelerFrame->
getSite();
282 if (pModelerSite ==
nullptr)
287 QMenu* pPopup =
new QMenu(NULL);
289 std::map<QAction*, int> retCodes;
290 std::map<QAction*, TYGeometryNode*> posRetCodes;
291 std::map<QAction*, TYGeometryNode*> rotRetCodes;
292 std::map<QAction*, TYSiteNode*> copySiteNodeRetCodes;
293 std::map<QAction*, TYSiteNode*> remSiteNodeRetCodes;
294 std::map<QAction*, TYAcousticVolumeNode*> calculVolNodeRetCodes;
295 QAction* inverseNormales = NULL;
296 std::map<QAction*, TYMaillage*> copyMaillageRetCodes;
297 std::map<QAction*, TYMaillage*> remMaillageRetCodes;
298 std::map<QAction*, TYPointControl*> copyPtControlRetCodes;
299 std::map<QAction*, TYPointControl*> remPtControlRetCodes;
300 QAction* split = NULL;
301 std::map<QAction*, TYElement*> copyTopoRetCodes;
302 std::map<QAction*, TYElement*> remTopoRetCodes;
303 std::map<QAction*, TYElement*> copyInfraRetCodes;
304 std::map<QAction*, TYElement*> remInfraRetCodes;
305 QAction* code = NULL;
310 int volumeFound = -2, levelCurveFound = -2;
312 QFont font = pPopup->font();
317 for (
unsigned int i = 0; i < pElts->size(); i++)
319 elem_0 = pElts->at(i);
320 if ((i + 1) < pElts->size())
322 elem_1 = pElts->at(i + 1)._pObj;
324 if ((i + 2) < pElts->size())
326 elem_2 = pElts->at(i + 2)._pObj;
333 if ((pCurrentSite !=
nullptr) && (pCurrentSite->
getRoot()))
335 labelTxt =
TR(
"id_popup_siteroot");
341 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))), labelTxt);
345 if (pCurrentSite !=
nullptr)
349 if (i + 1 < pElts->size())
351 pCurrentSiteParent =
dynamic_cast<TYSiteNode*
>(elem_1);
354 if (pCurrentSiteParent == pModelerSite)
360 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
361 posRetCodes[code] = pEltGeoNode;
364 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
365 rotRetCodes[code] = pEltGeoNode;
368 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
369 copySiteNodeRetCodes[code] = pCurrentSite;
372 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
373 remSiteNodeRetCodes[code] = pCurrentSite;
381 inverseNormales = pPopup->addAction(
TR(
"id_popup_normales"));
385 if (pMaillage !=
nullptr)
388 if (
dynamic_cast<TYProjet*
>(elem_1) !=
nullptr)
392 if (pMaillageGeoNode !=
nullptr)
395 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
396 posRetCodes[code] =
dynamic_cast<TYGeometryNode*
>(pMaillageGeoNode);
400 pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
401 rotRetCodes[code] =
dynamic_cast<TYGeometryNode*
>(pMaillageGeoNode);
405 pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
406 copyMaillageRetCodes[code] = pMaillage;
409 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
410 remMaillageRetCodes[code] = pMaillage;
416 if (pPointCtrl !=
nullptr)
419 if (
dynamic_cast<TYProjet*
>(elem_1) !=
nullptr)
422 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
423 remPtControlRetCodes[code] = pPointCtrl;
431 if (pSite == pModelerSite)
436 split = pPopup->addAction(
TR(
"id_popup_split"));
440 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
441 copyTopoRetCodes[code] = pElts->at(i);
444 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
445 remTopoRetCodes[code] = pElts->at(i);
455 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
TR(
"id_popup_calculer"));
461 if (pSite == pModelerSite)
467 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
468 posRetCodes[code] = pEltGeoNode;
475 pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
476 rotRetCodes[code] = pEltGeoNode;
480 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
481 copyInfraRetCodes[code] = elem_0;
484 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
485 remInfraRetCodes[code] = elem_0;
489 pPopup->addSeparator();
493 pPopup->setMouseTracking(
true);
494 QAction* popupRet = pPopup->exec(QCursor::pos());
495 if (popupRet == NULL)
499 qApp->processEvents();
501 if (retCodes.find(popupRet) != retCodes.end())
503 TYElement* pElement = pElts->at(retCodes[popupRet]);
506 else if (posRetCodes.find(popupRet) != posRetCodes.end())
509 if (
dynamic_cast<TYGeometryNode*
>(posRetCodes[popupRet])->getElement()->isA(
"TYSiteNode"))
515 else if (rotRetCodes.find(popupRet) != rotRetCodes.end())
519 else if (popupRet == inverseNormales)
525 if (copySiteNodeRetCodes.find(popupRet) != copySiteNodeRetCodes.end())
527 copySite(copySiteNodeRetCodes[popupRet]);
529 else if (remSiteNodeRetCodes.find(popupRet) != remSiteNodeRetCodes.end())
531 remSite(remSiteNodeRetCodes[popupRet]);
533 else if (calculVolNodeRetCodes.find(popupRet) != calculVolNodeRetCodes.end())
537 else if (popupRet == split)
541 else if (copyMaillageRetCodes.find(popupRet) != copyMaillageRetCodes.end())
545 else if (remMaillageRetCodes.find(popupRet) != remMaillageRetCodes.end())
549 else if (copyPtControlRetCodes.find(popupRet) != copyPtControlRetCodes.end())
553 else if (remPtControlRetCodes.find(popupRet) != remPtControlRetCodes.end())
555 remPtCtrl(remPtControlRetCodes[popupRet]);
557 else if (remTopoRetCodes.find(popupRet) != remTopoRetCodes.end())
561 else if (copyTopoRetCodes.find(popupRet) != copyTopoRetCodes.end())
565 else if (remInfraRetCodes.find(popupRet) != remInfraRetCodes.end())
569 else if (copyInfraRetCodes.find(popupRet) != copyInfraRetCodes.end())
580 QMenu* pPopup =
new QMenu(NULL);
582 std::map<QAction*, int> retCodes;
583 std::map<QAction*, TYAcousticVolumeNode*> calculVolNodeRetCodes;
584 QAction* inverseNormales = NULL;
585 std::map<QAction*, TYGeometryNode*> posRetCodes;
586 std::map<QAction*, TYGeometryNode*> rotRetCodes;
587 std::map<QAction*, TYAcousticVolume*> dimVolRetCodes;
588 std::map<QAction*, TYAcousticVolume*> remVolRetCodes;
589 std::map<QAction*, TYAcousticVolume*> copyVolRetCodes;
590 QAction* editFace = NULL;
591 QAction* code = NULL;
596 int rectFound = -2, volumeFound = -2;
598 QFont font = pPopup->font();
600 for (
unsigned int i = 0; i < pElts->size(); i++)
603 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
612 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
TR(
"id_popup_calculer"));
619 inverseNormales = pPopup->addAction(
TR(
"id_popup_normales"));
623 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
624 posRetCodes[code] = pEltGeoNode;
626 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
627 rotRetCodes[code] = pEltGeoNode;
630 code = pPopup->addAction(
TR(
"id_popup_dimension"));
634 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
638 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
645 editFace = pPopup->addAction(
TR(
"id_popup_editface"));
649 pPopup->addSeparator();
653 pPopup->setMouseTracking(
true);
654 QAction* popupRet = pPopup->exec(QCursor::pos());
655 if (popupRet == NULL)
659 qApp->processEvents();
661 if (retCodes.find(popupRet) != retCodes.end())
663 TYElement* pElement = pElts->at(retCodes[popupRet]);
666 else if (posRetCodes.find(popupRet) != posRetCodes.end())
670 else if (rotRetCodes.find(popupRet) != rotRetCodes.end())
674 else if (dimVolRetCodes.find(popupRet) != dimVolRetCodes.end())
676 TYElement* pElement = dimVolRetCodes[popupRet];
679 else if (popupRet == editFace)
681 TYElement* pElement = pElts->at(rectFound)._pObj;
684 else if (popupRet == inverseNormales)
690 if (calculVolNodeRetCodes.find(popupRet) != calculVolNodeRetCodes.end())
694 else if (remVolRetCodes.find(popupRet) != remVolRetCodes.end())
698 else if (copyVolRetCodes.find(popupRet) != copyVolRetCodes.end())
709 QMenu* pPopup =
new QMenu(NULL);
711 QAction* code = NULL;
712 std::map<QAction*, int> retCodes;
713 std::map<QAction*, TYAcousticVolumeNode*> calculVolNodeRetCodes;
714 QAction* inverseNormales = NULL;
715 std::map<QAction*, TYGeometryNode*> posRetCodes;
716 std::map<QAction*, TYGeometryNode*> rotRetCodes;
717 QAction* hauteurEtage = NULL;
718 QAction* hauteurEcran = NULL;
719 QAction* epaisseurEcran = NULL;
720 QAction* editFace = NULL;
721 std::map<QAction*, TYAcousticVolume*> remVolRetCodes;
722 std::map<QAction*, TYAcousticVolume*> copyVolRetCodes;
723 std::map<QAction*, TYAcousticVolume*> dimVolRetCodes;
728 int etageFound = -2, ecranFound = -2, rectFound = -2, volumeFound = -2;
730 QFont font = pPopup->font();
732 for (
unsigned int i = 0; i < pElts->size(); i++)
735 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_editeelt"))),
744 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_calcul"))),
TR(
"id_popup_calculer"));
751 inverseNormales = pPopup->addAction(
TR(
"id_popup_normales"));
756 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_moving"))),
TR(
"id_popup_position"));
757 posRetCodes[code] = pEltGeoNode;
759 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_rotation"))),
TR(
"id_popup_rotation"));
760 rotRetCodes[code] = pEltGeoNode;
763 if (pElts->at(i)->isA(
"TYEtage"))
766 hauteurEtage = pPopup->addAction(
TR(
"id_popup_hauteur"));
768 else if (pElts->at(i)->isA(
"TYEcran"))
771 hauteurEcran = pPopup->addAction(
TR(
"id_popup_hauteur"));
772 epaisseurEcran = pPopup->addAction(
TR(
"id_popup_epaisseur"));
774 else if (pElts->at(i)->isA(
"TYAcousticCylinder"))
776 code = pPopup->addAction(
TR(
"id_popup_dimension"));
781 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_duplicate"))),
TR(
"id_popup_duplicate"));
785 code = pPopup->addAction(QIcon(QPixmap(
IMG(
"id_icon_del"))),
TR(
"id_popup_remove"));
792 editFace = pPopup->addAction(
TR(
"id_popup_editface"));
796 pPopup->addSeparator();
800 pPopup->setMouseTracking(
true);
801 QAction* popupRet = pPopup->exec(QCursor::pos());
802 if (popupRet == NULL)
806 qApp->processEvents();
808 if (retCodes.find(popupRet) != retCodes.end())
810 TYElement* pElement = pElts->at(retCodes[popupRet]);
813 else if (posRetCodes.find(popupRet) != posRetCodes.end())
815 bool bHeight =
false;
816 if (posRetCodes[popupRet]->isA(
"TYMachine"))
822 else if (rotRetCodes.find(popupRet) != rotRetCodes.end())
826 else if (popupRet == editFace)
828 TYElement* pElement = pElts->at(rectFound)._pObj;
831 else if (popupRet == hauteurEtage)
835 else if (popupRet == hauteurEcran)
839 else if (popupRet == epaisseurEcran)
843 else if (popupRet == inverseNormales)
847 else if (dimVolRetCodes.find(popupRet) != dimVolRetCodes.end())
849 TYElement* pElement = dimVolRetCodes[popupRet];
854 if (calculVolNodeRetCodes.find(popupRet) != calculVolNodeRetCodes.end())
858 else if (remVolRetCodes.find(popupRet) != remVolRetCodes.end())
862 else if (copyVolRetCodes.find(popupRet) != copyVolRetCodes.end())
901 if (pRootGeometryNode)
915 int ret = pDlg->exec();
918 if (ret == QDialog::Accepted)
926 if (pRootGeometryNode)
945 TR(
"id_action_setposition"));
950 pGeoNode->updateGraphicTree();
977 if (pRootGeometryNode)
979 oldTyMat = oldTyMat *
986 vec.
_x = oldTyMat.
_m[0][1];
987 vec.
_y = oldTyMat.
_m[1][1];
988 vec.
_z = oldTyMat.
_m[2][1];
992 xv.
_x = oldTyMat.
_m[0][0];
993 xv.
_y = oldTyMat.
_m[1][0];
994 xv.
_z = oldTyMat.
_m[2][0];
1013 int ret = pDlg->exec();
1016 if (ret == QDialog::Accepted)
1029 double dRotateX = rot.
_x;
1030 double dRotateY = rot.
_y;
1031 double dRotateZ = rot.
_z;
1045 tyMat =
Repere.asMatrix();
1046 tyMatTmpConcat = tyMat;
1049 tyMat = tyMat * tyMatTmpZ * tyMatTmpY * tyMatTmpX * tyMatTmpConcat;
1058 TR(
"id_action_setrotation"));
1090 int ret = pDlg->exec();
1093 if (ret == QDialog::Accepted)
1097 *pAccVol = *pBackupVolume;
1125 if (pMaillage !=
nullptr)
1127 LPTYPanel pPanel = pMaillage->getPanel();
1143 double X = pt.
_x, Y = pt.
_y, Z = pt.
_z;
1163 dynamic_cast<TYProjet*
>(pMaillage->getParent())->findMaillage(pMaillage);
1167 double minDistSquare = 0.0;
1177 minDistSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_y - Y, 2));
1180 minDistSquare = std::sqrt(std::pow(coord.
_y - Y, 2) + std::pow(coord.
_z - Z, 2));
1183 minDistSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_z - Z, 2));
1187 pResult = pPtCalcul;
1191 for (
unsigned int i = 1; i < pMaillage->getPtsCalcul().size(); i++)
1193 pPtCalcul = pMaillage->getPtsCalcul()[i];
1196 double distSquare = 0.0;
1200 distSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_y - Y, 2));
1203 distSquare = std::sqrt(std::pow(coord.
_y - Y, 2) + std::pow(coord.
_z - Z, 2));
1206 distSquare = std::sqrt(std::pow(coord.
_x - X, 2) + std::pow(coord.
_z - Z, 2));
1210 if (distSquare < minDistSquare)
1212 pResult = pPtCalcul;
1213 minDistSquare = distSquare;
1217 std::string value =
"dB : N/A";
1220 switch (pMaillage->getDataType())
1229 value =
"dB(Freq) : " +
1256 if (pMaillage !=
nullptr)
1258 pMaillage->getPanel()->getGraphicObject()->setVisible(
false);
1274 float* pos =
new float[3];
1293 if ((pElement !=
nullptr) && (pElement->edit(
_pModeler) == QDialog::Accepted))
1307 pElement->updateGraphicTree();
1313 if (pElement ==
nullptr)
1320 if (pParent ==
nullptr)
1335 if (
dynamic_cast<TYSiteNode*
>(pParent)->addSiteNode(pCopy))
1357 pCopy->updateGraphicTree();
1373 if (pElement ==
nullptr)
1378 if (pParent ==
nullptr)
1407 if (pCurrentCurve !=
nullptr)
1410 if (newCurve.
_pObj !=
nullptr)
1415 pNewGeoNode->
deepCopy(pCurrentGeoNode,
false);
1421 if (pTopo !=
nullptr)
1427 pTopo->updateGraphicTree();
1428 pTopo->updateGraphic();
1438 if (pElement ==
nullptr)
1443 if (pParent ==
nullptr)
1461 if ((
dynamic_cast<TYProjet*
>(pParent))->addMaillage(pCopy))
1464 double x = 10., y = 10.;
1465 if (pMaillage !=
nullptr)
1480 pCopy->updateGraphicTree();
1501 if (pElement ==
nullptr)
1506 if (pParent ==
nullptr)
1532 if (pElement ==
nullptr)
1537 if (pParent ==
nullptr)
1550 if ((
dynamic_cast<TYProjet*
>(pParent))->addPointControl(pCopy))
1557 pCopy->updateGraphicTree();
1563 TR(
"id_action_addptcontrol"));
1575 if (pElement ==
nullptr)
1580 if (pParent ==
nullptr)
1600 if (pElement ==
nullptr)
1605 if (pTopo ==
nullptr)
1614 if (pElement->
isA(
"TYCourbeNiveau"))
1618 else if (pElement->
isA(
"TYTerrain"))
1622 else if (pElement->
isA(
"TYCoursEau"))
1626 else if (pElement->
isA(
"TYPlanEau"))
1638 if (pElement ==
nullptr)
1643 if (pTopo ==
nullptr)
1650 if (pElement->
isA(
"TYCourbeNiveau"))
1658 pCopy->setParent(pElement->
getParent());
1667 else if (pElement->
isA(
"TYTerrain"))
1675 pCopy->setParent(pElement->getParent());
1684 else if (pElement->
isA(
"TYCoursEau"))
1692 pCopy->setParent(pElement->getParent());
1697 else if (pElement->
isA(
"TYPlanEau"))
1705 pCopy->setParent(pElement->
getParent());
1738 if (pElement ==
nullptr)
1743 if (pInfra ==
nullptr)
1752 if (pElement->
isA(
"TYRoute"))
1754 pInfra->remRoute((LPTYRoute&)pElement);
1757 if (pElement->
isA(
"TYReseauTransport"))
1761 else if (pElement->
isA(
"TYBatiment"))
1765 else if (pElement->
isA(
"TYMachine"))
1769 else if (pElement->
isA(
"TYUserSourcePonctuelle"))
1781 if (pElement ==
nullptr)
1786 if (pInfra ==
nullptr)
1796 if (pElement->
isA(
"TYRoute"))
1803 pCopy->
deepCopy(pInfra->findRoute((LPTYRoute&)pElement),
false);
1804 pCopy->
setParent(pElement->getParent());
1807 pInfra->addRoute(pCopy);
1810 if (pElement->
isA(
"TYReseauTransport"))
1818 pCopy->
setParent(pElement->getParent());
1823 else if (pElement->
isA(
"TYBatiment"))
1839 "**********************************************************************\n");
1841 "* ATTENTION !!! *\n\n\n");
1843 "* Les machines a l'interieur du batiment duplique ne sont pas active *\n\n");
1845 "* PENSEZ A LES REACTIVER *\n\n");
1847 "**********************************************************************\n");
1849 else if (pElement->
isA(
"TYMachine"))
1863 else if (pElement->
isA(
"TYUserSourcePonctuelle"))
1900 if (pCopy &&
getTYApp()->getCurProjet() &&
getTYApp()->getCurProjet()->getCurrentCalcul())
1912 if (pElement ==
nullptr)
1918 if (pVol ==
nullptr)
1923 float sizeX = 0, sizeY = 0, sizeZ = 0;
1927 if (pVol->
isA(
"TYAcousticBox"))
1932 else if (pVol->
isA(
"TYAcousticCylinder"))
1936 else if (pVol->
isA(
"TYAcousticSemiCylinder"))
1954 org.
_z -= sizeZ / 2;
1957 if (pVol->
isA(
"TYAcousticBox"))
1962 else if (pVol->
isA(
"TYAcousticCylinder"))
1966 else if (pVol->
isA(
"TYAcousticSemiCylinder"))
1971 org.
_z += sizeZ / 2;
1979 if (pElement ==
nullptr)
1984 if (pParent ==
nullptr)
1989 if (pGeoNode ==
nullptr)
2006 if (pElement ==
nullptr)
2011 if (pVolParent ==
nullptr)
2016 if (pGeoNode ==
nullptr)
2047 pCopy->updateGraphicTree();
2062 if (pElement ==
nullptr)
2067 if (pAccRectNode ==
nullptr)
2074 pFaceMdF->setAttribute(Qt::WA_DeleteOnClose);
2077 pFaceMdF->showMaximized();
2082 if (pElement ==
nullptr)
2098 if (pElement ==
nullptr)
2103 if (pEtage ==
nullptr)
2115 pEtage->updateGraphic();
2133 pEcran->updateGraphic();
2151 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',...
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.
static OMessageManager * get()
virtual void info(const char *message,...)
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 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.
void updateModelers(bool clipping=true, bool axesAndGrid=true, bool displayList=true)
TYSiteFrame * getSiteFrame()
QMdiArea * getWorkspace()
Classe generique pour une fenetre de modeleur.
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 updateDisplayList(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)
TYElement * _pLastRolloverElt
QPoint _lastPressedCurPos
Derniere position de la souris.
float _pickTolerance
Tolerance du picking.
void remPtCtrl(TYElement *pElement)
void machineModelerPopupMenu(std::shared_ptr< LPTYElementArray > pElts)
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.
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)