ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/mgoperation/src/visumagic.cpp
Revision: 654
Committed: Thu Feb 19 22:35:03 2015 UTC (10 years, 3 months ago) by francois
File size: 17167 byte(s)
Log Message:
ajout d'un code de couleur pour les CCF dans visumagic + fichier de configuration des couleurs de visumagic + suppression de nom avec accent dans l'arboresence,
Pour le fichier de couleurs copier visumagic,vtkdisplay en .vtkdisplay dans le home directories et changer les valeurs de couleurs au besoin

File Contents

# User Rev Content
1 francois 353 //------------------------------------------------------------
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     #include <iostream>
30 francois 618 #include "ndisplay.h"
31 francois 353 #include "nutil.h"
32     #include "mg_file.h"
33 francois 356 #include "occ_import.h"
34 francois 353 #include <map>
35     //---------------------------------------------------------------------------
36    
37     void affiche(char* message)
38     {
39     #ifdef WINDOWS_VERSION
40     Form1->Memo1->Lines->Add(message);
41     #else
42     std::cout << message << std::endl;
43     #endif
44     }
45    
46    
47    
48    
49 francois 654 void affiche_structure(color cface,color carete,color ctext,color cdeplacement,color cforce,color cpression,color ctemperature, color cflux,MG_GEOMETRIE* geo,MG_MAILLAGE* mai,data_container &data,bool idori)
50 francois 353 {
51     properties ptr=data.getproptriangles();
52     ptr.c=cface;
53     ptr.edgeon=false;
54     data.setproptriangles(ptr);
55 francois 576 ptr=data.getpropquads();
56     ptr.c=cface;
57     ptr.edgeon=false;
58     data.setpropquads(ptr);
59    
60 francois 353 LISTE_MG_FACE::iterator itf;
61     for (MG_FACE* face=geo->get_premier_face(itf);face!=NULL;face=geo->get_suivant_face(itf))
62     {
63     double xg=0.,yg=0.,zg=0.,deno=0.;
64     int nbtri=face->get_lien_maillage()->get_nb();
65     for (int i=0;i<nbtri;i++)
66     {
67 francois 576 MG_ELEMENT_MAILLAGE* ele=face->get_lien_maillage()->get(i);
68 francois 654 color c=cface;
69     int nbccf=ele->get_lien_topologie()->get_nb_ccf();
70     for (int i=0;i<nbccf;i++)
71     {
72     char typ[2];
73     ele->get_lien_topologie()->get_type_ccf(i,typ);
74     if (typ[0]=='D') c=cdeplacement;
75     if (typ[0]=='R') c=cdeplacement;
76     if (typ[0]=='F') c=cforce;
77     if (typ[0]=='P') c=cpression;
78     if (typ[0]=='T') c=ctemperature;
79     if (typ[0]=='f') c=cflux;
80     }
81 francois 576 if (ele->get_type_entite()==IDMG_TRIANGLE)
82     {
83 francois 654 properties ptr=data.getproptriangles();
84     ptr.c=c;
85     data.setproptriangles(ptr);
86     MG_TRIANGLE* tri=(MG_TRIANGLE*)ele;
87 francois 576 if (mai->get_mg_triangleid(tri->get_id())!=tri) continue;
88     double *xyz1=tri->get_noeud1()->get_coord();
89     double *xyz2=tri->get_noeud2()->get_coord();
90     double *xyz3=tri->get_noeud3()->get_coord();
91     npoint p1(xyz1[0],xyz1[1],xyz1[2]);
92     npoint p2(xyz2[0],xyz2[1],xyz2[2]);
93     npoint p3(xyz3[0],xyz3[1],xyz3[2]);
94     triangle tr;
95     tr.pts[0]=p1;
96     tr.pts[1]=p2;
97     tr.pts[2]=p3;
98     data.add_triangle(tr);
99     OT_VECTEUR_3D vec1(xyz1,xyz2);
100     OT_VECTEUR_3D vec2(xyz1,xyz3);
101     OT_VECTEUR_3D sur=vec1&vec2;
102     xg=xg+0.3333333333*(xyz1[0]+xyz2[0]+xyz3[0])*sur.get_longueur();
103     yg=yg+0.3333333333*(xyz1[1]+xyz2[1]+xyz3[1])*sur.get_longueur();
104     zg=zg+0.3333333333*(xyz1[2]+xyz2[2]+xyz3[2])*sur.get_longueur();
105     deno=deno+sur.get_longueur();
106     }
107     if (ele->get_type_entite()==IDMG_QUADRANGLE)
108     {
109 francois 654 ptr=data.getpropquads();
110     ptr.c=c;
111     data.setpropquads(ptr);
112     MG_QUADRANGLE* qua=(MG_QUADRANGLE*)ele;
113 francois 576 if (mai->get_mg_quadrangleid(qua->get_id())!=qua) continue;
114     double *xyz1=qua->get_noeud1()->get_coord();
115     double *xyz2=qua->get_noeud2()->get_coord();
116     double *xyz3=qua->get_noeud3()->get_coord();
117     double *xyz4=qua->get_noeud4()->get_coord();
118     npoint p1(xyz1[0],xyz1[1],xyz1[2]);
119     npoint p2(xyz2[0],xyz2[1],xyz2[2]);
120     npoint p3(xyz3[0],xyz3[1],xyz3[2]);
121     npoint p4(xyz4[0],xyz4[1],xyz4[2]);
122     quad qd;
123     qd.pts[0]=p1;
124     qd.pts[1]=p2;
125     qd.pts[2]=p3;
126     qd.pts[3]=p4;
127     data.add_quad(qd);
128     OT_VECTEUR_3D vec1(xyz1,xyz2);
129     OT_VECTEUR_3D vec2(xyz1,xyz3);
130     OT_VECTEUR_3D vec3(xyz1,xyz4);
131     OT_VECTEUR_3D sur=vec1&vec2;
132     OT_VECTEUR_3D sur2=vec2&vec3;
133     xg=xg+0.3333333333*(xyz1[0]+xyz2[0]+xyz3[0])*sur.get_longueur();
134     yg=yg+0.3333333333*(xyz1[1]+xyz2[1]+xyz3[1])*sur.get_longueur();
135     zg=zg+0.3333333333*(xyz1[2]+xyz2[2]+xyz3[2])*sur.get_longueur();
136     xg=xg+0.3333333333*(xyz1[0]+xyz4[0]+xyz3[0])*sur2.get_longueur();
137     yg=yg+0.3333333333*(xyz1[1]+xyz4[1]+xyz3[1])*sur2.get_longueur();
138     zg=zg+0.3333333333*(xyz1[2]+xyz4[2]+xyz3[2])*sur2.get_longueur();
139     deno=deno+sur.get_longueur()+sur2.get_longueur();
140     }
141 francois 353 }
142     xg=xg/deno;
143     yg=yg/deno;
144     zg=zg/deno;
145 francois 576 std::map<double,MG_ELEMENT_MAILLAGE*> classe;
146 francois 353 for (int i=0;i<nbtri;i++)
147     {
148 francois 576 MG_ELEMENT_MAILLAGE* ele=face->get_lien_maillage()->get(i);
149     if (ele->get_type_entite()==IDMG_TRIANGLE)
150     {
151     MG_TRIANGLE* tri=(MG_TRIANGLE*)ele;
152     if (mai->get_mg_triangleid(tri->get_id())!=tri) continue;
153     double *xyz1=tri->get_noeud1()->get_coord();
154     double *xyz2=tri->get_noeud2()->get_coord();
155     double *xyz3=tri->get_noeud3()->get_coord();
156     double x=0.3333333333*(xyz1[0]+xyz2[0]+xyz3[0]);
157     double y=0.3333333333*(xyz1[1]+xyz2[1]+xyz3[1]);
158     double z=0.3333333333*(xyz1[2]+xyz2[2]+xyz3[2]);
159     OT_VECTEUR_3D vec(x-xg,y-yg,z-zg);
160     classe.insert(std::pair<double,MG_ELEMENT_MAILLAGE*>(vec.get_longueur2(),tri));
161     }
162     if (ele->get_type_entite()==IDMG_QUADRANGLE)
163     {
164     MG_QUADRANGLE* qua=(MG_QUADRANGLE*)ele;
165     if (mai->get_mg_quadrangleid(qua->get_id())!=qua) continue;
166     double *xyz1=qua->get_noeud1()->get_coord();
167     double *xyz2=qua->get_noeud2()->get_coord();
168     double *xyz3=qua->get_noeud3()->get_coord();
169     double *xyz4=qua->get_noeud4()->get_coord();
170     double x=0.25*(xyz1[0]+xyz2[0]+xyz3[0]+xyz4[0]);
171     double y=0.25*(xyz1[1]+xyz2[1]+xyz3[1]+xyz4[1]);
172     double z=0.25*(xyz1[2]+xyz2[2]+xyz3[2]+xyz4[2]);
173     OT_VECTEUR_3D vec(x-xg,y-yg,z-zg);
174     classe.insert(std::pair<double,MG_ELEMENT_MAILLAGE*>(vec.get_longueur2(),qua));
175     }
176     }
177     if (classe.size()>0)
178     {
179     MG_ELEMENT_MAILLAGE *ele=classe.begin()->second;
180     if (ele->get_type_entite()==IDMG_TRIANGLE)
181     {
182     MG_TRIANGLE *tri=(MG_TRIANGLE*)ele;
183 francois 353 double *xyz1=tri->get_noeud1()->get_coord();
184     double *xyz2=tri->get_noeud2()->get_coord();
185     double *xyz3=tri->get_noeud3()->get_coord();
186 francois 576 npoint p(0.3333333333*(xyz1[0]+xyz2[0]+xyz3[0]),0.3333333333*(xyz1[1]+xyz2[1]+xyz3[1]),0.3333333333*(xyz1[2]+xyz2[2]+xyz3[2]));
187     point pp;
188     pp.pts=p;
189     char mess[255];
190     if (idori==false) sprintf(mess,"F%lu",face->get_id()); else sprintf(mess,"%s",face->get_idoriginal().c_str());
191     pp.info=mess;
192     std::pair<point,color> tmp(pp,ctext);
193     data.add_text(2,tmp);
194 francois 353 }
195 francois 576 if (ele->get_type_entite()==IDMG_QUADRANGLE)
196     {
197     MG_QUADRANGLE *qua=(MG_QUADRANGLE*)ele;
198     double *xyz1=qua->get_noeud1()->get_coord();
199     double *xyz2=qua->get_noeud2()->get_coord();
200     double *xyz3=qua->get_noeud3()->get_coord();
201     double *xyz4=qua->get_noeud4()->get_coord();
202     npoint p(0.25*(xyz1[0]+xyz2[0]+xyz3[0]+xyz4[0]),0.25*(xyz1[1]+xyz2[1]+xyz3[1]+xyz4[1]),0.25*(xyz1[2]+xyz2[2]+xyz3[2]+xyz4[2]));
203     point pp;
204     pp.pts=p;
205     char mess[255];
206     if (idori==false) sprintf(mess,"F%lu",face->get_id()); else sprintf(mess,"%s",face->get_idoriginal().c_str());
207     pp.info=mess;
208     std::pair<point,color> tmp(pp,ctext);
209     data.add_text(2,tmp);
210     }
211 francois 356 }
212 francois 353 }
213    
214     ptr=data.getproplines();
215     ptr.c=carete;
216     ptr.thickness=2;
217     data.setproplines(ptr);
218    
219     LISTE_MG_ARETE::iterator ita;
220     for (MG_ARETE* are=geo->get_premier_arete(ita);are!=NULL;are=geo->get_suivant_arete(ita))
221     {
222     int nbseg=are->get_lien_maillage()->get_nb();
223     double xg=0.,yg=0.,zg=0.,deno=0.;
224     for (int i=0;i<nbseg;i++)
225     {
226     MG_SEGMENT* seg=(MG_SEGMENT*)are->get_lien_maillage()->get(i);
227 francois 654 if (mai->get_mg_segmentid(seg->get_id())!=seg) continue;
228     color c=carete;
229     int nbccf=seg->get_lien_topologie()->get_nb_ccf();
230     for (int i=0;i<nbccf;i++)
231     {
232     char typ[2];
233     seg->get_lien_topologie()->get_type_ccf(i,typ);
234     if (typ[0]=='D') c=cdeplacement;
235     if (typ[0]=='R') c=cdeplacement;
236     if (typ[0]=='F') c=cforce;
237     if (typ[0]=='P') c=cpression;
238     if (typ[0]=='T') c=ctemperature;
239     if (typ[0]=='f') c=cflux;
240     }
241     ptr=data.getproplines();
242     ptr.c=c;
243     ptr.thickness=2;
244     data.setproplines(ptr);
245     double *xyz1=seg->get_noeud1()->get_coord();
246 francois 353 double *xyz2=seg->get_noeud2()->get_coord();
247     npoint p1(xyz1[0],xyz1[1],xyz1[2]);
248     npoint p2(xyz2[0],xyz2[1],xyz2[2]);
249     line li;
250     li.pts[0]=p1;
251     li.pts[1]=p2;
252     data.add_line(li);
253     OT_VECTEUR_3D vec(xyz1,xyz2);
254     xg=xg+0.5*(xyz1[0]+xyz2[0])*vec.get_longueur();
255     yg=yg+0.5*(xyz1[1]+xyz2[1])*vec.get_longueur();
256     zg=zg+0.5*(xyz1[2]+xyz2[2])*vec.get_longueur();
257     deno=deno+vec.get_longueur();
258     }
259     xg=xg/deno;
260     yg=yg/deno;
261     zg=zg/deno;
262     std::map<double,MG_SEGMENT*> classeseg;
263     for (int i=0;i<nbseg;i++)
264     {
265     MG_SEGMENT* seg=(MG_SEGMENT*)are->get_lien_maillage()->get(i);
266 francois 358 if (mai->get_mg_segmentid(seg->get_id())!=seg) continue;
267 francois 353 double *xyz1=seg->get_noeud1()->get_coord();
268     double *xyz2=seg->get_noeud2()->get_coord();
269     double x=0.5*(xyz1[0]+xyz2[0]);
270     double y=0.5*(xyz1[1]+xyz2[1]);
271     double z=0.5*(xyz1[2]+xyz2[2]);
272     OT_VECTEUR_3D vec(x-xg,y-yg,z-zg);
273     classeseg.insert(std::pair<double,MG_SEGMENT*>(vec.get_longueur2(),seg));
274     }
275 francois 358 if (classeseg.size()>0)
276 francois 356 {
277     MG_SEGMENT* seg=classeseg.begin()->second;
278     double *xyz1=seg->get_noeud1()->get_coord();
279     double *xyz2=seg->get_noeud2()->get_coord();
280     npoint p(0.5*(xyz1[0]+xyz2[0]),0.5*(xyz1[1]+xyz2[1]),0.5*(xyz1[2]+xyz2[2]));
281     point pp;
282     pp.pts=p;
283     char mess[255];
284     if (idori==false) sprintf(mess,"E%lu",are->get_id()); else sprintf(mess,"%s",are->get_idoriginal().c_str());
285     pp.info=mess;
286     std::pair<point,color> tmp(pp,ctext);
287     data.add_text(1,tmp);
288     }
289 francois 353 }
290    
291    
292     ptr=data.getproppoints();
293     ptr.c=carete;
294 francois 358 ptr.pointsize=10;
295 francois 353 data.setproppoints(ptr);
296     LISTE_MG_SOMMET::iterator its;
297     for (MG_SOMMET* som=geo->get_premier_sommet(its);som!=NULL;som=geo->get_suivant_sommet(its))
298     {
299     int nbpoint=som->get_lien_maillage()->get_nb();
300     for (int i=0;i<nbpoint;i++)
301     {
302     MG_NOEUD* nd=(MG_NOEUD*)som->get_lien_maillage()->get(i);
303 francois 358 if (mai->get_mg_noeudid(nd->get_id())!=nd) continue;
304 francois 654 color c=carete;
305     int nbccf=nd->get_lien_topologie()->get_nb_ccf();
306     for (int i=0;i<nbccf;i++)
307     {
308     char typ[2];
309     nd->get_lien_topologie()->get_type_ccf(i,typ);
310     if (typ[0]=='D') c=cdeplacement;
311     if (typ[0]=='R') c=cdeplacement;
312     if (typ[0]=='F') c=cforce;
313     if (typ[0]=='P') c=cpression;
314     if (typ[0]=='T') c=ctemperature;
315     if (typ[0]=='f') c=cflux;
316     }
317     ptr=data.getproppoints();
318     ptr.c=c;
319     data.setproppoints(ptr);
320     double *xyz1=nd->get_coord();
321 francois 353 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
322     data.add_point(p1);
323     point pp;
324     pp.pts=p1;
325     char mess[255];
326 francois 356 if (idori==false) sprintf(mess,"V%lu",som->get_id()); else sprintf(mess,"%s",som->get_idoriginal().c_str());
327 francois 353 pp.info=mess;
328     std::pair<point,color> tmp(pp,ctext);
329     data.add_text(0,tmp);
330     }
331     }
332    
333    
334    
335    
336     };
337    
338    
339    
340    
341    
342    
343    
344     #ifdef WINDOWS_VERSION
345     int amain(int argc,char **argv)
346     #else
347     int main(int argc,char **argv)
348     #endif
349     {
350     color base=color(0,0,0);
351     color carete(255,255,255);
352     color cface(125,125,125);
353     color ctext(255,255,255);
354 francois 654 color cdeplacement(255,151,1);
355     color cforce(255,1,1);
356     color cpression(33,249,13);
357     color ctemperature(246,07,193);
358     color cflux(252,250,03);
359    
360 francois 353 char chemin[1000];
361     sprintf(chemin,"%s/.vtkdisplay",getenv("HOME"));
362     FILE *in=fopen(chemin,"rt");
363     if (in!=NULL)
364     {
365     char mess[255];
366     fgets(mess,255,in);
367     int R,G,B;
368     int nb=sscanf(mess,"%d %d %d",&R,&G,&B);
369     if (nb==3) base=color(R,G,B);
370     if (!feof(in))
371     {
372     fgets(mess,255,in);
373     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
374     if (nb==3) cface=color(R,G,B);
375     if (!feof(in))
376     {
377     fgets(mess,255,in);
378     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
379     if (nb==3) carete=color(R,G,B);
380     if (!feof(in))
381     {
382     fgets(mess,255,in);
383     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
384     if (nb==3) ctext=color(R,G,B);
385 francois 654 if (!feof(in))
386     {
387     fgets(mess,255,in);
388     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
389     if (nb==3) cdeplacement=color(R,G,B);
390     if (!feof(in))
391     {
392     fgets(mess,255,in);
393     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
394     if (nb==3) cforce=color(R,G,B);
395     if (!feof(in))
396     {
397     fgets(mess,255,in);
398     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
399     if (nb==3) cpression=color(R,G,B);
400     if (!feof(in))
401     {
402     fgets(mess,255,in);
403     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
404     if (nb==3) ctemperature=color(R,G,B);
405     if (!feof(in))
406     {
407     fgets(mess,255,in);
408     nb=sscanf(mess,"%d %d %d",&R,&G,&B);
409     if (nb==3) cflux=color(R,G,B);
410    
411     }
412     }
413    
414     }
415    
416     }
417     }
418 francois 353 }
419     }
420     }
421     fclose(in);
422     }
423     printf("******************************\n");
424     printf("* Visualization *\n");
425     printf("* by *\n");
426     printf("* Jean-Christophe Cuillière *\n");
427     printf("* and *\n");
428     printf("* Vincent Francois *\n");
429     printf("* ERICCA-UQTR *\n");
430     printf("******************************\n\n\n");
431    
432 francois 356
433    
434 cuillier 354 if (!((argc==2) || (argc==3)))
435 francois 353 {
436     printf("Visumagic syntax error - Bad number arguments\n\n");
437     return 0;
438    
439     }
440 francois 356 char fichier[255];
441     strcpy(fichier,argv[1]);
442    
443     char *p=strchr(fichier,'.');
444     char extension[255];
445     strcpy(extension,p+1);
446    
447     bool idori;
448     MG_GESTIONNAIRE *gest;
449     if ((strcmp(extension,"step")==0) || (strcmp(extension,"stp")==0) || (strcmp(extension,"STP")==0) || (strcmp(extension,"STEP")==0))
450     {
451     MG_GESTIONNAIRE *gest2=new MG_GESTIONNAIRE;
452     OCC_IMPORT occimport;
453 francois 652 MG_GEOMETRIE* mggeo=occimport.importer(*gest2,fichier,FICHIERSTEP,1e-6) ;
454 francois 356 occimport.importer(*gest2,mggeo,1,2);
455     gest=gest2;
456 francois 358 idori=false;
457     if (strcmp(argv[argc-1],"-s")==0)
458     {
459     *(p+1)='m';
460     *(p+2)='a';
461     *(p+3)='g';
462     *(p+4)='i';
463     *(p+5)='c';
464     *(p+6)=0;
465     gest->enregistrer(fichier);
466     }
467 francois 356 }
468     else
469     {
470     MG_FILE* gest2=new MG_FILE(fichier);
471     gest=gest2;
472     idori=false;
473     }
474 francois 358
475 francois 353
476     int num=0;
477     if (argc==3) num=atoi(argv[2]);
478     MG_GEOMETRIE* geo=gest->get_mg_geometrie(num);
479     data_container data;
480 francois 358 MG_MAILLAGE* mai=NULL;
481     int nbmai=gest->get_nb_mg_maillage();
482     bool sommet=false,arete=false,face=false;
483     for (int i=0;i<nbmai;i++)
484     {
485     bool sommettmp=false,aretetmp=false,facetmp=false;
486     MG_MAILLAGE* maitmp=gest->get_mg_maillage(i);
487     if (maitmp->get_nb_mg_noeud()>0) sommettmp=true;
488     if (maitmp->get_nb_mg_segment()>0) aretetmp=true;
489     if (maitmp->get_nb_mg_triangle()>0) facetmp=true;
490     int nbtruetmp=0,nbtrue=0;
491     if (sommet==true) nbtrue++;
492     if (arete==true) nbtrue++;
493     if (face==true) nbtrue++;
494     if (sommettmp==true) nbtruetmp++;
495     if (aretetmp==true) nbtruetmp++;
496     if (facetmp==true) nbtruetmp++;
497     if (nbtruetmp>nbtrue)
498     {
499     mai=maitmp;
500     sommet=sommettmp;
501     arete=aretetmp;
502     face=facetmp;
503     }
504     }
505 francois 353 printf("\n\n");
506     printf("Command on keyboard : \n");
507     printf(" e : End of vizualisation\n");
508     printf(" r : Reset Camera\n");
509     printf(" 1 : Vertex Numbers visible on/off\n");
510     printf(" 4 : Edge Numbers visible on/off\n");
511     printf(" 7 : Face Numbers visible on/off\n");
512     printf(" v : Vertices visible on/off\n");
513     printf(" l : Edges visible on/off\n");
514     printf(" t : Faces visible on/off\n");
515     printf(" j : Save camera on current directory\n");
516     printf(" k : Load camera from current directory\n");
517     printf(" w : Wireframe\n");
518     printf(" s : Modelframe\n");
519 francois 358 printf(" - : Decrease text size\n");
520     printf(" + : Increase text size\n");
521 francois 353
522 francois 356 char titre [500];
523 francois 353 strcpy(titre,"Visumagic ");
524 francois 356 strcat(titre,fichier);
525 francois 654 if (mai!=NULL) affiche_structure(cface,carete,ctext,cdeplacement,cforce,cpression,ctemperature,cflux,geo,mai,data,idori);
526 francois 356 delete gest;
527 francois 353
528 francois 618 ndisplay d(base,titre);
529 francois 353
530    
531    
532    
533     d.init_data(data);
534     d.display(true);
535    
536 francois 356
537 francois 353 return 0;
538     }
539    
540    
541    
542     #pragma package(smart_init)