ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/mgoperation/src/visumaillage.cpp
Revision: 1115
Committed: Fri Jun 2 19:27:02 2023 UTC (2 years, 2 months ago) by francois
File size: 20373 byte(s)
Log Message:
ajout de visualisateur de maillage MG

File Contents

# Content
1 //------------------------------------------------------------
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
25
26 #include <iostream>
27 #include "ndata.h"
28 #include "vtkdisplay.h"
29 #include "mg_file.h"
30 #include "occ_import.h"
31 #include <map>
32 //---------------------------------------------------------------------------
33
34 void affiche(char* message)
35 {
36 std::cout << message << std::endl;
37
38 }
39
40
41
42
43 void affiche_maillage(color cnoeud,color csegment,color c2d,MG_MAILLAGE* mai,data_container &data)
44 {
45
46 if (mai==NULL) return;
47 properties ptr=data.getproppoints();
48 ptr.c=cnoeud;
49 ptr.pointsize=6;
50 data.setproppoints(ptr);
51
52 LISTE_MG_NOEUD::iterator itn;
53 for (MG_NOEUD* no=mai->get_premier_noeud(itn);no!=NULL;no=mai->get_suivant_noeud(itn))
54 {
55 double *xyz1=no->get_coord();
56 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
57 data.add_point(p1);
58 }
59 ptr=data.getproplines();
60 ptr.c=csegment;
61 data.setproplines(ptr);
62 LISTE_MG_SEGMENT::iterator its;
63 for (MG_SEGMENT* seg=mai->get_premier_segment(its);seg!=NULL;seg=mai->get_suivant_segment(its))
64 {
65 if (seg->get_lien_topologie()!=NULL)
66 if (seg->get_lien_topologie()->get_dimension()!=1) continue;
67
68 double *xyz1=seg->get_noeud1()->get_coord();
69 double *xyz2=seg->get_noeud2()->get_coord();
70 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
71 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
72 line li;
73 li.pts[0]=p1;
74 li.pts[1]=p2;
75 data.add_line(li);
76 }
77 ptr=data.getproptriangles();
78 ptr.c=c2d;
79 ptr.edgeon=true;
80 data.setproptriangles(ptr);
81 LISTE_MG_TRIANGLE::iterator itt;
82 for (MG_TRIANGLE* tri=mai->get_premier_triangle(itt);tri!=NULL;tri=mai->get_suivant_triangle(itt))
83 {
84 if (tri->get_lien_topologie()!=NULL)
85 if (tri->get_lien_topologie()->get_dimension()!=2) continue;
86
87 double *xyz1=tri->get_noeud1()->get_coord();
88 double *xyz2=tri->get_noeud2()->get_coord();
89 double *xyz3=tri->get_noeud3()->get_coord();
90 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
91 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
92 npoint p3(xyz3[0],xyz3[1],xyz3[2]);
93 triangle tr;
94 tr.pts[0]=p1;
95 tr.pts[1]=p2;
96 tr.pts[2]=p3;
97 data.add_triangle(tr);
98 }
99 ptr=data.getpropquads();
100 ptr.c=c2d;
101 ptr.edgeon=true;
102 data.setpropquads(ptr);
103 LISTE_MG_QUADRANGLE::iterator itq;
104 for (MG_QUADRANGLE* qua=mai->get_premier_quadrangle(itq);qua!=NULL;qua=mai->get_suivant_quadrangle(itq))
105 {
106 if (qua->get_lien_topologie()!=NULL)
107 if (qua->get_lien_topologie()->get_dimension()!=2) continue;
108
109 double *xyz1=qua->get_noeud1()->get_coord();
110 double *xyz2=qua->get_noeud2()->get_coord();
111 double *xyz3=qua->get_noeud3()->get_coord();
112 double *xyz4=qua->get_noeud4()->get_coord();
113 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
114 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
115 npoint p3(xyz3[0],xyz3[1],xyz3[2]);
116 npoint p4(xyz4[0],xyz4[1],xyz4[2]);
117 quad qd;
118 qd.pts[0]=p1;
119 qd.pts[1]=p2;
120 qd.pts[2]=p3;
121 qd.pts[3]=p4;
122 data.add_quad(qd);
123 }
124 LISTE_MG_TETRA::iterator ittr;
125 for (MG_TETRA* tet=mai->get_premier_tetra(ittr);tet!=NULL;tet=mai->get_suivant_tetra(ittr))
126 {
127 double *xyz1=tet->get_noeud1()->get_coord();
128 double *xyz2=tet->get_noeud2()->get_coord();
129 double *xyz3=tet->get_noeud3()->get_coord();
130 double *xyz4=tet->get_noeud4()->get_coord();
131 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
132 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
133 npoint p3(xyz3[0],xyz3[1],xyz3[2]);
134 npoint p4(xyz4[0],xyz4[1],xyz4[2]);
135 triangle t1,t2,t3,t4;
136 t1.pts[0]=p1;
137 t1.pts[1]=p2;
138 t1.pts[2]=p3;
139 t2.pts[0]=p1;
140 t2.pts[1]=p2;
141 t2.pts[2]=p4;
142 t3.pts[0]=p2;
143 t3.pts[1]=p3;
144 t3.pts[2]=p4;
145 t4.pts[0]=p1;
146 t4.pts[1]=p3;
147 t4.pts[2]=p4;
148 data.add_triangle(t1);
149 data.add_triangle(t2);
150 data.add_triangle(t3);
151 data.add_triangle(t4);
152 }
153 LISTE_MG_HEXA::iterator ithe;
154 for (MG_HEXA* hex=mai->get_premier_hexa(ithe);hex!=NULL;hex=mai->get_suivant_hexa(ithe))
155 {
156 double *xyz1=hex->get_noeud1()->get_coord();
157 double *xyz2=hex->get_noeud2()->get_coord();
158 double *xyz3=hex->get_noeud3()->get_coord();
159 double *xyz4=hex->get_noeud4()->get_coord();
160 double *xyz5=hex->get_noeud5()->get_coord();
161 double *xyz6=hex->get_noeud6()->get_coord();
162 double *xyz7=hex->get_noeud7()->get_coord();
163 double *xyz8=hex->get_noeud8()->get_coord();
164 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
165 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
166 npoint p3(xyz3[0],xyz3[1],xyz3[2]);
167 npoint p4(xyz4[0],xyz4[1],xyz4[2]);
168 npoint p5(xyz5[0],xyz5[1],xyz5[2]);
169 npoint p6(xyz6[0],xyz6[1],xyz6[2]);
170 npoint p7(xyz7[0],xyz7[1],xyz7[2]);
171 npoint p8(xyz8[0],xyz8[1],xyz8[2]);
172 quad q1,q2,q3,q4,q5,q6;
173 q1.pts[0]=p1;
174 q1.pts[1]=p2;
175 q1.pts[2]=p3;
176 q1.pts[3]=p4;
177 q2.pts[0]=p5;
178 q2.pts[1]=p6;
179 q2.pts[2]=p7;
180 q2.pts[3]=p8;
181 q3.pts[0]=p2;
182 q3.pts[1]=p3;
183 q3.pts[2]=p7;
184 q3.pts[3]=p6;
185 q4.pts[0]=p3;
186 q4.pts[1]=p4;
187 q4.pts[2]=p8;
188 q4.pts[3]=p7;
189 q5.pts[0]=p4;
190 q5.pts[1]=p1;
191 q5.pts[2]=p5;
192 q5.pts[3]=p8;
193 q6.pts[0]=p1;
194 q6.pts[1]=p2;
195 q6.pts[2]=p6;
196 q6.pts[3]=p5;
197 data.add_quad(q1);
198 data.add_quad(q2);
199 data.add_quad(q3);
200 data.add_quad(q4);
201 data.add_quad(q5);
202 data.add_quad(q6);
203 }
204
205 /*
206 properties ptr=data.getproptriangles();
207 ptr.c=cface;
208 ptr.edgeon=false;
209 data.setproptriangles(ptr);
210 ptr=data.getpropquads();
211 ptr.c=cface;
212 ptr.edgeon=false;
213 data.setpropquads(ptr);
214
215 LISTE_MG_FACE::iterator itf;
216 for (MG_FACE* face=geo->get_premier_face(itf);face!=NULL;face=geo->get_suivant_face(itf))
217 {
218 double xg=0.,yg=0.,zg=0.,deno=0.;
219 int nbtri=face->get_lien_maillage()->get_nb();
220 for (int i=0;i<nbtri;i++)
221 {
222 MG_ELEMENT_MAILLAGE* ele=face->get_lien_maillage()->get(i);
223 color c=cface;
224 int nbccf=ele->get_lien_topologie()->get_nb_ccf();
225 for (int i=0;i<nbccf;i++)
226 {
227 char typ[2];
228 ele->get_lien_topologie()->get_type_ccf(i,typ);
229 if (typ[0]=='D') c=cdeplacement;
230 if (typ[0]=='R') c=cdeplacement;
231 if (typ[0]=='F') c=cforce;
232 if (typ[0]=='P') c=cpression;
233 if (typ[0]=='T') c=ctemperature;
234 if (typ[0]=='f') c=cflux;
235 }
236 if (ele->get_type_entite()==IDMG_TRIANGLE)
237 {
238 properties ptr=data.getproptriangles();
239 ptr.c=c;
240 data.setproptriangles(ptr);
241 MG_TRIANGLE* tri=(MG_TRIANGLE*)ele;
242 if (mai->get_mg_triangleid(tri->get_id())!=tri) continue;
243 double *xyz1=tri->get_noeud1()->get_coord();
244 double *xyz2=tri->get_noeud2()->get_coord();
245 double *xyz3=tri->get_noeud3()->get_coord();
246 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
247 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
248 npoint p3(xyz3[0],xyz3[1],xyz3[2]);
249 triangle tr;
250 tr.pts[0]=p1;
251 tr.pts[1]=p2;
252 tr.pts[2]=p3;
253 data.add_triangle(tr);
254 OT_VECTEUR_3D vec1(xyz1,xyz2);
255 OT_VECTEUR_3D vec2(xyz1,xyz3);
256 OT_VECTEUR_3D sur=vec1&vec2;
257 xg=xg+0.3333333333*(xyz1[0]+xyz2[0]+xyz3[0])*sur.get_longueur();
258 yg=yg+0.3333333333*(xyz1[1]+xyz2[1]+xyz3[1])*sur.get_longueur();
259 zg=zg+0.3333333333*(xyz1[2]+xyz2[2]+xyz3[2])*sur.get_longueur();
260 deno=deno+sur.get_longueur();
261 }
262 if (ele->get_type_entite()==IDMG_QUADRANGLE)
263 {
264 ptr=data.getpropquads();
265 ptr.c=c;
266 data.setpropquads(ptr);
267 MG_QUADRANGLE* qua=(MG_QUADRANGLE*)ele;
268 if (mai->get_mg_quadrangleid(qua->get_id())!=qua) continue;
269 double *xyz1=qua->get_noeud1()->get_coord();
270 double *xyz2=qua->get_noeud2()->get_coord();
271 double *xyz3=qua->get_noeud3()->get_coord();
272 double *xyz4=qua->get_noeud4()->get_coord();
273 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
274 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
275 npoint p3(xyz3[0],xyz3[1],xyz3[2]);
276 npoint p4(xyz4[0],xyz4[1],xyz4[2]);
277 quad qd;
278 qd.pts[0]=p1;
279 qd.pts[1]=p2;
280 qd.pts[2]=p3;
281 qd.pts[3]=p4;
282 data.add_quad(qd);
283 OT_VECTEUR_3D vec1(xyz1,xyz2);
284 OT_VECTEUR_3D vec2(xyz1,xyz3);
285 OT_VECTEUR_3D vec3(xyz1,xyz4);
286 OT_VECTEUR_3D sur=vec1&vec2;
287 OT_VECTEUR_3D sur2=vec2&vec3;
288 xg=xg+0.3333333333*(xyz1[0]+xyz2[0]+xyz3[0])*sur.get_longueur();
289 yg=yg+0.3333333333*(xyz1[1]+xyz2[1]+xyz3[1])*sur.get_longueur();
290 zg=zg+0.3333333333*(xyz1[2]+xyz2[2]+xyz3[2])*sur.get_longueur();
291 xg=xg+0.3333333333*(xyz1[0]+xyz4[0]+xyz3[0])*sur2.get_longueur();
292 yg=yg+0.3333333333*(xyz1[1]+xyz4[1]+xyz3[1])*sur2.get_longueur();
293 zg=zg+0.3333333333*(xyz1[2]+xyz4[2]+xyz3[2])*sur2.get_longueur();
294 deno=deno+sur.get_longueur()+sur2.get_longueur();
295 }
296 }
297 xg=xg/deno;
298 yg=yg/deno;
299 zg=zg/deno;
300 std::map<double,MG_ELEMENT_MAILLAGE*> classe;
301 for (int i=0;i<nbtri;i++)
302 {
303 MG_ELEMENT_MAILLAGE* ele=face->get_lien_maillage()->get(i);
304 if (ele->get_type_entite()==IDMG_TRIANGLE)
305 {
306 MG_TRIANGLE* tri=(MG_TRIANGLE*)ele;
307 if (mai->get_mg_triangleid(tri->get_id())!=tri) continue;
308 double *xyz1=tri->get_noeud1()->get_coord();
309 double *xyz2=tri->get_noeud2()->get_coord();
310 double *xyz3=tri->get_noeud3()->get_coord();
311 double x=0.3333333333*(xyz1[0]+xyz2[0]+xyz3[0]);
312 double y=0.3333333333*(xyz1[1]+xyz2[1]+xyz3[1]);
313 double z=0.3333333333*(xyz1[2]+xyz2[2]+xyz3[2]);
314 OT_VECTEUR_3D vec(x-xg,y-yg,z-zg);
315 classe.insert(std::pair<double,MG_ELEMENT_MAILLAGE*>(vec.get_longueur2(),tri));
316 }
317 if (ele->get_type_entite()==IDMG_QUADRANGLE)
318 {
319 MG_QUADRANGLE* qua=(MG_QUADRANGLE*)ele;
320 if (mai->get_mg_quadrangleid(qua->get_id())!=qua) continue;
321 double *xyz1=qua->get_noeud1()->get_coord();
322 double *xyz2=qua->get_noeud2()->get_coord();
323 double *xyz3=qua->get_noeud3()->get_coord();
324 double *xyz4=qua->get_noeud4()->get_coord();
325 double x=0.25*(xyz1[0]+xyz2[0]+xyz3[0]+xyz4[0]);
326 double y=0.25*(xyz1[1]+xyz2[1]+xyz3[1]+xyz4[1]);
327 double z=0.25*(xyz1[2]+xyz2[2]+xyz3[2]+xyz4[2]);
328 OT_VECTEUR_3D vec(x-xg,y-yg,z-zg);
329 classe.insert(std::pair<double,MG_ELEMENT_MAILLAGE*>(vec.get_longueur2(),qua));
330 }
331 }
332 if (classe.size()>0)
333 {
334 MG_ELEMENT_MAILLAGE *ele=classe.begin()->second;
335 if (ele->get_type_entite()==IDMG_TRIANGLE)
336 {
337 MG_TRIANGLE *tri=(MG_TRIANGLE*)ele;
338 double *xyz1=tri->get_noeud1()->get_coord();
339 double *xyz2=tri->get_noeud2()->get_coord();
340 double *xyz3=tri->get_noeud3()->get_coord();
341 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]));
342 point pp;
343 pp.pts=p;
344 char mess[255];
345 if (idori==false) sprintf(mess,"F%lu",face->get_id()); else sprintf(mess,"%s",face->get_idoriginal().c_str());
346 pp.info=mess;
347 std::pair<point,color> tmp(pp,ctext);
348 data.add_text(2,tmp);
349 }
350 if (ele->get_type_entite()==IDMG_QUADRANGLE)
351 {
352 MG_QUADRANGLE *qua=(MG_QUADRANGLE*)ele;
353 double *xyz1=qua->get_noeud1()->get_coord();
354 double *xyz2=qua->get_noeud2()->get_coord();
355 double *xyz3=qua->get_noeud3()->get_coord();
356 double *xyz4=qua->get_noeud4()->get_coord();
357 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]));
358 point pp;
359 pp.pts=p;
360 char mess[255];
361 if (idori==false) sprintf(mess,"F%lu",face->get_id()); else sprintf(mess,"%s",face->get_idoriginal().c_str());
362 pp.info=mess;
363 std::pair<point,color> tmp(pp,ctext);
364 data.add_text(2,tmp);
365 }
366 }
367 }
368
369 ptr=data.getproplines();
370 ptr.c=carete;
371 ptr.thickness=2;
372 data.setproplines(ptr);
373
374 LISTE_MG_ARETE::iterator ita;
375 for (MG_ARETE* are=geo->get_premier_arete(ita);are!=NULL;are=geo->get_suivant_arete(ita))
376 {
377 int nbseg=are->get_lien_maillage()->get_nb();
378 double xg=0.,yg=0.,zg=0.,deno=0.;
379 for (int i=0;i<nbseg;i++)
380 {
381 MG_SEGMENT* seg=(MG_SEGMENT*)are->get_lien_maillage()->get(i);
382 if (mai->get_mg_segmentid(seg->get_id())!=seg) continue;
383 color c=carete;
384 int nbccf=seg->get_lien_topologie()->get_nb_ccf();
385 for (int i=0;i<nbccf;i++)
386 {
387 char typ[2];
388 seg->get_lien_topologie()->get_type_ccf(i,typ);
389 if (typ[0]=='D') c=cdeplacement;
390 if (typ[0]=='R') c=cdeplacement;
391 if (typ[0]=='F') c=cforce;
392 if (typ[0]=='P') c=cpression;
393 if (typ[0]=='T') c=ctemperature;
394 if (typ[0]=='f') c=cflux;
395 }
396 ptr=data.getproplines();
397 ptr.c=c;
398 ptr.thickness=2;
399 data.setproplines(ptr);
400 double *xyz1=seg->get_noeud1()->get_coord();
401 double *xyz2=seg->get_noeud2()->get_coord();
402 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
403 npoint p2(xyz2[0],xyz2[1],xyz2[2]);
404 line li;
405 li.pts[0]=p1;
406 li.pts[1]=p2;
407 data.add_line(li);
408 OT_VECTEUR_3D vec(xyz1,xyz2);
409 xg=xg+0.5*(xyz1[0]+xyz2[0])*vec.get_longueur();
410 yg=yg+0.5*(xyz1[1]+xyz2[1])*vec.get_longueur();
411 zg=zg+0.5*(xyz1[2]+xyz2[2])*vec.get_longueur();
412 deno=deno+vec.get_longueur();
413 }
414 xg=xg/deno;
415 yg=yg/deno;
416 zg=zg/deno;
417 std::map<double,MG_SEGMENT*> classeseg;
418 for (int i=0;i<nbseg;i++)
419 {
420 MG_SEGMENT* seg=(MG_SEGMENT*)are->get_lien_maillage()->get(i);
421 if (mai->get_mg_segmentid(seg->get_id())!=seg) continue;
422 double *xyz1=seg->get_noeud1()->get_coord();
423 double *xyz2=seg->get_noeud2()->get_coord();
424 double x=0.5*(xyz1[0]+xyz2[0]);
425 double y=0.5*(xyz1[1]+xyz2[1]);
426 double z=0.5*(xyz1[2]+xyz2[2]);
427 OT_VECTEUR_3D vec(x-xg,y-yg,z-zg);
428 classeseg.insert(std::pair<double,MG_SEGMENT*>(vec.get_longueur2(),seg));
429 }
430 if (classeseg.size()>0)
431 {
432 MG_SEGMENT* seg=classeseg.begin()->second;
433 double *xyz1=seg->get_noeud1()->get_coord();
434 double *xyz2=seg->get_noeud2()->get_coord();
435 npoint p(0.5*(xyz1[0]+xyz2[0]),0.5*(xyz1[1]+xyz2[1]),0.5*(xyz1[2]+xyz2[2]));
436 point pp;
437 pp.pts=p;
438 char mess[255];
439 if (idori==false) sprintf(mess,"E%lu",are->get_id()); else sprintf(mess,"%s",are->get_idoriginal().c_str());
440 pp.info=mess;
441 std::pair<point,color> tmp(pp,ctext);
442 data.add_text(1,tmp);
443 }
444 }
445
446
447 ptr=data.getproppoints();
448 ptr.c=carete;
449 ptr.pointsize=10;
450 data.setproppoints(ptr);
451 LISTE_MG_SOMMET::iterator its;
452 for (MG_SOMMET* som=geo->get_premier_sommet(its);som!=NULL;som=geo->get_suivant_sommet(its))
453 {
454 int nbpoint=som->get_lien_maillage()->get_nb();
455 for (int i=0;i<nbpoint;i++)
456 {
457 MG_NOEUD* nd=(MG_NOEUD*)som->get_lien_maillage()->get(i);
458 if (mai->get_mg_noeudid(nd->get_id())!=nd) continue;
459 color c=carete;
460 int nbccf=nd->get_lien_topologie()->get_nb_ccf();
461 for (int i=0;i<nbccf;i++)
462 {
463 char typ[2];
464 nd->get_lien_topologie()->get_type_ccf(i,typ);
465 if (typ[0]=='D') c=cdeplacement;
466 if (typ[0]=='R') c=cdeplacement;
467 if (typ[0]=='F') c=cforce;
468 if (typ[0]=='P') c=cpression;
469 if (typ[0]=='T') c=ctemperature;
470 if (typ[0]=='f') c=cflux;
471 }
472 ptr=data.getproppoints();
473 ptr.c=c;
474 data.setproppoints(ptr);
475 double *xyz1=nd->get_coord();
476 npoint p1(xyz1[0],xyz1[1],xyz1[2]);
477 data.add_point(p1);
478 point pp;
479 pp.pts=p1;
480 char mess[255];
481 if (idori==false) sprintf(mess,"V%lu",som->get_id()); else sprintf(mess,"%s",som->get_idoriginal().c_str());
482 pp.info=mess;
483 std::pair<point,color> tmp(pp,ctext);
484 data.add_text(0,tmp);
485 }
486 }
487
488 */
489
490
491 };
492
493
494
495
496
497
498
499 int main(int argc,char **argv)
500 {
501 color cbase=color(0,0,0);
502 color cnoeud(0,0,255);
503 color csegment(255,0,0);
504 color c2D(125,0,0);
505 /*
506 char chemin[1000];
507 sprintf(chemin,"%s/.vtkdisplay",getenv("HOME"));
508 FILE *in=fopen(chemin,"rt");
509 if (in!=NULL)
510 {
511 char mess[255];
512 fgets(mess,255,in);
513 int R,G,B;
514 int nb=sscanf(mess,"%d %d %d",&R,&G,&B);
515 if (nb==3) base=color(R,G,B);
516 if (!feof(in))
517 {
518 fgets(mess,255,in);
519 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
520 if (nb==3) cface=color(R,G,B);
521 if (!feof(in))
522 {
523 fgets(mess,255,in);
524 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
525 if (nb==3) carete=color(R,G,B);
526 if (!feof(in))
527 {
528 fgets(mess,255,in);
529 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
530 if (nb==3) ctext=color(R,G,B);
531 if (!feof(in))
532 {
533 fgets(mess,255,in);
534 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
535 if (nb==3) cdeplacement=color(R,G,B);
536 if (!feof(in))
537 {
538 fgets(mess,255,in);
539 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
540 if (nb==3) cforce=color(R,G,B);
541 if (!feof(in))
542 {
543 fgets(mess,255,in);
544 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
545 if (nb==3) cpression=color(R,G,B);
546 if (!feof(in))
547 {
548 fgets(mess,255,in);
549 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
550 if (nb==3) ctemperature=color(R,G,B);
551 if (!feof(in))
552 {
553 fgets(mess,255,in);
554 nb=sscanf(mess,"%d %d %d",&R,&G,&B);
555 if (nb==3) cflux=color(R,G,B);
556
557 }
558 }
559
560 }
561
562 }
563 }
564 }
565 }
566 }
567 fclose(in);
568 }*/
569 printf("******************************\n");
570 printf("* Visualization *\n");
571 printf("* by *\n");
572 printf("* Jean-Christophe Cuillière *\n");
573 printf("* and *\n");
574 printf("* Vincent Francois *\n");
575 printf("* ERICCA-UQTR *\n");
576 printf("******************************\n\n\n");
577
578
579
580 if (!((argc==2) || (argc==3)))
581 {
582 printf("Visumaillage.exe - Bad number arguments\n visumagic.exe fichier [numero du maillage]\n\n");
583 return 0;
584
585 }
586 char fichier[255];
587 strcpy(fichier,argv[1]);
588
589 char *p=strchr(fichier,'.');
590 char extension[255];
591 strcpy(extension,p+1);
592
593 MG_FILE gest(fichier);
594
595
596 int num=0;
597 if (argc==3) num=atoi(argv[2]);
598 MG_MAILLAGE* mai=gest.get_mg_maillage(num);
599 data_container data;
600
601 printf("\n\n");
602 printf("Command on keyboard : \n");
603 printf(" e : End of vizualisation\n");
604 printf(" r : Reset Camera\n");
605 printf(" v : Nodes visible on/off\n");
606 printf(" l : Segments visible on/off\n");
607 printf(" t : Triangles/quadrangles visible on/off\n");
608 printf(" j : Save camera on current directory\n");
609 printf(" k : Load camera from current directory\n");
610 printf(" w : Wireframe\n");
611 printf(" s : Modelframe\n");
612 printf(" - : Decrease text size\n");
613 printf(" + : Increase text size\n");
614
615 char titre [500];
616 strcpy(titre,"Visumaillage ");
617 strcat(titre,fichier);
618 if (mai!=NULL) affiche_maillage(cnoeud,csegment,c2D,mai,data);
619
620 vtkdisplay d(cbase,titre);
621
622
623
624
625 d.init_data(data);
626 d.display();
627
628
629 return 0;
630 }
631
632
633
634