23 #include <qmessagebox.h>
24 #include <QTemporaryFile>
26 #include "Tympan/core/config.h"
42 #define TR(id) OLocalizator::getString("TYCalculManager", (id))
48 _pCurrentCalcul = NULL;
53 _pCurrentCalcul = NULL;
58 _pCurrentCalcul = pCalcul;
63 return launch(_pCurrentCalcul);
95 QTemporaryFile problemfile;
96 problemfile.setFileTemplate(QDir::tempPath() + QString(
"/XXXXXX.xml"));
97 QTemporaryFile resultfile;
98 resultfile.setFileTemplate(QDir::tempPath() + QString(
"/XXXXXX.xml"));
99 QTemporaryFile meshfile;
100 meshfile.setFileTemplate(QDir::tempPath() + QString(
"/XXXXXX.ply"));
105 "Creation de fichier temporaire impossible. Veuillez verifier l'espace disque disponible.");
111 save_project(problemfile.fileName().toUtf8().data(), pProject);
116 msg << boost::diagnostic_information(exc);
117 logger.
error(
"Could not export current project. Computation won't be done");
118 logger.
debug(msg.str().c_str());
123 logger.
debug(
"Le calcul va s'executer en mode debug.\nLes fichiers temporaires ne seront pas "
124 "supprimes une fois le calcul termine.\nProjet courant non calcule: %s. Projet avec les "
125 "resultats du calcul: %s. Mesh de l'altimetrie au format ply: %s",
126 problemfile.fileName().toStdString().c_str(),
127 resultfile.fileName().toStdString().c_str(), meshfile.fileName().toStdString().c_str());
135 QString absolute_plugins_path(QCoreApplication::applicationDirPath());
136 absolute_plugins_path.append(
"/");
137 absolute_plugins_path.append(PLUGINS_PATH);
138 QString absolute_pyscript_path(QCoreApplication::applicationDirPath());
139 absolute_pyscript_path.append(
"/");
140 absolute_pyscript_path.append(SOLVE_PYSCRIPT);
141 args << absolute_pyscript_path << problemfile.fileName() << resultfile.fileName() << meshfile.fileName()
142 << absolute_plugins_path;
146 QRegExp altimetry_size_criterion_reg(
"(MeshElementSizeMax\\s?=\\s?)([0-9]+.[0-9]*)");
147 QRegExp altimetry_refine_mesh_reg(
"(RefineMesh\\s?=\\s?)(True|False)");
148 QRegExp altimetry_use_volumes_landtakes_reg(
"(UseVolumesLandtake\\s?=\\s?)(True|False)");
149 int pos_size = altimetry_size_criterion_reg.indexIn(parameters);
150 int pos_refi = altimetry_refine_mesh_reg.indexIn(parameters);
151 int pos_land = altimetry_use_volumes_landtakes_reg.indexIn(parameters);
152 if (pos_size > -1 && pos_refi > -1 && pos_land > -1)
154 QString altimetry_size_criterion = altimetry_size_criterion_reg.cap(2);
155 QString altimetry_refine_mesh = altimetry_refine_mesh_reg.cap(2);
156 QString altimetry_use_volumes_landtakes = altimetry_use_volumes_landtakes_reg.cap(2);
157 args << altimetry_size_criterion << altimetry_refine_mesh << altimetry_use_volumes_landtakes;
160 logger.
info(
TR(
"id_msg_go_calcul"));
170 result =
load_project(resultfile.fileName().toUtf8().data());
175 msg << boost::diagnostic_information(exc);
176 logger.
error(
"Could not import computed project. No results available.");
177 logger.
debug(msg.str().c_str());
179 msgBox.setText(
"Le fichier de resultats n'a pas pu etre lu.");
191 std::deque<OPoint3D> points;
192 std::deque<OTriangle> triangles;
193 std::deque<LPTYSol> materials;
194 pSite->
readMesh(points, triangles, materials, meshfile.fileName());
200 pCalcul->
getParent()->updateGraphicTree();
201 pCalcul->updateGraphicTree();
220 logger.
info(
TR(
"id_msg_calcul_done"));
280 if (pSite !=
nullptr)
285 if (pAccVolNode.
_pObj !=
nullptr)
289 TYApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
304 pAccVolNode->getGraphicObject()->update(
true);
307 TYApplication::restoreOverrideCursor();
312 if (pLine.
_pObj !=
nullptr)
316 TYApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
319 ret = pLine->updateAcoustic();
331 pLine->getGraphicObject()->update(
true);
334 TYApplication::restoreOverrideCursor();
TYApplication * getTYApp()
Retourne le pointeur sur l'application.
TYMainWindow * getTYMainWnd()
Retourne le pointeur sur la fenetre principale.
pour l'application Tympan (fichier header)
Gestionnaire des calculs acoustiques. Il fait l'interface entre l'IHM et le gestionnaire de donnees p...
Fenetre principale de l'application Tympan (fichier header)
utilitaire pour la gestion des messages dans Tympan (fichier header)
Classe generique pour une fenetre de modeleur (fichier header)
Frame pour la gestion de projet (fichier header)
Frame pour la gestion de site (fichier header)
Classe Modeler specialisee pour l'edition des sites (fichier header)
virtual void debug(const char *message,...)
virtual void error(const char *message,...)
static OMessageManager * get()
virtual void info(const char *message,...)
T * _pObj
The real pointer, must derived IRefCount.
virtual bool updateAcoustic(const bool &force=false)
void reset()
Reinitialise l'historique.
void plugBackTriangulation(const std::deque< OPoint3D > &points, std::deque< OTriangle > &triangles, const std::deque< LPTYSol > &materials)
plug back triangulation providfed by the TYTopographie
LPTYProjet getCurProjet()
Set/Get du projet courant.
void setCurProjet(LPTYProjet pProjet)
Set/Get du projet courant.
virtual ~TYCalculManager()
Destructeur.
bool launchCurrent()
Execute le calcul courant.
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.
bool launch(LPTYCalcul pCalcul)
Execute un calcul.
void setCurrent(LPTYCalcul pCalcul)
Set du Calcul et Projet courant.
TYCalculManager()
Constructeur par defaut.
int getState()
Get calculation state.
void setSite(LPTYSiteNode pSite)
Definition of the site on which the calculation will be done.
TYElement * getParent() const
static void setIsSavedOk(const bool &toSave)
void updateModelersAfterComputation(LPTYProjet &result)
TYProjetFrame * getProjetFrame()
void updateModelers(bool clipping=true, bool axesAndGrid=true, bool displayList=true)
TYModelerFrame * getCurrentModeler()
TYActionManager * getActionManager()
void setCalculDone(bool state)
void setProjet(LPTYProjet pProjet)
classe de definition d'un projet.
bool updateAltiRecepteurs()
LPTYSiteNode getSite()
Get du site.
void unsetSite()
Supprime la liaison avec le site.
LPTYCalcul getCurrentCalcul()
Set/Get du pointeur du Calcul courant.
void remAllCalcul()
Suppression de tous les elements.
void setProjet(const LPTYProjet pProjet)
LPTYAltimetrie getAltimetry() const
virtual void updateAcoustique(const bool &force=false)
virtual void updateAltiInfra()
void readMesh(std::deque< OPoint3D > &points, std::deque< OTriangle > &triangles, std::deque< LPTYSol > &materials, const QString &filename)
void save_project(const char *filename, const LPTYProjet &project)
save a project into an XML file
LPTYProjet load_project(const char *filename)
load an XML project file
bool python_gui(QStringList args)
Utilitaires pour les interactions entre l'interface graphique et le système (headers)
The base exception class for errors due to invalid data.
bool must_keep_tmp_files()
bool init_tmp_file(QTemporaryFile &tmp_file, bool keep_file)
Utilitaires pour les interactions entre l'application tympan et des sous- processus python.
Utilities to load a project and a solver.