ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/acismesh/acis_charge.cpp
Revision: 1
Committed: Mon Jun 11 22:53:07 2007 UTC (17 years, 11 months ago)
File size: 18580 byte(s)
Log Message:

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     acis_charge.c Type:Func
4    
5     chargement d un modele ACIS
6    
7     Date de creation : Tue Nov 26 09:46:38 1996
8    
9     Derniere version : Tue Aug 5 13:51:04 1997
10    
11    
12    
13    
14    
15    
16    
17    
18     Vincent FRANCOIS
19    
20     *****************************************************************/
21    
22    
23    
24    
25    
26     /**************************/
27     /* include */
28     #include <stdio.h>
29     #include <string.h>
30     #include <stdlib.h>
31     #include "const.h"
32     #include "struct.h"
33     #include "memoire.h"
34     #include "prototype.h"
35    
36     /**************************/
37     /* variables globales */
38     extern struct s_acis *acis;
39     extern struct environnement env;
40    
41    
42    
43     /**************************/
44     /* programme principal */
45    
46     void acis_charge(void)
47     {
48     FILE *fic;
49     char mess[500],type_entite[100],c,string1[20],string2[20],string3[20];
50     int i,num=0,num2;
51     struct s_body *body;
52     struct s_attrib *attrib;
53     struct s_lump *lump;
54     struct s_shell *shell;
55     struct s_face *face;
56     struct s_loop *loop;
57     struct s_subshell *subshell;
58     struct s_wire *wire;
59     struct s_coedge *coedge;
60     struct s_edge *edge;
61     struct s_vertex *vertex;
62     struct s_cone *cone;
63     struct s_ellipse *ellipse;
64     struct s_pcurve *pcurve;
65     struct s_plane *plane;
66     struct s_point *point;
67     struct s_straight *straight;
68     struct s_transform *transform;
69     int n1,n2,n3,n4,n5,n6,n7;
70     float f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13;
71     char message[255];
72    
73     /* premiere etape construction des pointeurs */
74     fic=fopen(env.fich,"rt");
75     if (fic==NULL)
76     {
77     aff_text("\n");
78     aff_text("\n");
79     aff_text(ACIS_ERREUR);
80     aff_text("\n");
81     aff_text("\n");
82     abort();
83     }
84     while (num<100)
85     {
86     fgets(mess,500,fic);
87     sscanf(mess,"%d",&num);
88     }
89     sscanf(mess,"%d %d",&env.version,&num);
90     if (num==0)
91     {
92     while (feof(fic)==0)
93     {
94     fgets(mess,500,fic);
95     num++;
96     if ((mess[0]=='e') ||(mess[0]=='E'))
97     if ((mess[1]=='n') ||(mess[0]=='N'))
98     if ((mess[2]=='d') ||(mess[0]=='D'))
99     num--;
100     }
101     fclose(fic);
102     fic=fopen(env.fich,"rt");
103     num2=0;
104     while (num2<100)
105     {
106     fgets(mess,500,fic);
107     sscanf(mess,"%d",&num2);
108     }
109     }
110     sprintf(message,ACIS_LECTURE,env.version,env.fich);
111     aff_text(message);
112     sprintf(message,ACIS_LEC_RES,num);
113     aff_text(message);
114     acis->entity=(void **)calloc(num,sizeof(void *));
115     acis->type_entite=(text)calloc(num,sizeof(ligne));
116     acis->nb_entity=num;
117     for (i=0;i<acis->nb_entity;i++)
118     {
119     fgets(mess,500,fic);
120     sscanf(mess,"%s",type_entite);
121     num=strlen(type_entite);
122     if (num>6)
123     {
124     if (type_entite[num-1]=='b')
125     if (type_entite[num-2]=='i')
126     if (type_entite[num-3]=='r')
127     if (type_entite[num-4]=='t')
128     if (type_entite[num-5]=='t')
129     if (type_entite[num-6]=='a')
130     strcpy(type_entite,"attrib");
131     }
132     if (strcmp(type_entite,"body")==0)
133     {
134     NEW_ENTITE(body,body,acis->);
135     acis->entity[i]=(void *)body;
136     }
137     else if (strcmp(type_entite,"attrib")==0)
138     {
139     NEW_ENTITE(attrib,attrib,acis->);
140     acis->entity[i]=(void *)attrib;
141     }
142     else if (strcmp(type_entite,"lump")==0)
143     {
144     NEW_ENTITE(lump,lump,acis->);
145     acis->entity[i]=(void *)lump;
146     }
147     else if (strcmp(type_entite,"shell")==0)
148     {
149     NEW_ENTITE(shell,shell,acis->);
150     acis->entity[i]=(void *)shell;
151     }
152     else if (strcmp(type_entite,"face")==0)
153     {
154     NEW_ENTITE(face,face,acis->);
155     acis->entity[i]=(void *)face;
156     face->num_face=acis->nb_face-1;
157     }
158     else if (strcmp(type_entite,"loop")==0)
159     {
160     NEW_ENTITE(loop,loop,acis->);
161     acis->entity[i]=(void *)loop;
162     }
163     else if (strcmp(type_entite,"subshell")==0)
164     {
165     NEW_ENTITE(subshell,subshell,acis->);
166     acis->entity[i]=(void *)subshell;
167     }
168     else if (strcmp(type_entite,"wire")==0)
169     {
170     NEW_ENTITE(wire,wire,acis->);
171     acis->entity[i]=(void *)wire;
172     }
173     else if (strcmp(type_entite,"coedge")==0)
174     {
175     NEW_ENTITE(coedge,coedge,acis->);
176     acis->entity[i]=(void *)coedge;
177     }
178     else if (strcmp(type_entite,"edge")==0)
179     {
180     NEW_ENTITE(edge,edge,acis->);
181     acis->entity[i]=(void *)edge;
182     edge->num_edge=acis->nb_edge-1;
183     }
184     else if (strcmp(type_entite,"vertex")==0)
185     {
186     NEW_ENTITE(vertex,vertex,acis->);
187     acis->entity[i]=(void *)vertex;
188     }
189     else if (strcmp(type_entite,"cone-surface")==0)
190     {
191     NEW_ENTITE(cone,cone,acis->);
192     acis->entity[i]=(void *)cone;
193     }
194     else if (strcmp(type_entite,"ellipse-curve")==0)
195     {
196     NEW_ENTITE(ellipse,ellipse,acis->);
197     acis->entity[i]=(void *)ellipse;
198     }
199     else if (strcmp(type_entite,"pcurve")==0)
200     {
201     NEW_ENTITE(pcurve,pcurve,acis->);
202     acis->entity[i]=(void *)pcurve;
203     }
204     else if (strcmp(type_entite,"plane-surface")==0)
205     {
206     NEW_ENTITE(plane,plane,acis->);
207     acis->entity[i]=(void *)plane;
208     }
209     else if (strcmp(type_entite,"point")==0)
210     {
211     NEW_ENTITE(point,point,acis->);
212     acis->entity[i]=(void *)point;
213     }
214     else if (strcmp(type_entite,"straight-curve")==0)
215     {
216     NEW_ENTITE(straight,straight,acis->);
217     acis->entity[i]=(void *)straight;
218     }
219     else if (strcmp(type_entite,"transform")==0)
220     {
221     NEW_ENTITE(transform,transform,acis->);
222     acis->entity[i]=(void *)transform;
223     }
224    
225     else
226     {
227     if (i==0) i=(-1);
228     else
229     {
230     sprintf(message,ACIS_WARNING,type_entite,i);
231     aff_text(message);
232     }
233     }
234     }
235     fclose(fic);
236     /* deuxieme etape remplissage des structures */
237     fic=fopen(env.fich,"rt");
238     if (fic==NULL)
239     {
240     aff_text("\n");
241     aff_text("\n");
242     aff_text(ACIS_ERREUR);
243     aff_text("\n");
244     aff_text("\n");
245     abort();
246     }
247     while (num<100)
248     {
249     fgets(mess,500,fic);
250     sscanf(mess,"%d",&num);
251     }
252     for (i=0;i<acis->nb_entity;i++)
253     {
254     fgets(mess,500,fic);
255     for (num=0;num<(int)strlen(mess);num++)
256     if (mess[num]=='I') mess[num]=' ';
257     sscanf(mess,"%s",type_entite);
258     num=strlen(type_entite);
259     if (num>6)
260     {
261     if (type_entite[num-1]=='b')
262     if (type_entite[num-2]=='i')
263     if (type_entite[num-3]=='r')
264     if (type_entite[num-4]=='t')
265     if (type_entite[num-5]=='t')
266     if (type_entite[num-6]=='a')
267     strcpy(type_entite,"attrib");
268     }
269     acis->type_entite[i]=(ligne)calloc(20,sizeof(char));
270     strcpy(acis->type_entite[i],type_entite);
271     if (strcmp(type_entite,"body")==0)
272     {
273     sscanf(mess,"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
274     body=(struct s_body *)acis->entity[i];
275     if (n1!=-1) body->attrib=(struct s_attrib *)acis->entity[n1];
276     else body->attrib=NULL;
277     if (n2!=-1) body->first_lump=(struct s_lump *)acis->entity[n2];
278     else body->first_lump=NULL;
279     if (n3!=-1) body->first_wire=(struct s_wire *)acis->entity[n3];
280     else body->first_wire=NULL;
281     if (n4!=-1) body->transform=(struct s_transform *)acis->entity[n4];
282     else body->transform=NULL;
283     }
284     else if (strcmp(type_entite,"attrib")==0)
285     {
286     attrib->num=i;
287     }
288     else if (strcmp(type_entite,"lump")==0)
289     {
290     sscanf(mess,"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
291     lump=(struct s_lump *)acis->entity[i];
292     if (n1!=-1) lump->attrib=(struct s_attrib *)acis->entity[n1];
293     else lump->attrib=NULL;
294     if (n2!=-1) lump->next_lump=(struct s_lump *)acis->entity[n2];
295     else lump->next_lump=NULL;
296     if (n3!=-1) lump->first_shell=(struct s_shell *)acis->entity[n3];
297     else lump->first_shell=NULL;
298     if (n4!=-1) lump->body=(struct s_body *)acis->entity[n4];
299     else lump->body=NULL;
300     lump->num=i;
301     }
302     else if (strcmp(type_entite,"shell")==0)
303     {
304     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);
305     shell=(struct s_shell *)acis->entity[i];
306     if (n1!=-1) shell->attrib=(struct s_attrib *)acis->entity[n1];
307     else shell->attrib=NULL;
308     if (n2!=-1) shell->next_shell=(struct s_shell *)acis->entity[n2];
309     else shell->next_shell=NULL;
310     if (n3!=-1) shell->first_subshell=(struct s_subshell *)acis->entity[n3];
311     else shell->first_subshell=NULL;
312     if (n4!=-1) shell->first_face=(struct s_face *)acis->entity[n4];
313     else shell->first_face=NULL;
314     if (n5!=-1) shell->owning_lump=(struct s_lump *)acis->entity[n5];
315     else shell->owning_lump=NULL;
316     shell->num=i;
317     }
318     else if (strcmp(type_entite,"face")==0)
319     {
320     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);
321     face=(struct s_face *)acis->entity[i];
322     if (n1!=-1) face->attrib=(struct s_attrib *)acis->entity[n1];
323     else face->attrib=NULL;
324     if (n2!=-1) face->next_face=(struct s_face *)acis->entity[n2];
325     else face->next_face=NULL;
326     if (n3!=-1) face->first_loop=(struct s_loop *)acis->entity[n3];
327     else face->first_loop=NULL;
328     if (n4!=-1) face->owning_shell=(struct s_shell *)acis->entity[n4];
329     else face->owning_shell=NULL;
330     if (n5!=-1) face->owning_subshell=(struct s_subshell *)acis->entity[n5];
331     else face->owning_subshell=NULL;
332     face->surface=n6;
333     if (strcmp(string1,"forward")==0) face->sense=FORWARD; else face->sense=REVERSED;
334     if (strcmp(string2,"single")==0) face->simple=DOUBLE; else face->simple=DOUBLE;
335     if (strcmp(string3,"out")==0) face->ext=IS_OUT; else face->ext=IS_IN;
336     face->num=i;
337     face->rap_face=(int *)calloc(acis->nb_face,sizeof(int));
338     ERREUR_ALLOC(face->rap_face);
339     }
340     else if (strcmp(type_entite,"loop")==0)
341     {
342     sscanf(mess,"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
343     loop=(struct s_loop *)acis->entity[i];
344     if (n1!=-1) loop->attrib=(struct s_attrib *)acis->entity[n1];
345     else loop->attrib=NULL;
346     if (n2!=-1) loop->next_loop=(struct s_loop *)acis->entity[n2];
347     else loop->next_loop=NULL;
348     if (n3!=-1) loop->first_coedge=(struct s_coedge *)acis->entity[n3];
349     else loop->first_coedge=NULL;
350     if (n4!=-1) loop->owning_face=(struct s_face *)acis->entity[n4];
351     else loop->owning_face=NULL;
352     loop->num=i;
353     }
354     else if (strcmp(type_entite,"subshell")==0)
355     {
356     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);
357     subshell=(struct s_subshell *)acis->entity[i];
358     if (n1!=-1) subshell->attrib=(struct s_attrib *)acis->entity[n1];
359     else subshell->attrib=NULL;
360     if (n2!=-1) subshell->parent_subshell=(struct s_subshell *)acis->entity[n2];
361     else subshell->parent_subshell=NULL;
362     if (n3!=-1) subshell->next_subshell=(struct s_subshell *)acis->entity[n3];
363     else subshell->next_subshell=NULL;
364     if (n4!=-1) subshell->first_subshell=(struct s_subshell *)acis->entity[n4];
365     else subshell->first_subshell=NULL;
366     if (n5!=-1) subshell->first_face=(struct s_face *)acis->entity[n5];
367     else subshell->first_face=NULL;
368     if (n6!=-1) subshell->first_wire=(struct s_wire *)acis->entity[n6];
369     else subshell->first_wire=NULL;
370     subshell->num=i;
371     }
372     else if (strcmp(type_entite,"wire")==0)
373     {
374     sscanf(mess,"%s %c%d %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3,&c,&n4);
375     wire=(struct s_wire *)acis->entity[i];
376     if (n1!=-1) wire->attrib=(struct s_attrib *)acis->entity[n1];
377     else wire->attrib=NULL;
378     if (n2!=-1) wire->next_wire=(struct s_wire *)acis->entity[n2];
379     else wire->next_wire=NULL;
380     if (n3!=-1) wire->first_coedge=(struct s_coedge *)acis->entity[n3];
381     else wire->first_coedge=NULL;
382     if (n4!=-1) wire->owning=(void *)acis->entity[n1];
383     else wire->owning=NULL;
384     wire->num=i;
385     }
386     else if (strcmp(type_entite,"coedge")==0)
387     {
388     if (env.version<200)
389     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);
390     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);
391    
392     coedge=(struct s_coedge *)acis->entity[i];
393     if (n1!=-1) coedge->attrib=(struct s_attrib *)acis->entity[n1];
394     else coedge->attrib=NULL;
395     if (n2!=-1) coedge->next_coedge=(struct s_coedge *)acis->entity[n2];
396     else coedge->next_coedge=NULL;
397     if (n3!=-1) coedge->previous_coedge=(struct s_coedge *)acis->entity[n3];
398     else coedge->previous_coedge=NULL;
399     if (n4!=-1) coedge->partner_coedge=(struct s_coedge *)acis->entity[n4];
400     else coedge->partner_coedge=NULL;
401     if (n5!=-1) coedge->edge=(struct s_edge *)acis->entity[n5];
402     else coedge->edge=NULL;
403     if (env.version<200) coedge->sense=num;
404     else
405     if (strcmp(string1,"forward")==0) coedge->sense=FORWARD; else coedge->sense=REVERSED;
406     if (n6!=-1) coedge->owning_loop=(struct s_loop *)acis->entity[n6];
407     else coedge->owning_loop=NULL;
408     if (n7!=-1) coedge->pcurve=(struct s_pcurve *)acis->entity[n7];
409     else coedge->pcurve=NULL;
410     coedge->num=i;
411     }
412     else if (strcmp(type_entite,"edge")==0)
413     {
414     if (env.version<200)
415     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);
416     else if (env.version<500)
417     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);
418     else sscanf(mess,"%s %c%d %c%d %f %c%d %f %c%d %c%d %s",type_entite,&c,&n1,&c,&n2,&f1,&c,&n3,&f2,&c,&n4,&c,&n5,string1);
419     edge=(struct s_edge *)acis->entity[i];
420     if (n1!=-1) edge->attrib=(struct s_attrib *)acis->entity[n1];
421     else edge->attrib=NULL;
422     if (n2!=-1) edge->start_vertex=(struct s_vertex *)acis->entity[n2];
423     else edge->start_vertex=NULL;
424     if (n3!=-1) edge->end_vertex=(struct s_vertex *)acis->entity[n3];
425     else edge->end_vertex=NULL;
426     if (n4!=-1) edge->owning_coedge=(struct s_coedge *)acis->entity[n4];
427     else edge->owning_coedge=NULL;
428     edge->curve=n5;
429     if (env.version<200) edge->sense=num;
430     else
431     if (strcmp(string1,"forward")==0) edge->sense=FORWARD; else edge->sense=REVERSED;
432     edge->num=i;
433     NEW_POINTEUR(n6,edge,edge->start_vertex->);
434     edge->start_vertex->edge[n6]=edge;
435     NEW_POINTEUR(n6,edge,edge->end_vertex->);
436     edge->end_vertex->edge[n6]=edge;
437     edge->rap_edge=(int *)calloc(acis->nb_edge,sizeof(int));
438     ERREUR_ALLOC(edge->rap_edge);
439     }
440     else if (strcmp(type_entite,"vertex")==0)
441     {
442     sscanf(mess,"%s %c%d %c%d %c%d",type_entite,&c,&n1,&c,&n2,&c,&n3);
443     vertex=(struct s_vertex *)acis->entity[i];
444     if (n1!=-1) vertex->attrib=(struct s_attrib *)acis->entity[n1];
445     else vertex->attrib=NULL;
446     if (n2!=-1) vertex->owning_edge=(struct s_edge *)acis->entity[n2];
447     else vertex->owning_edge=NULL;
448     if (n3!=-1) vertex->point=(struct s_point *)acis->entity[n3];
449     else vertex->point=NULL;
450     vertex->num=i;
451     }
452     else if (strcmp(type_entite,"cone-surface")==0)
453     {
454     sscanf(mess,"%s %c%d %f %f %f %f %f %f %f %f %f %f %f %f",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9,&f10,&f11,&f12);
455     cone=(struct s_cone *)acis->entity[i];
456     if (n1!=-1) cone->attrib=(struct s_attrib *)acis->entity[n1];
457     else cone->attrib=NULL;
458     cone->center[0]=f1;
459     cone->center[1]=f2;
460     cone->center[2]=f3;
461     cone->normal[0]=f4;
462     cone->normal[1]=f5;
463     cone->normal[2]=f6;
464     cone->major[0]=f7;
465     cone->major[1]=f8;
466     cone->major[2]=f9;
467     cone->ratio=f10;
468     cone->cosalph=f12;
469     cone->sinalph=f11;
470     //cone->u_rev=n2;
471     cone->num=i;
472     }
473     else if (strcmp(type_entite,"ellipse-curve")==0)
474     {
475     sscanf(mess,"%s %c%d %f %f %f %f %f %f %f %f %f %f",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9,&f10);
476     ellipse=(struct s_ellipse *)acis->entity[i];
477     if (n1!=-1) ellipse->attrib=(struct s_attrib *)acis->entity[n1];
478     else ellipse->attrib=NULL;
479     ellipse->center[0]=f1;
480     ellipse->center[1]=f2;
481     ellipse->center[2]=f3;
482     ellipse->normal[0]=f4;
483     ellipse->normal[1]=f5;
484     ellipse->normal[2]=f6;
485     ellipse->major[0]=f7;
486     ellipse->major[1]=f8;
487     ellipse->major[2]=f9;
488     ellipse->ratio=f10;
489     ellipse->num=i;
490     }
491     else if (strcmp(type_entite,"pcurve")==0)
492     {
493     pcurve->num=i;
494     }
495     else if (strcmp(type_entite,"plane-surface")==0)
496     {
497     sscanf(mess,"%s %c%d %f %f %f %f %f %f %f %f %f",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9);
498     plane=(struct s_plane *)acis->entity[i];
499     if (n1!=-1) plane->attrib=(struct s_attrib *)acis->entity[n1];
500     else plane->attrib=NULL;
501     plane->root[0]=f1;
502     plane->root[1]=f2;
503     plane->root[2]=f3;
504     plane->normal[0]=f4;
505     plane->normal[1]=f5;
506     plane->normal[2]=f6;
507     plane->num=i;
508     plane->u_deriv[0]=f7;
509     plane->u_deriv[1]=f8;
510     plane->u_deriv[2]=f9;
511     // plane->v_rev=n2;
512     }
513     else if (strcmp(type_entite,"point")==0)
514     {
515     sscanf(mess,"%s %c%d %f %f %f",type_entite,&c,&n1,&f1,&f2,&f3);
516     point=(struct s_point *)acis->entity[i];
517     if (n1!=-1) point->attrib=(struct s_attrib *)acis->entity[n1];
518     else point->attrib=NULL;
519     point->coord[0]=f1;
520     point->coord[1]=f2;
521     point->coord[2]=f3;
522     point->num=i;
523     }
524     else if (strcmp(type_entite,"straight-curve")==0)
525     {
526     sscanf(mess,"%s %c%d %f %f %f %f %f %f ",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6);
527     straight=(struct s_straight *)acis->entity[i];
528     if (n1!=-1) straight->attrib=(struct s_attrib *)acis->entity[n1];
529     else straight->attrib=NULL;
530     straight->root[0]=f1;
531     straight->root[1]=f2;
532     straight->root[2]=f3;
533     straight->dir[0]=f4;
534     straight->dir[1]=f5;
535     straight->dir[2]=f6;
536     straight->num=i;
537     }
538     else if (strcmp(type_entite,"transform")==0)
539     {
540     sscanf(mess,"%s %c%d %f %f %f %f %f %f %f %f %f %f %f %f %f %d %d %d",type_entite,&c,&n1,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9,&f10,&f11,&f12,&f13,&n2,&n3,&n4);
541     transform=(struct s_transform *)acis->entity[i];
542     if (n1!=-1) transform->attrib=(struct s_attrib *)acis->entity[n1];
543     else transform->attrib=NULL;
544     transform->rotation[0][0]=f1;
545     transform->rotation[0][1]=f2;
546     transform->rotation[0][2]=f3;
547     transform->rotation[1][0]=f4;
548     transform->rotation[1][1]=f5;
549     transform->rotation[1][2]=f6;
550     transform->rotation[2][0]=f7;
551     transform->rotation[2][1]=f8;
552     transform->rotation[2][2]=f9;
553     transform->trans[0]=f10;
554     transform->trans[1]=f11;
555     transform->trans[2]=f12;
556     transform->scaling_factor=f13;
557     transform->rotate=n2;
558     transform->reflection=n3;
559     transform->shear=n4;
560     transform->num=i;
561     }
562     else if (i==0) i=(-1);
563     }
564     }