ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/mailleur/src/main.cpp
Revision: 980
Committed: Fri Oct 19 00:13:38 2018 UTC (6 years, 8 months ago) by francois
File size: 20363 byte(s)
Log Message:
main de polycristaux dans microstructure avait disparu :)

File Contents

# User Rev Content
1 francois 283 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuilli�e et Vincent FRANCOIS
5     // D�artement de G�ie M�anique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du d�artement
8     // de g�ie m�anique de l'Universit�du Qu�ec �
9     // Trois Rivi�es
10     // Les librairies ne peuvent �re utilis�s 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     #include "gestionversion.h"
24     #ifdef WINDOWS_VERSION
25     #include "fenetre.h"
26     #endif
27    
28     #pragma hdrstop
29    
30 francois 432 #include "magic_application.h"
31 francois 283 #include <string.h>
32     #include "mg_file.h"
33     #include "fct_taille.h"
34     #include "mailleur0d.h"
35     #include "mailleur1d.h"
36     #include "mailleur2d.h"
37     #include "mailleur3d.h"
38 francois 558 #include "mailleur3d_maillage_partiel.h"
39 francois 283 #include "mailleur_adaptatif.h"
40 francois 481 #include "fct_generateur_3d.h"
41 francois 467 #include "fct_taille_fem_solution.h"
42 francois 283 #include "mg_export.h"
43     #include "step_import.h"
44     #include "acis_import.h"
45    
46     //---------------------------------------------------------------------------
47    
48 francois 432 int main(int argc,char **argv)
49 francois 283 {
50 francois 432 std::vector<MAGIC_PARAMETRE_APPLICATION> lst;
51     MAGIC_PARAMETRE_APPLICATION p1(3,(char*)"-carte",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de carte de taille");
52 francois 447 MAGIC_PARAMETRE_APPLICATION p2(4,(char*)"-niveauopt3d",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Limite supérieure des mailles à optimiser - Défaut 2");
53 francois 432 MAGIC_PARAMETRE_APPLICATION p3(5,(char*)"-niveau",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Dimension limite des entités à mailler - Défaut 3");
54     MAGIC_PARAMETRE_APPLICATION p5(6,(char*)"-front",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Maillage d'une géométrie par la méthode frontale - Defaut");
55     MAGIC_PARAMETRE_APPLICATION p6(7,(char*)"-adapt",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Maillage adaptatif d'une géométrie maillée");
56     MAGIC_PARAMETRE_APPLICATION p4(8,(char*)"-prioritemetrique",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Valeur de la prise en compte de la métrique versus la qualité - Défaut 0.65");
57     MAGIC_PARAMETRE_APPLICATION p7(9,(char*)"-numgeo",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Numero de géometrie à mailler - Défaut la première");
58     MAGIC_PARAMETRE_APPLICATION p8(10,(char*)"-groupe",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Groupe topologique à mailler - Défaut pas de groupe");
59     MAGIC_PARAMETRE_APPLICATION p9(11,(char*)"-analyse",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Analyse de la qualité du maillage après le maillage");
60     MAGIC_PARAMETRE_APPLICATION p10(12,(char*)"-visufront",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Activation de la visalisation dynamique du front");
61     MAGIC_PARAMETRE_APPLICATION p11(13,(char*)"-nummai",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Numéro du maillage à adapter - Défaut le premier");
62     MAGIC_PARAMETRE_APPLICATION p12(14,(char*)"-limitadapt",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Limite inférieure en %d'erreur pour conserver les mailles");
63 francois 447 MAGIC_PARAMETRE_APPLICATION p13(15,(char*)"-niveauopt2d",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Limite supérieure des mailles à optimiser - Défaut 5");
64 francois 467 MAGIC_PARAMETRE_APPLICATION p14(16,(char*)"-front2",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Maillage d'une géométrie par la méthode frontale avec une carte de taille sous forme de fichier magic");
65     MAGIC_PARAMETRE_APPLICATION p15(17,(char*)"-adapt2",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Maillage adaptatif d'une géométrie maillée avec une carte de taille sous forme de fichier magic");
66 francois 494 MAGIC_PARAMETRE_APPLICATION p16(18,(char*)"-enregistrer",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Enregistrement de la dernière étape (pour debbugage) - Defaut false");
67 francois 532 MAGIC_PARAMETRE_APPLICATION p17(19,(char*)"-pas",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Valeur du pas d'integration - Defaut 32");
68 francois 558 MAGIC_PARAMETRE_APPLICATION p18(20,(char*)"-refront",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Réparation d'un maillage 3D échoué d'une géométrie par la méthode frontale");
69     MAGIC_PARAMETRE_APPLICATION p19(21,(char*)"-refront2",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Réparation d'un maillage 3D échoué d'une géométrie par la méthode frontale avec une carte de taille sous forme de fichier magic");
70     MAGIC_PARAMETRE_APPLICATION p20(22,(char*)"-numvol",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Numero de volume à terminer de mailler - Défaut le premier");
71 francois 283
72    
73    
74 francois 432 //MAGIC_PARAMETRE_APPLICATION p7(8,(char*)"-tailleoctree",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Taille des octants par rapport à la taille souhaitée - Défaut 2.");
75     //MAGIC_PARAMETRE_APPLICATION p8(9,(char*)"-fem",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Création du maillage fem");
76     //MAGIC_PARAMETRE_APPLICATION p9(10,(char*)"-degre",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Degre du maillage fem - Défaut 1");
77 francois 532 p5.ajouter_dependance(1);p5.ajouter_dependance(2);p5.ajouter_dependance(3);p5.ajouter_dependance(4);p5.ajouter_dependance(5);p5.ajouter_dependance(8);p5.ajouter_dependance(9);p5.ajouter_dependance(10);p5.ajouter_dependance(11);p5.ajouter_dependance(12);p5.ajouter_dependance(15);p5.ajouter_dependance(18);p5.ajouter_dependance(19);
78     p6.ajouter_dependance(1);p6.ajouter_dependance(2);p6.ajouter_dependance(3);p6.ajouter_dependance(11);p6.ajouter_dependance(12);p6.ajouter_dependance(13);p6.ajouter_dependance(14);p6.ajouter_dependance(18);
79     p14.ajouter_dependance(1);p14.ajouter_dependance(2);p14.ajouter_dependance(3);p14.ajouter_dependance(4);p14.ajouter_dependance(5);p14.ajouter_dependance(8);p14.ajouter_dependance(9);p14.ajouter_dependance(10);p14.ajouter_dependance(11);p14.ajouter_dependance(12);p14.ajouter_dependance(15);p14.ajouter_dependance(18);p14.ajouter_dependance(18);
80     p15.ajouter_dependance(1);p15.ajouter_dependance(2);p15.ajouter_dependance(3);p15.ajouter_dependance(11);p15.ajouter_dependance(12);p15.ajouter_dependance(13);p15.ajouter_dependance(14);p15.ajouter_dependance(18);
81 francois 558 p18.ajouter_dependance(1);p18.ajouter_dependance(2);p18.ajouter_dependance(3);p18.ajouter_dependance(22);p18.ajouter_dependance(13);p18.ajouter_dependance(4);p18.ajouter_dependance(8);p18.ajouter_dependance(18);p18.ajouter_dependance(19);
82     p19.ajouter_dependance(1);p19.ajouter_dependance(2);p19.ajouter_dependance(3);p19.ajouter_dependance(22);p19.ajouter_dependance(13);p19.ajouter_dependance(4);p19.ajouter_dependance(8);p19.ajouter_dependance(18);p19.ajouter_dependance(19);
83 francois 432 lst.push_back(p1);
84     lst.push_back(p2);
85     lst.push_back(p3);
86     lst.push_back(p5);
87     lst.push_back(p6);
88     lst.push_back(p4);
89     lst.push_back(p7);
90     lst.push_back(p8);
91     lst.push_back(p9);
92     lst.push_back(p10);
93     lst.push_back(p11);
94     lst.push_back(p12);
95 francois 447 lst.push_back(p13);
96 francois 467 lst.push_back(p14);
97     lst.push_back(p15);
98 francois 494 lst.push_back(p16);
99 francois 532 lst.push_back(p17);
100 francois 558 lst.push_back(p18);
101     lst.push_back(p19);
102     lst.push_back(p20);
103 francois 432
104     MAGIC_APPLICATION app((char*)"Mailleur d'une géometrie par la méthode frontale",argc,argv,lst,true,true);
105     if (app.get_erreur()==true) return 0;
106    
107     if (app.get_action()==-1) app.change_action(6);
108    
109 francois 467 if ((app.get_action()==6) || (app.get_action()==16))
110 francois 432 {
111     char fichier[500];
112     char fichiersortie[500];
113 francois 494 char fichiersortie2[500];
114 francois 432 char fichiercarte[500];
115     int numgeometrie;
116     double prioritemetrique;
117     int numgroupe;
118     int niveau;
119     bool analyse;
120     bool visufront;
121 francois 447 int niveauopt3d;
122     int niveauopt2d;
123 francois 467 int numsol,numchamp;
124 francois 494 bool save;
125 francois 532 int pas;
126 francois 432 app.recupere_parametre_string(1,fichier,(char*)"Fichier d'entrée manquant");
127     app.recupere_parametre_string_avec_defaut(2,fichiersortie,fichier);
128     app.recupere_parametre_string(3,fichiercarte,(char*)"Fichier carte manquant");
129     app.recupere_parametre_double_avec_defaut(8,prioritemetrique,0.65);
130     app.recupere_parametre_int_avec_defaut(9,numgeometrie,0);
131     app.recupere_parametre_int_avec_defaut(10,numgroupe,0);
132     app.recupere_parametre_int_avec_defaut(5,niveau,3);
133     app.recupere_parametre_bool_avec_defaut(11,analyse,false);
134     app.recupere_parametre_bool_avec_defaut(12,visufront,false);
135 francois 447 app.recupere_parametre_int_avec_defaut(4,niveauopt3d,2);
136     app.recupere_parametre_int_avec_defaut(15,niveauopt2d,5);
137 francois 526 app.recupere_parametre_bool_avec_defaut(18,save,false);
138 francois 532 app.recupere_parametre_int_avec_defaut(19,pas,32);
139 francois 432 if (app.get_erreur()==true) return 0;
140     char message[500];
141 francois 494 strcpy(fichiersortie2,fichiersortie);
142     strcat(fichiersortie2,"dbg");
143 francois 432 app.affiche((char*)"Parametre d'etude du mailleur");
144     sprintf(message," Fichier magic : %s",fichier);
145     app.affiche(message);
146     sprintf(message," Numero de geometrie : %d",numgeometrie);
147     sprintf(message," Fichier carte : %s",fichiercarte);
148     app.affiche(message);
149     sprintf(message," Parametre de metrique : %2.2f",prioritemetrique*100);
150     app.affiche(message);
151     app.affiche((char*)"Lecture du fichier M.A.G.i.C");
152     MG_FILE gest(fichier);
153     MG_GEOMETRIE* mggeo;
154     if (numgeometrie==0) mggeo=gest.get_mg_geometrie(numgeometrie); else mggeo=gest.get_mg_geometrieid(numgeometrie);
155     MG_MAILLAGE* mgmai=new MG_MAILLAGE(mggeo);
156     gest.ajouter_mg_maillage(mgmai);
157 francois 467 app.affiche((char*)"Lecture carte de taille");
158 francois 432 FCT_TAILLE* metrique;
159 francois 467 if (app.get_action()==6)
160     {
161     FCT_GENERATEUR_3D<4> *carte=new FCT_GENERATEUR_3D<4>;
162     carte->lire(fichiercarte);
163     metrique=carte;
164     }
165     if (app.get_action()==16)
166     {
167     FCT_TAILLE_FEM_SOLUTION *carte=new FCT_TAILLE_FEM_SOLUTION(fichiercarte);
168     metrique=carte;
169     }
170 francois 432 MG_GROUPE_TOPOLOGIQUE* mggt=NULL;
171     if (numgroupe!=0)
172     mggt=mggeo->get_mg_groupe_topologiqueid(numgroupe);
173     if (niveau>-1)
174 francois 283 {
175 francois 432 app.affiche((char*)"MAILLAGE 0D");
176     MAILLEUR0D m0d(mgmai,mggeo);
177     m0d.maille(mggt);
178 francois 494 if (save==true) gest.enregistrer(fichiersortie2);
179 francois 283 }
180 francois 432 TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> lst;
181     if (mggt!=NULL)
182     {
183 couturad 906 std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
184     for(MG_ELEMENT_TOPOLOGIQUE* ele=mggt->get_premier(it);ele!=NULL;ele=mggt->get_suivant(it))
185     {
186     lst.ajouter(ele);
187     ele->get_topologie_sousjacente(&lst);
188     }
189 francois 432 }
190     if (niveau>0)
191     {
192     app.affiche((char*)"MAILLAGE 1D");
193     int nb=mggeo->get_nb_mg_arete();
194     for (int i=0;i<nb;i++)
195     {
196     MG_ARETE* arete=mggeo->get_mg_arete(i);
197     if (mggt!=NULL)
198     if (lst.existe(arete)==0) continue;
199     char mess[100];
200 francois 980 if (i!=0) sprintf(mess,"\033[1A\033[K arete %d d'identificateur %lu",i,arete->get_id());
201     else sprintf(mess," arete %d d'identificateur %lu",i,arete->get_id());
202 francois 432 app.affiche(mess);
203 francois 446 MAILLEUR1D m1d(mgmai,mggeo,metrique,arete);
204 francois 532 m1d.change_pas_integration(pas);
205 francois 432 m1d.maille(mggt);
206 francois 494 if (save==true) gest.enregistrer(fichiersortie2);
207 francois 432 }
208     }
209     if (niveau>1)
210     {
211     app.affiche((char*)"MAILLAGE 2D");
212     int nb=mggeo->get_nb_mg_face();
213     for (int i=0;i<nb;i++)
214     {
215     MG_FACE* mgface=mggeo->get_mg_face(i);
216     if (mggt!=NULL)
217     if (lst.existe(mgface)==0) continue;
218     char mess[100];
219 francois 980 if (i!=0) sprintf(mess,"\033[2A\033[K face %d d'identificateur %lu",i,mgface->get_id());
220     else sprintf(mess," face %d d'identificateur %lu",i,mgface->get_id());
221 francois 432 app.affiche(mess);
222 francois 446 MAILLEUR2D m2d(mgmai,mggeo,metrique,mgface);
223 francois 532 m2d.change_pas_integration(pas);
224 francois 447 m2d.change_niveau_optimisation(niveauopt2d);
225 francois 558 m2d.change_priorite_metrique(prioritemetrique);
226 francois 696 m2d.active_affichage(app.affiche);
227     m2d.maille(mggt);
228 francois 494 if (save==true) gest.enregistrer(fichiersortie2);
229 francois 432 }
230     }
231     if (niveau==3)
232     {
233     app.affiche((char*)"MAILLAGE 3D");
234     int nb=mggeo->get_nb_mg_volume();
235     for (int i=0;i<nb;i++)
236     {
237     MG_VOLUME* mgvol=mggeo->get_mg_volume(i);
238     if (mggt!=NULL)
239     if (lst.existe(mgvol)==0) continue;
240 francois 532 MAILLEUR3D m3d(mgmai,mggeo,metrique,save,mgvol);
241 francois 432 m3d.active_affichage(app.affiche);
242 francois 447 m3d.change_niveau_optimisation(niveauopt3d);
243 francois 558 m3d.change_priorite_metrique(prioritemetrique);
244 francois 432 if (visufront) m3d.active_log(fichiersortie);
245 francois 494 if (save==true) m3d.change_nom_fichierdbg(fichiersortie2);
246 francois 532 m3d.change_pas_integration(pas);
247 francois 494 m3d.maille(mgvol);
248     if (save==true) gest.enregistrer(fichiersortie2);
249 francois 432 if (analyse)
250     {
251     app.affiche((char*)"Analyse maillage");
252     double vol;int tab[4];
253     m3d.analyse_maillage_obtenu(vol,tab);
254     char mess[100];
255     sprintf(mess," 1) Respect de la carte de taille");
256     app.affiche(mess);
257     sprintf(mess," nombre de tetra theorique %f, nombre de tetra pratique %d ",vol,mgmai->get_nb_mg_tetra());
258     app.affiche(mess);
259     sprintf(mess," erreur : %.2f%%",(mgmai->get_nb_mg_tetra()-vol)*100./vol);
260     app.affiche(mess);
261     sprintf(mess," 2) Qualite du maillage");
262     app.affiche(mess);
263     sprintf(mess," nombre de tetra bon (qualite>0.5) : %d (%.2f%%)",tab[3],tab[3]*100./mgmai->get_nb_mg_tetra());
264     app.affiche(mess);
265     sprintf(mess," nombre de tetra acceptable (qualite>0.2) : %d (%.2f%%) ",tab[2],tab[2]*100./mgmai->get_nb_mg_tetra());
266     app.affiche(mess);
267     sprintf(mess," nombre de tetra moyen (qualite>0.1) : %d (%.2f%%) ",tab[1],tab[1]*100./mgmai->get_nb_mg_tetra());
268     app.affiche(mess);
269     sprintf(mess," nombre de tetra mauvais (qualite>0.) : %d (%.2f%%) ",tab[0],tab[0]*100./mgmai->get_nb_mg_tetra());
270     app.affiche(mess);
271     }
272     }
273     }
274     app.affiche((char*)"Enregistrement");
275 francois 449 gest.enregistrer(fichiersortie);
276 francois 925 delete metrique;
277 francois 603 //app.affiche((char*)"Fin");
278 francois 432
279     }
280    
281 francois 467 if ((app.get_action()==7)||(app.get_action()==17))
282 francois 432 {
283     char fichier[500];
284     char fichiersortie[500];
285     char fichiercarte[500];
286     int nummaillage;
287     double prioritemetrique;
288     bool analyse;
289     bool visufront;
290     double limiteadapt;
291 francois 467 int numsol,numchamp;
292 francois 532 int pas;
293 francois 432 app.recupere_parametre_string(1,fichier,(char*)"Fichier d'entrée manquant");
294     app.recupere_parametre_string_avec_defaut(2,fichiersortie,fichier);
295     app.recupere_parametre_string(3,fichiercarte,(char*)"Fichier carte manquant");
296     app.recupere_parametre_double_avec_defaut(8,prioritemetrique,0.65);
297     app.recupere_parametre_int_avec_defaut(13,nummaillage,0);
298     app.recupere_parametre_bool_avec_defaut(11,analyse,false);
299     app.recupere_parametre_bool_avec_defaut(12,visufront,false);
300 francois 532 app.recupere_parametre_double(14,limiteadapt,(char*)"Valeur limite d'adaptation manquante");
301     app.recupere_parametre_int_avec_defaut(19,pas,32);
302 francois 467 if (app.get_action()==17)
303     {
304     app.recupere_parametre_int_avec_defaut(18,numsol,0);
305     app.recupere_parametre_int_avec_defaut(19,numchamp,0);
306     }
307 francois 432 if (app.get_erreur()==true) return 0;
308     char message[500];
309     app.affiche((char*)"Adaptation de maillage");
310     sprintf(message," Fichier magic : %s",fichier);
311     app.affiche(message);
312     printf(message," Numero de maillage : %d",nummaillage);
313     app.affiche(message);
314     sprintf(message," Carte : %s",fichiercarte);
315     app.affiche(message);
316     MG_FILE gest(fichier);
317     MG_MAILLAGE* mai;
318     if (nummaillage==0) mai=gest.get_mg_maillage(nummaillage); else mai=gest.get_mg_maillageid(nummaillage);
319     FCT_TAILLE* metrique;
320 francois 467 if (app.get_action()==7)
321     {
322     FCT_GENERATEUR_3D<4> *carte=new FCT_GENERATEUR_3D<4>;
323     carte->lire(fichiercarte);
324     metrique=carte;
325     }
326     MG_FILE *gestcarte;
327     if (app.get_action()==17)
328     {
329     FCT_TAILLE_FEM_SOLUTION *carte=new FCT_TAILLE_FEM_SOLUTION(fichiercarte);
330     metrique=carte;
331     }
332 francois 432 MG_MAILLAGE* nvmai=new MG_MAILLAGE(mai->get_mg_geometrie());
333     gest.ajouter_mg_maillage(nvmai);
334     MAILLEUR_ADAPTATIF mesh(mai,nvmai,metrique,limiteadapt);
335 francois 532 mesh.change_pas_integration(pas);
336 francois 432 mesh.active_affichage(app.affiche);
337     if (visufront) mesh.active_log(fichier);
338     mesh.maille();
339     if (analyse)
340     {
341 francois 494 MAILLEUR3D m3d(nvmai,nvmai->get_mg_geometrie(),metrique,false);
342 francois 432 app.affiche((char*)"Analyse maillage");
343     double vol;int tab[4];
344     m3d.analyse_maillage_obtenu(vol,tab);
345     char mess[100];
346     sprintf(mess," 1) Respect de la carte de taille");
347     app.affiche(mess);
348     sprintf(mess," nombre de tetra theorique %f, nombre de tetra pratique %d ",vol,nvmai->get_nb_mg_tetra());
349     app.affiche(mess);
350     sprintf(mess," erreur : %.2f%%",(nvmai->get_nb_mg_tetra()-vol)*100./vol);
351     app.affiche(mess);
352     sprintf(mess," 2) Qualite du maillage");
353     app.affiche(mess);
354     sprintf(mess," nombre de tetra bon (qualite>0.5) : %d (%.2f%%)",tab[3],tab[3]*100./nvmai->get_nb_mg_tetra());
355     app.affiche(mess);
356     sprintf(mess," nombre de tetra acceptable (qualite>0.2) : %d (%.2f%%) ",tab[2],tab[2]*100./nvmai->get_nb_mg_tetra());
357     app.affiche(mess);
358     sprintf(mess," nombre de tetra moyen (qualite>0.1) : %d (%.2f%%) ",tab[1],tab[1]*100./nvmai->get_nb_mg_tetra());
359     app.affiche(mess);
360     sprintf(mess," nombre de tetra mauvais (qualite>0.) : %d (%.2f%%) ",tab[0],tab[0]*100./nvmai->get_nb_mg_tetra());
361     app.affiche(mess);
362     }
363     app.affiche((char*)"Enregistrement");
364     gest.enregistrer(fichiersortie);
365 francois 467 if (app.get_action()==7)
366     delete metrique;
367     if (app.get_action()==17)
368     {
369     delete metrique;
370     delete gestcarte;
371     }
372 francois 603 //app.affiche((char*)"Fin");
373 francois 432 }
374    
375 francois 558 if ((app.get_action()==20) || (app.get_action()==21))
376     {
377     app.affiche((char*)"\nRecuperation d'un maillage non terminé\n\n");
378     char fichier[500];
379     char fichiersortie[500];
380     char fichiersortie2[500];
381     char fichiercarte[500];
382     int numvol;
383     double prioritemetrique;
384     int niveauopt3d;
385     bool save;
386     int pas;
387     int nummai;
388     app.recupere_parametre_string(1,fichier,(char*)"Fichier d'entrée manquant");
389     app.recupere_parametre_string_avec_defaut(2,fichiersortie,fichier);
390     app.recupere_parametre_string(3,fichiercarte,(char*)"Fichier carte manquant");
391     app.recupere_parametre_double_avec_defaut(8,prioritemetrique,0.65);
392     app.recupere_parametre_int_avec_defaut(22,numvol,0);
393     app.recupere_parametre_int_avec_defaut(13,nummai,0);
394     app.recupere_parametre_int_avec_defaut(4,niveauopt3d,2);
395     app.recupere_parametre_bool_avec_defaut(18,save,false);
396     app.recupere_parametre_int_avec_defaut(19,pas,32);
397     if (app.get_erreur()==true) return 0;
398     strcpy(fichiersortie2,fichiersortie);
399     strcat(fichiersortie2,"dbg");
400     char message[500];
401     if (app.get_action()==20)
402     {
403     MAILLEUR3D_MAILLAGE_PARTIEL m3d(fichier,fichiersortie,fichiercarte,MAGIC::VERSION_CARTE_TAILLE::ANCIENNE,nummai,numvol,save);
404     m3d.active_affichage(app.affiche);
405     m3d.change_niveau_optimisation(niveauopt3d);
406     m3d.change_pas_integration(pas);
407     m3d.change_priorite_metrique(prioritemetrique);
408     if (save==true) m3d.change_nom_fichierdbg(fichiersortie2);
409     m3d.maille();
410     }
411     if (app.get_action()==21)
412     {
413     MAILLEUR3D_MAILLAGE_PARTIEL m3d(fichier,fichiersortie,fichiercarte,MAGIC::VERSION_CARTE_TAILLE::NOUVELLE,nummai,numvol,save);
414     m3d.active_affichage(app.affiche);
415     m3d.change_niveau_optimisation(niveauopt3d);
416     m3d.change_pas_integration(pas);
417     m3d.change_priorite_metrique(prioritemetrique);
418     if (save==true) m3d.change_nom_fichierdbg(fichiersortie2);
419     m3d.maille();
420     }
421     }
422     app.affiche((char*)"Fin");
423 francois 283 return 0;
424     }
425    
426    
427    
428     #pragma package(smart_init)