ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 997
Committed: Tue Dec 18 15:59:49 2018 UTC (6 years, 8 months ago) by couturad
File size: 39913 byte(s)
Log Message:
MICROSTRUCTURE: ajout d'un outil pour reduire le nombre de colonnes d'un histogramme 

File Contents

# Content
1 //------------------------------------------------------------
2 //------------------------------------------------------------
3 // MAGiC
4 // Jean Christophe Cuilli�re et Vincent FRANCOIS
5 // D�partement de G�nie M�canique - UQTR
6 //------------------------------------------------------------
7 // Le projet MAGIC est un projet de recherche du d�partement
8 // de g�nie m�canique de l'Universit� du Qu�bec �
9 // Trois Rivi�res
10 // Les librairies ne peuvent �tre utilis�es sans l'accord
11 // des auteurs (contact : francois@uqtr.ca)
12 //------------------------------------------------------------
13 //------------------------------------------------------------
14 //
15 // main.cpp
16 //
17 //------------------------------------------------------------
18 //------------------------------------------------------------
19 // COPYRIGHT 2000
20 // Version du 02/03/2006 � 11H25
21 //------------------------------------------------------------
22 //------------------------------------------------------------
23
24
25
26
27 #include "gestionversion.h"
28 #include "magic_application.h"
29 #include "mstruct_ves.h"
30 #include "mstruct_ver.h"
31 #include "mstruct_parametres.h"
32 #include "mg_gestionnaire.h"
33 #include "mg_file.h"
34 #include "fct_taille_fem_solution.h"
35 #include "mstruct_ves_file.h"
36 #include "mstruct_generateur_polycristaux.h"
37 #ifdef ALL_OCC
38 #include "occ_import.h"
39 #endif
40 //---------------------------------------------------------------------------
41
42
43
44 int main(int argc,char **argv)
45 {
46 std::vector<MAGIC_PARAMETRE_APPLICATION> lst;
47 // p_in(1) -in
48 // p_out(2) -out
49 MAGIC_PARAMETRE_APPLICATION p3(3,(char*)"-ves_in",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES d'entree");
50 MAGIC_PARAMETRE_APPLICATION p4(4,(char*)"-ves_out",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES de sortie");
51 MAGIC_PARAMETRE_APPLICATION p5(5,(char*)"-carte",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Carte de taille FEM solution");
52 MAGIC_PARAMETRE_APPLICATION p6(6,(char*)"-dossier",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Dossier de resultat");
53 MAGIC_PARAMETRE_APPLICATION p7(7,(char*)"-param",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametres");
54 MAGIC_PARAMETRE_APPLICATION p8(8,(char*)"-lstparam",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier listant plusieurs fichiers de parametres");
55 MAGIC_PARAMETRE_APPLICATION p9(9,(char*)"-paramaster",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametre aster");
56 MAGIC_PARAMETRE_APPLICATION p10(10,(char*)"-type_generateur",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de generateur : [0] RSA, [1] DCR");
57 MAGIC_PARAMETRE_APPLICATION p11(11,(char*)"-type_inclusion",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'inclusion : [0] Sphere, [1] Cylindre");
58 MAGIC_PARAMETRE_APPLICATION p12(12,(char*)"-type_maillage",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de maillage : [0] lineaire, [1] quadratique, [2] lineaire et quadratique");
59 MAGIC_PARAMETRE_APPLICATION p13(13,(char*)"-type_etude",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'etude : [0] mecanique, [1] thermique, [2] mecanique et thermique");
60 MAGIC_PARAMETRE_APPLICATION p14(14,(char*)"-nb_couche_erosion",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre de couche d'erosion (defaut = 0)");
61 MAGIC_PARAMETRE_APPLICATION p15(15,(char*)"-epaisseur_couche_erosion",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Epaisseur d'une couche d'erosion (defaut = 0.02)");
62 MAGIC_PARAMETRE_APPLICATION p16(16,(char*)"-ves_sph",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement spherique");
63 MAGIC_PARAMETRE_APPLICATION p17(17,(char*)"-ves_dev",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement deviatorique");
64 MAGIC_PARAMETRE_APPLICATION p18(18,(char*)"-lstves",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Liste de VES");
65 MAGIC_PARAMETRE_APPLICATION p19(19,(char*)"-eps",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Distance max entre la triangulation et la géométrie");
66 MAGIC_PARAMETRE_APPLICATION p20(20,(char*)"-creeparam",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Creer une structure de parametres");
67 MAGIC_PARAMETRE_APPLICATION p21(21,(char*)"-gen_geo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la geometrie");
68 MAGIC_PARAMETRE_APPLICATION p22(22,(char*)"-gen_mat",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer les materiaux");
69 MAGIC_PARAMETRE_APPLICATION p23(23,(char*)"-gen_carte",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la carte de taille");
70 MAGIC_PARAMETRE_APPLICATION p24(24,(char*)"-gen_mg_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le MG maillage");
71 MAGIC_PARAMETRE_APPLICATION p25(25,(char*)"-gen_fem_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le FEM maillage");
72 MAGIC_PARAMETRE_APPLICATION p26(26,(char*)"-gen_etude",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer l'etude");
73 MAGIC_PARAMETRE_APPLICATION p27(27,(char*)"-gen_calcul",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Lancer la resolution numerique");
74 MAGIC_PARAMETRE_APPLICATION p28(28,(char*)"-gen_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le post-traitement des resultats");
75 MAGIC_PARAMETRE_APPLICATION p29(29,(char*)"-cumuler_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Cumuler les post-traitement d'une liste de VES");
76 MAGIC_PARAMETRE_APPLICATION p30(30,(char*)"-affiche_contenu",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Affiche le contenu d'un fichier VES");
77 MAGIC_PARAMETRE_APPLICATION p31(31,(char*)"-export_tristl",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation de la triangulation STL de la microstructure");
78 MAGIC_PARAMETRE_APPLICATION p32(32,(char*)"-export_maill_abaqus",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation du maillage au format ABAQUS");
79 MAGIC_PARAMETRE_APPLICATION p33(33,(char*)"-creeparampoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Création d'un fichier de paramétres");
80 MAGIC_PARAMETRE_APPLICATION p34(34,(char*)"-polycristaux",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"génération d'un polycristal");
81 MAGIC_PARAMETRE_APPLICATION p35(35,(char*)"-ves_lambda_x",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda x");
82 MAGIC_PARAMETRE_APPLICATION p36(36,(char*)"-ves_lambda_y",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda y");
83 MAGIC_PARAMETRE_APPLICATION p37(37,(char*)"-ves_lambda_z",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda z");
84 MAGIC_PARAMETRE_APPLICATION p38(38,(char*)"-compress_histo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Compresser un fichier histogramme (.txt) selon une largeur de colonne");
85 MAGIC_PARAMETRE_APPLICATION p39(39,(char*)"-largeur",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Largeur de colonne");
86
87 p20.ajouter_dependance(10);p20.ajouter_dependance(11);p20.ajouter_dependance(12);p20.ajouter_dependance(13);p20.ajouter_dependance(14);p20.ajouter_dependance(15);
88 p21.ajouter_dependance(4);p21.ajouter_dependance(7);p21.ajouter_dependance(8);
89 p22.ajouter_dependance(3);p22.ajouter_dependance(4);p22.ajouter_dependance(7);p22.ajouter_dependance(8);
90 p23.ajouter_dependance(3);p23.ajouter_dependance(4);p23.ajouter_dependance(7);
91 p24.ajouter_dependance(3);p24.ajouter_dependance(4);p24.ajouter_dependance(7);p24.ajouter_dependance(5);
92 p25.ajouter_dependance(3);p25.ajouter_dependance(4);p25.ajouter_dependance(7);
93 p26.ajouter_dependance(3);p26.ajouter_dependance(4);p26.ajouter_dependance(7);
94 p27.ajouter_dependance(3);p27.ajouter_dependance(4);p27.ajouter_dependance(7);p27.ajouter_dependance(9);
95 p28.ajouter_dependance(3);p28.ajouter_dependance(4);p28.ajouter_dependance(7);p28.ajouter_dependance(8);p28.ajouter_dependance(16);p28.ajouter_dependance(17);p28.ajouter_dependance(35);p28.ajouter_dependance(36);p28.ajouter_dependance(37);
96 p29.ajouter_dependance(7);p29.ajouter_dependance(8);p29.ajouter_dependance(6);
97 p30.ajouter_dependance(3);
98 p31.ajouter_dependance(3);p31.ajouter_dependance(2);p31.ajouter_dependance(19);
99 p32.ajouter_dependance(3);p32.ajouter_dependance(6);
100 p34.ajouter_dependance(2);p34.ajouter_dependance(7);p34.ajouter_dependance(33);
101 p38.ajouter_dependance(1);p38.ajouter_dependance(2);p38.ajouter_dependance(39);
102
103 lst.push_back(p3);
104 lst.push_back(p4);
105 lst.push_back(p5);
106 lst.push_back(p6);
107 lst.push_back(p7);
108 lst.push_back(p8);
109 lst.push_back(p9);
110 lst.push_back(p10);
111 lst.push_back(p11);
112 lst.push_back(p12);
113 lst.push_back(p13);
114 lst.push_back(p14);
115 lst.push_back(p15);
116 lst.push_back(p16);
117 lst.push_back(p17);
118 lst.push_back(p18);
119 lst.push_back(p19);
120 lst.push_back(p20);
121 lst.push_back(p21);
122 lst.push_back(p22);
123 lst.push_back(p23);
124 lst.push_back(p24);
125 lst.push_back(p25);
126 lst.push_back(p26);
127 lst.push_back(p27);
128 lst.push_back(p28);
129 lst.push_back(p29);
130 lst.push_back(p30);
131 lst.push_back(p31);
132 lst.push_back(p32);
133 lst.push_back(p33);
134 lst.push_back(p34);
135 lst.push_back(p35);
136 lst.push_back(p36);
137 lst.push_back(p37);
138 lst.push_back(p38);
139 lst.push_back(p39);
140
141 MAGIC_APPLICATION app((char*)"Homogeneisation d'une microstructure",argc,argv,lst,true,true);
142 if(app.get_erreur()==true) return 0;
143
144 if(app.get_action()==20)
145 {
146 app.affiche((char*)"***********************************************");
147 app.affiche((char*)"*** Creation des fichiers de parametres ***");
148 app.affiche((char*)"***********************************************");
149 int type_generateur;
150 int type_inclusion;
151 int type_maillage;
152 int type_etude;
153 int nb_couche;
154 double epaisseur_couche;
155 app.recupere_parametre_int(10,type_generateur,(char*)"Type de generateur manquant");
156 app.recupere_parametre_int(11,type_inclusion,(char*)"Type d'inclusion manquant");
157 app.recupere_parametre_int(12,type_maillage,(char*)"Type de maillage manquant");
158 app.recupere_parametre_int(13,type_etude,(char*)"Type d'etude manquant");
159 app.recupere_parametre_double_avec_defaut(15,epaisseur_couche,0.02);
160 app.recupere_parametre_int_avec_defaut(14,nb_couche,0);
161 if (app.get_erreur()==true) return 0;
162 bool maillage_lin=false;
163 bool maillage_quad=false;
164 if(type_maillage==0) maillage_lin=true;
165 else if(type_maillage==1) maillage_quad=true;
166 else {maillage_lin=true;maillage_quad=true;}
167 bool etude_mecanique=false;
168 bool etude_thermique=false;
169 if(type_etude==0) etude_mecanique=true;
170 else if(type_etude==1) etude_thermique=true;
171 else if(type_etude==2){etude_mecanique=true;etude_thermique=true;}
172 PARAMETRES::generer_fichier_parametres(etude_mecanique,etude_thermique,type_generateur,type_inclusion,maillage_lin,maillage_quad,nb_couche,epaisseur_couche,app.affiche);
173 PARAMETRES::generer_script_ves(etude_mecanique,etude_thermique,type_inclusion,maillage_lin,maillage_quad,app.affiche);
174 PARAMETRES::generer_script_post_traitement(etude_mecanique,etude_thermique,type_inclusion,maillage_lin,maillage_quad,epaisseur_couche,app.affiche);
175 }
176
177
178 if(app.get_action()==21)
179 {
180 app.affiche((char*)"**************************************");
181 app.affiche((char*)"*** Generation de la geometrie ***");
182 app.affiche((char*)"**************************************");
183 char fichier_ves_out[500];
184 char fichier_param[500];
185 char fichier_lstparam[500];
186 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
187 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
188 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
189 if (app.get_erreur()==true) return 0;
190 std::string str_fichier_ves_out = fichier_ves_out;
191 size_t found = str_fichier_ves_out.rfind((char*)".");
192 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
193 str_fichier_magic_out.append((char*)".magic");
194 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
195 {
196 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
197 return 0;
198 }
199 if(strlen(fichier_param)>0)
200 {
201 std::vector<OT_PARAMETRES*> vector_param_geometrie;
202 OT_PARAMETRES* param_geometrie = new OT_PARAMETRES;
203 char message[5000];
204 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_geometrie)==FAIL)
205 {
206 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
207 app.affiche(message);
208 return 1;
209 }
210 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
211 app.affiche(message);
212 vector_param_geometrie.push_back(param_geometrie);
213 MSTRUCT_VES ves;
214 ves.active_affichage(app.affiche);
215 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
216 {
217 delete param_geometrie;
218 return 1;
219 }
220 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
221 delete param_geometrie;
222 }
223 else if(strlen(fichier_lstparam)>0)
224 {
225 std::vector<OT_PARAMETRES*> vector_param_geometrie;
226 char message[5000];
227 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_geometrie)==FAIL)
228 {
229 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
230 app.affiche(message);
231 return 1;
232 }
233 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
234 app.affiche(message);
235 MSTRUCT_VES ves;
236 ves.active_affichage(app.affiche);
237 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
238 {
239 std::vector<OT_PARAMETRES*>::iterator it_vector;
240 for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
241 {
242 delete *it_vector;
243 }
244 return 1;
245 }
246 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
247 std::vector<OT_PARAMETRES*>::iterator it_vector;
248 for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
249 {
250 delete *it_vector;
251 }
252 }
253 char message[5000];
254 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
255 app.affiche(message);
256 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
257 app.affiche(message);
258 }
259
260 if(app.get_action()==22)
261 {
262 app.affiche((char*)"************************************");
263 app.affiche((char*)"*** Generation des materiaux ***");
264 app.affiche((char*)"************************************");
265 char fichier_ves_in[500];
266 char fichier_ves_out[500];
267 char fichier_param[500];
268 char fichier_lstparam[500];
269 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
270 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
271 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
272 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
273 if (app.get_erreur()==true) return 0;
274 char message[5000];
275 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
276 app.affiche(message);
277 std::string str_fichier_ves_out = fichier_ves_out;
278 size_t found = str_fichier_ves_out.rfind((char*)".");
279 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
280 str_fichier_magic_out.append((char*)".magic");
281 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
282 {
283 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
284 return 0;
285 }
286 if(strlen(fichier_param)>0)
287 {
288 std::vector<OT_PARAMETRES*> vector_param_materiau;
289 OT_PARAMETRES* param_materiau = new OT_PARAMETRES;
290 char message[5000];
291 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_materiau)==FAIL)
292 {
293 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
294 app.affiche(message);
295 return 1;
296 }
297 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
298 app.affiche(message);
299 vector_param_materiau.push_back(param_materiau);
300 MSTRUCT_VES ves(fichier_ves_in);
301 ves.active_affichage(app.affiche);
302 ves.generer_materiau(vector_param_materiau);
303 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
304 delete param_materiau;
305 }
306 else if(strlen(fichier_lstparam)>0)
307 {
308 std::vector<OT_PARAMETRES*> vector_param_materiau;
309 char message[5000];
310 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_materiau)==FAIL)
311 {
312 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
313 app.affiche(message);
314 return 1;
315 }
316 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
317 app.affiche(message);
318 MSTRUCT_VES ves(fichier_ves_in);
319 ves.active_affichage(app.affiche);
320 ves.generer_materiau(vector_param_materiau);
321 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
322 std::vector<OT_PARAMETRES*>::iterator it_vector;
323 for(it_vector=vector_param_materiau.begin();it_vector!=vector_param_materiau.end();it_vector++)
324 {
325 delete *it_vector;
326 }
327 }
328 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
329 app.affiche(message);
330 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
331 app.affiche(message);
332 }
333
334 if(app.get_action()==23)
335 {
336 app.affiche((char*)"********************************************");
337 app.affiche((char*)"*** Generation de la carte de taille ***");
338 app.affiche((char*)"********************************************");
339 char fichier_ves_in[500];
340 char fichier_param[500];
341 char fichier_ves_out[500];
342 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
343 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
344 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
345 if (app.get_erreur()==true) return 0;
346 char message[5000];
347 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
348 app.affiche(message);
349 OT_PARAMETRES* param_carte = new OT_PARAMETRES;
350 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_carte)==FAIL)
351 {
352 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
353 app.affiche(message);
354 return 1;
355 }
356 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
357 app.affiche(message);
358 MSTRUCT_VES ves(fichier_ves_in);
359 ves.active_affichage(app.affiche);
360 ves.generer_carte(param_carte);
361 ves.enregistrer(fichier_ves_out);
362 delete param_carte;
363 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
364 app.affiche(message);
365 }
366
367 if(app.get_action()==24)
368 {
369 app.affiche((char*)"**********************************");
370 app.affiche((char*)"*** Generation du maillage ***");
371 app.affiche((char*)"**********************************");
372 char fichier_ves_in[500];
373 char fichier_ves_out[500];
374 char fichier_param[500];
375 char fichier_carte[500];
376 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
377 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
378 app.recupere_parametre_string(5,fichier_carte,(char*)"Fichier de carte de taille manquant");
379 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
380 if (app.get_erreur()==true) return 0;
381 char message[5000];
382 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
383 app.affiche(message);
384 std::sprintf(message,"Fichier CARTE d'entree : \033[38;5;46m%s\033[1;33m",fichier_carte);
385 app.affiche(message);
386 std::string str_fichier_ves_out = fichier_ves_out;
387 size_t found = str_fichier_ves_out.rfind((char*)".");
388 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
389 str_fichier_magic_out.append((char*)".magic");
390 OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
391 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
392 {
393 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
394 app.affiche(message);
395 delete param_maillage;
396 return 1;
397 }
398 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
399 app.affiche(message);
400 MSTRUCT_VES ves(fichier_ves_in);
401 ves.active_affichage(app.affiche);
402 FCT_TAILLE_FEM_SOLUTION *carte=new FCT_TAILLE_FEM_SOLUTION(fichier_carte);
403 if(ves.generer_maillage(param_maillage,carte)==FAIL)
404 {
405 std::sprintf(message,"ERREUR generation du maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
406 app.affiche(message);
407 delete param_maillage;
408 return 1;
409 }
410 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
411 delete param_maillage;
412 delete carte;
413 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
414 app.affiche(message);
415 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
416 app.affiche(message);
417 }
418
419 if(app.get_action()==25)
420 {
421 app.affiche((char*)"**************************************");
422 app.affiche((char*)"*** Generation du FEM maillage ***");
423 app.affiche((char*)"**************************************");
424 char fichier_ves_in[500];
425 char fichier_ves_out[500];
426 char fichier_param[500];
427 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
428 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
429 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
430 if (app.get_erreur()==true) return 0;
431 char message[5000];
432 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
433 app.affiche(message);
434 std::string str_fichier_ves_out = fichier_ves_out;
435 size_t found = str_fichier_ves_out.rfind((char*)".");
436 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
437 str_fichier_magic_out.append((char*)".magic");
438 OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
439 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
440 {
441 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
442 app.affiche(message);
443 delete param_maillage;
444 return 1;
445 }
446 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
447 app.affiche(message);
448 MSTRUCT_VES ves(fichier_ves_in);
449 ves.active_affichage(app.affiche);
450 if(ves.generer_fem_maillage(param_maillage)==FAIL)
451 {
452 std::sprintf(message,"ERREUR generation fem maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
453 app.affiche(message);
454 delete param_maillage;
455 return 1;
456 }
457 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
458 delete param_maillage;
459 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
460 app.affiche(message);
461 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
462 app.affiche(message);
463 }
464
465 if(app.get_action()==26)
466 {
467 app.affiche((char*)"*********************************");
468 app.affiche((char*)"*** Generation de l'etude ***");
469 app.affiche((char*)"*********************************");
470 char fichier_ves_in[500];
471 char fichier_ves_out[500];
472 char fichier_param[500];
473 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
474 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
475 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
476 if (app.get_erreur()==true) return 0;
477 char message[5000];
478 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
479 app.affiche(message);
480 std::string str_fichier_ves_out = fichier_ves_out;
481 size_t found = str_fichier_ves_out.rfind((char*)".");
482 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
483 str_fichier_magic_out.append((char*)".magic");
484 OT_PARAMETRES* param_etude = new OT_PARAMETRES;
485 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
486 {
487 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
488 app.affiche(message);
489 return 1;
490 }
491 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
492 app.affiche(message);
493 MSTRUCT_VES ves(fichier_ves_in);
494 ves.active_affichage(app.affiche);
495 ves.generer_etude(param_etude);
496 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
497 delete param_etude;
498 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
499 app.affiche(message);
500 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
501 app.affiche(message);
502 }
503
504 if(app.get_action()==27)
505 {
506 app.affiche((char*)"********************************");
507 app.affiche((char*)"*** Generation du Calcul ***");
508 app.affiche((char*)"********************************");
509 char fichier_ves_in[500];
510 char fichier_ves_out[500];
511 char fichier_param[500];
512 char fichier_param_aster[500];
513 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
514 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
515 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
516 app.recupere_parametre_string(9,fichier_param_aster,(char*)"Fichier de parametre aster manquant");
517 if (app.get_erreur()==true) return 0;
518 char message[5000];
519 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
520 app.affiche(message);
521 std::string str_fichier_ves_out = fichier_ves_out;
522 size_t found = str_fichier_ves_out.rfind((char*)".");
523 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
524 std::string nom_etude = "aster_" + str_fichier_magic_out;
525 str_fichier_magic_out.append((char*)".magic");
526 OT_PARAMETRES* param_etude = new OT_PARAMETRES;
527 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
528 {
529 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
530 app.affiche(message);
531 return 1;
532 }
533 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
534 app.affiche(message);
535 MSTRUCT_VES ves(fichier_ves_in);
536 ves.active_affichage(app.affiche);
537 ves.generer_calcul(param_etude,fichier_param_aster,nom_etude);
538 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
539 delete param_etude;
540 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
541 app.affiche(message);
542 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
543 app.affiche(message);
544 }
545
546 if(app.get_action()==28)
547 {
548 app.affiche((char*)"*******************************************************");
549 app.affiche((char*)"*** Generation du port-traitement des resultats ***");
550 app.affiche((char*)"*******************************************************");
551 char fichier_ves_in[500];
552 char fichier_ves_out[500];
553 char fichier_param[500];
554 char fichier_lstparam[500];
555 char fichier_ves_sph[500];
556 char fichier_ves_dev[500];
557 char fichier_ves_lambda_x[500];
558 char fichier_ves_lambda_y[500];
559 char fichier_ves_lambda_z[500];
560 app.recupere_parametre_string_avec_defaut(3,fichier_ves_in,(char*)"");
561 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
562 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
563 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
564 app.recupere_parametre_string_avec_defaut(16,fichier_ves_sph,(char*)"");
565 app.recupere_parametre_string_avec_defaut(17,fichier_ves_dev,(char*)"");
566 app.recupere_parametre_string_avec_defaut(35,fichier_ves_lambda_x,(char*)"");
567 app.recupere_parametre_string_avec_defaut(36,fichier_ves_lambda_y,(char*)"");
568 app.recupere_parametre_string_avec_defaut(37,fichier_ves_lambda_z,(char*)"");
569 if (app.get_erreur()==true) return 0;
570 char message[5000];
571 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
572 app.affiche(message);
573 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
574 {
575 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
576 return 0;
577 }
578 if((strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)==0) || (strlen(fichier_ves_sph)==0 && strlen(fichier_ves_dev)>0))
579 {
580 app.affiche_erreur((char*)"-ves_sph ET -ves_dev, OU rien");
581 return 0;
582 }
583 if(strlen(fichier_param)>0)
584 {
585 std::vector<OT_PARAMETRES*> vector_param_analyse;
586 OT_PARAMETRES* param_analyse = new OT_PARAMETRES;
587 char message[5000];
588 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_analyse)==FAIL)
589 {
590 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
591 app.affiche(message);
592 return 1;
593 }
594 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
595 app.affiche(message);
596 vector_param_analyse.push_back(param_analyse);
597 if(strlen(fichier_ves_lambda_x)>0 && strlen(fichier_ves_lambda_y)>0 && strlen(fichier_ves_lambda_z)>0)
598 {
599 MSTRUCT_VES_FILE ves_lambda_x;
600 ves_lambda_x.ouvrir(fichier_ves_lambda_x);
601 MSTRUCT_VES_FILE ves_lambda_y;
602 ves_lambda_y.ouvrir(fichier_ves_lambda_y);
603 MSTRUCT_VES_FILE ves_lambda_z;
604 ves_lambda_z.ouvrir(fichier_ves_lambda_z);
605 MSTRUCT_VES ves;
606 ves.active_affichage(app.affiche);
607 ves.generer_post_traitement(vector_param_analyse,&ves_lambda_x,&ves_lambda_y,&ves_lambda_z);
608 ves.enregistrer(fichier_ves_out);
609 }
610 else if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0)
611 {
612 MSTRUCT_VES_FILE ves_sph;
613 ves_sph.ouvrir(fichier_ves_sph);
614 MSTRUCT_VES_FILE ves_dev;
615 ves_dev.ouvrir(fichier_ves_dev);
616 MSTRUCT_VES ves;
617 ves.active_affichage(app.affiche);
618 ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
619 ves.enregistrer(fichier_ves_out);
620 }
621 else
622 {
623 MSTRUCT_VES ves(fichier_ves_in);
624 ves.active_affichage(app.affiche);
625 ves.generer_post_traitement(vector_param_analyse);
626 ves.enregistrer(fichier_ves_out);
627 }
628 delete param_analyse;
629 }
630 else if(strlen(fichier_lstparam)>0)
631 {
632 std::vector<OT_PARAMETRES*> vector_param_analyse;
633 char message[5000];
634 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_analyse)==FAIL)
635 {
636 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
637 app.affiche(message);
638 return 1;
639 }
640 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
641 app.affiche(message);
642 if(strlen(fichier_ves_lambda_x)>0 && strlen(fichier_ves_lambda_y)>0 && strlen(fichier_ves_lambda_z)>0)
643 {
644 MSTRUCT_VES_FILE ves_lambda_x;
645 ves_lambda_x.ouvrir(fichier_ves_lambda_x);
646 MSTRUCT_VES_FILE ves_lambda_y;
647 ves_lambda_y.ouvrir(fichier_ves_lambda_y);
648 MSTRUCT_VES_FILE ves_lambda_z;
649 ves_lambda_z.ouvrir(fichier_ves_lambda_z);
650 MSTRUCT_VES ves;
651 ves.active_affichage(app.affiche);
652 ves.generer_post_traitement(vector_param_analyse,&ves_lambda_x,&ves_lambda_y,&ves_lambda_z);
653 ves.enregistrer(fichier_ves_out);
654 }
655 else if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0)
656 {
657 MSTRUCT_VES_FILE ves_sph;
658 ves_sph.ouvrir(fichier_ves_sph);
659 MSTRUCT_VES_FILE ves_dev;
660 ves_dev.ouvrir(fichier_ves_dev);
661 MSTRUCT_VES ves;
662 ves.active_affichage(app.affiche);
663 ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
664 ves.enregistrer(fichier_ves_out);
665 }
666 else
667 {
668 MSTRUCT_VES ves(fichier_ves_in);
669 ves.active_affichage(app.affiche);
670 ves.generer_post_traitement(vector_param_analyse);
671 ves.enregistrer(fichier_ves_out);
672 }
673 std::vector<OT_PARAMETRES*>::iterator it_vector;
674 for(it_vector=vector_param_analyse.begin();it_vector!=vector_param_analyse.end();it_vector++)
675 {
676 delete *it_vector;
677 }
678 }
679 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
680 app.affiche(message);
681 }
682
683 if(app.get_action()==29)
684 {
685 app.affiche((char*)"**************************************");
686 app.affiche((char*)"*** Cumule des post-traitement ***");
687 app.affiche((char*)"**************************************");
688 char fichier_param[500];
689 char fichier_lstparam[500];
690 char fichier_lst_ves[500];
691 char dossier_resultat[500];
692 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
693 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
694 app.recupere_parametre_string(18,fichier_lst_ves,(char*)"Liste de VES");
695 app.recupere_parametre_string_avec_defaut(6,dossier_resultat,(char*)"");
696 if (app.get_erreur()==true) return 0;
697 char message[5000];
698 std::sprintf(message,"Liste de fichier VES : \033[38;5;46m%s\033[1;33m",fichier_lst_ves);
699 app.affiche(message);
700 std::sprintf(message,"Dossier de resultat : \033[38;5;46m%s\033[1;33m",dossier_resultat);
701 app.affiche(message);
702 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
703 {
704 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
705 return 0;
706 }
707 if(strlen(fichier_param)>0)
708 {
709 std::vector<OT_PARAMETRES*> vector_param;
710 OT_PARAMETRES* param = new OT_PARAMETRES;
711 char message[5000];
712 if(PARAMETRES::importer_fichier_parametres(fichier_param,param)==FAIL)
713 {
714 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
715 app.affiche(message);
716 return 1;
717 }
718 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
719 app.affiche(message);
720 vector_param.push_back(param);
721 MSTRUCT_VER ver;
722 ver.active_affichage(app.affiche);
723 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
724 delete param;
725 }
726 else if(strlen(fichier_lstparam)>0)
727 {
728 std::vector<OT_PARAMETRES*> vector_param;
729 char message[5000];
730 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param)==FAIL)
731 {
732 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
733 app.affiche(message);
734 return 1;
735 }
736 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
737 app.affiche(message);
738 MSTRUCT_VER ver;
739 ver.active_affichage(app.affiche);
740 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
741 std::vector<OT_PARAMETRES*>::iterator it_vector;
742 for(it_vector=vector_param.begin();it_vector!=vector_param.end();it_vector++)
743 {
744 delete *it_vector;
745 }
746 }
747 }
748
749 if(app.get_action()==30)
750 {
751 app.affiche((char*)"***************************");
752 app.affiche((char*)"*** AFFICHE CONTENU ***");
753 app.affiche((char*)"***************************");
754 char fichier_ves_in[500];
755 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
756 if (app.get_erreur()==true) return 0;
757 MSTRUCT_VES_FILE ves_file;
758 ves_file.ouvrir(fichier_ves_in);
759 ves_file.affiche_contenu(app.affiche);
760 }
761
762 if(app.get_action()==31)
763 {
764 #ifdef ALL_OCC
765 app.affiche((char*)"********************************************************************");
766 app.affiche((char*)"*** Exportation de la triangulation STL de la microstructure ***");
767 app.affiche((char*)"********************************************************************");
768 char fichier_ves_in[500];
769 char fichier_magic_out[500];
770 double eps;
771 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
772 app.recupere_parametre_string(2,fichier_magic_out,(char*)"Fichier MAGIC de sortie manquant");
773 app.recupere_parametre_double_avec_defaut(19,eps,0.001);
774 if (app.get_erreur()==true) return 0;
775 MSTRUCT_VES ves(fichier_ves_in);
776 MG_GESTIONNAIRE* gest = ves.get_mg_gestionnaire();
777 MG_GEOMETRIE* mggeo = ves.get_mg_geometrie();
778 OCC_IMPORT occ_import;
779 MG_MAILLAGE* tristl = occ_import.importer_triangulation_V2017(*gest,mggeo,eps);
780 gest->enregistrer(fichier_magic_out);
781 #endif
782 }
783
784 if(app.get_action()==32)
785 {
786 app.affiche((char*)"***********************************************");
787 app.affiche((char*)"*** EXPORT DU MAILLAGE AU FORMAT ABAQUS ***");
788 app.affiche((char*)"***********************************************");
789 char fichier_ves_in[500];
790 char dossier[500];
791 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
792 app.recupere_parametre_string(6,dossier,(char*)"Dossier de resultats");
793 if (app.get_erreur()==true) return 0;
794 MSTRUCT_VES ves(fichier_ves_in);
795 ves.exporter_maillage_abaqus(dossier);
796 }
797
798 if(app.get_action()==34)
799 {
800 app.affiche((char*)"***********************************************");
801 app.affiche((char*)"*** GENERATION D'UN POLYCRISTAL ***");
802 app.affiche((char*)"***********************************************");
803 char fichier_magic[1000];
804 char fichier_param[1000];
805 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
806 bool creeparam;
807 app.recupere_parametre_bool_avec_defaut(33,creeparam,false);
808 if (app.get_erreur()==true) return 0;
809 if (creeparam)
810 {
811 MSTRUCT_GENERATEUR_POLYCRISTAUX gen;
812 gen.active_affichage(app.affiche);
813 gen.cree_param(fichier_param);
814 }
815 else
816 {
817 app.recupere_parametre_string(2,fichier_magic,(char*)"Fichier de sortie manquant");
818 if (app.get_erreur()==true) return 0;
819 MSTRUCT_GENERATEUR_POLYCRISTAUX gen(fichier_param);
820 gen.active_affichage(app.affiche);
821 gen.genere(fichier_magic);
822 }
823 }
824
825
826 if(app.get_action()==38)
827 {
828 app.affiche((char*)"**********************************");
829 app.affiche((char*)"*** COMPRESSER HISTOGRAMME ***");
830 app.affiche((char*)"**********************************");
831 char fichier_in[1000];
832 char fichier_out[1000];
833 double largeur;
834 app.recupere_parametre_string(1,fichier_in,(char*)"Fichier (.txt) in manquant");
835 app.recupere_parametre_string(2,fichier_out,(char*)"Fichier (.txt) out manquant");
836 app.recupere_parametre_double(39,largeur,(char*)"Largeur de colonne manquante");
837 if (app.get_erreur()==true) return 0;
838 std::ifstream ifs;
839 OT_HISTOGRAMME histo_in;
840 char message[5000];
841 std::sprintf(message,"Lecture du fichier in : \033[38;5;46m%s\033[1;33m",fichier_in);
842 app.affiche(message);
843 histo_in.ouvrir_txt(fichier_in);
844 std::sprintf(message,"Histogramme in : largeur colonne = %lf, %li colonnes",histo_in.get_largeur_colonne(),histo_in.get_nb_colonne());
845 app.affiche(message);
846 OT_HISTOGRAMME histo_out(largeur,histo_in);
847 std::sprintf(message,"Histogramme out : largeur colonne = %lf, %li colonnes",histo_out.get_largeur_colonne(),histo_out.get_nb_colonne());
848 app.affiche(message);
849 std::sprintf(message,"Ecriture du fichier out : \033[38;5;46m%s\033[1;33m",fichier_out);
850 app.affiche(message);
851 std::ofstream of_histo(fichier_out,std::ios::out|std::ios::trunc);
852 histo_out.exporter(of_histo);
853 }
854
855
856 app.affiche((char*)"Fin");
857 return 0;
858 }
859
860
861
862 #pragma package(smart_init)