69 int *NRBODY,
int *NRWALL,
int *NOM_OPT,
int *LNOPT1,
int *I16D,
int *NPBY,
int *NNPBY,
70 int *SUB_NCHILD,
int *NSUBS ,
int *NRBE2,
int *NRBE3,
int *I16E,
71 int *I16F ,
int *N2D ,
int *IRBE2 ,
int *NRBE2L ,
int *SUB_ID,
int *SUB_CHILD,
72 int *SUB_LEVEL,
int *SUB_IAD,
int *SUB_TITLE,
int *IRBE3 ,
int *NRBE3L ,
73 int *COMPID_RBODIES,
int *COMPID_RBE2S,
int *COMPID_RBE3S)
75 char * name =
new char [*LTITR * 3];
76 int * ifiltmp =
new int [*LTITR];
77 char * name_part=
new char [*LTITR * 3 ];
78 char * name_sub=
new char [*LTITR * 3 ];
79 int * assembly_father =
new int [*NSUBS];
83 int i,j,k,cpt,ipid,igtyp,isid;
84 unsigned char red[] = {255, 0, 0};
85 unsigned char green[] = {0, 255, 0};
86 unsigned char blue[] = {0, 0, 255};
87 H3D_COMPONENT_ATTRIBS wireframe = H3D_COMP_ATTR_WIREFRAME;
88 H3D_COMPONENT_ATTRIBS opaque = H3D_COMP_ATTR_OPAQUE;
89 H3D_COMPONENT_ATTRIBS transparent = H3D_COMP_ATTR_TRANSPARENT;
90 H3D_COMPONENT_ATTRIBS meshlines = H3D_COMP_ATTR_MESHLINES;
92 H3D_ID RigidElem = H3D_NULL_ID;
105 char SHELLPOOL[] =
"Shell";
109 char SOLIDPOOL[] =
"Solid";
113 char QUADPOOL[] =
"QUAD";
117 char SKINPOOL[] =
"SKIN";
121 char ONEDELEMPOOL[] =
"1D";
125 char RIGIDPOOL[] =
"Rigid";
129 char SPHCELLPOOL[] =
"SPHCELL";
133 char SPHNODEPOOL[] =
"SPHNodes";
137 char RBODYPOOL[] =
"Rbody";
141 char RBE2POOL[] =
"Rbe2";
145 char RBE3POOL[] =
"Rbe3";
149 char RWALLPOOL[] =
"Rwall";
157 for(i=0;i<*NSUBS;i++)
159 assembly_father[i] = -1;
173 for(i=0;i<*NSUBS;i++)
175 int nbson_sub = SUB_NCHILD[i];
176 for(j=0;j<nbson_sub;j++)
178 assembly_father[SUB_CHILD[current_son]-1] = i ;
185 for(
int isu=0;isu<*NSUBS;isu++)
189 if(level_max < SUB_LEVEL[isu]) level_max = SUB_LEVEL[isu];
190 if(id_max < SUB_ID[isu]) id_max = SUB_ID[isu];
194 for(
int ilevel=1;ilevel <= level_max;ilevel++)
196 for(
int isu=0;isu<*NSUBS;isu++)
199 if( SUB_LEVEL[isu] == ilevel)
220 for(j=0;j < *LTITR ; j=j+1)
222 name[k]=(char) (SUB_TITLE[*LTITR * (isu) + j]/65536);
223 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
225 name[k]=(char) ((SUB_TITLE[*LTITR * (isu) + j]%65536)/256);
226 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
228 name[k]=(char) (SUB_TITLE[*LTITR * (isu) + j]%256);
229 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
233 for(j=0;j < *LTITR * 3 - cpt; j++) name_sub[j] = name[j];
234 name_sub[*LTITR * 3 - cpt] =
'\0' ;
240 H3D_ID
assm_id = SUB_ID[ isu ];
258 for(i=0;i<*NPART;i++)
260 ipid = IPART[ *LIPART1 * i + 1 ] ;
261 isid = IPART[ *LIPART1 * i + 2 ] ;
262 igtyp = IGEO[*NPROPGI * (ipid - 1) + 10 ] ;
269 if(igtyp == 1 || igtyp == 9|| igtyp == 10 || igtyp == 11 || igtyp == 16|| igtyp == 17|| igtyp == 19 || igtyp == 51)
273 else if(*N2D != 0 &&(igtyp == 6 || igtyp == 14 || igtyp == 15 || igtyp == 20 || igtyp == 21 || igtyp == 22 || igtyp == 43))
277 else if(igtyp == 6 || igtyp == 14 || igtyp == 15 || igtyp == 20 || igtyp == 21 || igtyp == 22 || igtyp == 43)
281 else if(igtyp == 2 || igtyp == 3 || igtyp == 4 || igtyp == 8 || igtyp == 12 || igtyp == 13 || igtyp == 18 ||
282 igtyp == 25 || igtyp == 26 || igtyp == 28 || igtyp == 32|| igtyp == 33 || igtyp == 35 || igtyp == 36 ||
283 igtyp == 44 || igtyp == 45 || igtyp == 46 )
301 for(j=0;j < *LTITR ; j=j+1)
303 name[k]=(char) (IPART[ *LIPART1 * (i+1) - *LTITR + j]/65536);
304 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
306 name[k]=(char) ((IPART[ *LIPART1 * (i+1) - *LTITR + j]%65536)/256);
307 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
309 name[k]=(char) (IPART[ *LIPART1 * (i+1) - *LTITR + j]%256);
310 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
314 for(j=0;j < *LTITR * 3 - cpt; j++) name_part[j] = name[j];
315 name_part[*LTITR * 3 - cpt] =
'\0' ;
317 if(strlen(name_part) == 0) sprintf(name_part,
"no part name");
319 if(igtyp == 1 || igtyp == 9|| igtyp == 10 || igtyp == 11 || igtyp == 16|| igtyp == 17|| igtyp == 19 || igtyp == 51)
326 else if(igtyp == 6 || igtyp == 14 || igtyp == 15 || igtyp == 20 || igtyp == 21 || igtyp == 22 || igtyp == 43)
332 else if(igtyp == 2 || igtyp == 3 || igtyp == 4 || igtyp == 8 || igtyp == 12 || igtyp == 13 || igtyp == 18 ||
333 igtyp == 25 || igtyp == 26 || igtyp == 28 || igtyp == 32|| igtyp == 33 || igtyp == 35 || igtyp == 36 ||
334 igtyp == 44 || igtyp == 45 || igtyp == 46 )
361 for(i=0;i<*NPART;i++)
363 ipid = IPART[ *LIPART1 * i + 1 ] ;
364 isid = IPART[ *LIPART1 * i + 2 ] ;
365 igtyp = IGEO[*NPROPGI * (ipid - 1) + 10 ] ;
367 if(H3D_PART[i] == 1 || igtyp == 6 || igtyp == 14 || igtyp == 20 || igtyp == 21 || igtyp == 22)
378 for(j=0;j < *LTITR ; j=j+1)
380 name[k]=(char) (IPART[ *LIPART1 * (i+1) - *LTITR + j]/65536);
381 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
383 name[k]=(char) ((IPART[ *LIPART1 * (i+1) - *LTITR + j]%65536)/256);
384 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
386 name[k]=(char) (IPART[ *LIPART1 * (i+1) - *LTITR + j]%256);
387 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
391 for(j=0;j < *LTITR * 3 - cpt; j++) name_part[j] = name[j];
392 name_part[*LTITR * 3 - cpt] =
'\0' ;
394 if(strlen(name_part) == 0) sprintf(name_part,
"no part name");
411 const char *name_rbody =
"RBODIES MODEL" ;
428 if(*COMPID_RBODIES != 0)
446 for(i=0;i<*NRBODY;i++)
454 for(j=0;j < *LTITR ; j=j+1)
456 name[k]=(char) (NOM_OPT[ *LNOPT1 * (i+1) - *LTITR + j]/65536);
457 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
459 name[k]=(char) ((NOM_OPT[ *LIPART1 * (i+1) - *LTITR + j]%65536)/256);
460 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
462 name[k]=(char) (NOM_OPT[ *LIPART1 * (i+1) - *LTITR + j]%256);
463 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
467 for(j=0;j < *LTITR * 3 - cpt; j++) name_part[j] = name[j];
468 name_part[*LTITR * 3 - cpt] =
'\0' ;
470 if(strlen(name_part) == 0) sprintf(name_part,
"RBODY");
485 const char *name_rbe2 =
"RBE2 MODEL" ;
501 if(*COMPID_RBE2S != 0)
519 for(i=0;i<*NRBE2;i++)
527 for(j=0;j < *LTITR ; j=j+1)
529 name[k]=(char) (NOM_OPT[*I16E-1 + *LNOPT1 * (i+1) - *LTITR + j]/65536);
530 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
532 name[k]=(char) ((NOM_OPT[*I16E-1 + *LIPART1 * (i+1) - *LTITR + j]%65536)/256);
533 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
535 name[k]=(char) (NOM_OPT[*I16E-1 + *LIPART1 * (i+1) - *LTITR + j]%256);
536 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
540 for(j=0;j < *LTITR * 3 - cpt; j++) name_part[j] = name[j];
541 name_part[*LTITR * 3 - cpt] =
'\0' ;
543 if(strlen(name_part) == 0) sprintf(name_part,
"RBE2");
558 const char *name_rbe3 =
"RBE3 MODEL" ;
574 if(*COMPID_RBE3S != 0)
592 for(i=0;i<*NRBE3;i++)
600 for(j=0;j < *LTITR ; j=j+1)
602 name[k]=(char) (NOM_OPT[*I16F-1 + *LNOPT1 * (i+1) - *LTITR + j]/65536);
603 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
605 name[k]=(char) ((NOM_OPT[*I16F-1 + *LIPART1 * (i+1) - *LTITR + j]%65536)/256);
606 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
608 name[k]=(char) (NOM_OPT[*I16F-1 + *LIPART1 * (i+1) - *LTITR + j]%256);
609 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
613 for(j=0;j < *LTITR * 3 - cpt; j++) name_part[j] = name[j];
614 name_part[*LTITR * 3 - cpt] =
'\0' ;
616 if(strlen(name_part) == 0) sprintf(name_part,
"RBE3");
631 const char *name_rwall =
"RWALLS MODEL" ;
647 for(i=0;i<*NRWALL;i++)
656 for(j=0;j < *LTITR ; j=j+1)
658 name[k]=(char) (NOM_OPT[*I16D-1 + *LNOPT1 * (i+1) - *LTITR + j]/65536);
659 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
661 name[k]=(char) ((NOM_OPT[*I16D-1 + *LIPART1 * (i+1) - *LTITR + j]%65536)/256);
662 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
664 name[k]=(char) (NOM_OPT[*I16D-1 + *LIPART1 * (i+1) - *LTITR + j]%256);
665 if(name[k] ==
' ' || name[k] ==
'\0'){cpt++;}
else {cpt = 0;}
669 for(j=0;j < *LTITR * 3 - cpt; j++) name_part[j] = name[j];
670 name_part[*LTITR * 3 - cpt] =
'\0' ;
708 delete [] assembly_father;
732 int *NRBODY,
int *NRWALL,
int *NOM_OPT,
int *LNOPT1,
int *I16D,
int *NPBY,
int *NNPBY,
733 int *SUB_NCHILD,
int *NSUBS,
int *NRBE2,
int *NRBE3,
int *I16E,
734 int *I16F,
int *N2D,
int *IRBE2 ,
int *NRBE2L,
int *SUB_ID,
int *SUB_CHILD,
735 int *SUB_LEVEL,
int *SUB_IAD,
int *SUB_TITLE,
int *IRBE3 ,
int *NRBE3L,
736 int *COMPID_RBODIES,
int *COMPID_RBE2S,
int *COMPID_RBE3S)
737{
c_h3d_create_components_ (IPART,LIPART1,NPART,LTITR,IGEO,NPROPGI,H3D_PART,NRBODY,NRWALL,NOM_OPT,LNOPT1,I16D, NPBY, NNPBY,SUB_NCHILD,NSUBS,NRBE2,NRBE3,
738 I16E,I16F,N2D,IRBE2,NRBE2L,SUB_ID,SUB_CHILD,SUB_LEVEL,SUB_IAD,SUB_TITLE,IRBE3,NRBE3L,
739 COMPID_RBODIES,COMPID_RBE2S,COMPID_RBE3S);}
void c_h3d_create_components__(int *IPART, int *LIPART1, int *NPART, int *LTITR, int *IGEO, int *NPROPGI, int *H3D_PART, int *NRBODY, int *NRWALL, int *NOM_OPT, int *LNOPT1, int *I16D, int *NPBY, int *NNPBY, int *SUB_NCHILD, int *NSUBS, int *NRBE2, int *NRBE3, int *I16E, int *I16F, int *N2D, int *IRBE2, int *NRBE2L, int *SUB_ID, int *SUB_CHILD, int *SUB_LEVEL, int *SUB_IAD, int *SUB_TITLE, int *IRBE3, int *NRBE3L, int *COMPID_RBODIES, int *COMPID_RBE2S, int *COMPID_RBE3S)
void c_h3d_create_components(int *IPART, int *LIPART1, int *NPART, int *LTITR, int *IGEO, int *NPROPGI, int *H3D_PART, int *NRBODY, int *NRWALL, int *NOM_OPT, int *LNOPT1, int *I16D, int *NPBY, int *NNPBY, int *SUB_NCHILD, int *NSUBS, int *NRBE2, int *NRBE3, int *I16E, int *I16F, int *N2D, int *IRBE2, int *NRBE2L, int *SUB_ID, int *SUB_CHILD, int *SUB_LEVEL, int *SUB_IAD, int *SUB_TITLE, int *IRBE3, int *NRBE3L, int *COMPID_RBODIES, int *COMPID_RBE2S, int *COMPID_RBE3S)
void c_h3d_create_components_(int *IPART, int *LIPART1, int *NPART, int *LTITR, int *IGEO, int *NPROPGI, int *H3D_PART, int *NRBODY, int *NRWALL, int *NOM_OPT, int *LNOPT1, int *I16D, int *NPBY, int *NNPBY, int *SUB_NCHILD, int *NSUBS, int *NRBE2, int *NRBE3, int *I16E, int *I16F, int *N2D, int *IRBE2, int *NRBE2L, int *SUB_ID, int *SUB_CHILD, int *SUB_LEVEL, int *SUB_IAD, int *SUB_TITLE, int *IRBE3, int *NRBE3L, int *COMPID_RBODIES, int *COMPID_RBE2S, int *COMPID_RBE3S)
void _FCALL C_H3D_CREATE_COMPONENTS(int *IPART, int *LIPART1, int *NPART, int *LTITR, int *IGEO, int *NPROPGI, int *H3D_PART, int *NRBODY, int *NRWALL, int *NOM_OPT, int *LNOPT1, int *I16D, int *NPBY, int *NNPBY, int *SUB_NCHILD, int *NSUBS, int *NRBE2, int *NRBE3, int *I16E, int *I16F, int *N2D, int *IRBE2, int *NRBE2L, int *SUB_ID, int *SUB_CHILD, int *SUB_LEVEL, int *SUB_IAD, int *SUB_TITLE, int *IRBE3, int *NRBE3L, int *COMPID_RBODIES, int *COMPID_RBE2S, int *COMPID_RBE3S)