23 #include <qmessagebox.h> 24 #include <QTemporaryFile> 26 #include "Tympan/core/config.h" 43 #define TR(id) OLocalizator::getString("TYCalculManager", (id)) 49 _pCurrentCalcul = NULL;
54 _pCurrentCalcul = NULL;
59 _pCurrentCalcul = pCalcul;
64 return launch(_pCurrentCalcul);
91 QTemporaryFile problemfile;
92 problemfile.setFileTemplate(QDir::tempPath() + QString(
"/XXXXXX.xml"));
93 QTemporaryFile resultfile;
94 resultfile.setFileTemplate(QDir::tempPath() + QString(
"/XXXXXX.xml"));
95 QTemporaryFile meshfile;
96 meshfile.setFileTemplate(QDir::tempPath() + QString(
"/XXXXXX.ply"));
101 logger.
error(
"Creation de fichier temporaire impossible. Veuillez verifier l'espace disque disponible.");
107 save_project(problemfile.fileName().toUtf8().data(), pProject);
112 msg << boost::diagnostic_information(exc);
114 "Could not export current project. Computation won't be done");
115 logger.
debug(msg.str().c_str());
121 "Le calcul va s'executer en mode debug.\nLes fichiers temporaires ne seront pas supprimes une fois le calcul termine.\nProjet courant non calcule: %s. Projet avec les resultats du calcul: %s. Mesh de l'altimetrie au format ply: %s",
122 problemfile.fileName().toStdString().c_str(),
123 resultfile.fileName().toStdString().c_str(),
124 meshfile.fileName().toStdString().c_str());
132 QString absolute_plugins_path (QCoreApplication::applicationDirPath());
133 absolute_plugins_path.append(
"/");
134 absolute_plugins_path.append(PLUGINS_PATH);
135 QString absolute_pyscript_path (QCoreApplication::applicationDirPath());
136 absolute_pyscript_path.append(
"/");
137 absolute_pyscript_path.append(SOLVE_PYSCRIPT);
138 args << absolute_pyscript_path << problemfile.fileName() << resultfile.fileName()
139 << meshfile.fileName() << absolute_plugins_path;
144 QRegExp altimetry_size_criterion_reg(
"(MeshElementSizeMax\\s?=\\s?)([0-9]+.[0-9]*)");
145 QRegExp altimetry_refine_mesh_reg(
"(RefineMesh\\s?=\\s?)(True|False)");
146 QRegExp altimetry_use_volumes_landtakes_reg(
"(UseVolumesLandtake\\s?=\\s?)(True|False)");
147 int pos_size = altimetry_size_criterion_reg.indexIn(parameters);
148 int pos_refi = altimetry_refine_mesh_reg.indexIn(parameters);
149 int pos_land = altimetry_use_volumes_landtakes_reg.indexIn(parameters);
150 if (pos_size > -1 && pos_refi > -1 && pos_land > -1 ){
151 QString altimetry_size_criterion = altimetry_size_criterion_reg.cap(2);
152 QString altimetry_refine_mesh = altimetry_refine_mesh_reg.cap(2);
153 QString altimetry_use_volumes_landtakes = altimetry_use_volumes_landtakes_reg.cap(2);
154 args << altimetry_size_criterion << altimetry_refine_mesh << altimetry_use_volumes_landtakes;
157 logger.
info(
TR(
"id_msg_go_calcul"));
167 result =
load_project(resultfile.fileName().toUtf8().data());
172 msg << boost::diagnostic_information(exc);
173 logger.
error(
"Could not import computed project. No results available.");
174 logger.
debug(msg.str().c_str());
176 msgBox.setText(
"Le fichier de resultats n'a pas pu etre lu.");
188 std::deque<OPoint3D> points;
189 std::deque<OTriangle> triangles;
190 std::deque<LPTYSol> materials;
191 pSite->
readMesh(points, triangles, materials, meshfile.fileName());
197 pCalcul->
getParent()->updateGraphicTree();
198 pCalcul->updateGraphicTree();
200 if (psiteframe !=
nullptr)
212 logger.
info(
TR(
"id_msg_calcul_done"));
271 if (pSite !=
nullptr)
276 if (pAccVolNode.
_pObj !=
nullptr)
280 TYApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
295 pAccVolNode->getGraphicObject()->update(
true);
298 TYApplication::restoreOverrideCursor();
303 if (pLine.
_pObj !=
nullptr)
307 TYApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
310 ret = pLine->updateAcoustic();
322 pLine->getGraphicObject()->update(
true);
325 TYApplication::restoreOverrideCursor();
The base exception class for errors due to invalid data.
virtual ~TYCalculManager()
Destructeur.
bool python_gui(QStringList args)
virtual void debug(const char *message,...)
void setCurrent(LPTYCalcul pCalcul)
Set du Calcul et Projet courant.
bool updateAltiRecepteurs()
TYCalculManager()
Constructeur par defaut.
Frame pour la gestion de site (fichier header)
virtual void updateAcoustique(const bool &force=false)
void setSite(LPTYSiteNode pSite)
Fenetre principale de l'application Tympan (fichier header)
classe de definition d'un projet.
bool askForResetResultat()
Previent l'utilisateur que le resultat va etre efface, si celui-ci est valide.
bool updateAcoustic(TYElement *pElement)
Appelle la methode de calcul acoustique du volume node passe.
void setCurProjet(LPTYProjet pProjet)
Set/Get du projet courant.
pour l'application Tympan (fichier header)
void updateDisplayList(void)
bool init_tmp_file(QTemporaryFile &tmp_file, bool keep_file)
void updateModelers(bool clipping=true, bool axesAndGrid=true, bool displayList=true)
void save_project(const char *filename, const LPTYProjet &project)
save a project into an XML file
virtual void updateView(bool clipping=true, bool axesAndGrid=true)
Classe generique pour une fenetre de modeleur (fichier header)
virtual bool updateAcoustic(const bool &force=false)
void setProjet(LPTYProjet pProjet)
TYProjetFrame * getProjetFrame()
TYElement * getParent() const
bool must_keep_tmp_files()
static OMessageManager * get()
TYOpenGLRenderer * getRenderer()
Classe Modeler specialisee pour l'edition des sites.
TYModelerFrame * getCurrentModeler()
Utilitaires pour les interactions entre l'interface graphique et le système (headers) ...
LPTYProjet getCurProjet()
Set/Get du projet courant.
void clearTabSelectedElement()
T * _pObj
The real pointer, must derived IRefCount.
utilitaire pour la gestion des messages dans Tympan (fichier header)
virtual void info(const char *message,...)
Gestionnaire des calculs acoustiques. Il fait l'interface entre l'IHM et le gestionnaire de donnees p...
LPTYCalcul getCurrentCalcul()
Set/Get du pointeur du Calcul courant.
Utilitaires pour les interactions entre l'application tympan et des sous- processus python...
static void setIsSavedOk(const bool &toSave)
TYRenderWindowInteractor * getView()
virtual void error(const char *message,...)
int getState()
Get de l'etat du calcul.
void readMesh(std::deque< OPoint3D > &points, std::deque< OTriangle > &triangles, std::deque< LPTYSol > &materials, const QString &filename)
LPTYSiteNode getSite()
Get du site.
bool launchCurrent()
Execute le calcul courant.
virtual void updateAltiInfra()
Frame pour la gestion de projet (fichier header)
void setCalculDone(bool state)
LPTYProjet load_project(const char *filename)
load an XML project file
Classe Modeler specialisee pour l'edition des sites (fichier header)
Utilities to load a project and a solver.
TYApplication * getTYApp()
Retourne le pointeur sur l'application.
bool launch(LPTYCalcul pCalcul)
Execute un calcul.
LPTYAltimetrie getAltimetry() const
void plugBackTriangulation(const std::deque< OPoint3D > &points, std::deque< OTriangle > &triangles, const std::deque< LPTYSol > &materials)
plug back triangulation providfed by the TYTopographie
TYMainWindow * getTYMainWnd()
Retourne le pointeur sur la fenetre principale.