1 /* --------------------------------------------------------------------  */
2 /*                          CALCULIX                                     */
3 /*                   - GRAPHICAL INTERFACE -                             */
4 /*                                                                       */
5 /*     A 3-dimensional pre- and post-processor for finite elements       */
6 /*              Copyright (C) 1996 Klaus Wittig                          */
7 /*                                                                       */
8 /*     This program is free software; you can redistribute it and/or     */
9 /*     modify it under the terms of the GNU General Public License as    */
10 /*     published by the Free Software Foundation; version 2 of           */
11 /*     the License.                                                      */
12 /*                                                                       */
13 /*     This program is distributed in the hope that it will be useful,   */
14 /*     but WITHOUT ANY WARRANTY; without even the implied warranty of    */
15 /*     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the      */
16 /*     GNU General Public License for more details.                      */
17 /*                                                                       */
18 /*     You should have received a copy of the GNU General Public License */
19 /*     along with this program; if not, write to the Free Software       */
20 /*     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.         */
21 /* --------------------------------------------------------------------  */
22 
23 /* TO DO
24 */
25 #include <cgx.h>
26 
27 #define TEST 0
28 
29 
30 extern Entitycol *entitycol;                     /* predefined colors of entities */
31 
32 extern int   basCol[3];                        /* color indexes due to basic colormap: 0=bl. 1=w 2=gy */
33 extern int   foregrndcol, backgrndcol;          /* default fore- and background color */
34 extern double foregrndcol_rgb[4];
35 extern double backgrndcol_rgb[4];
36 
37 extern char  datin[MAX_LINE_LENGTH];         /* Input-data-file */
38 extern char  buffer[MAX_LINE_LENGTH];
39 extern int   offset, maxIndex;                        /* offset+steps-1 = maxIndex */
40 extern int   width_ini, height_ini; /* Grafig-Fensterbreite/hoehe */
41 extern int   width_menu, height_menu;
42 extern int   w0, w1, w_index, w_rgb, activWindow;
43 extern int   width_w0, height_w0;
44 extern int   width_w1, height_w1;
45 extern int   MouseMode;                                   /* status maustasten */
46 extern double dtx, dty, dtz, drx, dry, drz, ds;                 /* Verschiebungen */
47 extern double anim_faktor;                            /* Scalierung der Amplitude */
48 extern char  drawMode;               /* protokoliert drawFunktion (Load=1,Light=2,Animate=3,preprocessor=4, vector=5)*/
49 extern   double lmodel_twoside[1];
50 extern GLint   gl_max_eval_order;                         /* max order of NURBS */
51 extern GLdouble R[4][4];                                   /* Rotationsmatrix */
52 extern char  surfFlag;                /* zeichne nur Oberflaechenelemente (1), sonst (0)*/
53 extern char  modelEdgeFlag;                /* zeichne mit Modell-Ecken (1), sonst (0)*/
54 extern char  frameFlag;                   /* mit (1) oder ohne Rahmen um das Grafikfenster */
55 extern char  captionFlag;                   /* mit (1) oder ohne filename im Menufenster */
56 extern char  textFlag;                   /* mit (1) oder ohne text im Menufenster */
57 extern char  printFlag;                     /* printf 1:on 0:off */
58 extern char  frameFlag;               /* mit (1) oder ohne Rahmen um das Grafigfenster */
59 extern char  scalaFlag;                 /* mit (1) oder ohne scala und wertetexte */
60 extern char  addDispFlag;                    /* 0: original node-coordinates, 1: node-coordinates+displacements */
61 extern double dx ,dy;                                      /* Mauskoordinaten */
62 extern int   steps;                          /* Schrittweite der Farbscala */
63 extern double gtol;
64 extern int     ddiv;
65 extern double     dbias;
66 extern char  picture_text[MAX_LINE_LENGTH], datin[MAX_LINE_LENGTH];
67 extern double v_scale;                                    /* scaling-factor for the vectors in the vector-plot */
68 
69 extern char  delPntFlag;                    /* 1: deleted points exists */
70 extern char  delLineFlag;                   /* 1: deleted lines exists */
71 extern char  delLcmbFlag;                   /* 1: deleted lcmbs exists */
72 extern char  delSurfFlag;                   /* 1: deleted surfs exists */
73 extern char  delBodyFlag;                   /* 1: deleted bodys exists */
74 extern char  delNursFlag;
75 extern char  delSetFlag;                  /* 1: deleted sets exists */
76 extern char  writeCFDflag;                /* 1: write cfd-files for duns during meshing */
77 extern char  movieFlag;                     /* >0: save sequence of gif pictures */
78 extern char  illumResultFlag;              /* results with illumination */
79 
80 extern int     elemMat[MAX_MATERIALS];      /*  Material Numbers, Number of Materials stored in elemMat[0]  */
81 
82 extern double     *colNr;
83 #define  GLCOLOR   glTexCoord1d
84 
85 
86 extern Scale     scale[1];
87 extern Elements  *e_enqire;
88 extern Summen    anz[1];
89 extern Edges     *edge;
90 extern Nodes     *node;
91 extern Datasets *lcase;
92 extern Faces     *face;
93 extern Texts     *ntext;
94 
95 extern Meshp meshp;
96 
97 extern Alias     *alias;
98 extern Sets      *set;
99 extern Psets     *pset;
100 extern Points    *point;
101 extern Lines     *line;
102 extern Lcmb      *lcmb;
103 extern Gsur      *surf;
104 extern Gbod      *body;
105 extern Nurbl     *nurbl;
106 extern Nurbs     *nurbs;
107 extern SumGeo    anzGeo[1];
108 extern SumAsci   sumAsci[1];
109 
110 extern int  cur_entity;                                       /* aktive entity (component) */
111 extern int  cur_lc;
112 extern void       *glut_font[];  /* glut fonts */
113 extern int       pixPerCharx[];
114 extern int       legend_font;                         /* active font for the legend */
115 extern int       draw_font;                         /* active font for the annotation of entities */
116 extern int       menu_font;                         /* active font for the menu */
117 
118 
119 /* additional entities */
120 extern OpenSets   openSets[1];
121 extern SpecialSet specialset[1];
122 
123 
124 int current_nurbs;
NurbsErrorCallback(GLenum which)125 static void NurbsErrorCallback(GLenum which)
126 {
127   printf(" GluNURBS: error occured (%d):\n", which);
128   if(current_nurbs>-1)
129   {
130     printf("    %s in nurbs:%s see set:%s\n", gluErrorString(which), nurbs[current_nurbs].name,specialset->bnur);
131     pre_seta(specialset->bnur,"S",nurbs[current_nurbs].name);
132   }
133   else
134   {
135     printf("    %s in nurl:%s see set:%s\n", gluErrorString(which), nurbs[-current_nurbs-1].name,specialset->bnur);
136     pre_seta(specialset->bnur,"L",nurbs[current_nurbs].name);
137   }
138 }
139 
140 
141 
142 /* prepares vectors pointing from the nodes  (like a tape in a storm)*/
143 /* the length is proportional to the value of the vector */
144 /* lc Dataset */
145 /* ne number of entities */
146 /* *e entities */
147 /* v_factor scale factor for the vectors */
drawNodes_vector(int lc,int ne,int * e,double v_factor,int num,int * name,Nodes * node)148 void drawNodes_vector(  int lc, int ne, int *e, double v_factor, int num, int *name, Nodes *node )
149 {
150   register int i,k;
151   double p1[3], p2[3], v2[3];
152 
153 #if TEST
154   printf ("in drawNodes_vector\n");
155 #endif
156 
157   glLineWidth(1);
158   glPointSize(2);
159   glColor3dv( foregrndcol_rgb );
160 
161   if(ne>3) ne=3;
162   for (i=0; i<num; i++ )
163   {
164     /* calculate the start and end-point of the vector */
165     if(node[name[i]].pflag!=1)
166     {
167       for(k=0; k<3; k++) v2[k]=0.;
168       for(k=0; k<ne; k++) v2[k]+=lcase[lc].dat[e[k]][name[i]];
169       p1[0]=node[name[i]].nx-(v2[0]*v_factor);
170       p1[1]=node[name[i]].ny-(v2[1]*v_factor);
171       p1[2]=node[name[i]].nz-(v2[2]*v_factor);
172       p2[0]=node[name[i]].nx+(v2[0]*v_factor);
173       p2[1]=node[name[i]].ny+(v2[1]*v_factor);
174       p2[2]=node[name[i]].nz+(v2[2]*v_factor);
175       glBegin ( GL_LINES );
176       glVertex3dv ( p1 );
177       glVertex3dv ( p2 );
178       glEnd();
179       glBegin ( GL_POINTS );
180       glVertex3dv ( p2 );
181       glEnd();
182     }
183   }
184 }
185 
186 
187 
188 /* prepares vectors pointing from the nodes of the faces (like a tape in a storm)*/
189 /* the length is proportional to the value of the vector */
190 /* lc Dataset */
191 /* ne number of entities */
192 /* *e entities */
193 /* v_factor scale factor for the vectors */
drawFaces_vector(int lc,int ne,int * e,double v_factor,int num,int * name,Nodes * node,Faces * face)194 void drawFaces_vector(  int lc, int ne, int *e, double v_factor, int num, int *name, Nodes *node, Faces *face )
195 {
196   register int i,j,k,n;
197   double p1[3], p2[3], v2[3];
198 
199 #if TEST
200   printf ("in drawFaces_vector\n");
201 #endif
202 
203   glLineWidth(1);
204   glPointSize (2);
205   glColor3dv( foregrndcol_rgb );
206 
207   if(ne>3) ne=3;
208   for (i=0; i<num; i++ )
209   {
210     n=0;
211     if ( face[name[i]].type == 7 ) n=3;
212     else
213     if ( face[name[i]].type == 8 ) n=6;
214     else
215     if ( face[name[i]].type == 9 ) n=4;
216     else
217     if ( face[name[i]].type == 10) n=8;
218     if(n>0)
219     {
220       /* calculate the start and end-point of the vector */
221       for(j=0; j<n; j++)
222       {
223         if(node[face[name[i]].nod[j]].pflag!=1)
224         {
225           for(k=0; k<3; k++) v2[k]=0.;
226           for(k=0; k<ne; k++) v2[k]+=lcase[lc].dat[e[k]][face[name[i]].nod[j]];
227           p1[0]=node[face[name[i]].nod[j]].nx+face[name[i]].side[0][0]*1.e-2*ds-(v2[0]*v_factor);
228           p1[1]=node[face[name[i]].nod[j]].ny+face[name[i]].side[0][1]*1.e-2*ds-(v2[1]*v_factor);
229           p1[2]=node[face[name[i]].nod[j]].nz+face[name[i]].side[0][2]*1.e-2*ds-(v2[2]*v_factor);
230           p2[0]=node[face[name[i]].nod[j]].nx+face[name[i]].side[0][0]*1.e-2*ds+(v2[0]*v_factor);
231           p2[1]=node[face[name[i]].nod[j]].ny+face[name[i]].side[0][1]*1.e-2*ds+(v2[1]*v_factor);
232           p2[2]=node[face[name[i]].nod[j]].nz+face[name[i]].side[0][2]*1.e-2*ds+(v2[2]*v_factor);
233           glBegin ( GL_LINES );
234           glVertex3dv ( p1 );
235           glVertex3dv ( p2 );
236           glEnd();
237           glBegin ( GL_POINTS );
238           glVertex3dv ( p2 );
239           glEnd();
240         }
241       }
242     }
243   }
244 }
245 
246 
drawElements_vector(int lc,int ne,int * e,double v_factor,int num,int * name,Nodes * node,Elements * e_enqire)247 void drawElements_vector( int lc, int ne, int *e, double v_factor, int num, int *name, Nodes *node, Elements *e_enqire )
248 {
249   register int i,j,k,n;
250   double p1[3], p2[3], v2[3];
251 
252 #if TEST
253   printf ("in drawElements_vector\n");
254 #endif
255 
256   glLineWidth(1);
257   glPointSize (2);
258   glColor3dv( foregrndcol_rgb );
259 
260   if(ne>3) ne=3;
261   for (i=0; i<num; i++ )
262   {
263     n=0;
264     if( e_enqire[name[i]].type == 1 ) n=8;
265     else
266     if( e_enqire[name[i]].type == 2 ) n=6;
267     else
268     if( e_enqire[name[i]].type == 3 ) n=4;
269     else
270     if( e_enqire[name[i]].type == 4 ) n=20;
271     else
272     if( e_enqire[name[i]].type == 5 ) n=15;
273     else
274     if( e_enqire[name[i]].type == 6 ) n=10;
275     else
276     if( e_enqire[name[i]].type == 7 ) n=3;
277     else
278     if( e_enqire[name[i]].type == 8 ) n=6;
279     else
280     if( e_enqire[name[i]].type == 9 ) n=4;
281     else
282     if( e_enqire[name[i]].type == 10 ) n=8;
283     if(n>0)
284     {
285       /* calculate the start and end-point of the vector */
286       for(j=0; j<n; j++)
287       {
288         for(k=0; k<3; k++) v2[k]=0.;
289         for(k=0; k<ne; k++) v2[k]+=lcase[lc].dat[e[k]][e_enqire[name[i]].nod[j]];
290         p1[0]=node[e_enqire[name[i]].nod[j]].nx-(v2[0]*v_factor);
291         p1[1]=node[e_enqire[name[i]].nod[j]].ny-(v2[1]*v_factor);
292         p1[2]=node[e_enqire[name[i]].nod[j]].nz-(v2[2]*v_factor);
293         p2[0]=node[e_enqire[name[i]].nod[j]].nx+(v2[0]*v_factor);
294         p2[1]=node[e_enqire[name[i]].nod[j]].ny+(v2[1]*v_factor);
295         p2[2]=node[e_enqire[name[i]].nod[j]].nz+(v2[2]*v_factor);
296         glBegin ( GL_LINES );
297         glVertex3dv ( p1 );
298         glVertex3dv ( p2 );
299         glEnd();
300         glBegin ( GL_POINTS );
301         glVertex3dv ( p2 );
302         glEnd();
303       }
304     }
305   }
306 }
307 
308 
309 
310 
drawNodes_plot(int num,int * name,Nodes * node,int col,char type,int width)311 void drawNodes_plot( int num, int *name, Nodes *node , int col, char type, int width)
312 {
313   register int i,j;
314   int      mode;
315   GLint    viewport[4];
316   GLdouble mvmatrix[16], projmatrix[16];
317   static GLdouble wx, wy, wz, wxl;  /*  returned window x, y, z coords  */
318   double mxl,myl,mzl;
319   static int flag2;
320 
321   glutSetWindow( w1);
322   glLineWidth(1);
323   if(width>0) glPointSize(width);
324   else glPointSize(4);
325 
326   glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
327 
328   if(type=='t')
329   {
330       glGetIntegerv (GL_VIEWPORT, viewport);
331       glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix);
332       glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);
333       for (i=0; i<num; i++ )
334       {
335        for(j=0; j<anz->t; j++)
336        {
337         if(ntext[j].node_nr==name[i])
338 	{
339           buffer[0]=0;
340           if((ntext[j].text)&&(ntext[j].tFlag)&&(ntext[j].pFlag==1)) sprintf(buffer,"%s ",ntext[j].text);
341           if((ntext[j].nFlag)&&(ntext[j].vFlag)&&(anz->l))
342 	  {
343             switch(ntext[j].fFlag)
344 	    {
345 	    case 0:
346                sprintf(&buffer[strlen(buffer)],"%d %6.2le", name[i], lcase[cur_lc].dat[cur_entity][name[i]]);
347 	      break;
348 	    case 1:
349                sprintf(&buffer[strlen(buffer)],"%d %.2f", name[i], lcase[cur_lc].dat[cur_entity][name[i]]);
350 	      break;
351 	    case 2:
352 	      sprintf(&buffer[strlen(buffer)],"%d %d", name[i], (int)lcase[cur_lc].dat[cur_entity][name[i]]);
353 	      break;
354 	      printf("ERROR case:%d\n", ntext[j].fFlag);
355 	    }
356 	  }
357           else if(ntext[j].nFlag) sprintf(&buffer[strlen(buffer)],"%d", name[i]);
358           else if((ntext[j].vFlag)&&(anz->l))
359 	  {
360             switch(ntext[j].fFlag)
361 	    {
362 	    case 0:
363                sprintf(&buffer[strlen(buffer)],"%6.2le", lcase[cur_lc].dat[cur_entity][name[i]]);
364 	      break;
365 	    case 1:
366                sprintf(&buffer[strlen(buffer)],"%.2f", lcase[cur_lc].dat[cur_entity][name[i]]);
367 	      break;
368 	    case 2:
369 	      sprintf(&buffer[strlen(buffer)],"%d", (int)lcase[cur_lc].dat[cur_entity][name[i]]);
370 	      break;
371 	      printf("ERROR case:%d\n", ntext[j].fFlag);
372 	    }
373 	  }
374           if((ntext[j].text)&&(ntext[j].tFlag)&&(ntext[j].pFlag==0)) sprintf(&buffer[strlen(buffer)]," %s",ntext[j].text);
375 
376           glLoadName('n');
377             glPushName(name[i]);
378             glBegin ( GL_POINTS );
379             glVertex3d ( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz );
380             glEnd();
381             glPopName();
382           glLoadName(-1);
383 
384           /* remark, calc of correct text coords works only if the related node is visible. this is not the case during picking and the last coords are taken */
385           glGetIntegerv(GL_RENDER_MODE,&mode);
386           //printf("mode:%d GL_SELECT:%d GL_RENDER:%d\n", mode, GL_SELECT, GL_RENDER);
387           if(mode==GL_SELECT)
388 	  {
389             glLoadName('t');
390             glPushName(j);
391             glBegin ( GL_LINE_STRIP );
392 	      glVertex3dv( &node[name[i]].nx);
393               /* mxl, myl, mzl would have to be updated and therefore this code has to be skipped for picking */
394 	      //if(wxl!=ntext[j].tx) glVertex3d( mxl, myl, mzl);
395 	      //else
396                 glVertex3d( ntext[j].mx, ntext[j].my, ntext[j].mz);
397             glEnd();
398             text( ntext[j].mx, ntext[j].my, ntext[j].mz, buffer, glut_font[draw_font] );
399             glPopName();
400             glLoadName(-1);
401             continue;
402 	  }
403           flag2=gluProject( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz, mvmatrix, projmatrix, viewport,  &wx, &wy, &wz);
404           if (flag2==GL_FALSE) printf("WARNING: Malfunction, please reselect\n");
405 	  //printf("nxyz:%f %f %f\n",node[name[i]].nx, node[name[i]].ny, node[name[i]].nz);
406 	  //printf("wxyz:%f %f %f  %f %f\n",wx, wy, wz, ntext[j].tx, ntext[j].ty);
407           if(ntext[j].tx>0)
408 	  {
409             /* line-start might be at the end of text (wxl) if CG-text_x < node_x */
410 	    if((int)ntext[j].tx+strlen(buffer)*pixPerCharx[draw_font]/2 < wx)
411 	    {
412               wxl=ntext[j].tx+strlen(buffer)*pixPerCharx[draw_font];
413             }
414             else wxl=ntext[j].tx;
415 
416             wx=ntext[j].tx;
417             wy=viewport[3]-ntext[j].ty;
418 	  }
419           else wxl=wx;
420 
421 
422           wz=0.01; // close to the user, in front of the model
423           if (gluUnProject (wx, wy, wz,  mvmatrix, projmatrix, viewport, &ntext[j].mx, &ntext[j].my, &ntext[j].mz)==GL_TRUE)
424           {
425             /* new model coords of the text-end */
426             gluUnProject (wxl, wy, wz,  mvmatrix, projmatrix, viewport, &mxl, &myl, &mzl);
427 	    //printf ("model coords are %lf, %lf, %lf\n", ntext[j].mx, ntext[j].my, ntext[j].mz);
428             glBegin ( GL_LINE_STRIP );
429 	      glVertex3dv( &node[name[i]].nx);
430 	      if(wxl!=ntext[j].tx) glVertex3d( mxl, myl, mzl);
431 	      else glVertex3d( ntext[j].mx, ntext[j].my, ntext[j].mz);
432             glEnd();
433             text( ntext[j].mx, ntext[j].my, ntext[j].mz, buffer, glut_font[draw_font] );
434           }
435           else printf("WARNING: Malfunction, please reselect\n");
436           break;
437         }
438        }
439       }
440     return;
441   }
442 
443   glLoadName('n');
444   if(type=='v')
445   {
446     if(anz->l)
447     {
448       /* enable all colors  */
449       defineColTextur_load(1.);
450       glColor3d( 1,1,1);
451       glEnable(GL_TEXTURE_1D);
452       glDisable( GL_LIGHTING );
453       for (i=0; i<num; i++ )
454       {
455         glPushName(name[i]);
456         glBegin ( GL_POINTS );
457         GLCOLOR    ( colNr[name[i]] );
458         glVertex3d ( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz );
459         glEnd();
460         glPopName();
461       }
462       glDisable(GL_TEXTURE_1D);
463     }
464   }
465   else
466   {
467     for (i=0; i<num; i++ )
468     {
469       glPushName(name[i]);
470       glBegin ( GL_POINTS );
471       glVertex3d ( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz );
472       glEnd();
473       glPopName();
474     }
475   }
476   glLoadName(-1);
477 
478   if(type=='a')
479   {
480     for (i=0; i<num; i++ )
481     {
482       sprintf( buffer, "%d ", name[i]);
483       text( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz, buffer, glut_font[draw_font] );
484     }
485   }
486   else if(type=='n')
487   {
488     if(anz->l)
489     {
490       glGetIntegerv (GL_VIEWPORT, viewport);
491       glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix);
492       glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);
493       for (i=0; i<num; i++ )
494       {
495         sprintf( buffer, "%6.2le ", lcase[cur_lc].dat[cur_entity][name[i]]);
496         text( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz, buffer, glut_font[draw_font] );
497       }
498     }
499   }
500 }
501 
502 
503 
drawElements_plot(int num,int * name,Nodes * node,double * colNr,Elements * e_enqire,int col,char type,int width,int pickflag)504 void drawElements_plot( int num, int *name, Nodes *node, double *colNr, Elements *e_enqire, int col, char type, int width, int pickflag )
505 {
506   int i, j, n;
507   double x, y, z, alpha=1.;
508   static GLint ipuf[2];
509 
510   if((type=='x')||(type=='b'))
511   {
512     if(width>0) { alpha=(float)width/100.; }
513     else alpha=BLEND_ALPHA;
514     width=1;
515     if(type=='x') type='v';
516   }
517   else
518   {
519     if(width<1) width=1;
520     glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
521     if ( ipuf[0] == GL_FRONT ) glEnable ( GL_CULL_FACE );
522     else glDisable ( GL_CULL_FACE );
523   }
524   glLineWidth(width);
525 
526   if((type=='v')&&(!pickflag)&&(illumResultFlag))
527   {
528     /* enable all colors */
529     defineColTextur_load(alpha);
530     //glColor3d( 1,1,1);
531     glEnable(GL_TEXTURE_1D);
532 
533     setMaterial_rgb(1, 1.);
534     glEnable( GL_LIGHTING );
535 
536     for (i=0; i<num; i++ )
537     {
538       switch(e_enqire[name[i]].type)
539       {
540     	case 1:
541         glBegin ( GL_TRIANGLE_STRIP );
542           glNormal3dv ( e_enqire[name[i]].side[0] );
543           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
544           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
545           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
546           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
547           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
548           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
549           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
550           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
551         glEnd();
552         glBegin ( GL_TRIANGLE_STRIP );
553           glNormal3dv ( e_enqire[name[i]].side[1] );
554           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
555           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
556           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
557           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
558           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
559           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
560           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
561           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
562         glEnd();
563         glBegin ( GL_TRIANGLE_STRIP );
564           glNormal3dv ( e_enqire[name[i]].side[2] );
565           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
566           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
567           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
568           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
569           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
570           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
571           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
572           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
573         glEnd();
574         /* math.pos von z->y  */
575         glBegin ( GL_TRIANGLE_STRIP );
576           glNormal3dv ( e_enqire[name[i]].side[3] );
577           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
578           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
579           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
580           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
581           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
582           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
583           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
584           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
585         glEnd();
586         glBegin ( GL_TRIANGLE_STRIP );
587           glNormal3dv ( e_enqire[name[i]].side[4] );
588           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
589           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
590           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
591           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
592           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
593           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
594           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
595           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
596         glEnd();
597         glBegin ( GL_TRIANGLE_STRIP );
598           glNormal3dv ( e_enqire[name[i]].side[5] );
599           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
600           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
601           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
602           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
603           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
604           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
605           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
606           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
607         glEnd();
608       	break;
609 
610     	case 2:
611         glBegin ( GL_TRIANGLES      );
612           glNormal3dv ( e_enqire[name[i]].side[0] );
613           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
614           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
615           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
616           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
617           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
618           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
619         glEnd();
620         glBegin ( GL_TRIANGLES      );
621           glNormal3dv ( e_enqire[name[i]].side[1] );
622           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
623           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
624           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
625           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
626           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
627           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
628         glEnd();
629         glBegin ( GL_TRIANGLE_STRIP );
630           glNormal3dv ( e_enqire[name[i]].side[2] );
631           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
632           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
633           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
634           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
635           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
636           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
637           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
638           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
639         glEnd();
640         glBegin ( GL_TRIANGLE_STRIP );
641           glNormal3dv ( e_enqire[name[i]].side[3] );
642           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
643           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
644           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
645           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
646           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
647           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
648           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
649           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
650         glEnd();
651         glBegin ( GL_TRIANGLE_STRIP );
652           glNormal3dv ( e_enqire[name[i]].side[4] );
653           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
654           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
655           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
656           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
657           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
658           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
659           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
660           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
661         glEnd();
662       	break;
663 
664     	case 3:
665         glBegin ( GL_TRIANGLE_FAN );
666           glNormal3dv ( e_enqire[name[i]].side[0] );
667           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
668           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
669           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
670           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
671           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
672           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
673           glNormal3dv ( e_enqire[name[i]].side[1] );
674           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
675           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
676           glNormal3dv ( e_enqire[name[i]].side[2] );
677           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
678           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
679         glEnd();
680         glBegin ( GL_TRIANGLES );
681           glNormal3dv ( e_enqire[name[i]].side[3] );
682           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
683           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
684           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
685           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
686           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
687           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
688         glEnd();
689       	break;
690 
691     	case 4:
692         glBegin ( GL_TRIANGLE_FAN );
693           glNormal3dv ( e_enqire[name[i]].side[0] );
694           GLCOLOR     ( colNr[e_enqire[name[i]].nod[21]] );
695           glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
696           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
697           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
698           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
699           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
700           glNormal3dv ( e_enqire[name[i]].side[1] );
701           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
702           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
703           glNormal3dv ( e_enqire[name[i]].side[2] );
704           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
705           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
706           glNormal3dv ( e_enqire[name[i]].side[3] );
707           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
708           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
709           glNormal3dv ( e_enqire[name[i]].side[4] );
710           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
711           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
712           glNormal3dv ( e_enqire[name[i]].side[5] );
713           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
714           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
715           glNormal3dv ( e_enqire[name[i]].side[6] );
716           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
717           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
718           glNormal3dv ( e_enqire[name[i]].side[7] );
719           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
720           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
721         glEnd();
722         glBegin ( GL_TRIANGLE_FAN );
723           glNormal3dv ( e_enqire[name[i]].side[8] );
724           GLCOLOR     ( colNr[e_enqire[name[i]].nod[22]] );
725           glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
726           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
727           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
728           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
729           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
730           glNormal3dv ( e_enqire[name[i]].side[9] );
731           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
732           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
733           glNormal3dv ( e_enqire[name[i]].side[10] );
734           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
735           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
736           glNormal3dv ( e_enqire[name[i]].side[11] );
737           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
738           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
739           glNormal3dv ( e_enqire[name[i]].side[12] );
740           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
741           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
742           glNormal3dv ( e_enqire[name[i]].side[13] );
743           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
744           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
745           glNormal3dv ( e_enqire[name[i]].side[14] );
746           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
747           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
748           glNormal3dv ( e_enqire[name[i]].side[15] );
749           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
750           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
751         glEnd();
752         glBegin ( GL_TRIANGLE_FAN );
753           glNormal3dv ( e_enqire[name[i]].side[16] );
754           GLCOLOR     ( colNr[e_enqire[name[i]].nod[23]] );
755           glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
756           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
757           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
758           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
759           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
760           glNormal3dv ( e_enqire[name[i]].side[17] );
761           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
762           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
763           glNormal3dv ( e_enqire[name[i]].side[18] );
764           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
765           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
766           glNormal3dv ( e_enqire[name[i]].side[19] );
767           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
768           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
769           glNormal3dv ( e_enqire[name[i]].side[20] );
770           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
771           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
772           glNormal3dv ( e_enqire[name[i]].side[21] );
773           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
774           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
775           glNormal3dv ( e_enqire[name[i]].side[22] );
776           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
777           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
778           glNormal3dv ( e_enqire[name[i]].side[23] );
779           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
780           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
781         glEnd();
782         glBegin ( GL_TRIANGLE_FAN );
783           glNormal3dv ( e_enqire[name[i]].side[24] );
784           GLCOLOR     ( colNr[e_enqire[name[i]].nod[24]] );
785           glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
786           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
787           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
788           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
789           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
790           glNormal3dv ( e_enqire[name[i]].side[25] );
791           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
792           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
793           glNormal3dv ( e_enqire[name[i]].side[26] );
794           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
795           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
796           glNormal3dv ( e_enqire[name[i]].side[27] );
797           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
798           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
799           glNormal3dv ( e_enqire[name[i]].side[28] );
800           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
801           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
802           glNormal3dv ( e_enqire[name[i]].side[29] );
803           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
804           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
805           glNormal3dv ( e_enqire[name[i]].side[30] );
806           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
807           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
808           glNormal3dv ( e_enqire[name[i]].side[31] );
809           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
810           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
811         glEnd();
812         glBegin ( GL_TRIANGLE_FAN );
813           glNormal3dv ( e_enqire[name[i]].side[32] );
814           GLCOLOR     ( colNr[e_enqire[name[i]].nod[25]] );
815           glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
816           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
817           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
818           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
819           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
820           glNormal3dv ( e_enqire[name[i]].side[33] );
821           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
822           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
823           glNormal3dv ( e_enqire[name[i]].side[34] );
824           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
825           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
826           glNormal3dv ( e_enqire[name[i]].side[35] );
827           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
828           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
829           glNormal3dv ( e_enqire[name[i]].side[36] );
830           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
831           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
832           glNormal3dv ( e_enqire[name[i]].side[37] );
833           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
834           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
835           glNormal3dv ( e_enqire[name[i]].side[38] );
836           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
837           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
838           glNormal3dv ( e_enqire[name[i]].side[39] );
839           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
840           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
841         glEnd();
842         glBegin ( GL_TRIANGLE_FAN );
843           glNormal3dv ( e_enqire[name[i]].side[40] );
844           GLCOLOR     ( colNr[e_enqire[name[i]].nod[20]] );
845           glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
846           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
847           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
848           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
849           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
850           glNormal3dv ( e_enqire[name[i]].side[41] );
851           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
852           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
853           glNormal3dv ( e_enqire[name[i]].side[42] );
854           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
855           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
856           glNormal3dv ( e_enqire[name[i]].side[43] );
857           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
858           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
859           glNormal3dv ( e_enqire[name[i]].side[44] );
860           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
861           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
862           glNormal3dv ( e_enqire[name[i]].side[45] );
863           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
864           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
865           glNormal3dv ( e_enqire[name[i]].side[46] );
866           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
867           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
868           glNormal3dv ( e_enqire[name[i]].side[47] );
869           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
870           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
871         glEnd();
872       	break;
873 
874     	case 5:
875         glBegin ( GL_TRIANGLES );
876           glNormal3dv ( e_enqire[name[i]].side[0] );
877           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
878           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
879           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
880           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
881           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
882           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
883           glNormal3dv ( e_enqire[name[i]].side[1] );
884           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
885           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
886           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
887           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
888           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
889           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
890           glNormal3dv ( e_enqire[name[i]].side[2] );
891           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
892           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
893           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
894           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
895           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
896           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
897           glNormal3dv ( e_enqire[name[i]].side[3] );
898           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
899           glVertex3dv ( &node[e_enqire[name[i]].nod[00]].nx );
900           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
901           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
902           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
903           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
904           glNormal3dv ( e_enqire[name[i]].side[4] );
905           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
906           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
907           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
908           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
909           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
910           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
911           glNormal3dv ( e_enqire[name[i]].side[5] );
912           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
913           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
914           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
915           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
916           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
917           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
918           glNormal3dv ( e_enqire[name[i]].side[6] );
919           GLCOLOR     ( colNr[e_enqire[name[i]].nod[15]] );
920           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
921           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
922           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
923           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
924           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
925           glNormal3dv ( e_enqire[name[i]].side[7] );
926           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
927           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
928           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
929           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
930           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
931           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
932           glNormal3dv ( e_enqire[name[i]].side[8] );
933           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
934           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
935           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
936           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
937           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
938           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
939           glNormal3dv ( e_enqire[name[i]].side[9] );
940           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
941           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
942           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
943           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
944           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
945           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
946           glNormal3dv ( e_enqire[name[i]].side[10] );
947           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
948           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
949           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
950           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
951           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
952           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
953           glNormal3dv ( e_enqire[name[i]].side[11] );
954           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
955           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
956           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
957           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
958           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
959           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
960           glNormal3dv ( e_enqire[name[i]].side[12] );
961           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
962           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
963           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
964           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
965           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
966           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
967           glNormal3dv ( e_enqire[name[i]].side[13] );
968           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
969           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
970           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
971           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
972           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
973           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
974           glNormal3dv ( e_enqire[name[i]].side[14] );
975           GLCOLOR     ( colNr[e_enqire[name[i]].nod[16]] );
976           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
977           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
978           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
979           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
980           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
981           glNormal3dv ( e_enqire[name[i]].side[15] );
982           GLCOLOR     ( colNr[e_enqire[name[i]].nod[10]] );
983           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
984           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
985           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
986           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
987           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
988           glNormal3dv ( e_enqire[name[i]].side[16] );
989           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
990           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
991           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
992           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
993           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
994           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
995           glNormal3dv ( e_enqire[name[i]].side[17] );
996           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
997           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
998           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
999           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1000           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
1001           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1002           glNormal3dv ( e_enqire[name[i]].side[18] );
1003           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1004           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1005           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
1006           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1007           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1008           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1009           glNormal3dv ( e_enqire[name[i]].side[19] );
1010           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1011           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1012           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
1013           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1014           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
1015           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1016           glNormal3dv ( e_enqire[name[i]].side[20] );
1017           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
1018           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1019           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1020           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1021           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
1022           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1023           glNormal3dv ( e_enqire[name[i]].side[21] );
1024           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
1025           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1026           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1027           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1028           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
1029           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1030           glNormal3dv ( e_enqire[name[i]].side[22] );
1031           GLCOLOR     ( colNr[e_enqire[name[i]].nod[17]] );
1032           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1033           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
1034           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1035           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
1036           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1037           glNormal3dv ( e_enqire[name[i]].side[23] );
1038           GLCOLOR     ( colNr[e_enqire[name[i]].nod[11]] );
1039           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1040           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
1041           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1042           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1043           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1044           glNormal3dv ( e_enqire[name[i]].side[24] );
1045           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1046           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1047           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1048           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1049           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1050           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1051           glNormal3dv ( e_enqire[name[i]].side[25] );
1052           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1053           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1054           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1055           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1056           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
1057           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1058           glNormal3dv ( e_enqire[name[i]].side[26] );
1059           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1060           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1061           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
1062           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1063           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1064           glVertex3dv ( &node[e_enqire[name[i]].nod[00]].nx );
1065           glNormal3dv ( e_enqire[name[i]].side[27] );
1066           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1067           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1068           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
1069           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1070           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1071           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1072           glNormal3dv ( e_enqire[name[i]].side[28] );
1073           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1074           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1075           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
1076           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1077           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
1078           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1079           glNormal3dv ( e_enqire[name[i]].side[29] );
1080           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
1081           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1082           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
1083           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1084           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1085           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1086           glNormal3dv ( e_enqire[name[i]].side[30] );
1087           GLCOLOR     ( colNr[e_enqire[name[i]].nod[18]] );
1088           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1089           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1090           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1091           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1092           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1093           glNormal3dv ( e_enqire[name[i]].side[31] );
1094           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1095           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1096           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1097           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1098           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1099           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1100           glNormal3dv ( e_enqire[name[i]].side[32] );
1101           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1102           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1103           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
1104           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1105           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
1106           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1107           glNormal3dv ( e_enqire[name[i]].side[33] );
1108           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
1109           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1110           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
1111           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1112           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
1113           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1114           glNormal3dv ( e_enqire[name[i]].side[34] );
1115           GLCOLOR     ( colNr[e_enqire[name[i]].nod[12]] );
1116           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1117           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
1118           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1119           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1120           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1121           glNormal3dv ( e_enqire[name[i]].side[35] );
1122           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1123           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1124           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
1125           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1126           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1127           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1128           glNormal3dv ( e_enqire[name[i]].side[36] );
1129           GLCOLOR     ( colNr[e_enqire[name[i]].nod[13]] );
1130           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1131           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1132           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1133           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
1134           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1135           glNormal3dv ( e_enqire[name[i]].side[37] );
1136           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
1137           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1138           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1139           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1140           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
1141           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1142           glNormal3dv ( e_enqire[name[i]].side[38] );
1143           GLCOLOR     ( colNr[e_enqire[name[i]].nod[19]] );
1144           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1145           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
1146           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1147           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1148           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1149           glNormal3dv ( e_enqire[name[i]].side[39] );
1150           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1151           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1152           GLCOLOR     ( colNr[e_enqire[name[i]].nod[14]] );
1153           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1154           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1155           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1156         glEnd();
1157       	break;
1158 
1159     	case 6:
1160         glBegin ( GL_TRIANGLES );
1161           glNormal3dv ( e_enqire[name[i]].side[0] );
1162           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1163           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1164           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1165           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1166           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1167           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1168           glNormal3dv ( e_enqire[name[i]].side[1] );
1169           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1170           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1171           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1172           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1173           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1174           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1175           glNormal3dv ( e_enqire[name[i]].side[2] );
1176           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1177           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1178           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1179           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1180           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
1181           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1182           glNormal3dv ( e_enqire[name[i]].side[3] );
1183           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1184           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1185           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1186           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1187           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1188           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1189           glNormal3dv ( e_enqire[name[i]].side[4] );
1190           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
1191           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1192           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1193           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1194           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1195           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1196           glNormal3dv ( e_enqire[name[i]].side[5] );
1197           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1198           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1199           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1200           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1201           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
1202           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1203           glNormal3dv ( e_enqire[name[i]].side[6] );
1204           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
1205           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1206           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1207           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1208           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1209           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1210           glNormal3dv ( e_enqire[name[i]].side[7] );
1211           GLCOLOR     ( colNr[e_enqire[name[i]].nod[8]] );
1212           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1213           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
1214           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1215           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1216           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1217           glNormal3dv ( e_enqire[name[i]].side[8] );
1218           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1219           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1220           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1221           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1222           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
1223           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1224           glNormal3dv ( e_enqire[name[i]].side[9] );
1225           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
1226           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1227           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1228           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1229           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1230           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1231           glNormal3dv ( e_enqire[name[i]].side[10] );
1232           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1233           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1234           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1235           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1236           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1237           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1238           glNormal3dv ( e_enqire[name[i]].side[11] );
1239           GLCOLOR     ( colNr[e_enqire[name[i]].nod[9]] );
1240           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1241           GLCOLOR     ( colNr[e_enqire[name[i]].nod[7]] );
1242           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1243           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1244           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1245           glNormal3dv ( e_enqire[name[i]].side[12] );
1246           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1247           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1248           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1249           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1250           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1251           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1252           glNormal3dv ( e_enqire[name[i]].side[13] );
1253           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1254           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1255           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1256           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1257           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1258           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1259           glNormal3dv ( e_enqire[name[i]].side[14] );
1260           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1261           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1262           GLCOLOR     ( colNr[e_enqire[name[i]].nod[6]] );
1263           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1264           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1265           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1266           glNormal3dv ( e_enqire[name[i]].side[15] );
1267           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1268           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1269           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1270           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1271           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
1272           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1273         glEnd();
1274       	break;
1275 
1276     	case 7:
1277         glNormal3dv ( e_enqire[name[i]].side[0] );
1278         glBegin ( GL_TRIANGLES );
1279           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1280           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1281           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1282           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1283          glNormal3dv ( e_enqire[name[i]].side[0] );
1284           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1285           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1286         glEnd();
1287         break;
1288 
1289     	case 8:
1290         glNormal3dv ( e_enqire[name[i]].side[0] );
1291         glBegin ( GL_TRIANGLES );
1292           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1293           glVertex3dv  ( &node[e_enqire[name[i]].nod[0]].nx );
1294           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1295           glVertex3dv  ( &node[e_enqire[name[i]].nod[3]].nx );
1296          glNormal3dv ( e_enqire[name[i]].side[0] );
1297           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1298           glVertex3dv  ( &node[e_enqire[name[i]].nod[5]].nx );
1299           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1300           glVertex3dv  ( &node[e_enqire[name[i]].nod[2]].nx );
1301           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1302           glVertex3dv  ( &node[e_enqire[name[i]].nod[5]].nx );
1303          glNormal3dv ( e_enqire[name[i]].side[1] );
1304           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1305           glVertex3dv  ( &node[e_enqire[name[i]].nod[4]].nx );
1306           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1307           glVertex3dv  ( &node[e_enqire[name[i]].nod[4]].nx );
1308           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1309           glVertex3dv  ( &node[e_enqire[name[i]].nod[5]].nx );
1310          glNormal3dv ( e_enqire[name[i]].side[2] );
1311           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1312           glVertex3dv  ( &node[e_enqire[name[i]].nod[3]].nx );
1313           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1314           glVertex3dv  ( &node[e_enqire[name[i]].nod[3]].nx );
1315           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
1316           glVertex3dv  ( &node[e_enqire[name[i]].nod[1]].nx );
1317          glNormal3dv ( e_enqire[name[i]].side[3] );
1318           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1319           glVertex3dv  ( &node[e_enqire[name[i]].nod[4]].nx );
1320         glEnd();
1321         break;
1322 
1323     	case 9:
1324         glNormal3dv ( e_enqire[name[i]].side[0] );
1325         glBegin ( GL_TRIANGLE_STRIP );
1326           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1327           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1328           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1329           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1330          glNormal3dv ( e_enqire[name[i]].side[0] );
1331           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1332           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1333           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1334           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1335         glEnd();
1336         break;
1337 
1338     	case 10:
1339         glNormal3dv ( e_enqire[name[i]].side[0] );
1340         glBegin ( GL_TRIANGLE_FAN );
1341           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1342           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1343           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1344           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1345          glNormal3dv ( e_enqire[name[i]].side[0] );
1346           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1347           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1348          glNormal3dv ( e_enqire[name[i]].side[1] );
1349           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1350           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1351          glNormal3dv ( e_enqire[name[i]].side[2] );
1352           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1353           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1354          glNormal3dv ( e_enqire[name[i]].side[3] );
1355           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1356           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1357          glNormal3dv ( e_enqire[name[i]].side[4] );
1358           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1359           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1360          glNormal3dv ( e_enqire[name[i]].side[5] );
1361           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1362           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1363          glNormal3dv ( e_enqire[name[i]].side[6] );
1364           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1365           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1366          glNormal3dv ( e_enqire[name[i]].side[7] );
1367           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1368           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1369         glEnd();
1370         break;
1371 
1372     	case 11:
1373         glBegin ( GL_LINES );
1374           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1375           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1376           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1377           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1378         glEnd();
1379       	break;
1380 
1381     	case 12:
1382         glBegin ( GL_LINE_STRIP );
1383           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1384           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1385           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1386           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1387           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1388           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1389         glEnd();
1390       }
1391     }
1392     glDisable(GL_TEXTURE_1D);
1393     glDisable( GL_LIGHTING );
1394   }
1395   else if((type=='v')&&(!pickflag))
1396   {
1397     /* enable all colors */
1398     defineColTextur_load(alpha);
1399     glColor3d( 1,1,1);
1400     glEnable(GL_TEXTURE_1D);
1401 
1402     for (i=0; i<num; i++ )
1403     {
1404       switch(e_enqire[name[i]].type)
1405       {
1406     	case 1:
1407         glBegin ( GL_TRIANGLE_STRIP );
1408           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1409           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1410           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1411           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1412           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1413           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1414           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1415           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1416           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1417           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1418           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1419           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1420           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1421           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1422           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1423           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1424         glEnd();
1425         glBegin ( GL_TRIANGLE_STRIP );
1426           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1427           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1428           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1429           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1430           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1431           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1432           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1433           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1434           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1435           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1436           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1437           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1438           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1439           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1440           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1441           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1442         glEnd();
1443       	break;
1444 
1445     	case 2:
1446         glBegin ( GL_TRIANGLE_STRIP );
1447           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1448           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1449           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1450           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1451           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1452           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1453           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1454           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1455           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1456           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1457           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1458           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1459           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1460           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1461           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1462           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1463         glEnd();
1464         glBegin ( GL_TRIANGLES      );
1465           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1466           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1467           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1468           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1469           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1470           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1471           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1472           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1473           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1474           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1475           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1476           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1477         glEnd();
1478       	break;
1479 
1480     	case 3:
1481         glBegin ( GL_TRIANGLE_FAN );
1482           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1483           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1484           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1485           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1486           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1487           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1488           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1489           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1490           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1491           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1492         glEnd();
1493         glBegin ( GL_TRIANGLES );
1494           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1495           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1496           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1497           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1498           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1499           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1500         glEnd();
1501       	break;
1502 
1503     	case 4:
1504         glBegin ( GL_TRIANGLE_STRIP );
1505           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1506           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1507           GLCOLOR    ( colNr[e_enqire[name[i]].nod[9]] );
1508           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1509           GLCOLOR    ( colNr[e_enqire[name[i]].nod[13]] );
1510           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1511           GLCOLOR    ( colNr[e_enqire[name[i]].nod[21]] );
1512           glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
1513           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1514           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1515           GLCOLOR    ( colNr[e_enqire[name[i]].nod[17]] );
1516           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1517           GLCOLOR    ( colNr[e_enqire[name[i]].nod[16]] );
1518           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1519           GLCOLOR    ( colNr[e_enqire[name[i]].nod[25]] );
1520           glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
1521           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1522           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1523           GLCOLOR    ( colNr[e_enqire[name[i]].nod[19]] );
1524           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1525           GLCOLOR    ( colNr[e_enqire[name[i]].nod[12]] );
1526           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1527           GLCOLOR    ( colNr[e_enqire[name[i]].nod[23]] );
1528           glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
1529           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1530           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1531           GLCOLOR    ( colNr[e_enqire[name[i]].nod[11]] );
1532           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1533         glEnd();
1534         glBegin ( GL_TRIANGLE_STRIP );
1535           GLCOLOR    ( colNr[e_enqire[name[i]].nod[9]] );
1536           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1537           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1538           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1539           GLCOLOR    ( colNr[e_enqire[name[i]].nod[21]] );
1540           glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
1541           GLCOLOR    ( colNr[e_enqire[name[i]].nod[14]] );
1542           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1543           GLCOLOR    ( colNr[e_enqire[name[i]].nod[17]] );
1544           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1545           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1546           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1547           GLCOLOR    ( colNr[e_enqire[name[i]].nod[25]] );
1548           glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
1549           GLCOLOR    ( colNr[e_enqire[name[i]].nod[18]] );
1550           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1551           GLCOLOR    ( colNr[e_enqire[name[i]].nod[19]] );
1552           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1553           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1554           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1555           GLCOLOR    ( colNr[e_enqire[name[i]].nod[23]] );
1556           glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
1557           GLCOLOR    ( colNr[e_enqire[name[i]].nod[15]] );
1558           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1559           GLCOLOR    ( colNr[e_enqire[name[i]].nod[11]] );
1560           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1561           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1562           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1563         glEnd();
1564         glBegin ( GL_TRIANGLE_STRIP );
1565           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1566           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1567           GLCOLOR    ( colNr[e_enqire[name[i]].nod[16]] );
1568           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1569           GLCOLOR    ( colNr[e_enqire[name[i]].nod[13]] );
1570           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1571           GLCOLOR    ( colNr[e_enqire[name[i]].nod[20]] );
1572           glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
1573           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1574           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1575           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1576           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1577           GLCOLOR    ( colNr[e_enqire[name[i]].nod[9]] );
1578           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1579           GLCOLOR    ( colNr[e_enqire[name[i]].nod[24]] );
1580           glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
1581           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1582           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1583           GLCOLOR    ( colNr[e_enqire[name[i]].nod[10]] );
1584           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1585           GLCOLOR    ( colNr[e_enqire[name[i]].nod[14]] );
1586           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1587           GLCOLOR    ( colNr[e_enqire[name[i]].nod[22]] );
1588           glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
1589           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1590           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1591           GLCOLOR    ( colNr[e_enqire[name[i]].nod[18]] );
1592           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1593         glEnd();
1594         glBegin ( GL_TRIANGLE_STRIP );
1595           GLCOLOR    ( colNr[e_enqire[name[i]].nod[16]] );
1596           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1597           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1598           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1599           GLCOLOR    ( colNr[e_enqire[name[i]].nod[20]] );
1600           glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
1601           GLCOLOR    ( colNr[e_enqire[name[i]].nod[12]] );
1602           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1603           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1604           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1605           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1606           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1607           GLCOLOR    ( colNr[e_enqire[name[i]].nod[24]] );
1608           glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
1609           GLCOLOR    ( colNr[e_enqire[name[i]].nod[11]] );
1610           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1611           GLCOLOR    ( colNr[e_enqire[name[i]].nod[10]] );
1612           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1613           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1614           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1615           GLCOLOR    ( colNr[e_enqire[name[i]].nod[22]] );
1616           glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
1617           GLCOLOR    ( colNr[e_enqire[name[i]].nod[15]] );
1618           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1619           GLCOLOR    ( colNr[e_enqire[name[i]].nod[18]] );
1620           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1621           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1622           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1623         glEnd();
1624       	break;
1625 
1626     	case 5:
1627         glBegin ( GL_TRIANGLE_STRIP );
1628           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1629           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1630           GLCOLOR    ( colNr[e_enqire[name[i]].nod[10]] );
1631           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1632           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 6]] );
1633           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
1634           GLCOLOR    ( colNr[e_enqire[name[i]].nod[15]] );
1635           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1636           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 0]] );
1637           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
1638           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 9]] );
1639           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
1640           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 0]] );
1641           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
1642           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 9]] );
1643           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
1644           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1645           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1646           GLCOLOR    ( colNr[e_enqire[name[i]].nod[17]] );
1647           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1648           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 2]] );
1649           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
1650           GLCOLOR    ( colNr[e_enqire[name[i]].nod[11]] );
1651           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1652           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1653           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1654           GLCOLOR    ( colNr[e_enqire[name[i]].nod[16]] );
1655           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1656           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1657           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1658           GLCOLOR    ( colNr[e_enqire[name[i]].nod[10]] );
1659           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1660         glEnd();
1661         glBegin ( GL_TRIANGLE_STRIP );
1662           GLCOLOR    ( colNr[e_enqire[name[i]].nod[10]] );
1663           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1664           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 4]] );
1665           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
1666           GLCOLOR    ( colNr[e_enqire[name[i]].nod[15]] );
1667           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1668           GLCOLOR    ( colNr[e_enqire[name[i]].nod[12]] );
1669           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1670           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 9]] );
1671           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
1672           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 3]] );
1673           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
1674           GLCOLOR    ( colNr[e_enqire[name[i]].nod[17]] );
1675           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1676           GLCOLOR    ( colNr[e_enqire[name[i]].nod[14]] );
1677           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1678           GLCOLOR    ( colNr[e_enqire[name[i]].nod[11]] );
1679           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1680           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 5]] );
1681           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
1682           GLCOLOR    ( colNr[e_enqire[name[i]].nod[16]] );
1683           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1684           GLCOLOR    ( colNr[e_enqire[name[i]].nod[13]] );
1685           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1686           GLCOLOR    ( colNr[e_enqire[name[i]].nod[10]] );
1687           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1688           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 4]] );
1689           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
1690         glEnd();
1691         glBegin ( GL_TRIANGLE_STRIP );
1692           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 2]] );
1693           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
1694           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 7]] );
1695           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
1696           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1697           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1698           GLCOLOR    ( colNr[e_enqire[name[i]].nod[18]] );
1699           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1700           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1701           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1702         glEnd();
1703         glBegin ( GL_TRIANGLE_STRIP );
1704           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 7]] );
1705           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
1706           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 1]] );
1707           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
1708           GLCOLOR    ( colNr[e_enqire[name[i]].nod[18]] );
1709           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1710           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 6]] );
1711           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
1712           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1713           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1714         glEnd();
1715         glBegin ( GL_TRIANGLE_STRIP );
1716           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 4]] );
1717           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
1718           GLCOLOR    ( colNr[e_enqire[name[i]].nod[13]] );
1719           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1720           GLCOLOR    ( colNr[e_enqire[name[i]].nod[12]] );
1721           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1722           GLCOLOR    ( colNr[e_enqire[name[i]].nod[19]] );
1723           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1724           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1725           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1726         glEnd();
1727         glBegin ( GL_TRIANGLE_STRIP );
1728           GLCOLOR    ( colNr[e_enqire[name[i]].nod[13]] );
1729           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1730           GLCOLOR    ( colNr[e_enqire[name[i]].nod[ 5]] );
1731           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
1732           GLCOLOR    ( colNr[e_enqire[name[i]].nod[19]] );
1733           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1734           GLCOLOR    ( colNr[e_enqire[name[i]].nod[14]] );
1735           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1736           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1737           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1738         glEnd();
1739       	break;
1740 
1741     	case 6:
1742         glBegin ( GL_TRIANGLE_STRIP );
1743           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1744           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1745           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1746           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1747           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1748           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1749           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1750           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1751           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1752           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1753         glEnd();
1754         glBegin ( GL_TRIANGLE_STRIP );
1755           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1756           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1757           GLCOLOR    ( colNr[e_enqire[name[i]].nod[9]] );
1758           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1759           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1760           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1761           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1762           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1763           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1764           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1765         glEnd();
1766         glBegin ( GL_TRIANGLE_STRIP );
1767           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1768           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1769           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1770           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1771           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1772           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1773           GLCOLOR    ( colNr[e_enqire[name[i]].nod[9]] );
1774           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1775           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1776           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1777         glEnd();
1778         glBegin ( GL_TRIANGLE_STRIP );
1779           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1780           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1781           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1782           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1783           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1784           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1785           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1786           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1787           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1788           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1789         glEnd();
1790         glBegin ( GL_TRIANGLE_FAN   );
1791           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1792           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1793           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1794           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1795           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1796           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1797           GLCOLOR    ( colNr[e_enqire[name[i]].nod[9]] );
1798           glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1799           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1800           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1801         glEnd();
1802         glBegin ( GL_TRIANGLES   );
1803           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1804           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1805           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1806           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1807           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1808           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1809         glEnd();
1810       	break;
1811 
1812     	case 7:
1813         glBegin ( GL_TRIANGLES );
1814           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1815           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1816           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1817           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1818           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1819           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1820         glEnd();
1821       	break;
1822 
1823     	case 8:
1824         glBegin ( GL_TRIANGLES );
1825           GLCOLOR     ( colNr[e_enqire[name[i]].nod[0]] );
1826           glVertex3dv  ( &node[e_enqire[name[i]].nod[0]].nx );
1827           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1828           glVertex3dv  ( &node[e_enqire[name[i]].nod[3]].nx );
1829           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1830           glVertex3dv  ( &node[e_enqire[name[i]].nod[5]].nx );
1831 
1832           GLCOLOR     ( colNr[e_enqire[name[i]].nod[2]] );
1833           glVertex3dv  ( &node[e_enqire[name[i]].nod[2]].nx );
1834           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1835           glVertex3dv  ( &node[e_enqire[name[i]].nod[5]].nx );
1836           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1837           glVertex3dv  ( &node[e_enqire[name[i]].nod[4]].nx );
1838 
1839           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1840           glVertex3dv  ( &node[e_enqire[name[i]].nod[4]].nx );
1841           GLCOLOR     ( colNr[e_enqire[name[i]].nod[5]] );
1842           glVertex3dv  ( &node[e_enqire[name[i]].nod[5]].nx );
1843           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1844           glVertex3dv  ( &node[e_enqire[name[i]].nod[3]].nx );
1845 
1846           GLCOLOR     ( colNr[e_enqire[name[i]].nod[3]] );
1847           glVertex3dv  ( &node[e_enqire[name[i]].nod[3]].nx );
1848           GLCOLOR     ( colNr[e_enqire[name[i]].nod[1]] );
1849           glVertex3dv  ( &node[e_enqire[name[i]].nod[1]].nx );
1850           GLCOLOR     ( colNr[e_enqire[name[i]].nod[4]] );
1851           glVertex3dv  ( &node[e_enqire[name[i]].nod[4]].nx );
1852         glEnd();
1853       	break;
1854 
1855     	case 9:
1856         glBegin ( GL_TRIANGLE_STRIP );
1857           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1858           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1859           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1860           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1861           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1862           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1863           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1864           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1865         glEnd();
1866       	break;
1867 
1868     	case 10:
1869         glBegin ( GL_TRIANGLE_FAN   );
1870           GLCOLOR    ( colNr[e_enqire[name[i]].nod[8]] );
1871           glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1872           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1873           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1874           GLCOLOR    ( colNr[e_enqire[name[i]].nod[4]] );
1875           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1876           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1877           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1878           GLCOLOR    ( colNr[e_enqire[name[i]].nod[5]] );
1879           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1880           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1881           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1882           GLCOLOR    ( colNr[e_enqire[name[i]].nod[6]] );
1883           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1884           GLCOLOR    ( colNr[e_enqire[name[i]].nod[3]] );
1885           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1886           GLCOLOR    ( colNr[e_enqire[name[i]].nod[7]] );
1887           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1888           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1889           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1890         glEnd();
1891       	break;
1892 
1893     	case 11:
1894         glBegin ( GL_LINES );
1895           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1896           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1897           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1898           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1899         glEnd();
1900       	break;
1901 
1902     	case 12:
1903         glBegin ( GL_LINE_STRIP );
1904           GLCOLOR    ( colNr[e_enqire[name[i]].nod[0]] );
1905           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1906           GLCOLOR    ( colNr[e_enqire[name[i]].nod[2]] );
1907           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1908           GLCOLOR    ( colNr[e_enqire[name[i]].nod[1]] );
1909           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1910         glEnd();
1911       }
1912     }
1913     glDisable(GL_TEXTURE_1D);
1914   }
1915   else if(pickflag)
1916   {
1917     /* any other color */
1918     glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
1919 
1920     glLoadName('e');
1921 
1922     for (i=0; i<num; i++ )
1923     {
1924       glPushName(name[i]);
1925       switch(e_enqire[name[i]].type)
1926       {
1927     	case 1:
1928     	case 4:
1929         glBegin ( GL_TRIANGLES );
1930          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1931         glEdgeFlag ( GL_FALSE );
1932          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1933         glEdgeFlag ( GL_TRUE );
1934          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1935 
1936          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1937         glEdgeFlag ( GL_FALSE );
1938          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1939         glEdgeFlag ( GL_TRUE );
1940          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1941 
1942          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1943         glEdgeFlag ( GL_FALSE );
1944          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1945         glEdgeFlag ( GL_TRUE );
1946          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1947 
1948          glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1949         glEdgeFlag ( GL_FALSE );
1950          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1951         glEdgeFlag ( GL_TRUE );
1952          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1953 
1954          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1955         glEdgeFlag ( GL_FALSE );
1956          glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1957         glEdgeFlag ( GL_TRUE );
1958          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1959 
1960          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1961         glEdgeFlag ( GL_FALSE );
1962          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1963         glEdgeFlag ( GL_TRUE );
1964          glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1965 
1966       /* new strip */
1967          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1968         glEdgeFlag ( GL_FALSE );
1969          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1970         glEdgeFlag ( GL_TRUE );
1971          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1972 
1973          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1974         glEdgeFlag ( GL_FALSE );
1975          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1976         glEdgeFlag ( GL_TRUE );
1977          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1978 
1979          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1980         glEdgeFlag ( GL_FALSE );
1981          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1982         glEdgeFlag ( GL_TRUE );
1983          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1984 
1985          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1986         glEdgeFlag ( GL_FALSE );
1987          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1988         glEdgeFlag ( GL_TRUE );
1989          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1990 
1991          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1992         glEdgeFlag ( GL_FALSE );
1993          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1994         glEdgeFlag ( GL_TRUE );
1995          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1996 
1997          glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1998         glEdgeFlag ( GL_FALSE );
1999          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2000         glEdgeFlag ( GL_TRUE );
2001          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2002        glEnd();
2003        break;
2004 
2005        case 2:
2006        case 5:
2007        glBegin ( GL_TRIANGLES );
2008          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2009         glEdgeFlag ( GL_FALSE );
2010          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2011         glEdgeFlag ( GL_TRUE );
2012          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2013 
2014          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2015         glEdgeFlag ( GL_FALSE );
2016          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2017         glEdgeFlag ( GL_TRUE );
2018          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2019 
2020          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2021         glEdgeFlag ( GL_FALSE );
2022          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2023         glEdgeFlag ( GL_TRUE );
2024          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2025 
2026          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2027         glEdgeFlag ( GL_FALSE );
2028          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2029         glEdgeFlag ( GL_TRUE );
2030          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2031 
2032          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2033         glEdgeFlag ( GL_FALSE );
2034          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2035         glEdgeFlag ( GL_TRUE );
2036          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2037 
2038          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2039         glEdgeFlag ( GL_FALSE );
2040          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2041         glEdgeFlag ( GL_TRUE );
2042          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2043 
2044          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2045         glEdgeFlag ( GL_FALSE );
2046          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2047         glEdgeFlag ( GL_TRUE );
2048          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2049 
2050          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2051         glEdgeFlag ( GL_FALSE );
2052          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2053         glEdgeFlag ( GL_TRUE );
2054          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2055        glEnd();
2056        break;
2057 
2058        case 3:
2059        case 6:
2060        glBegin ( GL_TRIANGLES );
2061          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2062          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2063          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2064        glEnd();
2065        glBegin ( GL_TRIANGLE_FAN   );
2066          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2067          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2068          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2069          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2070          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2071        glEnd();
2072        break;
2073 
2074        case 7:
2075        case 8:
2076        glBegin ( GL_TRIANGLES );
2077          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2078          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2079          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2080        glEnd();
2081        break;
2082 
2083        case 9:
2084        glBegin ( GL_TRIANGLES );
2085          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2086         glEdgeFlag ( GL_FALSE );
2087          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2088         glEdgeFlag ( GL_TRUE );
2089          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2090 
2091          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2092         glEdgeFlag ( GL_FALSE );
2093          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2094         glEdgeFlag ( GL_TRUE );
2095          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2096        glEnd();
2097        break;
2098 
2099        case 10:
2100        glBegin ( GL_TRIANGLES  );
2101          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2102         glEdgeFlag ( GL_FALSE );
2103          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2104         glEdgeFlag ( GL_TRUE );
2105          glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2106 
2107         glEdgeFlag ( GL_FALSE );
2108          glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2109          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2110          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2111 
2112         glEdgeFlag ( GL_TRUE );
2113          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2114          glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2115         glEdgeFlag ( GL_FALSE );
2116          glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2117 
2118 
2119         glEdgeFlag ( GL_TRUE );
2120          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2121         glEdgeFlag ( GL_FALSE );
2122          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2123         glEdgeFlag ( GL_TRUE );
2124          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2125 
2126         glEdgeFlag ( GL_FALSE );
2127          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2128          glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2129          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2130 
2131         glEdgeFlag ( GL_TRUE );
2132          glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2133          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2134         glEdgeFlag ( GL_FALSE );
2135          glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2136         glEdgeFlag ( GL_TRUE );
2137        glEnd();
2138        break;
2139 
2140        case 11:
2141        glBegin ( GL_LINES );
2142          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2143          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2144        glEnd();
2145        break;
2146 
2147        case 12:
2148        glBegin ( GL_LINE_STRIP );
2149          glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2150          glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2151          glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2152        glEnd();
2153        break;
2154       }
2155 
2156       if(type=='a')
2157       {
2158 	switch(e_enqire[name[i]].type)
2159 	{
2160 		case 1:
2161 		case 4:
2162 			j=8;
2163 			break;
2164 		case 2:
2165 		case 5:
2166 			j=6;
2167 			break;
2168 		case 3:
2169 		case 6:
2170 		case 9:
2171 		case 10:
2172 			j=4;
2173 			break;
2174 		case 7:
2175 		case 8:
2176 		case 12:
2177 			j=3;
2178 			break;
2179 		case 11:
2180 			j=2;
2181 			break;
2182 		default:
2183 			// assure that j!=0 (see division below)
2184 		        printf("ERROR: type:%d of elem:%d not known\n",e_enqire[name[i]].type,name[i]);
2185 			j=1;
2186 			break;
2187 	}
2188         x=y=z=0.;
2189         for (n=0; n<j; n++)
2190         {
2191           x+= node[e_enqire[name[i]].nod[n]].nx;
2192           y+= node[e_enqire[name[i]].nod[n]].ny;
2193           z+= node[e_enqire[name[i]].nod[n]].nz;
2194         }
2195         x/= j; y/= j; z/= j;
2196         sprintf( buffer, "%d ", name[i]);
2197         text( x, y, z, buffer, glut_font[draw_font] );
2198       }
2199       glPopName();
2200     }
2201     glLoadName(-1);
2202   }
2203   else
2204   {
2205     setMaterial_rgb(col, alpha);
2206     glEnable( GL_LIGHTING );
2207 
2208     for (i=0; i<num; i++ )
2209     {
2210       switch(e_enqire[name[i]].type)
2211       {
2212         case 1:
2213         glBegin ( GL_TRIANGLE_STRIP );
2214           glNormal3dv ( e_enqire[name[i]].side[0] );
2215           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2216           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2217           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2218           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2219         glEnd();
2220         glBegin ( GL_TRIANGLE_STRIP );
2221           glNormal3dv ( e_enqire[name[i]].side[1] );
2222           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2223           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2224           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2225           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2226         glEnd();
2227         glBegin ( GL_TRIANGLE_STRIP );
2228           glNormal3dv ( e_enqire[name[i]].side[2] );
2229           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2230           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2231           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2232           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2233         glEnd();
2234         /* math.pos von z->y  */
2235         glBegin ( GL_TRIANGLE_STRIP );
2236           glNormal3dv ( e_enqire[name[i]].side[3] );
2237           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2238           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2239           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2240           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2241         glEnd();
2242         glBegin ( GL_TRIANGLE_STRIP );
2243           glNormal3dv ( e_enqire[name[i]].side[4] );
2244           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2245           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2246           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2247           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2248         glEnd();
2249         glBegin ( GL_TRIANGLE_STRIP );
2250           glNormal3dv ( e_enqire[name[i]].side[5] );
2251           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2252           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2253           glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2254           glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2255         glEnd();
2256         break;
2257 
2258         case 2:
2259         glBegin ( GL_TRIANGLES      );
2260           glNormal3dv ( e_enqire[name[i]].side[0] );
2261           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2262           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2263           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2264         glEnd();
2265         glBegin ( GL_TRIANGLES      );
2266           glNormal3dv ( e_enqire[name[i]].side[1] );
2267           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2268           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2269           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2270         glEnd();
2271         glBegin ( GL_TRIANGLE_STRIP );
2272           glNormal3dv ( e_enqire[name[i]].side[2] );
2273           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2274           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2275           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2276           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2277         glEnd();
2278         glBegin ( GL_TRIANGLE_STRIP );
2279           glNormal3dv ( e_enqire[name[i]].side[3] );
2280           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2281           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2282           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2283           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2284         glEnd();
2285         glBegin ( GL_TRIANGLE_STRIP );
2286           glNormal3dv ( e_enqire[name[i]].side[4] );
2287           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2288           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2289           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2290           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2291         glEnd();
2292         break;
2293 
2294         case 3:
2295         glBegin ( GL_TRIANGLE_FAN );
2296           glNormal3dv ( e_enqire[name[i]].side[0] );
2297           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2298           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2299           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2300           glNormal3dv ( e_enqire[name[i]].side[1] );
2301           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2302           glNormal3dv ( e_enqire[name[i]].side[2] );
2303           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2304         glEnd();
2305         glBegin ( GL_TRIANGLES );
2306           glNormal3dv ( e_enqire[name[i]].side[3] );
2307           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2308           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2309           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2310         glEnd();
2311         break;
2312 
2313         case 4:
2314         glBegin ( GL_TRIANGLE_FAN );
2315           glNormal3dv ( e_enqire[name[i]].side[0] );
2316           glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
2317           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2318           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2319           glNormal3dv ( e_enqire[name[i]].side[1] );
2320           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2321           glNormal3dv ( e_enqire[name[i]].side[2] );
2322           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2323           glNormal3dv ( e_enqire[name[i]].side[3] );
2324           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2325           glNormal3dv ( e_enqire[name[i]].side[4] );
2326           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2327           glNormal3dv ( e_enqire[name[i]].side[5] );
2328           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2329           glNormal3dv ( e_enqire[name[i]].side[6] );
2330           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2331           glNormal3dv ( e_enqire[name[i]].side[7] );
2332           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2333         glEnd();
2334         glBegin ( GL_TRIANGLE_FAN );
2335           glNormal3dv ( e_enqire[name[i]].side[8] );
2336           glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
2337           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2338           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2339           glNormal3dv ( e_enqire[name[i]].side[9] );
2340           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2341           glNormal3dv ( e_enqire[name[i]].side[10] );
2342           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2343           glNormal3dv ( e_enqire[name[i]].side[11] );
2344           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2345           glNormal3dv ( e_enqire[name[i]].side[12] );
2346           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2347           glNormal3dv ( e_enqire[name[i]].side[13] );
2348           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2349           glNormal3dv ( e_enqire[name[i]].side[14] );
2350           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2351           glNormal3dv ( e_enqire[name[i]].side[15] );
2352           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2353         glEnd();
2354         glBegin ( GL_TRIANGLE_FAN );
2355           glNormal3dv ( e_enqire[name[i]].side[16] );
2356           glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
2357           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2358           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2359           glNormal3dv ( e_enqire[name[i]].side[17] );
2360           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2361           glNormal3dv ( e_enqire[name[i]].side[18] );
2362           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2363           glNormal3dv ( e_enqire[name[i]].side[19] );
2364           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2365           glNormal3dv ( e_enqire[name[i]].side[20] );
2366           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2367           glNormal3dv ( e_enqire[name[i]].side[21] );
2368           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2369           glNormal3dv ( e_enqire[name[i]].side[22] );
2370           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2371           glNormal3dv ( e_enqire[name[i]].side[23] );
2372           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2373         glEnd();
2374         glBegin ( GL_TRIANGLE_FAN );
2375           glNormal3dv ( e_enqire[name[i]].side[24] );
2376           glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
2377           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2378           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2379           glNormal3dv ( e_enqire[name[i]].side[25] );
2380           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2381           glNormal3dv ( e_enqire[name[i]].side[26] );
2382           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2383           glNormal3dv ( e_enqire[name[i]].side[27] );
2384           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2385           glNormal3dv ( e_enqire[name[i]].side[28] );
2386           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2387           glNormal3dv ( e_enqire[name[i]].side[29] );
2388           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2389           glNormal3dv ( e_enqire[name[i]].side[30] );
2390           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2391           glNormal3dv ( e_enqire[name[i]].side[31] );
2392           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2393         glEnd();
2394         glBegin ( GL_TRIANGLE_FAN );
2395           glNormal3dv ( e_enqire[name[i]].side[32] );
2396           glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
2397           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2398           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2399           glNormal3dv ( e_enqire[name[i]].side[33] );
2400           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2401           glNormal3dv ( e_enqire[name[i]].side[34] );
2402           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2403           glNormal3dv ( e_enqire[name[i]].side[35] );
2404           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2405           glNormal3dv ( e_enqire[name[i]].side[36] );
2406           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2407           glNormal3dv ( e_enqire[name[i]].side[37] );
2408           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2409           glNormal3dv ( e_enqire[name[i]].side[38] );
2410           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2411           glNormal3dv ( e_enqire[name[i]].side[39] );
2412           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2413         glEnd();
2414         glBegin ( GL_TRIANGLE_FAN );
2415           glNormal3dv ( e_enqire[name[i]].side[40] );
2416           glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
2417           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2418           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2419           glNormal3dv ( e_enqire[name[i]].side[41] );
2420           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2421           glNormal3dv ( e_enqire[name[i]].side[42] );
2422           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2423           glNormal3dv ( e_enqire[name[i]].side[43] );
2424           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2425           glNormal3dv ( e_enqire[name[i]].side[44] );
2426           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2427           glNormal3dv ( e_enqire[name[i]].side[45] );
2428           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2429           glNormal3dv ( e_enqire[name[i]].side[46] );
2430           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2431           glNormal3dv ( e_enqire[name[i]].side[47] );
2432           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2433         glEnd();
2434         break;
2435 
2436         case 5:
2437         glBegin ( GL_TRIANGLES );
2438           glNormal3dv ( e_enqire[name[i]].side[0] );
2439           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2440           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2441           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2442           glNormal3dv ( e_enqire[name[i]].side[1] );
2443           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2444           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2445           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2446           glNormal3dv ( e_enqire[name[i]].side[2] );
2447           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2448           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2449           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2450           glNormal3dv ( e_enqire[name[i]].side[3] );
2451           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2452           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2453           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2454           glNormal3dv ( e_enqire[name[i]].side[4] );
2455           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2456           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2457           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2458           glNormal3dv ( e_enqire[name[i]].side[5] );
2459           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2460           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2461           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2462           glNormal3dv ( e_enqire[name[i]].side[6] );
2463           glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2464           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2465           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2466           glNormal3dv ( e_enqire[name[i]].side[7] );
2467           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2468           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2469           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2470           glNormal3dv ( e_enqire[name[i]].side[8] );
2471           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2472           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2473           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2474           glNormal3dv ( e_enqire[name[i]].side[9] );
2475           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2476           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2477           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2478           glNormal3dv ( e_enqire[name[i]].side[10] );
2479           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2480           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2481           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2482           glNormal3dv ( e_enqire[name[i]].side[11] );
2483           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2484           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2485           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2486           glNormal3dv ( e_enqire[name[i]].side[12] );
2487           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2488           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2489           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2490           glNormal3dv ( e_enqire[name[i]].side[13] );
2491           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2492           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2493           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2494           glNormal3dv ( e_enqire[name[i]].side[14] );
2495           glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2496           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2497           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2498           glNormal3dv ( e_enqire[name[i]].side[15] );
2499           glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2500           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2501           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2502           glNormal3dv ( e_enqire[name[i]].side[16] );
2503           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2504           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2505           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2506           glNormal3dv ( e_enqire[name[i]].side[17] );
2507           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2508           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2509           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2510           glNormal3dv ( e_enqire[name[i]].side[18] );
2511           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2512           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2513           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2514           glNormal3dv ( e_enqire[name[i]].side[19] );
2515           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2516           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2517           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2518           glNormal3dv ( e_enqire[name[i]].side[20] );
2519           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2520           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2521           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2522           glNormal3dv ( e_enqire[name[i]].side[21] );
2523           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2524           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2525           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2526           glNormal3dv ( e_enqire[name[i]].side[22] );
2527           glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2528           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2529           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2530           glNormal3dv ( e_enqire[name[i]].side[23] );
2531           glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2532           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2533           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2534           glNormal3dv ( e_enqire[name[i]].side[24] );
2535           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2536           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2537           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2538           glNormal3dv ( e_enqire[name[i]].side[25] );
2539           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2540           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2541           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2542           glNormal3dv ( e_enqire[name[i]].side[26] );
2543           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2544           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2545           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2546           glNormal3dv ( e_enqire[name[i]].side[27] );
2547           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2548           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2549           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2550           glNormal3dv ( e_enqire[name[i]].side[28] );
2551           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2552           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2553           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2554           glNormal3dv ( e_enqire[name[i]].side[29] );
2555           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2556           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2557           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2558           glNormal3dv ( e_enqire[name[i]].side[30] );
2559           glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2560           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2561           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2562           glNormal3dv ( e_enqire[name[i]].side[31] );
2563           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2564           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2565           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2566           glNormal3dv ( e_enqire[name[i]].side[32] );
2567           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2568           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2569           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2570           glNormal3dv ( e_enqire[name[i]].side[33] );
2571           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2572           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2573           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2574           glNormal3dv ( e_enqire[name[i]].side[34] );
2575           glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2576           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2577           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2578           glNormal3dv ( e_enqire[name[i]].side[35] );
2579           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2580           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2581           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2582           glNormal3dv ( e_enqire[name[i]].side[36] );
2583           glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2584           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2585           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2586           glNormal3dv ( e_enqire[name[i]].side[37] );
2587           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2588           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2589           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2590           glNormal3dv ( e_enqire[name[i]].side[38] );
2591           glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2592           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2593           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2594           glNormal3dv ( e_enqire[name[i]].side[39] );
2595           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2596           glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2597           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2598         glEnd();
2599         break;
2600 
2601         case 6:
2602         glBegin ( GL_TRIANGLES );
2603           glNormal3dv ( e_enqire[name[i]].side[0] );
2604           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2605           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2606           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2607           glNormal3dv ( e_enqire[name[i]].side[1] );
2608           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2609           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2610           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2611           glNormal3dv ( e_enqire[name[i]].side[2] );
2612           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2613           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2614           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2615           glNormal3dv ( e_enqire[name[i]].side[3] );
2616           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2617           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2618           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2619           glNormal3dv ( e_enqire[name[i]].side[4] );
2620           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2621           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2622           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2623           glNormal3dv ( e_enqire[name[i]].side[5] );
2624           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2625           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2626           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2627           glNormal3dv ( e_enqire[name[i]].side[6] );
2628           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2629           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2630           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2631           glNormal3dv ( e_enqire[name[i]].side[7] );
2632           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2633           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2634           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2635           glNormal3dv ( e_enqire[name[i]].side[8] );
2636           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2637           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2638           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2639           glNormal3dv ( e_enqire[name[i]].side[9] );
2640           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2641           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2642           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2643           glNormal3dv ( e_enqire[name[i]].side[10] );
2644           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2645           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2646           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2647           glNormal3dv ( e_enqire[name[i]].side[11] );
2648           glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2649           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2650           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2651           glNormal3dv ( e_enqire[name[i]].side[12] );
2652           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2653           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2654           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2655           glNormal3dv ( e_enqire[name[i]].side[13] );
2656           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2657           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2658           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2659           glNormal3dv ( e_enqire[name[i]].side[14] );
2660           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2661           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2662           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2663           glNormal3dv ( e_enqire[name[i]].side[15] );
2664           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2665           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2666           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2667         glEnd();
2668         break;
2669 
2670         case 7:
2671         glBegin ( GL_TRIANGLES );
2672           glNormal3dv ( e_enqire[name[i]].side[0] );
2673           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2674           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2675           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2676         glEnd();
2677         break;
2678 
2679         case 8:
2680         glBegin ( GL_TRIANGLES );
2681           glNormal3dv ( e_enqire[name[i]].side[0] );
2682           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2683           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2684           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2685           glNormal3dv ( e_enqire[name[i]].side[1] );
2686           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2687           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2688           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2689           glNormal3dv ( e_enqire[name[i]].side[2] );
2690           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2691           glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2692           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2693           glNormal3dv ( e_enqire[name[i]].side[3] );
2694           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2695           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2696           glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2697         glEnd();
2698         break;
2699 
2700         case 9:
2701         glBegin ( GL_TRIANGLE_STRIP );
2702           glNormal3dv ( e_enqire[name[i]].side[0] );
2703           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2704           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2705           glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2706           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2707         glEnd();
2708         break;
2709 
2710         case 10:
2711         glBegin ( GL_TRIANGLE_FAN );
2712           glNormal3dv ( e_enqire[name[i]].side[0] );
2713           glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2714           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2715           glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2716           glNormal3dv ( e_enqire[name[i]].side[1] );
2717           glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2718           glNormal3dv ( e_enqire[name[i]].side[2] );
2719           glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2720           glNormal3dv ( e_enqire[name[i]].side[3] );
2721           glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2722           glNormal3dv ( e_enqire[name[i]].side[4] );
2723           glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2724           glNormal3dv ( e_enqire[name[i]].side[5] );
2725           glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2726           glNormal3dv ( e_enqire[name[i]].side[6] );
2727           glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2728           glNormal3dv ( e_enqire[name[i]].side[7] );
2729           glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2730         glEnd();
2731         break;
2732 
2733         case 11:
2734         glDisable( GL_LIGHTING );
2735         glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
2736         glBegin ( GL_LINES );
2737           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2738           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2739         glEnd();
2740         glEnable( GL_LIGHTING );
2741         break;
2742 
2743         case 12:
2744         glDisable( GL_LIGHTING );
2745         glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
2746         glBegin ( GL_LINE_STRIP );
2747           glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2748           glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2749           glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2750         glEnd();
2751         glEnable( GL_LIGHTING );
2752         break;
2753       }
2754 
2755       if(type=='a')
2756       {
2757 	switch(e_enqire[name[i]].type)
2758 	{
2759 		case 1:
2760 		case 4:
2761 			j=8;
2762 			break;
2763 		case 2:
2764 		case 5:
2765 			j=6;
2766 			break;
2767 		case 3:
2768 		case 6:
2769 		case 9:
2770 		case 10:
2771 			j=4;
2772 			break;
2773 		case 7:
2774 		case 8:
2775 		case 12:
2776 			j=3;
2777 			break;
2778 		case 11:
2779 			j=2;
2780 			break;
2781 		default:
2782 			// assure that j!=0 (see division below)
2783 		        printf("ERROR: type:%d of elem:%d not known\n",e_enqire[name[i]].type,name[i]);
2784 			j=1;
2785 			break;
2786 	}
2787         x=y=z=0.;
2788         for (n=0; n<j; n++)
2789         {
2790           x+= node[e_enqire[name[i]].nod[n]].nx;
2791           y+= node[e_enqire[name[i]].nod[n]].ny;
2792           z+= node[e_enqire[name[i]].nod[n]].nz;
2793         }
2794         x/= j; y/= j; z/= j;
2795         sprintf( buffer, "%d ", name[i]);
2796         glColor3f ( entitycol[0].r, entitycol[0].g, entitycol[0].b  );
2797         glDisable( GL_LIGHTING );
2798         text( x, y, z, buffer, glut_font[draw_font] );
2799         glEnable( GL_LIGHTING );
2800       }
2801     }
2802     glDisable( GL_LIGHTING );
2803   }
2804 }
2805 
2806 
2807 
drawFaces_plot(int num,int * name,Nodes * node,double * colNr,Faces * face,int col,char type,int width,int pickflag)2808 void drawFaces_plot( int num, int *name, Nodes *node, double *colNr, Faces *face, int col, char type, int width, int pickflag )
2809 {
2810   int i, j, n;
2811   double x, y, z, alpha=1.;
2812   GLint ipuf[2];
2813   extern Elements  *e_enqire;
2814 
2815   if((type=='x')||(type=='b'))
2816   {
2817     if(width>0) { alpha=(float)width/100.; }
2818     else alpha=BLEND_ALPHA;
2819     width=1;
2820     if(type=='x') type='v';
2821   }
2822   else
2823   {
2824     if(width<1) width=1;
2825     glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
2826     if ( ipuf[0] == GL_FRONT ) glEnable ( GL_CULL_FACE );
2827     else glDisable ( GL_CULL_FACE );
2828   }
2829   glLineWidth(width);
2830 
2831   if((type=='v')&&(!pickflag)&&(illumResultFlag))
2832   {
2833     /* enable all colors  */
2834     defineColTextur_load(alpha);
2835     //glColor3d( 1,1,1);
2836     glEnable(GL_TEXTURE_1D);
2837 
2838     setMaterial_rgb(1, 1.);
2839     glEnable( GL_LIGHTING );
2840 
2841     for (i=0; i<num; i++ )
2842     {
2843       switch(face[name[i]].type)
2844       {
2845     	case 7:
2846         glNormal3dv ( face[name[i]].side[0] );
2847         glBegin ( GL_TRIANGLES );
2848           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
2849           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2850           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
2851           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2852          glNormal3dv ( face[name[i]].side[0] );
2853           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
2854           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2855         glEnd();
2856         break;
2857 
2858     	case 8:
2859         glNormal3dv ( face[name[i]].side[0] );
2860         glBegin ( GL_TRIANGLES );
2861           GLCOLOR     ( colNr[face[name[i]].nod[0]] );
2862           glVertex3dv  ( &node[face[name[i]].nod[0]].nx );
2863           GLCOLOR     ( colNr[face[name[i]].nod[3]] );
2864           glVertex3dv  ( &node[face[name[i]].nod[3]].nx );
2865          glNormal3dv ( face[name[i]].side[0] );
2866           GLCOLOR     ( colNr[face[name[i]].nod[5]] );
2867           glVertex3dv  ( &node[face[name[i]].nod[5]].nx );
2868           GLCOLOR     ( colNr[face[name[i]].nod[2]] );
2869           glVertex3dv  ( &node[face[name[i]].nod[2]].nx );
2870           GLCOLOR     ( colNr[face[name[i]].nod[5]] );
2871           glVertex3dv  ( &node[face[name[i]].nod[5]].nx );
2872          glNormal3dv ( face[name[i]].side[1] );
2873           GLCOLOR     ( colNr[face[name[i]].nod[4]] );
2874           glVertex3dv  ( &node[face[name[i]].nod[4]].nx );
2875           GLCOLOR     ( colNr[face[name[i]].nod[4]] );
2876           glVertex3dv  ( &node[face[name[i]].nod[4]].nx );
2877           GLCOLOR     ( colNr[face[name[i]].nod[5]] );
2878           glVertex3dv  ( &node[face[name[i]].nod[5]].nx );
2879          glNormal3dv ( face[name[i]].side[2] );
2880           GLCOLOR     ( colNr[face[name[i]].nod[3]] );
2881           glVertex3dv  ( &node[face[name[i]].nod[3]].nx );
2882           GLCOLOR     ( colNr[face[name[i]].nod[3]] );
2883           glVertex3dv  ( &node[face[name[i]].nod[3]].nx );
2884           GLCOLOR     ( colNr[face[name[i]].nod[1]] );
2885           glVertex3dv  ( &node[face[name[i]].nod[1]].nx );
2886          glNormal3dv ( face[name[i]].side[3] );
2887           GLCOLOR     ( colNr[face[name[i]].nod[4]] );
2888           glVertex3dv  ( &node[face[name[i]].nod[4]].nx );
2889         glEnd();
2890         break;
2891 
2892     	case 9:
2893         glNormal3dv ( face[name[i]].side[0] );
2894         glBegin ( GL_TRIANGLE_STRIP );
2895           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
2896           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2897           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
2898           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2899          glNormal3dv ( face[name[i]].side[0] );
2900           GLCOLOR    ( colNr[face[name[i]].nod[3]] );
2901           glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2902           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
2903           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2904         glEnd();
2905         break;
2906 
2907     	case 10:
2908         glNormal3dv ( face[name[i]].side[0] );
2909         glBegin ( GL_TRIANGLE_FAN );
2910           GLCOLOR    ( colNr[face[name[i]].nod[8]] );
2911           glVertex3dv ( &node[face[name[i]].nod[8]].nx );
2912           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
2913           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2914          glNormal3dv ( face[name[i]].side[0] );
2915           GLCOLOR    ( colNr[face[name[i]].nod[4]] );
2916           glVertex3dv ( &node[face[name[i]].nod[4]].nx );
2917          glNormal3dv ( face[name[i]].side[1] );
2918           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
2919           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2920          glNormal3dv ( face[name[i]].side[2] );
2921           GLCOLOR    ( colNr[face[name[i]].nod[5]] );
2922           glVertex3dv ( &node[face[name[i]].nod[5]].nx );
2923          glNormal3dv ( face[name[i]].side[3] );
2924           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
2925           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2926          glNormal3dv ( face[name[i]].side[4] );
2927           GLCOLOR    ( colNr[face[name[i]].nod[6]] );
2928           glVertex3dv ( &node[face[name[i]].nod[6]].nx );
2929          glNormal3dv ( face[name[i]].side[5] );
2930           GLCOLOR    ( colNr[face[name[i]].nod[3]] );
2931           glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2932          glNormal3dv ( face[name[i]].side[6] );
2933           GLCOLOR    ( colNr[face[name[i]].nod[7]] );
2934           glVertex3dv ( &node[face[name[i]].nod[7]].nx );
2935          glNormal3dv ( face[name[i]].side[7] );
2936           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
2937           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2938         glEnd();
2939         break;
2940 
2941     	case 11:
2942         glBegin ( GL_LINES );
2943           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
2944           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2945           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
2946           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2947         glEnd();
2948         break;
2949 
2950     	case 12:
2951         glBegin ( GL_LINE_STRIP );
2952           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
2953           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2954           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
2955           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2956           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
2957           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2958         glEnd();
2959         break;
2960       }
2961     }
2962     glDisable(GL_TEXTURE_1D);
2963     glDisable( GL_LIGHTING );
2964   }
2965   else if((type=='v')&&(!pickflag))
2966   {
2967     /* enable all colors */
2968     defineColTextur_load(alpha);
2969     glColor3d( 1,1,1);
2970     glEnable(GL_TEXTURE_1D);
2971 
2972     for (i=0; i<num; i++ )
2973     {
2974       switch(face[name[i]].type)
2975       {
2976     	case 7:
2977         glBegin ( GL_TRIANGLES );
2978           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
2979           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2980           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
2981           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2982           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
2983           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2984         glEnd();
2985         break;
2986 
2987     	case 8:
2988         glBegin ( GL_TRIANGLES );
2989           GLCOLOR     ( colNr[face[name[i]].nod[0]] );
2990           glVertex3dv  ( &node[face[name[i]].nod[0]].nx );
2991           GLCOLOR     ( colNr[face[name[i]].nod[3]] );
2992           glVertex3dv  ( &node[face[name[i]].nod[3]].nx );
2993           GLCOLOR     ( colNr[face[name[i]].nod[5]] );
2994           glVertex3dv  ( &node[face[name[i]].nod[5]].nx );
2995 
2996           GLCOLOR     ( colNr[face[name[i]].nod[2]] );
2997           glVertex3dv  ( &node[face[name[i]].nod[2]].nx );
2998           GLCOLOR     ( colNr[face[name[i]].nod[5]] );
2999           glVertex3dv  ( &node[face[name[i]].nod[5]].nx );
3000           GLCOLOR     ( colNr[face[name[i]].nod[4]] );
3001           glVertex3dv  ( &node[face[name[i]].nod[4]].nx );
3002 
3003           GLCOLOR     ( colNr[face[name[i]].nod[4]] );
3004           glVertex3dv  ( &node[face[name[i]].nod[4]].nx );
3005           GLCOLOR     ( colNr[face[name[i]].nod[5]] );
3006           glVertex3dv  ( &node[face[name[i]].nod[5]].nx );
3007           GLCOLOR     ( colNr[face[name[i]].nod[3]] );
3008           glVertex3dv  ( &node[face[name[i]].nod[3]].nx );
3009 
3010           GLCOLOR     ( colNr[face[name[i]].nod[3]] );
3011           glVertex3dv  ( &node[face[name[i]].nod[3]].nx );
3012           GLCOLOR     ( colNr[face[name[i]].nod[1]] );
3013           glVertex3dv  ( &node[face[name[i]].nod[1]].nx );
3014           GLCOLOR     ( colNr[face[name[i]].nod[4]] );
3015           glVertex3dv  ( &node[face[name[i]].nod[4]].nx );
3016         glEnd();
3017         break;
3018 
3019     	case 9:
3020         glBegin ( GL_TRIANGLE_STRIP );
3021           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
3022           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3023           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
3024           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3025           GLCOLOR    ( colNr[face[name[i]].nod[3]] );
3026           glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3027           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
3028           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3029         glEnd();
3030         break;
3031 
3032     	case 10:
3033         glBegin ( GL_TRIANGLE_FAN );
3034           GLCOLOR    ( colNr[face[name[i]].nod[8]] );
3035           glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3036           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
3037           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3038           GLCOLOR    ( colNr[face[name[i]].nod[4]] );
3039           glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3040           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
3041           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3042           GLCOLOR    ( colNr[face[name[i]].nod[5]] );
3043           glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3044           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
3045           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3046           GLCOLOR    ( colNr[face[name[i]].nod[6]] );
3047           glVertex3dv ( &node[face[name[i]].nod[6]].nx );
3048           GLCOLOR    ( colNr[face[name[i]].nod[3]] );
3049           glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3050           GLCOLOR    ( colNr[face[name[i]].nod[7]] );
3051           glVertex3dv ( &node[face[name[i]].nod[7]].nx );
3052           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
3053           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3054         glEnd();
3055         break;
3056 
3057     	case 11:
3058         glBegin ( GL_LINES );
3059           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
3060           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3061           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
3062           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3063         glEnd();
3064         break;
3065 
3066     	case 12:
3067         glBegin ( GL_LINE_STRIP );
3068           GLCOLOR    ( colNr[face[name[i]].nod[0]] );
3069           glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3070           GLCOLOR    ( colNr[face[name[i]].nod[2]] );
3071           glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3072           GLCOLOR    ( colNr[face[name[i]].nod[1]] );
3073           glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3074         glEnd();
3075         break;
3076       }
3077     }
3078     glDisable(GL_TEXTURE_1D);
3079   }
3080   else if(pickflag)
3081   {
3082     /* any other color */
3083     glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
3084 
3085     if(type=='e') glLoadName('e'); else glLoadName('f');
3086 
3087     for (i=0; i<num; i++ )
3088     {
3089       if(type=='e') glPushName(face[name[i]].elem_nr); else glPushName(name[i]);
3090       switch(face[name[i]].type)
3091       {
3092     	case 7:
3093         glBegin ( GL_TRIANGLES );
3094          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3095          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3096          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3097         glEnd();
3098         break;
3099 
3100     	case 8:
3101         glBegin ( GL_TRIANGLES );
3102          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3103          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3104          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3105          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3106          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3107          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3108          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3109          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3110          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3111          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3112          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3113          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3114         glEnd();
3115         break;
3116 
3117     	case 9:
3118         glBegin ( GL_TRIANGLES );
3119          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3120          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3121          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3122          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3123          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3124          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3125         glEnd();
3126         break;
3127 
3128     	case 10:
3129         glBegin ( GL_TRIANGLE_FAN);
3130          glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3131          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3132          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3133          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3134          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3135          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3136          glVertex3dv ( &node[face[name[i]].nod[6]].nx );
3137          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3138          glVertex3dv ( &node[face[name[i]].nod[7]].nx );
3139          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3140         glEnd();
3141         break;
3142 
3143     	case 11:
3144         glBegin ( GL_LINES );
3145          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3146          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3147         glEnd();
3148         break;
3149 
3150     	case 12:
3151         glBegin ( GL_LINE_STRIP );
3152          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3153          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3154          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3155         glEnd();
3156         break;
3157       }
3158 
3159       if(type=='a')
3160       {
3161         j=0;
3162         switch(face[name[i]].type)
3163 	{
3164 	case 7:
3165 	j=3;  break;
3166 	case 8:
3167 	j=3;  break;
3168 	case 9:
3169 	j=4;  break;
3170 	case 10:
3171 	j=4;  break;
3172 	case 11:
3173 	j=2;  break;
3174 	case 12:
3175 	j=2;  break;
3176 	}
3177         x=y=z=0.;
3178         for (n=0; n<j; n++)
3179         {
3180           x+= node[face[name[i]].nod[n]].nx;
3181           y+= node[face[name[i]].nod[n]].ny;
3182           z+= node[face[name[i]].nod[n]].nz;
3183         }
3184         x/= j; y/= j; z/= j;
3185         sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr+1);
3186         text( x, y, z, buffer, glut_font[draw_font] );
3187       }
3188       glPopName();
3189     }
3190     glLoadName(-1);
3191   }
3192   else
3193   {
3194     setMaterial_rgb(col, alpha);
3195     glEnable( GL_LIGHTING );
3196 
3197     /* Achtung! glNormal3dv nur VOR den ersten nodes fuert (nur hier im face-code!) auf mtu-linux zum haengen */
3198     /* Die normale des ersten Dreiecks muss vor- und im block spez. werden damit alle modi laufen */
3199     /*
3200      glBegin ( GL_TRIANGLE_FAN   );
3201      <glNormal3dv ( face[name[i]].side[0] );>
3202      glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3203      etc.
3204     */
3205 
3206     for (i=0; i<num; i++ )
3207     {
3208       switch(face[name[i]].type)
3209       {
3210     	case 7:
3211         glNormal3dv ( face[name[i]].side[0] );
3212         glBegin ( GL_TRIANGLES );
3213          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3214          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3215          glNormal3dv ( face[name[i]].side[0] );
3216          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3217         glEnd();
3218         break;
3219 
3220     	case 8:
3221         glNormal3dv ( face[name[i]].side[0] );
3222         glBegin ( GL_TRIANGLES );
3223          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3224          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3225          glNormal3dv ( face[name[i]].side[0] );
3226          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3227          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3228          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3229          glNormal3dv ( face[name[i]].side[1] );
3230          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3231          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3232          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3233          glNormal3dv ( face[name[i]].side[2] );
3234          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3235          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3236          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3237          glNormal3dv ( face[name[i]].side[3] );
3238          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3239         glEnd();
3240         break;
3241 
3242     	case 9:
3243         glNormal3dv ( face[name[i]].side[0] );
3244         glBegin ( GL_TRIANGLE_STRIP );
3245          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3246          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3247          glNormal3dv ( face[name[i]].side[0] );
3248          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3249          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3250         glEnd();
3251         break;
3252 
3253     	case 10:
3254         glNormal3dv ( face[name[i]].side[0] );
3255         glBegin ( GL_TRIANGLE_FAN   );
3256          glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3257          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3258          glNormal3dv ( face[name[i]].side[0] );
3259          glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3260          glNormal3dv ( face[name[i]].side[1] );
3261          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3262          glNormal3dv ( face[name[i]].side[2] );
3263          glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3264          glNormal3dv ( face[name[i]].side[3] );
3265          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3266          glNormal3dv ( face[name[i]].side[4] );
3267          glVertex3dv ( &node[face[name[i]].nod[6]].nx );
3268          glNormal3dv ( face[name[i]].side[5] );
3269          glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3270          glNormal3dv ( face[name[i]].side[6] );
3271          glVertex3dv ( &node[face[name[i]].nod[7]].nx );
3272          glNormal3dv ( face[name[i]].side[7] );
3273          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3274          glEnd();
3275         break;
3276 
3277     	case 11:
3278 	//glNormal3dv ( e_enqire[face[name[i]].elem_nr].side[0] );
3279         glDisable( GL_LIGHTING );
3280         glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
3281         glBegin ( GL_LINES );
3282          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3283          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3284         glEnd();
3285         glEnable( GL_LIGHTING );
3286         break;
3287 
3288     	case 12:
3289 	  //glNormal3dv ( e_enqire[face[name[i]].elem_nr].side[0] );
3290         glDisable( GL_LIGHTING );
3291         glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
3292         glBegin ( GL_LINE_STRIP );
3293          glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3294          glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3295          glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3296         glEnd();
3297         glEnable( GL_LIGHTING );
3298         break;
3299       }
3300 
3301       if(type=='a')
3302       {
3303         j=0;
3304         switch(face[name[i]].type)
3305 	{
3306 	case 7:
3307 	j=3;  break;
3308 	case 8:
3309 	j=3;  break;
3310 	case 9:
3311 	j=4;  break;
3312 	case 10:
3313 	j=4;  break;
3314 	case 11:
3315 	j=2;  break;
3316 	case 12:
3317 	j=2;  break;
3318 	}
3319         x=y=z=0.;
3320         for (n=0; n<j; n++)
3321         {
3322           x+= node[face[name[i]].nod[n]].nx;
3323           y+= node[face[name[i]].nod[n]].ny;
3324           z+= node[face[name[i]].nod[n]].nz;
3325         }
3326         x/= j; y/= j; z/= j;
3327         if(e_enqire[face[name[i]].elem_nr].type>6)  // shell
3328 	{
3329           if(e_enqire[face[name[i]].elem_nr].type>10)  // beam
3330             sprintf( buffer, "%d-S?", face[name[i]].elem_nr);
3331 	  else if(e_enqire[face[name[i]].elem_nr].attr>3)  // plain strain,stress or axisym
3332 	  {
3333             //if(face[name[i]].nr==0) sprintf( buffer, "%d-SN", face[name[i]].elem_nr);
3334             //else if(face[name[i]].nr==1) sprintf( buffer, "%d-SP", face[name[i]].elem_nr);
3335             if(face[name[i]].nr==1) sprintf( buffer, "%d-SNP", face[name[i]].elem_nr);
3336             else sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr-1);
3337 	  }
3338 	  else
3339 	  {
3340             //if(face[name[i]].nr==0) sprintf( buffer, "%d-SNEG", face[name[i]].elem_nr);
3341             //else if(face[name[i]].nr==1) sprintf( buffer, "%d-SPOS", face[name[i]].elem_nr);
3342             if(face[name[i]].nr==1) sprintf( buffer, "%d-SNP", face[name[i]].elem_nr);
3343             else sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr+1);
3344 	  }
3345 	}
3346         else sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr+1);
3347         glColor3f ( entitycol[0].r, entitycol[0].g, entitycol[0].b  );
3348         glDisable( GL_LIGHTING );
3349         text( x, y, z, buffer, glut_font[draw_font] );
3350         glEnable( GL_LIGHTING );
3351       }
3352     }
3353     glDisable( GL_LIGHTING );
3354   }
3355   glEnable ( GL_CULL_FACE );
3356 }
3357 
3358 
3359 
3360 
drawFaces_edge(int num,int * name,Nodes * node,Faces * face,int color,char type)3361 void drawFaces_edge( int num, int *name, Nodes *node, Faces *face, int color, char type )
3362 {
3363   int i;
3364   static GLint ipuf[2];
3365   double dsloc;
3366 
3367   /* change the offset of the edges to the backside of the elements if */
3368   /* the interiour is visible */
3369   glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
3370   if(ds<MIN_ELEM_EDGE_DISTANCE) dsloc=MIN_ELEM_EDGE_DISTANCE; else
3371     dsloc=ds;
3372   if ( ipuf[0] == GL_FRONT ) dsloc*=-1;
3373   //printf("dsloc:%e\n",dsloc);
3374   glColor3d(color,color,color);
3375   glLineWidth(1.);
3376 
3377   for (i=0; i<num; i++ )
3378   {
3379     switch(face[name[i]].type)
3380     {
3381       case 7:
3382       glBegin ( GL_LINE_LOOP );
3383       glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3384                    node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3385                    node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3386       glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3387                    node[face[name[i]].nod[1]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3388                    node[face[name[i]].nod[1]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3389       glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3390                    node[face[name[i]].nod[2]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3391                    node[face[name[i]].nod[2]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3392       glEnd();
3393       break;
3394 
3395       case 8:
3396       glBegin ( GL_LINE_LOOP );
3397       glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3398                    node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3399                    node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3400       glVertex3d ( node[face[name[i]].nod[3]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3401                    node[face[name[i]].nod[3]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3402                    node[face[name[i]].nod[3]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3403       glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[3][0]*1.e-3*dsloc,
3404                    node[face[name[i]].nod[1]].ny+face[name[i]].side[3][1]*1.e-3*dsloc,
3405                    node[face[name[i]].nod[1]].nz+face[name[i]].side[3][2]*1.e-3*dsloc );
3406       glVertex3d ( node[face[name[i]].nod[4]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3407                    node[face[name[i]].nod[4]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3408                    node[face[name[i]].nod[4]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3409       glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[1][0]*1.e-3*dsloc,
3410                    node[face[name[i]].nod[2]].ny+face[name[i]].side[1][1]*1.e-3*dsloc,
3411                    node[face[name[i]].nod[2]].nz+face[name[i]].side[1][2]*1.e-3*dsloc );
3412       glVertex3d ( node[face[name[i]].nod[5]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3413                    node[face[name[i]].nod[5]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3414                    node[face[name[i]].nod[5]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3415       glEnd();
3416       break;
3417 
3418       case 9:
3419       glBegin ( GL_LINE_LOOP );
3420       glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3421                    node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3422                    node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3423       glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3424                    node[face[name[i]].nod[1]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3425                    node[face[name[i]].nod[1]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3426       glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3427                    node[face[name[i]].nod[2]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3428                    node[face[name[i]].nod[2]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3429       glVertex3d ( node[face[name[i]].nod[3]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3430                    node[face[name[i]].nod[3]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3431                    node[face[name[i]].nod[3]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3432       glEnd();
3433       break;
3434 
3435       case 10:
3436       glBegin ( GL_LINE_LOOP );
3437       glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3438                    node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3439                    node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3440       glVertex3d ( node[face[name[i]].nod[4]].nx+face[name[i]].side[1][0]*1.e-3*dsloc,
3441                    node[face[name[i]].nod[4]].ny+face[name[i]].side[1][1]*1.e-3*dsloc,
3442                    node[face[name[i]].nod[4]].nz+face[name[i]].side[1][2]*1.e-3*dsloc );
3443       glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[5][0]*1.e-3*dsloc,
3444                    node[face[name[i]].nod[1]].ny+face[name[i]].side[5][1]*1.e-3*dsloc,
3445                    node[face[name[i]].nod[1]].nz+face[name[i]].side[5][2]*1.e-3*dsloc );
3446       glVertex3d ( node[face[name[i]].nod[5]].nx+face[name[i]].side[4][0]*1.e-3*dsloc,
3447                    node[face[name[i]].nod[5]].ny+face[name[i]].side[4][1]*1.e-3*dsloc,
3448                    node[face[name[i]].nod[5]].nz+face[name[i]].side[4][2]*1.e-3*dsloc );
3449       glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[3][0]*1.e-3*dsloc,
3450                    node[face[name[i]].nod[2]].ny+face[name[i]].side[3][1]*1.e-3*dsloc,
3451                    node[face[name[i]].nod[2]].nz+face[name[i]].side[3][2]*1.e-3*dsloc );
3452       glVertex3d ( node[face[name[i]].nod[6]].nx+face[name[i]].side[4][0]*1.e-3*dsloc,
3453                    node[face[name[i]].nod[6]].ny+face[name[i]].side[4][1]*1.e-3*dsloc,
3454                    node[face[name[i]].nod[6]].nz+face[name[i]].side[4][2]*1.e-3*dsloc );
3455       glVertex3d ( node[face[name[i]].nod[3]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3456                    node[face[name[i]].nod[3]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3457                    node[face[name[i]].nod[3]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3458       glVertex3d ( node[face[name[i]].nod[7]].nx+face[name[i]].side[1][0]*1.e-3*dsloc,
3459                    node[face[name[i]].nod[7]].ny+face[name[i]].side[1][1]*1.e-3*dsloc,
3460                    node[face[name[i]].nod[7]].nz+face[name[i]].side[1][2]*1.e-3*dsloc );
3461       glEnd();
3462       break;
3463     }
3464   }
3465 
3466   glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
3467   if ( ipuf[0] == GL_FRONT ) dsloc*=-1;
3468 }
3469 
3470 
3471 
3472 
drawElem_edge(int num,int * name,Nodes * node,Elements * e_enqire,int color,char type)3473 void drawElem_edge( int num, int *name, Nodes *node, Elements *e_enqire, int color, char type )
3474 {
3475   register int i;
3476 
3477   glColor3d(color,color,color);
3478   glLineWidth(1.);
3479 
3480 #if TEST
3481   printf ("in drawElemEdges\n");
3482 #endif
3483 
3484   for (i=0; i<num; i++ )
3485   {
3486     switch(e_enqire[name[i]].type)
3487     {
3488       case 1:
3489       glBegin ( GL_LINE_LOOP );
3490       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3491       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3492       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3493       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3494       glEnd();
3495       glBegin ( GL_LINE_LOOP );
3496       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3497       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3498       glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3499       glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3500       glEnd();
3501       glBegin ( GL_LINES );
3502       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3503       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3504       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3505       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3506       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3507       glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3508       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3509       glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3510       glEnd();
3511       break;
3512 
3513       case 2:
3514       glBegin ( GL_LINE_LOOP );
3515       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3516       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3517       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3518       glEnd();
3519       glBegin ( GL_LINE_LOOP );
3520       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3521       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3522       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3523       glEnd();
3524       glBegin ( GL_LINES );
3525       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3526       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3527       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3528       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3529       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3530       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3531       glEnd();
3532       break;
3533 
3534       case 3:
3535       glBegin ( GL_LINE_STRIP);
3536       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3537       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3538       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3539       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3540       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3541       glEnd();
3542       glBegin ( GL_LINE_STRIP );
3543       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3544       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3545       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3546       glEnd();
3547       break;
3548 
3549       case 4:
3550       glBegin ( GL_LINE_LOOP );
3551       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3552       glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
3553       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3554       glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
3555       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3556       glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
3557       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3558       glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
3559       glEnd();
3560       glBegin ( GL_LINE_LOOP );
3561       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3562       glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
3563       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3564       glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
3565       glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3566       glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
3567       glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3568       glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
3569       glEnd();
3570       glBegin ( GL_LINES );
3571       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3572       glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
3573       glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
3574       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3575       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3576       glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
3577       glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
3578       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3579       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3580       glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
3581       glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
3582       glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3583       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3584       glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
3585       glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
3586       glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3587       glEnd();
3588       break;
3589 
3590       case 5:
3591       glBegin ( GL_LINE_LOOP );
3592       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3593       glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
3594       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3595       glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
3596       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3597       glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3598       glEnd();
3599       glBegin ( GL_LINE_LOOP );
3600       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3601       glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
3602       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3603       glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
3604       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3605       glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
3606       glEnd();
3607       glBegin ( GL_LINES );
3608       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3609       glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
3610       glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
3611       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3612       glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
3613       glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
3614       glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
3615       glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
3616       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3617       glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
3618       glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
3619       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3620       glEnd();
3621       break;
3622 
3623       case 6:
3624       glBegin ( GL_LINE_STRIP);
3625       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3626       glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3627       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3628       glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
3629       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3630       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3631       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3632       glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
3633       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3634       glEnd();
3635       glBegin ( GL_LINE_STRIP );
3636       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3637       glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3638       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3639       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3640       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3641       glEnd();
3642       break;
3643 
3644       case 7:
3645       glBegin ( GL_LINE_LOOP );
3646       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3647       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3648       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3649       glEnd();
3650       break;
3651 
3652       case 8:
3653       glBegin ( GL_LINE_LOOP );
3654       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3655       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3656       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3657       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3658       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3659       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3660       glEnd();
3661       break;
3662 
3663       case 9:
3664       glBegin ( GL_LINE_LOOP );
3665       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3666       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3667       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3668       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3669       glEnd();
3670       break;
3671 
3672       case 10:
3673       glBegin ( GL_LINE_LOOP );
3674       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3675       glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3676       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3677       glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3678       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3679       glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3680       glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3681       glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3682       glEnd();
3683       break;
3684 
3685       case 11:
3686       glBegin ( GL_LINES );
3687       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3688       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3689       glEnd();
3690       break;
3691 
3692       case 12:
3693       glBegin ( GL_LINE_STRIP );
3694       glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3695       glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3696       glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3697       glEnd();
3698       break;
3699     }
3700   }
3701 }
3702 
3703 
3704 
drawElemNodes_plot(int num,int * name,Nodes * node,Elements * e_enqire,int col,char type)3705 void drawElemNodes_plot( int num, int *name, Nodes *node, Elements *e_enqire, int col, char type )
3706 {
3707   register int i, n;
3708   int  sum=0;
3709   int *nodnr;
3710 
3711   if ( (nodnr = (int *)malloc( (int)(anz->nmax+1) * sizeof(int))) == NULL )
3712   {  printf(" ERROR: malloc in drawElemNodes_plot(), nodnr\n\n") ; return;}
3713   for (i=0; i<=anz->nmax; i++ ) nodnr[i]=0;
3714 
3715   for (i=0; i<num; i++ )
3716   {
3717     switch(e_enqire[name[i]].type)
3718     {
3719     	case 1:
3720 		sum=8;
3721 		break;
3722     	case 2:
3723 		sum=6;
3724 		break;
3725     	case 3:
3726 		sum=4;
3727 		break;
3728     	case 4:
3729 		sum=20;
3730 		break;
3731     	case 5:
3732 		sum=20;
3733 		break;
3734     	case 6:
3735 		sum=10;
3736 		break;
3737     	case 7:
3738 		sum=3;
3739 		break;
3740     	case 8:
3741 		sum=6;
3742 		break;
3743     	case 9:
3744 		sum=4;
3745 		break;
3746     	case 10:
3747 		sum=8;
3748 		break;
3749     	case 11:
3750 		sum=2;
3751 		break;
3752     	case 12:
3753 		sum=3;
3754 		break;
3755     	default:
3756 		sum=0;
3757 		break;
3758     }
3759     for (n=0; n<sum; n++) nodnr[e_enqire[name[i]].nod[n]]=e_enqire[name[i]].nod[n];
3760   }
3761 
3762   /* draw all selected nodes */
3763   glColor3d  ( 0.5,0.5,0. );
3764   glLoadName('n');
3765   glPointSize(1);
3766   for (i=0; i<=anz->nmax; i++ )
3767   {
3768     if(nodnr[i])
3769     {
3770       glPushName(nodnr[i]);
3771       glBegin ( GL_POINTS );
3772       glVertex3dv ( &node[nodnr[i]].nx );
3773       glEnd();
3774       glPopName();
3775     }
3776   }
3777   glLoadName(-1);
3778   free(nodnr);
3779 }
3780 
3781 
3782 
drawFaceNodes_plot(int num,int * name,Nodes * node,Faces * face,int col,char type)3783 void drawFaceNodes_plot( int num, int *name, Nodes *node, Faces *face, int col, char type )
3784 {
3785   register int i, n;
3786   int  sum=0;
3787   int *nodnr;
3788 
3789   if ( (nodnr = (int *)malloc( (int)(anz->nmax+1) * sizeof(int))) == NULL )
3790   {  printf(" ERROR: malloc in drawSurfNodes_plot(), nodnr\n\n") ; return;}
3791   for (i=0; i<=anz->nmax; i++ ) nodnr[i]=0;
3792 
3793   for (i=0; i<num; i++ )
3794   {
3795     switch(face[name[i]].type)
3796     {
3797     	case 7:
3798 		sum=3;
3799 		break;
3800     	case 8:
3801 		sum=6;
3802 		break;
3803     	case 9:
3804 		sum=4;
3805 		break;
3806     	case 10:
3807 		sum=8;
3808 		break;
3809     	case 11:
3810 		sum=1;
3811 		break;
3812     	case 12:
3813 		sum=3;
3814 		break;
3815     	default:
3816 		sum=0;
3817 		break;
3818     }
3819     for (n=0; n<sum; n++) nodnr[face[name[i]].nod[n]]=face[name[i]].nod[n];
3820   }
3821 
3822   /* draw all selected nodes */
3823   glColor3d  ( 0.5,0.5,0. );
3824   glLoadName('n');
3825   glPointSize(1);
3826   for (i=0; i<=anz->nmax; i++ )
3827   {
3828     if(nodnr[i])
3829     {
3830       glPushName(nodnr[i]);
3831       glBegin ( GL_POINTS );
3832       glVertex3dv ( &node[nodnr[i]].nx );
3833       glEnd();
3834       glPopName();
3835     }
3836   }
3837   glLoadName(-1);
3838   free(nodnr);
3839 }
3840 
3841 
drawPoints_plot(int num,int * name,Points * point,int col,char type,int width)3842 void drawPoints_plot( int num, int *name, Points *point , int col, char type, int width)
3843 {
3844   int i;
3845 
3846   if(width>0) glPointSize(width);
3847   else glPointSize(4);
3848 
3849     glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
3850     glLoadName('p');
3851       for (i=0; i<num; i++ )
3852       {
3853       glPushName(name[i]);
3854        glBegin ( GL_POINTS );
3855        glVertex3d ( point[name[i]].px, point[name[i]].py, point[name[i]].pz );
3856        glEnd();
3857       glPopName();
3858       }
3859     glLoadName(-1);
3860 
3861   if(type=='a')
3862   {
3863     for (i=0; i<num; i++ )
3864       text( point[name[i]].px, point[name[i]].py, point[name[i]].pz, point[name[i]].name, glut_font[draw_font] );
3865   }
3866 }
3867 
3868 
drawLines_plot(int num,int * name,Lines * line,Points * point,int col,char type,int width)3869 void drawLines_plot( int num, int *name, Lines *line , Points *point, int col, char type, int width)
3870 {
3871   int i,n;
3872   int bias_fbd;
3873   double x,y,z;
3874 
3875   int anz_p=0;
3876   int *pnt_indx=NULL;
3877 
3878   if(width<1) width=1;
3879   glLineWidth(width);
3880   glPointSize(width+2);
3881   glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
3882   glLoadName('l');
3883   for (i=0; i<num; i++ )
3884   {
3885     glPushName(name[i]);
3886     glBegin ( GL_LINE_STRIP );
3887       for (n=0; n<line[name[i]].nip; n+=3)
3888       {
3889         glVertex3dv( &line[name[i]].ip[n]);
3890       }
3891     glEnd();
3892     if ((type=='n')||(type=='c'))
3893     {
3894       glBegin ( GL_POINTS );
3895       for (n=0; n<line[name[i]].nip; n+=3)
3896       {
3897         glVertex3dv( &line[name[i]].ip[n]);
3898       }
3899       glEnd();
3900     }
3901     if ((type=='p')||(type=='c'))
3902     {
3903       if ( (pnt_indx = (int *)realloc( pnt_indx, (anz_p+2) * sizeof(int)))== NULL )
3904          printf("\n\n ERROR: realloc failure in drawLines_plot\n\n" );
3905       pnt_indx[anz_p++]=line[name[i]].p1;
3906       pnt_indx[anz_p++]=line[name[i]].p2;
3907     }
3908     if ((type=='a')||(type=='d')||(type=='c'))
3909     {
3910       x =point[line[name[i]].p1].px;
3911       y =point[line[name[i]].p1].py;
3912       z =point[line[name[i]].p1].pz;
3913       x+=point[line[name[i]].p2].px;
3914       y+=point[line[name[i]].p2].py;
3915       z+=point[line[name[i]].p2].pz;
3916       x*=.5;
3917       y*=.5;
3918       z*=.5;
3919       if (type=='a') sprintf( buffer, "%s", line[name[i]].name);
3920       if ((type=='d')||(type=='c'))
3921       {
3922         /* load bias and division in buffer */
3923         if(line[name[i]].div ==1) sprintf(buffer, "%d", line[name[i]].div);
3924         else if(line[name[i]].bias!=1.)
3925 	{
3926           bias_fbd=getBias_fbd(name[i],line);
3927           if(line[name[i]].div<10) sprintf(buffer, "%d0%d", bias_fbd, line[name[i]].div);
3928           //else if(line[name[i]].div<100) sprintf(buffer, "%d%d", bias_fbd, line[name[i]].div);
3929           //else
3930             sprintf(buffer, "%d#%d", bias_fbd, line[name[i]].div);
3931 	}
3932         else sprintf(buffer, "%d", line[name[i]].div);
3933       }
3934       text( x, y, z, buffer, glut_font[draw_font] );
3935     }
3936     glPopName();
3937     }
3938   glLoadName(-1);
3939 
3940   if(anz_p)  drawPoints_plot( anz_p, pnt_indx, point, col, 0, width+4 );
3941 }
3942 
3943 
drawShapes_plot(int num,int * name,Shapes * shape,Points * point,int col,char type)3944 void drawShapes_plot( int num, int *name, Shapes *shape, Points *point, int col, char type)
3945 {
3946   register int i,j,k,n;
3947   static GLint ipuf[2];
3948   double cx,cy,cz;
3949 
3950   glLineWidth(1.);
3951 
3952   glLoadName('h');
3953 
3954   if(type=='i')
3955   {
3956   /* so far not usable, *pgn not filled */
3957     glGetIntegerv( GL_CULL_FACE, ipuf );
3958     if( ipuf[0] == GL_TRUE ) glDisable ( GL_CULL_FACE );
3959     glEnable( GL_LIGHTING );
3960     setMaterial_rgb(col, 1);
3961 
3962     for (i=0; i<num; i++)
3963     {
3964       glPushName(name[i]);
3965       n=0;
3966       while((shape[name[i]].npgn-n))
3967       {
3968         n++; /* jump over the polygon token (ie.GL_POLYGON_TOKEN) */
3969         j=shape[name[i]].pgn[n++];
3970         glBegin ( GL_POLYGON );
3971         glNormal3dv (&shape[name[i]].pgn[n]); n+=3;
3972         for(k=0; k<j; k++)
3973         {
3974           glVertex3dv (&shape[name[i]].pgn[n]); n+=3;
3975         }
3976         glEnd();
3977       }
3978       sprintf( buffer, "%s", shape[name[i]].name );
3979       cx=cy=cz=0.;
3980       for(j=0; j<3; j++)
3981       {
3982         cx+=point[shape[name[i]].p[j]].px;
3983         cy+=point[shape[name[i]].p[j]].py;
3984         cz+=point[shape[name[i]].p[j]].pz;
3985       }
3986       cx/=3.;
3987       cy/=3.;
3988       cz/=3.;
3989       text( cx,cy,cz, buffer, glut_font[draw_font] );
3990       glPopName();
3991     }
3992     glDisable( GL_LIGHTING );
3993     if( ipuf[0] == GL_TRUE ) glEnable ( GL_CULL_FACE );
3994   }
3995   else
3996   {
3997     glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
3998     for (i=0; i<num; i++)
3999     {
4000       if(shape[name[i]].type==0)
4001       {
4002         glPushName(name[i]);
4003         glBegin ( GL_LINE_LOOP );
4004         glVertex3dv ( &point[shape[name[i]].p[0]].px);
4005         glVertex3dv ( &point[shape[name[i]].p[1]].px);
4006         glVertex3dv ( &point[shape[name[i]].p[2]].px);
4007         glEnd();
4008         sprintf( buffer, "%s", shape[name[i]].name );
4009         cx=cy=cz=0.;
4010         for(j=0; j<3; j++)
4011         {
4012           cx+=point[shape[name[i]].p[j]].px;
4013           cy+=point[shape[name[i]].p[j]].py;
4014           cz+=point[shape[name[i]].p[j]].pz;
4015         }
4016         cx/=3.;
4017         cy/=3.;
4018         cz/=3.;
4019         text( cx,cy,cz, buffer, glut_font[draw_font] );
4020         glPopName();
4021       }
4022       else if(shape[name[i]].type==1)
4023       {
4024         glPushName(name[i]);
4025         glBegin ( GL_LINES );
4026         glVertex3dv ( &point[shape[name[i]].p[0]].px);
4027         glVertex3dv ( &point[shape[name[i]].p[1]].px);
4028         glEnd();
4029         sprintf( buffer, "%s", shape[name[i]].name );
4030         cx=cy=cz=0.;
4031         for(j=0; j<2; j++)
4032         {
4033           cx+=point[shape[name[i]].p[j]].px;
4034           cy+=point[shape[name[i]].p[j]].py;
4035           cz+=point[shape[name[i]].p[j]].pz;
4036         }
4037         cx/=2.;
4038         cy/=2.;
4039         cz/=2.;
4040         text( cx,cy,cz, buffer, glut_font[draw_font] );
4041         glPopName();
4042       }
4043       else if(shape[name[i]].type==2)
4044       {
4045         glPushName(name[i]);
4046         glBegin ( GL_LINE_LOOP );
4047         glVertex3dv ( &point[shape[name[i]].p[2]].px);
4048         glVertex3dv ( &point[shape[name[i]].p[0]].px);
4049         glVertex3dv ( &point[shape[name[i]].p[1]].px);
4050         glVertex3dv ( &point[shape[name[i]].p[3]].px);
4051         glEnd();
4052         sprintf( buffer, "%s", shape[name[i]].name );
4053         cx=cy=cz=0.;
4054         for(j=0; j<2; j++)
4055         {
4056           cx+=point[shape[name[i]].p[j]].px;
4057           cy+=point[shape[name[i]].p[j]].py;
4058           cz+=point[shape[name[i]].p[j]].pz;
4059         }
4060         cx/=2.;
4061         cy/=2.;
4062         cz/=2.;
4063         text( cx,cy,cz, buffer, glut_font[draw_font] );
4064         glPopName();
4065       }
4066       else if(shape[name[i]].type==3)
4067       {
4068         glPushName(name[i]);
4069         glBegin ( GL_LINE_STRIP );
4070         glVertex3dv ( &point[shape[name[i]].p[1]].px);
4071         glVertex3dv ( &point[shape[name[i]].p[2]].px);
4072         glVertex3dv ( &point[shape[name[i]].p[4]].px);
4073         glVertex3dv ( &point[shape[name[i]].p[5]].px);
4074 
4075         glVertex3dv ( &point[shape[name[i]].p[1]].px);
4076         glVertex3dv ( &point[shape[name[i]].p[6]].px);
4077         glVertex3dv ( &point[shape[name[i]].p[4]].px);
4078         glVertex3dv ( &point[shape[name[i]].p[3]].px);
4079         glVertex3dv ( &point[shape[name[i]].p[1]].px);
4080 
4081         glVertex3dv ( &point[shape[name[i]].p[2]].px);
4082         glVertex3dv ( &point[shape[name[i]].p[3]].px);
4083         glVertex3dv ( &point[shape[name[i]].p[5]].px);
4084         glVertex3dv ( &point[shape[name[i]].p[6]].px);
4085         glVertex3dv ( &point[shape[name[i]].p[2]].px);
4086         glEnd();
4087         sprintf( buffer, "%s", shape[name[i]].name );
4088         cx=cy=cz=0.;
4089         for(j=1; j<7; j++)
4090         {
4091           cx+=point[shape[name[i]].p[j]].px;
4092           cy+=point[shape[name[i]].p[j]].py;
4093           cz+=point[shape[name[i]].p[j]].pz;
4094         }
4095         cx/=6.;
4096         cy/=6.;
4097         cz/=6.;
4098         text( cx,cy,cz, buffer, glut_font[draw_font] );
4099         glPopName();
4100       }
4101       else if(shape[name[i]].type==5)
4102       {
4103         glPushName(name[i]);
4104         glBegin ( GL_LINE_STRIP );
4105         glVertex3dv ( &point[shape[name[i]].p[3]].px);
4106         glVertex3dv ( &point[shape[name[i]].p[2]].px);
4107         glVertex3dv ( &point[shape[name[i]].p[0]].px);
4108         glVertex3dv ( &point[shape[name[i]].p[1]].px);
4109         glEnd();
4110         sprintf( buffer, "%s", shape[name[i]].name );
4111         cx=cy=cz=0.;
4112         for(j=0; j<2; j++)
4113         {
4114           cx+=point[shape[name[i]].p[j]].px;
4115           cy+=point[shape[name[i]].p[j]].py;
4116           cz+=point[shape[name[i]].p[j]].pz;
4117         }
4118         cx/=2.;
4119         cy/=2.;
4120         cz/=2.;
4121         text( cx,cy,cz, buffer, glut_font[draw_font] );
4122         glPopName();
4123       }
4124     }
4125   }
4126   glLoadName(-1);
4127 }
4128 
4129 
drawSurfs_plot(int num,int * name,Gsur * surf,Lcmb * lcmb,Lines * line,Points * point,int col,char type)4130 void drawSurfs_plot( int num, int *name, Gsur *surf, Lcmb *lcmb, Lines *line , Points *point, int col, char type)
4131 {
4132   register int i,j,k,n;
4133   register int    nl,nc;
4134   static GLint ipuf[2];
4135 
4136   glLineWidth(1.);
4137 
4138   glLoadName('s');
4139 
4140   if(type=='i')
4141   {
4142     glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
4143     if ( ipuf[0] == GL_FRONT ) glEnable ( GL_CULL_FACE );
4144     else glDisable ( GL_CULL_FACE );
4145     glEnable( GL_LIGHTING );
4146     setMaterial_rgb(col, 1);
4147 
4148     for (i=0; i<num; i++)
4149     {
4150       /* printf("surf:%s w:%lf xyz: %lf %lf %lf\n",surf[name[i]].name,scale->w,scale->x,scale->y,scale->z); */
4151       glPushName(name[i]);
4152       n=0;
4153       if(surf[name[i]].npgn>0) while((surf[name[i]].npgn-n))
4154       {
4155         n++; /* jump over the polygon token (ie.GL_POLYGON_TOKEN) */
4156         j=surf[name[i]].pgn[n++];
4157         glBegin ( GL_POLYGON );
4158         glNormal3dv (&surf[name[i]].pgn[n]); n+=3;
4159         for(k=0; k<j; k++)
4160         {
4161           /* printf("%d %lf %lf %lf\n", k,surf[name[i]].pgn[n],surf[name[i]].pgn[n+1],surf[name[i]].pgn[n+2]); */
4162           glVertex3dv (&surf[name[i]].pgn[n]); n+=3;
4163         }
4164         glEnd();
4165       }
4166       glPopName();
4167     }
4168     glDisable( GL_LIGHTING );
4169     if( ipuf[0] == GL_TRUE ) glEnable ( GL_CULL_FACE );
4170   }
4171   else
4172   {
4173     glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
4174     for (i=0; i<num; i++)
4175     {
4176       glPushName(name[i]);
4177       for (j=0; j<surf[name[i]].nl; j++ )
4178       {
4179         nl=surf[name[i]].l[j];
4180         if (surf[name[i]].typ[j]=='l')
4181         {
4182           glBegin ( GL_LINE_STRIP );
4183           for (n=0; n<line[nl].nip; n+=3)
4184           {
4185             glVertex3dv ( &line[nl].ip[n]);
4186           }
4187           glEnd();
4188         }
4189         else
4190         {
4191           for (k=0; k<lcmb[nl].nl; k++ )
4192           {
4193             nc=lcmb[nl].l[k];
4194             glBegin ( GL_LINE_STRIP );
4195             for (n=0; n<line[nc].nip; n+=3)
4196             {
4197               glVertex3dv ( &line[nc].ip[n]);
4198             }
4199             glEnd();
4200 	  }
4201         }
4202       }
4203 
4204       if(type=='a')
4205       {
4206         sprintf( buffer, "%s", surf[name[i]].name );
4207         text( (surf[name[i]].cx-scale->x)/scale->w,
4208             (surf[name[i]].cy-scale->y)/scale->w,
4209             (surf[name[i]].cz-scale->z)/scale->w, buffer, glut_font[draw_font] );
4210       }
4211       glPopName();
4212     }
4213   }
4214   glLoadName(-1);
4215 }
4216 
4217 
drawBodys_plot(int num,int * name,Gbod * body,Gsur * surf,Lcmb * lcmb,Lines * line,Points * point,int col,char type)4218 void drawBodys_plot( int num, int *name, Gbod *body, Gsur *surf, Lcmb *lcmb, Lines *line , Points *point, int col, char type)
4219 {
4220   int i,j,k,n, b, s;
4221   int nl,nc;
4222 
4223   glLineWidth(1.);
4224   glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
4225   glLoadName('b');
4226   for (i=0; i<num; i++)
4227   {
4228     glPushName(name[i]);
4229     for (b=0; b<body[name[i]].ns; b++ )
4230     {
4231       s=body[name[i]].s[b];
4232       for (j=0; j<surf[s].nl; j++ )
4233       {
4234         nl=surf[s].l[j];
4235         if (surf[s].typ[j]=='l')
4236         {
4237           glBegin ( GL_LINE_STRIP );
4238             for (n=0; n<line[nl].nip; n+=3)
4239             {
4240               glVertex3dv
4241               ( &line[nl].ip[n]);
4242             }
4243           glEnd();
4244         }
4245         else
4246         {
4247           for (k=0; k<lcmb[nl].nl; k++ )
4248           {
4249           nc=lcmb[nl].l[k];
4250           glBegin ( GL_LINE_STRIP );
4251             for (n=0; n<line[nc].nip; n+=3)
4252             {
4253               glVertex3dv
4254               ( &line[nc].ip[n]);
4255             }
4256           glEnd();
4257           }
4258         }
4259       }
4260       if(type=='a')
4261       {
4262         sprintf( buffer, "%s", body[name[i]].name );
4263         text( (body[name[i]].cx-scale->x)/scale->w,
4264               (body[name[i]].cy-scale->y)/scale->w,
4265               (body[name[i]].cz-scale->z)/scale->w, buffer, glut_font[draw_font] );
4266       }
4267     }
4268     glPopName();
4269   }
4270   glLoadName(-1);
4271 
4272 }
4273 
drawNurl_plot(int num,int * name,int col,char type,int width,int pickflag)4274 void drawNurl_plot( int num, int *name, int col, char type, int width, int pickflag)
4275 {
4276   int i, nr;
4277   int mode[2];
4278   GLfloat NurlFillFlag;
4279   double tx, ty, tz;
4280 
4281   if(width>0) glLineWidth(width);
4282   else glLineWidth(1.);
4283 
4284   glGetIntegerv( GL_POLYGON_MODE, mode );
4285   if ( mode[1] == GL_FILL )
4286     NurlFillFlag=GLU_FILL;
4287   else
4288     NurlFillFlag=GLU_OUTLINE_POLYGON;
4289 
4290   glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b  );
4291   glLoadName('L');
4292 
4293   for (nr=0; nr<num; nr++ )
4294   {
4295     if((nurbl[name[nr]].u_exp<gl_max_eval_order)&&(nurbl[name[nr]].endFlag==1))
4296     {
4297       /*
4298       printf("u_nknt:%d  u_stride:%d  exp:%d typ:%d %d\n", nurbl[name[nr]].u_nknt, nurbl[name[nr]].u_stride, nurbl[name[nr]].u_exp, nurbl[name[nr]].type, GL_MAP1_VERTEX_4);
4299       for(i=0; i<nurbl[name[nr]].u_nknt; i++) printf("uknt[%d]:%f\n", i, nurbl[name[nr]].uknt[i]);
4300       for(i=0; i<(nurbl[name[nr]].u_npnt*nurbl[name[nr]].u_stride); i++) { if(i%4==0) printf("\n"); printf(" ctlarray[%d]:%f", i, nurbl[name[nr]].ctlarray[i]);  }
4301       */
4302 
4303       /* for NurbsErrorCallback */
4304       if(printFlag)
4305       {
4306         current_nurbs=-name[nr]-1;
4307         gluNurbsCallback(nurbl[name[nr]].Nurb, GLU_ERROR, (void*)NurbsErrorCallback);
4308       }
4309 
4310       gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_CULLING, GL_TRUE);
4311       gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_DISPLAY_MODE, NurlFillFlag);
4312       if(pickflag==PICK) gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_SAMPLING_TOLERANCE, NURS_TOLERANCE_PICK );
4313       else gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_SAMPLING_TOLERANCE, NURS_TOLERANCE );
4314 
4315       glPushName(name[nr]);
4316       gluBeginCurve(nurbl[name[nr]].Nurb);
4317       gluNurbsCurve(nurbl[name[nr]].Nurb,
4318             nurbl[name[nr]].u_nknt,
4319             nurbl[name[nr]].uknt,
4320             nurbl[name[nr]].u_stride,
4321             nurbl[name[nr]].ctlarray,
4322             nurbl[name[nr]].u_exp+1,
4323             nurbl[name[nr]].type);
4324       gluEndCurve(nurbl[name[nr]].Nurb);
4325 
4326       if(type=='a')
4327       {
4328         tx=ty=tz=0.; for (i=0; i<nurbl[name[nr]].u_npnt; i++)
4329         {
4330           tx+= point[nurbl[name[nr]].ctlpnt[i]].px ;
4331           ty+= point[nurbl[name[nr]].ctlpnt[i]].py ;
4332           tz+= point[nurbl[name[nr]].ctlpnt[i]].pz ;
4333         }
4334         tx/=nurbl[name[nr]].u_npnt;
4335         ty/=nurbl[name[nr]].u_npnt;
4336         tz/=nurbl[name[nr]].u_npnt;
4337         text( tx,ty,tz, nurbl[name[nr]].name, glut_font[draw_font] );
4338       }
4339       glPopName();
4340     }
4341     else
4342     {
4343       if(printFlag)  printf("ERROR: Nurbl[%d]:%s of order:%d is not supported. Only %d is supported by the gl-lib.\n", nr, nurbl[name[nr]].name, nurbl[name[nr]].u_exp+1, gl_max_eval_order);
4344 
4345     }
4346   }
4347   glLoadName(-1);
4348 }
4349 
4350 
4351 
4352 /* the nurbs was evaluated and drawn into a back-buffer, the contents of the back-buffer will be displayed */
4353 
drawNurs_plot(int num,int * name,int col,char type,int pickflag)4354 void drawNurs_plot( int num, int *name, int col, char type, int pickflag)
4355 {
4356   int nr;
4357   int mode[2];
4358   GLfloat ustep,vstep;
4359   GLfloat NursFillFlag;
4360   static GLint ipuf[2];
4361 
4362   glLineWidth(1.);
4363 
4364   /* evaluate and draw into the back-buffer */
4365   glGetIntegerv( GL_POLYGON_MODE, mode );
4366   if ( mode[1] == GL_FILL )
4367       NursFillFlag=GLU_FILL;
4368   else
4369       NursFillFlag=GLU_OUTLINE_POLYGON;
4370 
4371   glEnable( GL_LIGHTING );
4372   glEnable(GL_AUTO_NORMAL);
4373   /* glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); */
4374 
4375   glLoadName('S');
4376 
4377   glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
4378   glDisable ( GL_CULL_FACE );
4379   setMaterial_rgb(col, 1);
4380 
4381   for (nr=0; nr<num; nr++ )
4382   {
4383     if(printFlag)
4384       printf("nurs:%s\n",nurbs[name[nr]].name);
4385     if ((nurbs[name[nr]].u_exp<gl_max_eval_order)&&(nurbs[name[nr]].v_exp<gl_max_eval_order)&&(nurbs[name[nr]].endFlag==1)&&(nurbs[name[nr]].name != (char *)NULL))
4386     {
4387       /* for NurbsErrorCallback */
4388       if(printFlag)
4389       {
4390         current_nurbs=name[nr];
4391         gluNurbsCallback(nurbs[name[nr]].Nurb, GLU_ERROR, (void*)NurbsErrorCallback);
4392       }
4393       gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_DISPLAY_MODE, NursFillFlag);
4394       gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_CULLING, GL_TRUE);
4395       gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_SAMPLING_METHOD, GLU_DOMAIN_DISTANCE );
4396 
4397       /* minimum resolution */
4398       ustep=nurbs[name[nr]].u_exp*4./(nurbs[name[nr]].uknt[nurbs[name[nr]].u_nknt-1]-nurbs[name[nr]].uknt[0]);
4399       vstep=nurbs[name[nr]].v_exp*4./(nurbs[name[nr]].vknt[nurbs[name[nr]].v_nknt-1]-nurbs[name[nr]].vknt[0]);
4400 
4401       gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_U_STEP, ustep );
4402       gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_V_STEP, vstep );
4403 
4404       glPushName(name[nr]);
4405       gluBeginSurface(nurbs[name[nr]].Nurb);
4406       gluNurbsSurface(nurbs[name[nr]].Nurb,
4407         nurbs[name[nr]].u_nknt, nurbs[name[nr]].uknt,
4408         nurbs[name[nr]].v_nknt, nurbs[name[nr]].vknt,
4409         nurbs[name[nr]].u_stride, nurbs[name[nr]].v_stride,
4410         nurbs[name[nr]].ctlarray,
4411         nurbs[name[nr]].u_exp+1, nurbs[name[nr]].v_exp+1,
4412         nurbs[name[nr]].type);
4413       gluEndSurface(nurbs[name[nr]].Nurb);
4414       glPopName();
4415     }
4416     else
4417     {
4418       if(printFlag)  printf("ERROR: Nurbs[%d]:%s of order:%d %d is not supported. Only %d is supported by the gl-lib.\n", nr, nurbs[name[nr]].name, nurbs[name[nr]].u_exp+1, nurbs[name[nr]].v_exp+1, gl_max_eval_order);
4419 
4420     }
4421   }
4422   glLoadName(-1);
4423 
4424   glDisable(GL_AUTO_NORMAL);
4425   glDisable( GL_LIGHTING );
4426 
4427   if(type=='a')
4428   {
4429     for (nr=0; nr<num; nr++ )
4430     {
4431       text( nurbs[name[nr]].tx,nurbs[name[nr]].ty,nurbs[name[nr]].tz, nurbs[name[nr]].name, glut_font[draw_font] );
4432     }
4433   }
4434 
4435   /* resore the original cull mode */
4436   if ( ipuf[0] == GL_BACK ) glCullFace ( GL_BACK );
4437   if ( ipuf[0] == GL_FRONT ) glCullFace ( GL_FRONT );
4438 
4439 }
4440