ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/fichier/src/mg_file.cpp
Revision: 169
Committed: Fri Feb 13 23:04:14 2009 UTC (16 years, 3 months ago) by francois
Original Path: magic/lib/fichier/fichier/src/mg_file.cpp
File size: 55806 byte(s)
Error occurred while calculating annotation data.
Log Message:
Resolution de bug avec la version de gcc 4.3.2 --> mise la norme de c++

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 // mg_file.cpp
16 //
17 //------------------------------------------------------------
18 //------------------------------------------------------------
19 // COPYRIGHT 2000
20 // Version du 02/03/2006 �11H22
21 //------------------------------------------------------------
22 //------------------------------------------------------------
23
24
25 #include "gestionversion.h"
26
27 #pragma hdrstop
28
29 #include <string.h>
30 #include "mg_file.h"
31 #include "pars_argument.h"
32 #include "parse.h"
33 #ifdef BREP_STEP
34 #include "step_surface.h"
35 #include "step_courbe.h"
36 #include "step_point.h"
37 #endif
38 #ifdef BREP_SAT
39 #include "acis_surface.h"
40 #include "acis_courbe.h"
41 #include "acis_point.h"
42 #endif
43 #ifdef BREP_SLD
44 #include "sld_point.h"
45 #include "sld_courbe.h"
46 #include "sld_surface.h"
47 #include "sld_fonction.h"
48 #endif
49 #include "lc_point.h"
50
51 //OCC
52 #ifdef BREP_OCC
53 #include "OCC_Surface.h"
54 #include "OCC_POINT.h"
55 #include "OCC_Courbe.h"
56 #include "OCC_FONCTION1.h"
57 #include "TopoDS_Shape.hxx"
58 #include "TopoDS.hxx"
59 #endif
60 //---------------------------------------------------------------------------
61 // CAD4FE Headers
62 #ifdef WINDOWS_VERSION
63 #include "CAD4FE_MCEdge.h"
64 #include "CAD4FE_MCFace.h"
65 #include "CAD4FE_MCVertex.h"
66 #include "CAD4FE_PolySurface.h"
67 #include "CAD4FE_PolyCurve.h"
68 #include "CAD4FE_MCNode.h"
69 #include "CAD4FE_MCSegment.h"
70 #include "CAD4FE_MCTriangle.h"
71 #include "CAD4FE_m3d_MCTriangle.h"
72 #endif
73 //---------------------------------------------------------------------------
74
75
76 //---------------------------------------------------------------------------
77 #pragma package(smart_init)
78
79 MG_FILE::MG_FILE():MG_GESTIONNAIRE()
80 {
81 }
82
83 MG_FILE::MG_FILE(char* chemin):MG_GESTIONNAIRE()
84 {
85 code_de_lecture=lire(chemin);
86 }
87
88 MG_FILE::~MG_FILE()
89 {
90 }
91
92 int MG_FILE::get_code_de_lecture(void)
93 {
94 return code_de_lecture;
95 }
96
97 long MG_FILE::cid(std::string str)
98 {
99 const char *p=str.c_str();
100 if (*p=='$') return atol(p+1);
101 return -1;
102 }
103
104 int MG_FILE::lire(char* chemin)
105 {
106 FILE *in;
107 char ligne[3000];
108 in=fopen(chemin,"rt");
109 if (in==NULL) return 0;
110 PARS_ARGUMENT param[100];
111 PARSE parse;
112
113 MG_GEOMETRIE *mggeo; #ifdef WINDOWS_VERSION
114 std::multimap<CAD4FE::MCVertex*, unsigned long> mapMergedRefVertices;
115 #endif
116 bool updatedMergedRefVertices = false;
117
118 do
119 {
120 int ierr;
121 std::string ligne=parse.lire(in,';',&ierr);
122 parse.decode(ligne.c_str(),"@;",param);
123 const char *chaine=param[0].argument[0].c_str();
124 if ((chaine[0]=='/') && (chaine[1]=='/'))
125 {
126 if ((chaine[2]=='*')&&(chaine[3]=='i'))
127 {
128 unsigned long id;
129 sscanf(chaine,"//*i:%lu;",&id);
130 entiteidmax=id;
131 }
132 }
133 else if (param[0].argument[0]!="FIN")
134 {
135 parse.decode(ligne.c_str(),"%@=@(@);",param);
136 std::string entite=param[1].argument[0];
137 long id=atol(param[0].argument[0].c_str());
138 std::string data=param[2].argument[0] ;
139 MG_MAILLAGE *mgmai;
140 FEM_MAILLAGE *femmai;
141 if (entite=="GEOMETRIE")
142 {
143 parse.decode(data.c_str(),"@,@,@,@",param+2);
144 double unite=atof(param[2].argument[0].c_str());
145 std::string typegeo=param[3].argument[0];
146 std::string chemin=param[4].argument[0];
147 #ifdef BREP_STEP
148 if (typegeo=="STEP")
149 {
150 fichstep.change_nom((char *)chemin.c_str());
151 int code=fichstep.lire();
152 if (code==0) return 0;
153 mggeo=new MG_GEOMETRIE("STEP",id,fichstep.get_nom(),unite);
154 ajouter_mg_geometrie(mggeo);
155 }
156 #endif
157 #ifdef BREP_SAT
158 if (typegeo=="ACIS")
159 {
160 fichsat.change_nom((char *)chemin.c_str());
161 int code=fichsat.lire();
162 if (code==0) return 0;
163 mggeo=new MG_GEOMETRIE("ACIS",id,fichsat.get_nom(),unite);
164 ajouter_mg_geometrie(mggeo);
165 }
166 #endif
167 #ifdef BREP_SLD
168 if (typegeo=="SLD")
169 {
170 fonction->Connection();
171 fonction->OuvrirFichier((char *)chemin.c_str() );
172 mggeo=new MG_GEOMETRIE("SLD",id,chemin.c_str(),unite);
173 ajouter_mg_geometrie(mggeo);
174 ouvertsld=1;
175 }
176 #endif
177
178 #ifdef BREP_OCC
179 if (typegeo=="OCC")
180 {
181 fonction1->OuvrirFichier((char *)chemin.c_str() );
182 mggeo=new MG_GEOMETRIE("OCC",id,chemin.c_str(),unite);
183 ajouter_mg_geometrie(mggeo);
184 }
185 #endif
186
187 std::string nommat="";
188 if (param[5].argument[0]!="")
189 nommat=param[5].argument[0];
190 mggeo->change_gest_materiau((char*)nommat.c_str());
191 }
192 if (entite=="VOLUME")
193 {
194 parse.decode(data.c_str(),"@,@,@,@,(&)",param+2);
195 MG_VOLUME* mgvol=new MG_VOLUME(param[2].argument[0],id);
196 mggeo->ajouter_mg_volume(mgvol);
197 int nummat=atoi((char*)param[4].argument[0].c_str());
198 mgvol->change_num_materiau(nummat);
199 int nb=atoi(param[5].argument[0].c_str());
200 if (nb!=0)
201 {
202 for (int i=0;i<nb;i++)
203 {
204 parse.decode(param[6].argument[i].c_str(),"(@,@)",param+7);
205 char nom[3];
206 double val;
207 strcpy(nom,param[7].argument[0].c_str());
208 val=atof(param[8].argument[0].c_str());
209 mgvol->ajouter_ccf(nom,val);
210 }
211 }
212 }
213 if (entite=="COQUE")
214 {
215 parse.decode(data.c_str(),"@,@,@,@,(&)",param+2);
216 MG_COQUE* mgcoq=new MG_COQUE(param[2].argument[0],id);
217 mggeo->ajouter_mg_coque(mgcoq);
218 int nummat=atoi((char*)param[4].argument[0].c_str());
219 mgcoq->change_num_materiau(nummat);
220 int nb=atoi(param[5].argument[0].c_str());
221 if (nb!=0)
222 {
223 for (int i=0;i<nb;i++)
224 {
225 parse.decode(param[6].argument[i].c_str(),"(@,@)",param+7);
226 char nom[3];
227 double val;
228 strcpy(nom,param[7].argument[0].c_str());
229 val=atof(param[8].argument[0].c_str());
230 mgcoq->ajouter_ccf(nom,val);
231 }
232 }
233 }
234 if (entite=="POUTRE")
235 {
236 parse.decode(data.c_str(),"@,@,@,@,(&)",param+2);
237 MG_POUTRE* mgpoutre=new MG_POUTRE(param[2].argument[0],id);
238 mggeo->ajouter_mg_poutre(mgpoutre);
239 int nummat=atoi((char*)param[4].argument[0].c_str());
240 mgpoutre->change_num_materiau(nummat);
241 int nb=atoi(param[5].argument[0].c_str());
242 if (nb!=0)
243 {
244 for (int i=0;i<nb;i++)
245 {
246 parse.decode(param[6].argument[i].c_str(),"(@,@)",param+7);
247 char nom[3];
248 double val;
249 strcpy(nom,param[7].argument[0].c_str());
250 val=atof(param[8].argument[0].c_str());
251 mgpoutre->ajouter_ccf(nom,val);
252 }
253 }
254 }
255 if (entite=="COQUILLE")
256 {
257 parse.decode(data.c_str(),"@,@",param+2);
258 long ident=cid(param[2].argument[0]);
259 MG_VOLUME* mgvol=mggeo->get_mg_volumeid(ident);
260 MG_COQUE* mgcoq=mggeo->get_mg_coqueid(ident);
261 if (mgvol!=NULL)
262 {
263 MG_COQUILLE* mgcoq=new MG_COQUILLE(id,mgvol);
264 mggeo->ajouter_mg_coquille(mgcoq,mgvol);
265 }
266 if (mgcoq!=NULL)
267 {
268 MG_COQUILLE* mgcoquille=new MG_COQUILLE(id,mgcoq);
269 mggeo->ajouter_mg_coquille(mgcoquille,mgcoq);
270 }
271
272 }
273 #ifdef BREP_STEP
274 if (entite=="SURFACE_STEP")
275 {
276 parse.decode(data.c_str(),"@",param+2);
277 long idstepsuf=atol(param[2].argument[0].c_str());
278 ST_SURFACE *stsurf=fichstep.lst_surface.getid(idstepsuf);
279 STEP_SURFACE* stepsurf=new STEP_SURFACE(id,stsurf);
280 mggeo->ajouter_mg_surface(stepsurf);
281 }
282 if (entite=="COURBE_STEP")
283 {
284 parse.decode(data.c_str(),"@",param+2);
285 long idstepcur=atol(param[2].argument[0].c_str());
286 ST_COURBE *stcur=fichstep.lst_courbe.getid(idstepcur);
287 STEP_COURBE* stepcur=new STEP_COURBE(id,stcur);
288 mggeo->ajouter_mg_courbe(stepcur);
289 }
290
291 if (entite=="POINT_STEP")
292 {
293 parse.decode(data.c_str(),"@",param+2);
294 long idsteppt=atol(param[2].argument[0].c_str());
295 ST_POINT *stpt=fichstep.lst_point.getid(idsteppt);
296 STEP_POINT* steppt=new STEP_POINT(id,stpt);
297 mggeo->ajouter_mg_point(steppt);
298 }
299
300 #endif
301 #ifdef BREP_SAT
302 if (entite=="SURFACE_SAT")
303 {
304 parse.decode(data.c_str(),"@",param+2);
305 long idsatsuf=atol(param[2].argument[0].c_str());
306 SAT_SURFACE *satsurf=fichsat.lst_surface.getid(idsatsuf);
307 ACIS_SURFACE* acissurf=new ACIS_SURFACE(id,satsurf);
308 mggeo->ajouter_mg_surface(acissurf);
309 }
310 if (entite=="COURBE_SAT")
311 {
312 parse.decode(data.c_str(),"@",param+2);
313 long idsatcur=atol(param[2].argument[0].c_str());
314 SAT_COURBE *satcur=fichsat.lst_courbe.getid(idsatcur);
315 ACIS_COURBE* aciscur=new ACIS_COURBE(id,satcur);
316 mggeo->ajouter_mg_courbe(aciscur);
317 }
318
319 if (entite=="POINT_SAT")
320 {
321 parse.decode(data.c_str(),"@",param+2);
322 long idsatpt=atol(param[2].argument[0].c_str());
323 SAT_POINT *satpt=fichsat.lst_point.getid(idsatpt);
324 ACIS_POINT* acispt=new ACIS_POINT(id,satpt);
325 mggeo->ajouter_mg_point(acispt);
326 }
327
328 #endif
329 #ifdef BREP_SLD
330 if (entite=="SURFACE_SLD")
331 {
332 parse.decode(data.c_str(),"@",param+2);
333 CComPtr<IFace2> swface;
334 char* idsld=(char*)param[2].argument[0].c_str();
335 SLD_SURFACE* sldsurf=new SLD_SURFACE(id,idsld,*fonction);
336 mggeo->ajouter_mg_surface(sldsurf);
337 }
338 if (entite=="COURBE_SLD")
339 {
340 parse.decode(data.c_str(),"@",param+2);
341 CComPtr<IEdge> swedge;
342 char* idsld=(char*)param[2].argument[0].c_str();
343 SLD_COURBE* sldcrb=new SLD_COURBE(id,idsld,*fonction);
344 mggeo->ajouter_mg_courbe(sldcrb);
345 }
346
347 if (entite=="POINT_SLD")
348 {
349 parse.decode(data.c_str(),"@",param+2);
350 CComPtr<IVertex> swvertex;
351 char* idsld=(char*)param[2].argument[0].c_str();
352 SLD_POINT* sldpoint=new SLD_POINT(id,idsld,*fonction);
353 mggeo->ajouter_mg_point(sldpoint);
354 }
355
356 #endif
357
358 #ifdef BREP_OCC
359 if (entite=="SURFACE_OCC")
360 {
361 parse.decode(data.c_str(),"@",param+2);
362 long idocc=atol(param[2].argument[0].c_str());
363 const TopoDS_Shape& occshape=fonction1->GetShape(idocc);
364 TopoDS_Face occface=TopoDS::Face(occshape);
365 OCC_SURFACE* occsurf=new OCC_SURFACE(id,occface, *fonction1);
366 mggeo->ajouter_mg_surface(occsurf);
367 }
368 if (entite=="COURBE_OCC")
369 {
370 parse.decode(data.c_str(),"@",param+2);
371 long idocc=atol(param[2].argument[0].c_str());
372 const TopoDS_Shape& occshape=fonction1->GetShape(idocc);
373 TopoDS_Edge occedge=TopoDS::Edge(occshape);
374 OCC_COURBE* occcrb=new OCC_COURBE(id,occedge, *fonction1);
375 mggeo->ajouter_mg_courbe(occcrb);
376 }
377 if (entite=="POINT_OCC")
378 {
379 parse.decode(data.c_str(),"@",param+2);
380 long idocc=atol(param[2].argument[0].c_str());
381 const TopoDS_Shape& occshape=fonction1->GetShape(idocc);
382 TopoDS_Vertex occvertex=TopoDS::Vertex(occshape);
383 OCC_POINT* occpoint=new OCC_POINT(id,occvertex, *fonction1);
384 mggeo->ajouter_mg_point(occpoint);
385 }
386 #endif
387 #ifdef WINDOWS_VERSION
388 if (entite=="CAD4FE_POLYCURVE")
389 {
390 CAD4FE::PolyCurve * polycurve = NULL;
391 parse.decode(data.c_str(),"@,(&)",param+2);
392 int nb = atoi(param[2].argument[0].c_str());
393
394 if (nb == 0)
395 {
396 printf("PolyCurve %d is formed with reference vertex : ", id);
397 parse.decode(param[3].argument[0].c_str(),"@",param+4);
398 int idRefVertex;
399 idRefVertex=cid(param[4].argument[0].c_str());
400 printf("%d ;\n ", idRefVertex);
401 MG_SOMMET * refVertex = mggeo->get_mg_sommetid(idRefVertex);
402 polycurve = new CAD4FE::PolyCurve(refVertex);
403 }
404 else
405 {
406 printf("PolyCurve %d is formed with reference edges : ", id);
407 polycurve = new CAD4FE::PolyCurve;
408 for (int i=0;i<nb;i++)
409 {
410 parse.decode(param[3].argument[i].c_str(),"@",param+4);
411 int idRefEdge;
412 idRefEdge=cid(param[4].argument[0].c_str());
413 printf("%d ; ", idRefEdge);
414 MG_ARETE * refEdge = mggeo->get_mg_areteid(idRefEdge);
415 CAD4FE::PolyCurve tmpPC(refEdge);
416 polycurve->Merge(tmpPC);
417 }
418 printf("\n");
419 }
420
421 polycurve->change_id(id);
422 mggeo->ajouter_mg_courbe(polycurve);
423 }
424
425
426 if (entite=="CAD4FE_POLYSURFACE")
427 {
428 CAD4FE::PolySurface * polysurface = new CAD4FE::PolySurface;
429 polysurface->change_id(id);
430 mggeo->ajouter_mg_surface(polysurface);
431
432 parse.decode(data.c_str(),"@,(&)",param+2);
433
434 int nb = atoi(param[2].argument[0].c_str());
435 printf("PolySurface %d is formed with reference faces : ", id);
436 for (int i=0;i<nb;i++)
437 {
438 parse.decode(param[3].argument[i].c_str(),"@",param+4);
439 int idRefFace;
440 idRefFace=cid(param[4].argument[0].c_str());
441 printf("%d ; ", idRefFace);
442
443 MG_FACE * refFace = mggeo->get_mg_faceid(idRefFace);
444 CAD4FE::PolySurface tmpSF(refFace);
445 polysurface->Merge(tmpSF);
446 }
447
448 printf("\n");
449 }
450 if (entite=="CAD4FE_MCEDGE")
451 {
452 parse.decode(data.c_str(),"@,@,@,@,@,@,(&)",param+2);
453
454 std::string idOriginal = param[2].argument[0];
455 long idPolyCurve=cid(param[3].argument[0]);
456 CAD4FE::PolyCurve * polycurve = (CAD4FE::PolyCurve *) mggeo->get_mg_courbeid(idPolyCurve);
457
458 // sense is not used because a MCEdge always has
459 // a sense = 1 !
460 // (because polycurve domain is equal to mcEdge domain)
461 CAD4FE::MCEdge * mcEdge = new CAD4FE::MCEdge(idOriginal, polycurve);
462 mcEdge->change_id(id);
463 mggeo->ajouter_mg_arete(mcEdge);
464
465 int nb=atoi(param[7].argument[0].c_str());
466 if (nb!=0)
467 {
468 for (int i=0;i<nb;i++)
469 {
470 parse.decode(param[8].argument[i].c_str(),"(@,@)",param+9);
471 char nom[3];
472 double val;
473 strcpy(nom,param[9].argument[0].c_str());
474 val=atof(param[10].argument[0].c_str());
475 mcEdge->ajouter_ccf(nom,val);
476 }
477 }
478 }
479 if (entite=="CAD4FE_MCFACE")
480 {
481 parse.decode(data.c_str(),"@,@,@,@,@,(&)",param+2);
482
483 std::string idOriginal = param[2].argument[0];
484 long idPolySurface=cid(param[3].argument[0]);
485 CAD4FE::PolySurface * polysurface = (CAD4FE::PolySurface *) mggeo->get_mg_surfaceid(idPolySurface);
486
487 CAD4FE::MCFace * mcFace = new CAD4FE::MCFace(idOriginal, polysurface);
488 mcFace->change_id(id);
489 mggeo->ajouter_mg_face(mcFace);
490
491 int nb=atoi(param[6].argument[0].c_str());
492 if (nb!=0)
493 {
494 for (int i=0;i<nb;i++)
495 {
496 parse.decode(param[7].argument[i].c_str(),"(@,@)",param+8);
497 char nom[3];
498 double val;
499 strcpy(nom,param[8].argument[0].c_str());
500 val=atof(param[9].argument[0].c_str());
501 mcFace->ajouter_ccf(nom,val);
502 }
503 }
504 }
505 if (entite=="CAD4FE_MCVERTEX")
506 {
507 parse.decode(data.c_str(),"@,@,@,(&),@,(&)",param+2);
508 std::string idOriginal = param[2].argument[0];
509 long idsom=cid(param[3].argument[0]);
510 MG_SOMMET * mgsom = mggeo->get_mg_sommetid(idsom);
511 CAD4FE::MCVertex * mcVertex = new CAD4FE::MCVertex(mgsom);
512 mcVertex->change_id(id);
513 mggeo->ajouter_mg_sommet(mcVertex);
514 int nb_ref_vertex=atoi(param[4].argument[0].c_str());
515 if (nb_ref_vertex!=0)
516 {
517 for (int i=0;i<nb_ref_vertex;i++)
518 {
519 unsigned long idRefVertex=cid(param[5].argument[i]);
520 mcVertex->GetMergedRefVertices()[idRefVertex] = NULL;
521 mapMergedRefVertices.insert(std::make_pair(mcVertex,idRefVertex));
522 }
523 }
524 int nb_ccf=atoi(param[4+2].argument[0].c_str());
525 if (nb_ccf!=0)
526 {
527 for (int i=0;i<nb_ccf;i++)
528 {
529 parse.decode(param[5+2].argument[i].c_str(),"(@,@)",param+6+2);
530 char nom_ccf[3];
531 double val_ccf;
532 strcpy(nom_ccf,param[6+2].argument[0].c_str());
533 val_ccf=atof(param[7+2].argument[0].c_str());
534 mgsom->ajouter_ccf(nom_ccf,val_ccf);
535 }
536 }
537 }
538 #endif
539 if (entite=="FACE")
540 {
541 parse.decode(data.c_str(),"@,@,(@),@,@,(&)",param+2);
542 long idsurf=cid(param[3].argument[0]);
543 int sens=atoi(param[5].argument[0].c_str());
544 MG_SURFACE* mgsurf=mggeo->get_mg_surfaceid(idsurf);
545 MG_FACE* mgface=new MG_FACE(param[2].argument[0],id,mgsurf,sens);
546 mggeo->ajouter_mg_face(mgface);
547 int nb=atoi(param[6].argument[0].c_str());
548 if (nb!=0)
549 {
550 for (int i=0;i<nb;i++)
551 {
552 parse.decode(param[7].argument[i].c_str(),"(@,@)",param+8);
553 char nom[3];
554 double val;
555 strcpy(nom,param[8].argument[0].c_str());
556 val=atof(param[9].argument[0].c_str());
557 mgface->ajouter_ccf(nom,val);
558 }
559 }
560 }
561 if (entite=="COFACE")
562 {
563 parse.decode(data.c_str(),"@,@,@",param+2);
564 long idface=cid(param[2].argument[0]);
565 long idcoq=cid(param[3].argument[0]);
566 int sens=atoi(param[4].argument[0].c_str());
567 MG_FACE* mgface=mggeo->get_mg_faceid(idface);
568 MG_COQUILLE* mgcoq=mggeo->get_mg_coquilleid(idcoq);
569 MG_COFACE* mgcoface=mggeo->ajouter_mg_coface(id,mgface,mgcoq,sens);
570 mgcoq->ajouter_mg_coface(mgcoface);
571 }
572 if (entite=="BOUCLE")
573 {
574 parse.decode(data.c_str(),"@,(@)",param+2);
575 long ident=cid(param[2].argument[0]);
576 MG_FACE* mgface=mggeo->get_mg_faceid(ident);
577 MG_POUTRE* mgpoutre=mggeo->get_mg_poutreid(ident);
578 if (mgface!=NULL)
579 {
580 MG_BOUCLE* mgbou=new MG_BOUCLE(id,mgface);
581 mggeo->ajouter_mg_boucle(mgbou,mgface);
582 }
583 if (mgpoutre!=NULL)
584 {
585 MG_BOUCLE* mgbou=new MG_BOUCLE(id,mgpoutre);
586 mggeo->ajouter_mg_boucle(mgbou,mgpoutre);
587 }
588 }
589 if (entite=="POINT")
590 {
591 parse.decode(data.c_str(),"@,@,@",param+2);
592 double xyz[3];
593 xyz[0]=atof(param[2].argument[0].c_str());
594 xyz[1]=atof(param[3].argument[0].c_str());
595 xyz[2]=atof(param[4].argument[0].c_str());
596 LC_POINT* point=new LC_POINT(id,xyz);
597 mggeo->ajouter_mg_point(point);
598 }
599 if (entite=="SOMMET")
600 {
601 parse.decode(data.c_str(),"@,@,@,(&)",param+2);
602 long idpoint=cid(param[3].argument[0]);
603 MG_POINT* mgpt=mggeo->get_mg_pointid(idpoint);
604 MG_SOMMET* mgsom=new MG_SOMMET(param[2].argument[0],id,mgpt);
605 mggeo->ajouter_mg_sommet(mgsom);
606 int nb=atoi(param[4].argument[0].c_str());
607 if (nb!=0)
608 {
609 for (int i=0;i<nb;i++)
610 {
611 parse.decode(param[5].argument[i].c_str(),"(@,@)",param+6);
612 char nom[3];
613 double val;
614 strcpy(nom,param[6].argument[0].c_str());
615 val=atof(param[7].argument[0].c_str());
616 mgsom->ajouter_ccf(nom,val);
617 }
618 }
619 }
620 if (entite=="ARETE")
621 {
622 parse.decode(data.c_str(),"@,@,@,@,@,@,(&)",param+2);
623 long idcur=cid(param[3].argument[0]);
624 int sens=atoi(param[6].argument[0].c_str());
625 MG_COURBE* mgcur=mggeo->get_mg_courbeid(idcur);
626 MG_ARETE* mgarete=new MG_ARETE(param[2].argument[0],id,mgcur,sens);
627 mggeo->ajouter_mg_arete(mgarete);
628 int nb=atoi(param[7].argument[0].c_str());
629 if (nb!=0)
630 {
631 for (int i=0;i<nb;i++)
632 {
633 parse.decode(param[8].argument[i].c_str(),"(@,@)",param+9);
634 char nom[3];
635 double val;
636 strcpy(nom,param[9].argument[0].c_str());
637 val=atof(param[10].argument[0].c_str());
638 mgarete->ajouter_ccf(nom,val);
639 }
640 }
641 }
642 if (entite=="COSOMMET")
643 {
644 parse.decode(data.c_str(),"@,@,@",param+2);
645 long idsom=cid(param[2].argument[0]);
646 long idarete=cid(param[3].argument[0]);
647 int num=atoi(param[4].argument[0].c_str());
648 MG_SOMMET* mgsom=mggeo->get_mg_sommetid(idsom);
649 MG_ARETE* mgarete=mggeo->get_mg_areteid(idarete);
650 MG_COSOMMET* mgcosom=mggeo->ajouter_mg_cosommet(id,mgarete,mgsom);
651 if (num==1) mgarete->changer_cosommet1(mgcosom);
652 if (num==2) mgarete->changer_cosommet2(mgcosom);
653 }
654 if (entite=="COARETE")
655 {
656 parse.decode(data.c_str(),"@,@,@",param+2);
657 long idarete=cid(param[2].argument[0]);
658 long idboucle=cid(param[3].argument[0]);
659 int sens=atoi(param[4].argument[0].c_str());
660 MG_ARETE* mgarete=mggeo->get_mg_areteid(idarete);
661 MG_BOUCLE* mgboucle=mggeo->get_mg_boucleid(idboucle);
662 MG_COARETE* mgcoarete=mggeo->ajouter_mg_coarete(id,mgarete,mgboucle,sens);
663 mgboucle->ajouter_mg_coarete(mgcoarete);
664 }
665 if (entite=="VISU_COURBE")
666 {
667 parse.decode(data.c_str(),"@,@,@,@,@,@",param+2);
668 double xyz1[3];
669 double xyz2[3];
670 xyz1[0]=atof(param[2].argument[0].c_str());
671 xyz1[1]=atof(param[3].argument[0].c_str());
672 xyz1[2]=atof(param[4].argument[0].c_str());
673 xyz2[0]=atof(param[5].argument[0].c_str());
674 xyz2[1]=atof(param[6].argument[0].c_str());
675 xyz2[2]=atof(param[7].argument[0].c_str());
676 MG_VISU_COURBE* mgcrb=new MG_VISU_COURBE(id,xyz1,xyz2);
677 mggeo->ajouter_mg_visu_courbe(mgcrb);
678 }
679 if (entite=="MAILLAGE")
680 {
681 parse.decode(data.c_str(),"@",param+2);
682 long idgeo=cid(param[2].argument[0]);
683 MG_GEOMETRIE* mggeo=get_mg_geometrieid(idgeo);
684 mgmai=new MG_MAILLAGE(id,mggeo);
685 ajouter_mg_maillage(mgmai);
686 }
687 if (entite=="FEM_MAILLAGE")
688 {
689 parse.decode(data.c_str(),"@,@,@",param+2);
690 int degre=atoi(param[2].argument[0].c_str());
691 long idmai=cid(param[3].argument[0]);
692 long idgeo=cid(param[4].argument[0]);
693 MG_GEOMETRIE* mggeo=get_mg_geometrieid(idgeo);
694 MG_MAILLAGE* mgmai=get_mg_maillageid(idmai);
695 femmai=new FEM_MAILLAGE(id,mggeo,mgmai,degre);
696 ajouter_fem_maillage(femmai);
697 }
698 if (entite=="NOEUD")
699 {
700 parse.decode(data.c_str(),"@,@,@,@,@",param+2);
701 long idtopo=cid(param[2].argument[0]);
702 double x=atof(param[3].argument[0].c_str());
703 double y=atof(param[4].argument[0].c_str());
704 double z=atof(param[5].argument[0].c_str());
705 int ori=atoi(param[6].argument[0].c_str());
706 MG_ELEMENT_TOPOLOGIQUE* topo;
707 if (idtopo>-1)
708 {
709 topo=mggeo->get_mg_sommetid(idtopo);
710 if (topo==NULL) topo=mggeo->get_mg_areteid(idtopo);
711 if (topo==NULL) topo=mggeo->get_mg_faceid(idtopo);
712 if (topo==NULL) topo=mggeo->get_mg_volumeid(idtopo);
713 }
714 else topo=NULL;
715 MG_NOEUD* noeud=new MG_NOEUD(id,topo,x,y,z,ori);
716 mgmai->ajouter_mg_noeud(noeud);
717 }
718 if (entite=="FEM_NOEUD")
719 {
720 parse.decode(data.c_str(),"@,@,@,@,@,@,@",param+2);
721 long idtopo=cid(param[2].argument[0]);
722 long idmai=cid(param[3].argument[0]);
723 double x=atof(param[4].argument[0].c_str());
724 double y=atof(param[5].argument[0].c_str());
725 double z=atof(param[6].argument[0].c_str());
726 int num=atoi(param[7].argument[0].c_str());
727 int numopt=atoi(param[8].argument[0].c_str());
728 MG_ELEMENT_MAILLAGE* elmai;
729 if (idmai>-1)
730 {
731 elmai=mgmai->get_mg_noeudid(idmai);
732 if (elmai==NULL) elmai=mgmai->get_mg_segmentid(idmai);
733 if (elmai==NULL) elmai=mgmai->get_mg_triangleid(idmai);
734 if (elmai==NULL) elmai=mgmai->get_mg_tetraid(idmai);
735 }
736 else elmai=NULL;
737 FEM_NOEUD* noeud;
738 if (elmai!=NULL) noeud=new FEM_NOEUD(id,elmai,x,y,z);
739 else
740 {
741 MG_ELEMENT_TOPOLOGIQUE* topo;
742 if (idtopo>-1)
743 {
744 topo=mggeo->get_mg_sommetid(idtopo);
745 if (topo==NULL) topo=mggeo->get_mg_areteid(idtopo);
746 if (topo==NULL) topo=mggeo->get_mg_faceid(idtopo);
747 if (topo==NULL) topo=mggeo->get_mg_volumeid(idtopo);
748 }
749 else topo=NULL;
750 noeud=new FEM_NOEUD(id,topo,x,y,z);
751 }
752 noeud->change_numero(num);
753 noeud->change_numero_opt(numopt);
754 femmai->ajouter_fem_noeud(noeud);
755 }
756 if (entite=="SEGMENT")
757 {
758 parse.decode(data.c_str(),"@,@,@,@",param+2);
759 long idtopo=cid(param[2].argument[0]);
760 long idn1=cid(param[3].argument[0]);
761 long idn2=cid(param[4].argument[0]);
762 int ori=atoi(param[5].argument[0].c_str());
763 MG_NOEUD* noeud1=mgmai->get_mg_noeudid(idn1);
764 MG_NOEUD* noeud2=mgmai->get_mg_noeudid(idn2);
765 MG_ELEMENT_TOPOLOGIQUE* topo;
766 if (idtopo>-1)
767 {
768 topo=mggeo->get_mg_areteid(idtopo);
769 if (topo==NULL) topo=mggeo->get_mg_faceid(idtopo);
770 if (topo==NULL) topo=mggeo->get_mg_volumeid(idtopo);
771 }
772 else topo=NULL;
773 MG_SEGMENT* seg=new MG_SEGMENT(id,topo,noeud1,noeud2,ori);
774 mgmai->ajouter_mg_segment(seg);
775 }
776 if (entite=="FEM_SEGMENT2")
777 {
778 parse.decode(data.c_str(),"@,@,@,@",param+2);
779 long idmai=cid(param[3].argument[0]);
780 long idn1=cid(param[4].argument[0]);
781 long idn2=cid(param[5].argument[0]);
782 FEM_NOEUD* tab[2];
783 tab[0]=femmai->get_fem_noeudid(idn1);
784 tab[1]=femmai->get_fem_noeudid(idn2);
785 MG_ELEMENT_MAILLAGE* elmai;
786 if (idmai>-1)
787 elmai=mgmai->get_mg_segmentid(idmai);
788 else elmai=NULL;
789 FEM_SEGMENT2* seg=new FEM_SEGMENT2(id,elmai,tab);
790 femmai->ajouter_fem_segment(seg);
791 }
792 if (entite=="FEM_SEGMENT3")
793 {
794 parse.decode(data.c_str(),"@,@,@,@,@",param+2);
795 long idmai=cid(param[3].argument[0]);
796 long idn1=cid(param[4].argument[0]);
797 long idn2=cid(param[5].argument[0]);
798 long idn3=cid(param[6].argument[0]);
799 FEM_NOEUD* tab[3];
800 tab[0]=femmai->get_fem_noeudid(idn1);
801 tab[1]=femmai->get_fem_noeudid(idn2);
802 tab[2]=femmai->get_fem_noeudid(idn3);
803 MG_ELEMENT_MAILLAGE* elmai;
804 if (idmai>-1)
805 elmai=mgmai->get_mg_segmentid(idmai);
806 else elmai=NULL;
807 FEM_SEGMENT3* seg=new FEM_SEGMENT3(id,elmai,tab);
808 femmai->ajouter_fem_segment(seg);
809 }
810 if (entite=="TRIANGLE")
811 {
812 parse.decode(data.c_str(),"@,@,@,@,@",param+2);
813 long idtopo=cid(param[2].argument[0]);
814 long idn1=cid(param[3].argument[0]);
815 long idn2=cid(param[4].argument[0]);
816 long idn3=cid(param[5].argument[0]);
817 int ori=atoi(param[6].argument[0].c_str());
818 MG_NOEUD* noeud1=mgmai->get_mg_noeudid(idn1);
819 MG_NOEUD* noeud2=mgmai->get_mg_noeudid(idn2);
820 MG_NOEUD* noeud3=mgmai->get_mg_noeudid(idn3);
821 MG_ELEMENT_TOPOLOGIQUE* topo;
822 if (idtopo>-1)
823 {
824 topo=mggeo->get_mg_faceid(idtopo);
825 if (topo==NULL) topo=mggeo->get_mg_volumeid(idtopo);
826 }
827 else topo=NULL;
828 mgmai->ajouter_mg_triangle(topo,noeud1,noeud2,noeud3,ori,id);
829 }
830 if (entite=="FEM_TRIANGLE3")
831 {
832 parse.decode(data.c_str(),"@,@,@,@,@",param+2);
833 long idmai=cid(param[3].argument[0]);
834 long idn1=cid(param[4].argument[0]);
835 long idn2=cid(param[5].argument[0]);
836 long idn3=cid(param[6].argument[0]);
837 FEM_NOEUD* tab[3];
838 tab[0]=femmai->get_fem_noeudid(idn1);
839 tab[1]=femmai->get_fem_noeudid(idn2);
840 tab[2]=femmai->get_fem_noeudid(idn3);
841 MG_ELEMENT_MAILLAGE* elmai;
842 if (idmai>-1)
843 elmai=mgmai->get_mg_triangleid(idmai);
844 else elmai=NULL;
845 FEM_TRIANGLE3* tri=new FEM_TRIANGLE3(id,elmai,tab);
846 femmai->ajouter_fem_triangle(tri);
847 }
848 if (entite=="FEM_TRIANGLE6")
849 {
850 parse.decode(data.c_str(),"@,@,@,@,@,@,@,@",param+2);
851 long idmai=cid(param[3].argument[0]);
852 long idn1=cid(param[4].argument[0]);
853 long idn2=cid(param[5].argument[0]);
854 long idn3=cid(param[6].argument[0]);
855 long idn4=cid(param[7].argument[0]);
856 long idn5=cid(param[8].argument[0]);
857 long idn6=cid(param[9].argument[0]);
858 FEM_NOEUD* tab[6];
859 tab[0]=femmai->get_fem_noeudid(idn1);
860 tab[1]=femmai->get_fem_noeudid(idn2);
861 tab[2]=femmai->get_fem_noeudid(idn3);
862 tab[3]=femmai->get_fem_noeudid(idn4);
863 tab[4]=femmai->get_fem_noeudid(idn5);
864 tab[5]=femmai->get_fem_noeudid(idn6);
865 MG_ELEMENT_MAILLAGE* elmai;
866 if (idmai>-1)
867 elmai=mgmai->get_mg_triangleid(idmai);
868 else elmai=NULL;
869 FEM_TRIANGLE6* tri=new FEM_TRIANGLE6(id,elmai,tab);
870 femmai->ajouter_fem_triangle(tri);
871 }
872 if (entite=="TETRAEDRE")
873 {
874 parse.decode(data.c_str(),"@,@,@,@,@,@",param+2);
875 long idtopo=cid(param[2].argument[0]);
876 long idn1=cid(param[3].argument[0]);
877 long idn2=cid(param[4].argument[0]);
878 long idn3=cid(param[5].argument[0]);
879 long idn4=cid(param[6].argument[0]);
880 int ori=atoi(param[7].argument[0].c_str());
881 MG_NOEUD* noeud1=mgmai->get_mg_noeudid(idn1);
882 MG_NOEUD* noeud2=mgmai->get_mg_noeudid(idn2);
883 MG_NOEUD* noeud3=mgmai->get_mg_noeudid(idn3);
884 MG_NOEUD* noeud4=mgmai->get_mg_noeudid(idn4);
885 MG_ELEMENT_TOPOLOGIQUE* topo;
886 if (idtopo>-1) topo=mggeo->get_mg_volumeid(idtopo);
887 else topo=NULL;
888 if (noeud1&&noeud2&&noeud3&&noeud4) mgmai->ajouter_mg_tetra(topo,noeud1,noeud2,noeud3,noeud4,ori,id);
889 }
890 if (entite=="FEM_TETRA4")
891 {
892 parse.decode(data.c_str(),"@,@,@,@,@,@",param+2);
893 long idmai=cid(param[3].argument[0]);
894 long idn1=cid(param[4].argument[0]);
895 long idn2=cid(param[5].argument[0]);
896 long idn3=cid(param[6].argument[0]);
897 long idn4=cid(param[7].argument[0]);
898 FEM_NOEUD* tab[4];
899 tab[0]=femmai->get_fem_noeudid(idn1);
900 tab[1]=femmai->get_fem_noeudid(idn2);
901 tab[2]=femmai->get_fem_noeudid(idn3);
902 tab[3]=femmai->get_fem_noeudid(idn4);
903 MG_ELEMENT_MAILLAGE* elmai;
904 if (idmai>-1)
905 elmai=mgmai->get_mg_tetraid(idmai);
906 else elmai=NULL;
907 FEM_TETRA4* tet=new FEM_TETRA4(id,elmai,tab);
908 femmai->ajouter_fem_tetra(tet);
909 }
910 if (entite=="FEM_TETRA10")
911 {
912 parse.decode(data.c_str(),"@,@,@,@,@,@,@,@,@,@,@,@",param+2);
913 long idmai=cid(param[3].argument[0]);
914 long idn1=cid(param[4].argument[0]);
915 long idn2=cid(param[5].argument[0]);
916 long idn3=cid(param[6].argument[0]);
917 long idn4=cid(param[7].argument[0]);
918 long idn5=cid(param[8].argument[0]);
919 long idn6=cid(param[9].argument[0]);
920 long idn7=cid(param[10].argument[0]);
921 long idn8=cid(param[11].argument[0]);
922 long idn9=cid(param[12].argument[0]);
923 long idn10=cid(param[13].argument[0]);
924 FEM_NOEUD* tab[10];
925 tab[0]=femmai->get_fem_noeudid(idn1);
926 tab[1]=femmai->get_fem_noeudid(idn2);
927 tab[2]=femmai->get_fem_noeudid(idn3);
928 tab[3]=femmai->get_fem_noeudid(idn4);
929 tab[4]=femmai->get_fem_noeudid(idn5);
930 tab[5]=femmai->get_fem_noeudid(idn6);
931 tab[6]=femmai->get_fem_noeudid(idn7);
932 tab[7]=femmai->get_fem_noeudid(idn8);
933 tab[8]=femmai->get_fem_noeudid(idn9);
934 tab[9]=femmai->get_fem_noeudid(idn10);
935 MG_ELEMENT_MAILLAGE* elmai;
936 if (idmai>-1)
937 elmai=mgmai->get_mg_tetraid(idmai);
938 else elmai=NULL;
939 FEM_TETRA10* tet=new FEM_TETRA10(id,elmai,tab);
940 femmai->ajouter_fem_tetra(tet);
941 }
942 if (entite=="SOLUTION")
943 {
944 parse.decode(data.c_str(),"@,@,@,@,(&)",param+2);
945 std::string nomsol=param[2].argument[0];
946 long idmai=cid(param[3].argument[0]);
947 int nb=atoi(param[4].argument[0].c_str());
948 std::string chemin=param[5].argument[0];
949 MG_MAILLAGE* mai=get_mg_maillageid(idmai);
950 MG_SOLUTION* sol=new MG_SOLUTION(id,mai,nb,(char*)chemin.c_str(),SOL_EXISTANTE,nomsol);
951 ajouter_mg_solution(sol);
952 for (int i=0;i<nb;i++)
953 sol->change_legende(i,param[6].argument[i]);
954 }
955 if (entite=="FEM_SOLUTION")
956 {
957 parse.decode(data.c_str(),"@,@,@,@,(&)",param+2);
958 std::string nomsol=param[2].argument[0];
959 long idmai=cid(param[3].argument[0]);
960 int nb=atoi(param[4].argument[0].c_str());
961 std::string chemin=param[5].argument[0];
962 FEM_MAILLAGE* mai=get_fem_maillageid(idmai);
963 FEM_SOLUTION* sol=new FEM_SOLUTION(id,mai,nb,(char*)chemin.c_str(),SOL_EXISTANTE,nomsol);
964 ajouter_fem_solution(sol);
965 for (int i=0;i<nb;i++)
966 sol->change_legende(i,param[6].argument[i]);
967 }
968 #ifdef WINDOWS_VERSION
969 if (entite=="CAD4FE_MCSEGMENT")
970 {
971 parse.decode(data.c_str(),"@,@,@",param+2);
972 long idtopo=cid(param[2].argument[0]);
973 long idn1=cid(param[3].argument[0]);
974 long idn2=cid(param[4].argument[0]);
975 CAD4FE::MCNode* noeud1=(CAD4FE::MCNode*)mgmai->get_mg_noeudid(idn1);
976 CAD4FE::MCNode* noeud2=(CAD4FE::MCNode*)mgmai->get_mg_noeudid(idn2);
977 MG_ELEMENT_TOPOLOGIQUE* topo;
978 if (idtopo>-1)
979 {
980 topo=mggeo->get_mg_areteid(idtopo);
981 if (topo==NULL) topo=mggeo->get_mg_faceid(idtopo);
982 if (topo==NULL) topo=mggeo->get_mg_volumeid(idtopo);
983 }
984 else topo=NULL;
985 CAD4FE::MCSegment * seg = new CAD4FE::MCSegment(id,topo,noeud1,noeud2);
986 mgmai->ajouter_mg_segment(seg);
987 }
988 if (entite=="CAD4FE_MCNODE")
989 {
990 parse.decode(data.c_str(),"@,@,@,@,@",param+2);
991 long idRefTopo=cid(param[2].argument[0]);
992 long idMCTopo=cid(param[3].argument[0]);
993 double x=atof(param[4].argument[0].c_str());
994 double y=atof(param[5].argument[0].c_str());
995 double z=atof(param[6].argument[0].c_str());
996 MG_ELEMENT_TOPOLOGIQUE* refTopo=NULL;
997 if (refTopo==NULL) refTopo=mggeo->get_mg_sommetid(idRefTopo);
998 if (refTopo==NULL) refTopo=mggeo->get_mg_areteid(idRefTopo);
999 if (refTopo==NULL) refTopo=mggeo->get_mg_faceid(idRefTopo);
1000 if (refTopo==NULL) refTopo=mggeo->get_mg_volumeid(idRefTopo);
1001 MG_ELEMENT_TOPOLOGIQUE* mcTopo=NULL;
1002 if (mcTopo==NULL) mcTopo=mggeo->get_mg_sommetid(idMCTopo);
1003 if (mcTopo==NULL) mcTopo=mggeo->get_mg_areteid(idMCTopo);
1004 if (mcTopo==NULL) mcTopo=mggeo->get_mg_faceid(idMCTopo);
1005 if (mcTopo==NULL) mcTopo=mggeo->get_mg_volumeid(idMCTopo);
1006
1007 if (mcTopo->get_dimension()==0)
1008 {
1009 if (updatedMergedRefVertices == false)
1010 {
1011 for (std::multimap<CAD4FE::MCVertex * , unsigned long>::iterator itMergedRefVertices = mapMergedRefVertices.begin();
1012 itMergedRefVertices != mapMergedRefVertices.end();
1013 itMergedRefVertices++)
1014 {
1015 CAD4FE::MCVertex * v = itMergedRefVertices->first;
1016 MG_SOMMET * refV = NULL;
1017 unsigned long id = itMergedRefVertices->second;
1018 refV = (MG_SOMMET *) mggeo->get_mg_sommetid(id);
1019 v->MergeRefVertex(refV);
1020 }
1021
1022 updatedMergedRefVertices = true;
1023 }
1024 }
1025
1026 CAD4FE::MCNode* noeud=new CAD4FE::MCNode(id,mcTopo,refTopo,x,y,z);
1027 mgmai->ajouter_mg_noeud(noeud);
1028 }
1029 if (entite=="CAD4FE_MCTRIANGLE")
1030 {
1031 parse.decode(data.c_str(),"@,@,@,@",param+2);
1032 long idtopo=cid(param[2].argument[0]);
1033 long idn1=cid(param[3].argument[0]);
1034 long idn2=cid(param[4].argument[0]);
1035 long idn3=cid(param[5].argument[0]);
1036 CAD4FE::MCNode* noeud1=(CAD4FE::MCNode*)mgmai->get_mg_noeudid(idn1);
1037 CAD4FE::MCNode* noeud2=(CAD4FE::MCNode*)mgmai->get_mg_noeudid(idn2);
1038 CAD4FE::MCNode* noeud3=(CAD4FE::MCNode*)mgmai->get_mg_noeudid(idn3);
1039 CAD4FE::MCSegment* mgsegment[3];
1040 CAD4FE::MCNode *mgnoeud[3]={noeud1,noeud2,noeud3};
1041 // la topo. d'un MCTriangle est obligatoirement une MCFace
1042 CAD4FE::MCFace* mcFace=(CAD4FE::MCFace*)mggeo->get_mg_faceid(idtopo);
1043 for (int i=0;i<3;i++)
1044 {
1045 mgsegment[i]=(CAD4FE::MCSegment*)mgmai->get_mg_segment(mgnoeud[i]->get_id(),mgnoeud[(i+1)%3]->get_id());
1046 if (mgsegment[i]==NULL)
1047 {
1048 mgsegment[i]=new CAD4FE::MCSegment(mcFace,mgnoeud[i],mgnoeud[(i+1)%3]);
1049 mgmai->ajouter_mg_segment(mgsegment[i]);
1050 }
1051 }
1052 CAD4FE::M3D_MCTriangle *triangle = new CAD4FE::M3D_MCTriangle(id,mcFace,noeud1,noeud2,noeud3,mgsegment[0],mgsegment[1],mgsegment[2]);
1053 mgmai->ajouter_mg_triangle(triangle);
1054 }
1055 #endif
1056 }
1057 }
1058 while (param[0].argument[0]!="FIN");
1059 #ifdef WINDOWS_VERSION
1060 if (updatedMergedRefVertices == false)
1061 {
1062 for (std::multimap<CAD4FE::MCVertex * , unsigned long>::iterator itMergedRefVertices = mapMergedRefVertices.begin();
1063 itMergedRefVertices != mapMergedRefVertices.end();
1064 itMergedRefVertices++)
1065 {
1066 CAD4FE::MCVertex * v = itMergedRefVertices->first;
1067 MG_SOMMET * refV = NULL;
1068 unsigned long id = itMergedRefVertices->second;
1069 refV = (MG_SOMMET *) mggeo->get_mg_sommetid(id);
1070 v->MergeRefVertex(refV);
1071 }
1072
1073 updatedMergedRefVertices = true;
1074 }
1075
1076 #endif
1077 fclose(in);
1078 #ifdef BREP_SLD
1079 fonction->Fermer();
1080 #endif
1081 return 1;
1082 }
1083
1084
1085
1086