40 template<
class Y,
class X>
void libere(Y& y)
42 for (
long i=0;i<y.get_nb();i++)
81 if (
nom!=NULL)
delete []
nom;
99 FILE* fic=fopen(
nom,
"rt");
109 char*
res=fgets(mess,500,fic);
110 sscanf(mess,
"%d",&num);
112 sscanf(mess,
"%d %d",&version,&num);
113 unsigned long ident=0;
116 char type_entite[30];
117 char*
res=fgets(mess,500,fic);
118 sscanf(mess,
"%s",type_entite);
119 num=strlen(type_entite);
123 if (type_entite[num-1]==
'b')
124 if (type_entite[num-2]==
'i')
125 if (type_entite[num-3]==
'r')
126 if (type_entite[num-4]==
't')
127 if (type_entite[num-5]==
't')
128 if (type_entite[num-6]==
'a')
129 strcpy(type_entite,
"attrib");
131 if (strcmp(type_entite,
"body")==0)
136 else if (strcmp(type_entite,
"attrib")==0)
141 else if (strcmp(type_entite,
"lump")==0)
146 else if (strcmp(type_entite,
"shell")==0)
151 else if (strcmp(type_entite,
"face")==0)
156 else if (strcmp(type_entite,
"loop")==0)
161 else if (strcmp(type_entite,
"subshell")==0)
166 else if (strcmp(type_entite,
"wire")==0)
171 else if (strcmp(type_entite,
"coedge")==0)
176 else if (strcmp(type_entite,
"edge")==0)
181 else if (strcmp(type_entite,
"vertex")==0)
186 else if (strcmp(type_entite,
"cone-surface")==0)
192 else if (strcmp(type_entite,
"ellipse-curve")==0)
198 else if (strcmp(type_entite,
"plane-surface")==0)
204 else if (strcmp(type_entite,
"point")==0)
209 else if (strcmp(type_entite,
"straight-curve")==0)
215 else if (strcmp(type_entite,
"transform")==0)
221 else if (ident==0) commentaire=1;
226 if (commentaire==0) ident++;
237 char*
res=fgets(mess,500,fic);
238 sscanf(mess,
"%d",&num);
240 sscanf(mess,
"%d %d",&version,&num);
245 char type_entite[30];
246 char*
res=fgets(mess,500,fic);
248 for (num=0;num<(int)strlen(mess);num++)
249 if (mess[num]==
'I') mess[num]=
' ';
250 sscanf(mess,
"%s",type_entite);
251 num=strlen(type_entite);
254 if (type_entite[num-1]==
'b')
255 if (type_entite[num-2]==
'i')
256 if (type_entite[num-3]==
'r')
257 if (type_entite[num-4]==
't')
258 if (type_entite[num-5]==
't')
259 if (type_entite[num-6]==
'a')
260 strcpy(type_entite,
"attrib");
262 if (strcmp(type_entite,
"body")==0)
266 sscanf(mess,
"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
277 else if (strcmp(type_entite,
"attrib")==0)
280 else if (strcmp(type_entite,
"lump")==0)
284 sscanf(mess,
"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
293 else lump->
body=NULL;
295 else if (strcmp(type_entite,
"shell")==0)
299 sscanf(mess,
"%s %c%d %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4,&c,&n5);
312 else if (strcmp(type_entite,
"face")==0)
314 int n1,n2,n3,n4,n5,n6;
319 sscanf(mess,
"%s %c%d %c%d %c%d %c%d %c%d %c%d %s %s %s",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4,&c,&n5,&c,&n6,string1,string2,string3);
340 else if (strcmp(type_entite,
"loop")==0)
344 sscanf(mess,
"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
355 else if (strcmp(type_entite,
"subshell")==0)
357 int n1,n2,n3,n4,n5,n6;
359 sscanf(mess,
"%s %c%d %c%d %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4,&c,&n5,&c,&n6);
362 else subshell->
attrib=NULL;
374 else if (strcmp(type_entite,
"wire")==0)
378 sscanf(mess,
"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
389 else if (strcmp(type_entite,
"coedge")==0)
391 int n1,n2,n3,n4,n5,n6,n7;
396 sscanf(mess,
"%s %c%d %c%d %c%d %c%d %c%d %d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4,&c,&n5,&num,&c,&n6,&c,&n7);
397 else sscanf(mess,
"%s %c%d %c%d %c%d %c%d %c%d %s %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4,&c,&n5,string1,&c,&n6,&c,&n7);
409 else coedge->
edge=NULL;
410 if (version<200) coedge->
sense=-2*num+1;
412 if (strcmp(string1,
"forward")==0) coedge->
sense=
FORWARD;
419 else if (strcmp(type_entite,
"edge")==0)
427 sscanf(mess,
"%s %c%d %c%d %c%d %c%d %c%d %d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4,&c,&n5,&num);
428 else if (version<500)
429 sscanf(mess,
"%s %c%d %c%d %c%d %c%d %c%d %s",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4,&c,&n5,string1);
430 else sscanf(mess,
"%s %c%d %c%d %lf %c%d %lf %c%d %c%d %s",type_entite,&c,&n1,&c,&n2,&f1,&c,&n3,&f2,&c,&n4,&c,&n5,string1);
441 else edge->
curve=NULL;
443 if (num==0) edge->
sense=1;
449 else if (strcmp(type_entite,
"vertex")==0)
453 sscanf(mess,
"%s %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3);
460 else vertex->
point=NULL;
462 else if (strcmp(type_entite,
"cone-surface")==0)
465 double f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12;
467 sscanf(mess,
"%s %c%d %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9,&f10,&f11,&f12);
485 else if (strcmp(type_entite,
"ellipse-curve")==0)
488 double f1,f2,f3,f4,f5,f6,f7,f8,f9,f10;
490 sscanf(mess,
"%s %c%d %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9,&f10);
493 else ellipse->
attrib=NULL;
500 ellipse->
major[0]=f7;
501 ellipse->
major[1]=f8;
502 ellipse->
major[2]=f9;
506 else if (strcmp(type_entite,
"pcurve")==0)
509 else if (strcmp(type_entite,
"plane-surface")==0)
512 double f1,f2,f3,f4,f5,f6,f7,f8,f9;
514 sscanf(mess,
"%s %c%d %lf %lf %lf %lf %lf %lf %lf %lf %lf",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9);
529 else if (strcmp(type_entite,
"point")==0)
534 sscanf(mess,
"%s %c%d %lf %lf %lf",type_entite,&c,&n1,&f1,&f2,&f3);
542 else if (strcmp(type_entite,
"straight-curve")==0)
545 double f1,f2,f3,f4,f5,f6;
547 sscanf(mess,
"%s %c%d %lf %lf %lf %lf %lf %lf ",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6);
550 else straight->
attrib=NULL;
551 straight->
root[0]=f1;
552 straight->
root[1]=f2;
553 straight->
root[2]=f3;
558 else if (strcmp(type_entite,
"transform")==0)
561 double f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13;
563 sscanf(mess,
"%s %c%d %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %d %d %d",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9,&f10,&f11,&f12,&f13,&n2,&n3,&n4);
566 else transform->
attrib=NULL;
576 transform->
trans[0]=f10;
577 transform->
trans[1]=f11;
578 transform->
trans[2]=f12;
584 else if (ident==0) commentaire=1;
585 if (commentaire==0) ident++;