ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/fichier/src/mg_file.cpp
Revision: 136
Committed: Mon Aug 4 18:02:19 2008 UTC (16 years, 9 months ago) by francois
Original Path: magic/lib/fichier/fichier/src/mg_file.cpp
File size: 55785 byte(s)
Error occurred while calculating annotation data.
Log Message:
Correction de petit bug dans l'importation OpenCascade

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