71 #include "TopoDS_Shape.hxx"
117 #ifdef WINDOWS_VERSION
130 #pragma package(smart_init)
154 const char *p=str.c_str();
155 if (*p==
'$')
return atol(p+1);
162 int nb=param[numparam].argument.size();
163 for (
int i=0;i<nb;i++)
165 double val=atoi(param[numparam].argument[i].c_str());
175 for (
int i=0;i<nb;i++)
177 parse.
decode(param[numparam].argument[i].c_str(),
"(@,@)",param+numparam+1);
179 strcpy(nom,param[numparam+1].argument[0].c_str());
180 if (strcmp(nom,
"CM")==0)
183 val=atol(param[numparam+2].argument[0].c_str());
189 val=atof(param[numparam+2].argument[0].c_str());
194 else if (version<2.1)
196 for (
int i=0;i<nb;i++)
199 strcpy(test,param[numparam].argument[i].c_str());
200 parse.
decode(param[numparam].argument[i].c_str(),
"(@,@,@)",param+numparam+1);
201 char formulation[10];
202 strcpy(formulation,param[numparam+1].argument[0].c_str());
204 strcpy(nom,param[numparam+2].argument[0].c_str());
205 if (formulation[0]==
'N')
208 val=atof(param[numparam+3].argument[0].c_str());
211 if (formulation[0]==
'I')
214 val=atol(param[numparam+3].argument[0].c_str());
217 if (formulation[0]==
'F')
219 parse.
decode(param[numparam].argument[i].c_str(),
"(@,@,@,@,(@))",param+numparam+1);
221 strcpy(formule,param[numparam+3].argument[0].c_str());
223 strcpy(variable,param[numparam+5].argument[0].c_str());
225 std::vector<std::string> listvariable=ot.
split(variable,
',');
232 for (
int i=0;i<nb;i++)
235 strcpy(test,param[numparam].argument[i].c_str());
236 parse.
decode(param[numparam].argument[i].c_str(),
"(@,@,@,@)",param+numparam+1);
237 char formulation[10];
238 strcpy(formulation,param[numparam+1].argument[0].c_str());
240 strcpy(nom,param[numparam+2].argument[0].c_str());
242 strcpy(suiv,param[numparam+3].argument[0].c_str());
243 if (formulation[0]==
'N')
246 val=atof(param[numparam+4].argument[0].c_str());
249 if (formulation[0]==
'I')
252 val=atol(param[numparam+4].argument[0].c_str());
255 if (formulation[0]==
'F')
257 parse.
decode(param[numparam].argument[i].c_str(),
"(@,@,@,@,@,(@))",param+numparam+1);
259 strcpy(formule,param[numparam+4].argument[0].c_str());
261 strcpy(variable,param[numparam+6].argument[0].c_str());
263 std::vector<std::string> listvariable=ot.
split(variable,
',');
272 parse.
decode(data.c_str(),
"@,@,@,@,@",param+2);
273 long idtopo=
cid(param[2].argument[0]);
274 double x=atof(param[3].argument[0].c_str());
275 double y=atof(param[4].argument[0].c_str());
276 double z=atof(param[5].argument[0].c_str());
277 int ori=atoi(param[6].argument[0].c_str());
293 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
294 long idtopo=
cid(param[2].argument[0]);
295 long idn1=
cid(param[3].argument[0]);
296 long idn2=
cid(param[4].argument[0]);
297 int ori=atoi(param[5].argument[0].c_str());
316 parse.
decode(data.c_str(),
"@,@,@,@,@",param+2);
317 long idtopo=
cid(param[2].argument[0]);
318 long idn1=
cid(param[3].argument[0]);
319 long idn2=
cid(param[4].argument[0]);
320 long idn3=
cid(param[5].argument[0]);
321 int ori=atoi(param[6].argument[0].c_str());
336 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
337 long idtopo=
cid(param[2].argument[0]);
338 long idn1=
cid(param[3].argument[0]);
339 long idn2=
cid(param[4].argument[0]);
340 long idn3=
cid(param[5].argument[0]);
341 long idn4=
cid(param[6].argument[0]);
342 int ori=atoi(param[7].argument[0].c_str());
360 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
361 long idtopo=
cid(param[2].argument[0]);
362 long idn1=
cid(param[3].argument[0]);
363 long idn2=
cid(param[4].argument[0]);
364 long idn3=
cid(param[5].argument[0]);
365 long idn4=
cid(param[6].argument[0]);
366 int ori=atoi(param[7].argument[0].c_str());
374 if (noeud1&&noeud2&&noeud3&&noeud4) mgmai->
ajouter_mg_tetra(topo,noeud1,noeud2,noeud3,noeud4,ori,
id);
379 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@",param+2);
380 long idtopo=
cid(param[2].argument[0]);
381 long idn1=
cid(param[3].argument[0]);
382 long idn2=
cid(param[4].argument[0]);
383 long idn3=
cid(param[5].argument[0]);
384 long idn4=
cid(param[6].argument[0]);
385 long idn5=
cid(param[7].argument[0]);
386 long idn6=
cid(param[8].argument[0]);
387 long idn7=
cid(param[9].argument[0]);
388 long idn8=
cid(param[10].argument[0]);
389 int ori=atoi(param[11].argument[0].c_str());
401 mgmai->
ajouter_mg_hexa(topo,noeud1,noeud2,noeud3,noeud4,noeud5,noeud6,noeud7,noeud8,ori,
id);
407 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@",param+2);
408 long idtopo=
cid(param[2].argument[0]);
409 long idn1=
cid(param[3].argument[0]);
410 long idn2=
cid(param[4].argument[0]);
411 long idn3=
cid(param[5].argument[0]);
412 long idn4=
cid(param[6].argument[0]);
413 long idn5=
cid(param[7].argument[0]);
414 long idn6=
cid(param[8].argument[0]);
415 int ori=atoi(param[9].argument[0].c_str());
425 mgmai->
ajouter_mg_penta(topo,noeud1,noeud2,noeud3,noeud4,noeud5,noeud6,ori,
id);
430 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
431 long idtopo=
cid(param[2].argument[0]);
432 long idn1=
cid(param[3].argument[0]);
433 long idn2=
cid(param[4].argument[0]);
434 long idn3=
cid(param[5].argument[0]);
435 long idn4=
cid(param[6].argument[0]);
436 long idn5=
cid(param[7].argument[0]);
437 int ori=atoi(param[8].argument[0].c_str());
453 parse.
decode(data.c_str(),
"@,@,@,@,@,@,",param+2);
454 long id_mg_geometrie =
cid(param[2].argument[0]);
455 long id_parent =
cid(param[3].argument[0]);
456 std::string type_geo = param[4].argument[0];
457 std::string nom_fichier = param[5].argument[0];
458 double precision = atof(param[6].argument[0].c_str());
459 double valeur_unitee = atof(param[7].argument[0].c_str());
462 if(type_geo==
"MGCG_ASS")
465 LISTE_MGCG_MODELE::iterator it_modele;
477 mg_sous_geometrie=
new MG_SOUS_GEOMETRIE(mg_construction,id_parent,(
char*)type_geo.c_str(),
id,(
char*)nom_fichier.c_str(),valeur_unitee,precision);
490 parse.
decode(data.c_str(),
"@,@,@,@,(&)",param+2);
493 int nummat=atoi((
char*)param[4].argument[0].c_str());
495 int nb=atoi(param[5].argument[0].c_str());
500 parse.
decode(data.c_str(),
"@,@,@,(&)",param+2);
503 int nb=atoi(param[4].argument[0].c_str());
508 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
513 TopoDS_Solid topods_solid;
519 else mgvol=
new MG_VOLUME(param[2].argument[0],
id);
521 mgvol=
new MG_VOLUME(param[2].argument[0],
id);
524 int mince=atoi(param[4].argument[0].c_str());
527 std::string data2=param[5].argument[0];
528 parse.
decode(data2.c_str(),
"@,(&)",param+5);
529 int nb=atoi(param[5].argument[0].c_str());
534 std::string data2=param[5].argument[0];
535 parse.
decode(data2.c_str(),
"(&),@,(&)",param+5);
536 int nb_face=param[5].argument.size();
537 for (
int i=0;i<nb_face;i=i+2)
539 unsigned long idn1=
cid(param[5].argument[i]);
540 unsigned long idn2=
cid(param[5].argument[i+1]);
541 volumemince.push_back(
id);
542 volumemince.push_back(idn1);
543 volumemince.push_back(idn2);
545 int nb=atoi(param[6].argument[0].c_str());
553 bool import_occ_2017=
false;
557 import_occ_2017=
true;
558 parse.
decode(data.c_str(),
"@,@,@",param+2);
559 long ident=
cid(param[2].argument[0]);
560 long idori = stol(param[3].argument[0]);
561 TopoDS_Shell topods_shell;
592 parse.
decode(data.c_str(),
"@,@",param+2);
593 long ident=
cid(param[2].argument[0]);
612 else parse.
decode(data.c_str(),
"@,@,(@),@,@,@,(&)",param+2);
613 long idsurf=
cid(param[3].argument[0]);
614 int sens=atoi(param[5].argument[0].c_str());
620 TopoDS_Face topods_face;
622 topods_face=occ_fonction_v2017->
get_TopoDS_Face_id(atol(param[2].argument[0].c_str()));
626 else mgface=
new MG_FACE(param[2].argument[0],
id,mgsurf,sens);
628 mgface=
new MG_FACE(param[2].argument[0],
id,mgsurf,sens);
635 int nbpole=atoi(param[6].argument[0].c_str());
638 int nb=atoi(param[argccf-1].argument[0].c_str());
644 bool import_occ_2017=
false;
649 import_occ_2017=
true;
650 parse.
decode(data.c_str(),
"@,@,(@)",param+2);
651 long ident=
cid(param[2].argument[0]);
652 long idori=stol(param[3].argument[0]);
653 TopoDS_Wire topods_wire;
683 parse.
decode(data.c_str(),
"@,(@)",param+2);
684 long ident=
cid(param[2].argument[0]);
702 parse.
decode(data.c_str(),
"@,@,@,@,@,@,(&)",param+2);
703 long idcur=
cid(param[3].argument[0]);
704 int sens=atol(param[6].argument[0].c_str());
705 long idori = stoi(param[2].argument[0]);
711 TopoDS_Edge topods_edge;
717 else mgarete=
new MG_ARETE(param[2].argument[0],
id,mgcur,sens);
719 mgarete=
new MG_ARETE(param[2].argument[0],
id,mgcur,sens);
722 int nb=atoi(param[7].argument[0].c_str());
729 else parse.
decode(data.c_str(),
"@,@,@,@,(&)",param+2);
730 long idpoint=
cid(param[3].argument[0]);
731 long idori = stol(param[2].argument[0]);
737 TopoDS_Vertex topods_vertex;
744 else mgsom=
new MG_SOMMET(param[2].argument[0],
id,mgpt);
746 mgsom=
new MG_SOMMET(param[2].argument[0],
id,mgpt);
753 int ipole=atoi(param[4].argument[0].c_str());
756 int nb=atoi(param[argccf-1].argument[0].c_str());
767 parse.
decode(data.c_str(),
"@,@,@,@,@",param+2);
768 std::string nom=param[2].argument[0];
769 long id_mg_geometrie =
cid((
char*)param[3].argument[0].c_str());
770 int fusionner_entite_similaire = atoi((
char*)param[4].argument[0].c_str());
771 int importer_triangulation = atoi((
char*)param[5].argument[0].c_str());
772 double epsilon_triangulation = atof((
char*)param[6].argument[0].c_str());
785 parse.
decode(data.c_str(),
"@,@,@,@,(&)",param+2);
786 long id_modele =
cid((
char*)param[2].argument[0].c_str());
787 std::string nom=param[3].argument[0];
788 long id_mg_sous_geometrie =
cid((
char*)param[4].argument[0].c_str());
789 long nb_mgcg_forme = atol((
char*)param[5].argument[0].c_str());
794 else mg_sous_geometrie=NULL;
796 for(
long i=0;i<nb_mgcg_forme;i++)
798 unsigned long id2 =
cid(param[6].argument[i]);
809 parse.
decode(data.c_str(),
"@,@,@,(&)",param+2);
810 long id_mgcg_modele =
cid(param[2].argument[0]);
811 std::string nom=param[3].argument[0];
812 long nb_forme = atol(param[4].argument[0].c_str());
815 for(
long i=0;i<nb_forme;i++)
817 long id_forme =
cid(param[5].argument[i]);
827 parse.
decode(data.c_str(),
"@,@,@,@,@,@,(&)",param+2);
828 long id_modele =
cid((
char*)param[2].argument[0].c_str());
830 int provenance_forme = atoi((
char*)param[3].argument[0].c_str());
831 int etat_forme = atoi((
char*)param[4].argument[0].c_str());
833 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_arete = mgcg_modele->
get_mg_geometrie()->
get_mg_areteid(
cid((
char*)param[5].argument[0].c_str()));
844 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,(&)",param+2);
845 long id_modele =
cid((
char*)param[2].argument[0].c_str());
847 int etat_forme = atoi((
char*)param[3].argument[0].c_str());
849 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_arete = mgcg_modele->
get_mg_geometrie()->
get_mg_areteid(
cid((
char*)param[4].argument[0].c_str()));
850 double x1 = atof((
char*)param[5].argument[0].c_str());
851 double y1 = atof((
char*)param[6].argument[0].c_str());
852 double z1 = atof((
char*)param[7].argument[0].c_str());
853 double x2 = atof((
char*)param[8].argument[0].c_str());
854 double y2 = atof((
char*)param[9].argument[0].c_str());
855 double z2 = atof((
char*)param[10].argument[0].c_str());
863 parse.
decode(data.c_str(),
"@,@,@,@,@,@,(&)",param+2);
864 long id_modele =
cid((
char*)param[2].argument[0].c_str());
866 int provenance_forme = atoi((
char*)param[3].argument[0].c_str());
867 int etat_forme = atoi((
char*)param[4].argument[0].c_str());
869 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_volume = mgcg_modele->
get_mg_geometrie()->
get_mg_volumeid(
cid((
char*)param[5].argument[0].c_str()));
880 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,(&)",param+2);
881 long id_modele =
cid((
char*)param[2].argument[0].c_str());
883 int etat_forme = atoi((
char*)param[3].argument[0].c_str());
885 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_volume = mgcg_modele->
get_mg_geometrie()->
get_mg_volumeid(
cid((
char*)param[4].argument[0].c_str()));
886 double x1 = atof((
char*)param[5].argument[0].c_str());
887 double y1 = atof((
char*)param[6].argument[0].c_str());
888 double z1 = atof((
char*)param[7].argument[0].c_str());
889 double x2 = atof((
char*)param[8].argument[0].c_str());
890 double y2 = atof((
char*)param[9].argument[0].c_str());
891 double z2 = atof((
char*)param[10].argument[0].c_str());
900 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,(&)",param+2);
901 long id_modele =
cid((
char*)param[2].argument[0].c_str());
903 int etat_forme = atoi((
char*)param[3].argument[0].c_str());
905 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_volume = mgcg_modele->
get_mg_geometrie()->
get_mg_volumeid(
cid((
char*)param[4].argument[0].c_str()));
906 double centre_x = atof((
char*)param[5].argument[0].c_str());
907 double centre_y = atof((
char*)param[6].argument[0].c_str());
908 double centre_z = atof((
char*)param[7].argument[0].c_str());
909 double rayon = atof((
char*)param[8].argument[0].c_str());
918 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,(&)",param+2);
919 long id_modele =
cid((
char*)param[2].argument[0].c_str());
921 int etat_forme = atoi((
char*)param[3].argument[0].c_str());
923 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_volume = mgcg_modele->
get_mg_geometrie()->
get_mg_volumeid(
cid((
char*)param[4].argument[0].c_str()));
924 double centre_x = atof((
char*)param[5].argument[0].c_str());
925 double centre_y = atof((
char*)param[6].argument[0].c_str());
926 double centre_z = atof((
char*)param[7].argument[0].c_str());
927 double direction_x = atof((
char*)param[8].argument[0].c_str());
928 double direction_y = atof((
char*)param[9].argument[0].c_str());
929 double direction_z = atof((
char*)param[10].argument[0].c_str());
930 double rayon_majeur = atof((
char*)param[11].argument[0].c_str());
931 double rayon_mineur = atof((
char*)param[12].argument[0].c_str());
932 MG_CG_FORME* forme =
MG_CG::creer_MG_CG_FORME_VOLUME_ELLIPSOIDE(mgcg_modele,etat_forme,
id,mg_volume,centre_x,centre_y,centre_z,direction_x,direction_y,direction_z,rayon_majeur,rayon_mineur);
940 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,(&)",param+2);
941 long id_modele =
cid((
char*)param[2].argument[0].c_str());
943 int etat_forme = atoi((
char*)param[3].argument[0].c_str());
945 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_volume = mgcg_modele->
get_mg_geometrie()->
get_mg_volumeid(
cid((
char*)param[4].argument[0].c_str()));
946 double extremite_x = atof((
char*)param[5].argument[0].c_str());
947 double extremite_y = atof((
char*)param[6].argument[0].c_str());
948 double extremite_z = atof((
char*)param[7].argument[0].c_str());
949 double direction_x = atof((
char*)param[8].argument[0].c_str());
950 double direction_y = atof((
char*)param[9].argument[0].c_str());
951 double direction_z = atof((
char*)param[10].argument[0].c_str());
952 double rayon = atof((
char*)param[11].argument[0].c_str());
953 double longueur = atof((
char*)param[12].argument[0].c_str());
954 MG_CG_FORME* forme =
MG_CG::creer_MG_CG_FORME_VOLUME_CYLINDRE(mgcg_modele,etat_forme,
id,mg_volume,extremite_x,extremite_y,extremite_z,direction_x,direction_y,direction_z,rayon,longueur);
962 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,(&)",param+2);
963 long id_modele =
cid((
char*)param[2].argument[0].c_str());
965 int etat_forme = atoi((
char*)param[3].argument[0].c_str());
967 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_volume = mgcg_modele->
get_mg_geometrie()->
get_mg_volumeid(
cid((
char*)param[4].argument[0].c_str()));
968 double extremite_x = atof((
char*)param[5].argument[0].c_str());
969 double extremite_y = atof((
char*)param[6].argument[0].c_str());
970 double extremite_z = atof((
char*)param[7].argument[0].c_str());
971 double direction_x = atof((
char*)param[8].argument[0].c_str());
972 double direction_y = atof((
char*)param[9].argument[0].c_str());
973 double direction_z = atof((
char*)param[10].argument[0].c_str());
974 double rayon = atof((
char*)param[11].argument[0].c_str());
975 double longueur = atof((
char*)param[12].argument[0].c_str());
976 MG_CG_FORME* forme =
MG_CG::creer_MG_CG_FORME_VOLUME_CONE(mgcg_modele,etat_forme,
id,mg_volume,extremite_x,extremite_y,extremite_z,direction_x,direction_y,direction_z,rayon,longueur);
984 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,@,@,(&)",param+2);
985 long id_modele =
cid((
char*)param[2].argument[0].c_str());
987 int etat_forme = atoi((
char*)param[3].argument[0].c_str());
989 if(etat_forme==MG_CG_FORME::ETAT_FORME::CONSTRUITE || etat_forme==MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION) mg_volume = mgcg_modele->
get_mg_geometrie()->
get_mg_volumeid(
cid((
char*)param[4].argument[0].c_str()));
990 double centre_x = atof((
char*)param[5].argument[0].c_str());
991 double centre_y = atof((
char*)param[6].argument[0].c_str());
992 double centre_z = atof((
char*)param[7].argument[0].c_str());
993 double direction_x = atof((
char*)param[8].argument[0].c_str());
994 double direction_y = atof((
char*)param[9].argument[0].c_str());
995 double direction_z = atof((
char*)param[10].argument[0].c_str());
996 double rayon_cercle = atof((
char*)param[11].argument[0].c_str());
997 double rayon_tore = atof((
char*)param[12].argument[0].c_str());
998 double angle_seg = atof((
char*)param[13].argument[0].c_str());
999 double angle_rotation = atof((
char*)param[14].argument[0].c_str());
1000 MG_CG_FORME* forme =
MG_CG::creer_MG_CG_FORME_VOLUME_TORE(mgcg_modele,etat_forme,
id,mg_volume,centre_x,centre_y,centre_z,direction_x,direction_y,direction_z,rayon_cercle,rayon_tore,angle_seg,angle_rotation);
1008 parse.
decode(data.c_str(),
"@,@,@,@,(&),@,(&),@",param+2);
1009 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1011 int provenance_forme = atoi((
char*)param[3].argument[0].c_str());
1012 int etat_forme = atoi((
char*)param[4].argument[0].c_str());
1013 std::vector<MG_ELEMENT_TOPOLOGIQUE*> vector_mg_element_topologique;
1014 std::vector<MG_ELEMENT_COTOPOLOGIQUE*> vector_mg_element_cotopologique;
1015 long nb_mg_element_topologique = atol((
char*)param[5].argument[0].c_str());
1016 for(
long i=0;i<nb_mg_element_topologique;i++)
1020 long nb_mg_element_cotopologique = atol((
char*)param[7].argument[0].c_str());
1021 for(
long i=0;i<nb_mg_element_cotopologique;i++)
1035 parse.
decode(data.c_str(),
"@,@,@,@,(&),@",param+2);
1036 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1038 int provenance_forme = atoi((
char*)param[3].argument[0].c_str());
1039 int etat_forme = atoi((
char*)param[4].argument[0].c_str());
1040 std::vector<MG_VOLUME*> vector_mg_volume;
1041 long nb_mg_volume = atol((
char*)param[5].argument[0].c_str());
1042 for(
long i=0;i<nb_mg_volume;i++)
1056 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
1057 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1059 int semantique = atoi((
char*)param[3].argument[0].c_str());
1060 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1063 long id_forme_entree_1 =
cid((
char*)param[5].argument[0].c_str());
1064 if(id_forme_entree_1!=0) mgcg_forme_entree_1=mgcg_modele->
get_mgcg_formeid(id_forme_entree_1);
1065 long id_forme_entree_2 =
cid((
char*)param[6].argument[0].c_str());
1066 if(id_forme_entree_2!=0) mgcg_forme_entree_2=mgcg_modele->
get_mgcg_formeid(id_forme_entree_2);
1067 long id_forme_sortie =
cid((
char*)param[7].argument[0].c_str());
1076 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
1077 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1079 int semantique = atoi((
char*)param[3].argument[0].c_str());
1080 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1083 long id_forme_entree_1 =
cid((
char*)param[5].argument[0].c_str());
1084 if(id_forme_entree_1!=0) mgcg_forme_entree_1=mgcg_modele->
get_mgcg_formeid(id_forme_entree_1);
1085 long id_forme_entree_2 =
cid((
char*)param[6].argument[0].c_str());
1086 if(id_forme_entree_2!=0) mgcg_forme_entree_2=mgcg_modele->
get_mgcg_formeid(id_forme_entree_2);
1087 long id_forme_sortie =
cid((
char*)param[7].argument[0].c_str());
1096 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
1097 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1099 int semantique = atoi((
char*)param[3].argument[0].c_str());
1100 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1103 long id_forme_entree_1 =
cid((
char*)param[5].argument[0].c_str());
1104 if(id_forme_entree_1!=0) mgcg_forme_entree_1=mgcg_modele->
get_mgcg_formeid(id_forme_entree_1);
1105 long id_forme_entree_2 =
cid((
char*)param[6].argument[0].c_str());
1106 if(id_forme_entree_2!=0) mgcg_forme_entree_2=mgcg_modele->
get_mgcg_formeid(id_forme_entree_2);
1107 long id_forme_sortie =
cid((
char*)param[7].argument[0].c_str());
1116 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
1117 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1119 int semantique = atoi((
char*)param[3].argument[0].c_str());
1120 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1123 long id_forme_entree_1 =
cid((
char*)param[5].argument[0].c_str());
1124 if(id_forme_entree_1!=0) mgcg_forme_entree_1=mgcg_modele->
get_mgcg_formeid(id_forme_entree_1);
1125 long id_forme_entree_2 =
cid((
char*)param[6].argument[0].c_str());
1126 if(id_forme_entree_2!=0) mgcg_forme_entree_2=mgcg_modele->
get_mgcg_formeid(id_forme_entree_2);
1127 long id_forme_sortie =
cid((
char*)param[7].argument[0].c_str());
1136 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
1137 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1139 int semantique = atoi((
char*)param[3].argument[0].c_str());
1140 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1143 long id_forme_inclusion_entree =
cid((
char*)param[5].argument[0].c_str());
1144 if(id_forme_inclusion_entree!=0) mgcg_forme_inclusion_entree=mgcg_modele->
get_mgcg_formeid(id_forme_inclusion_entree);
1145 long id_forme_matrice_entree =
cid((
char*)param[6].argument[0].c_str());
1146 if(id_forme_matrice_entree!=0) mgcg_forme_matrice_entree=mgcg_modele->
get_mgcg_formeid(id_forme_matrice_entree);
1147 long id_forme_inclusion_sortie =
cid((
char*)param[7].argument[0].c_str());
1148 long id_forme_matrice_sortie =
cid((
char*)param[8].argument[0].c_str());
1158 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,@",param+2);
1159 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1161 int semantique = atoi((
char*)param[3].argument[0].c_str());
1162 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1164 long id_forme_entree =
cid((
char*)param[5].argument[0].c_str());
1165 if(id_forme_entree!=0) mgcg_forme_entree=mgcg_modele->
get_mgcg_formeid(id_forme_entree);
1166 long id_forme_sortie =
cid((
char*)param[6].argument[0].c_str());
1168 double x = atof((
char*)param[7].argument[0].c_str());
1169 double y = atof((
char*)param[8].argument[0].c_str());
1170 double z = atof((
char*)param[9].argument[0].c_str());
1171 double w = atof((
char*)param[10].argument[0].c_str());
1172 double centre_x = atof((
char*)param[11].argument[0].c_str());
1173 double centre_y = atof((
char*)param[12].argument[0].c_str());
1174 double centre_z = atof((
char*)param[13].argument[0].c_str());
1185 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,",param+2);
1186 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1188 int semantique = atoi((
char*)param[3].argument[0].c_str());
1189 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1191 long id_forme_entree =
cid((
char*)param[5].argument[0].c_str());
1192 if(id_forme_entree!=0) mgcg_forme_entree=mgcg_modele->
get_mgcg_formeid(id_forme_entree);
1193 long id_forme_sortie =
cid((
char*)param[6].argument[0].c_str());
1195 double x = atof((
char*)param[7].argument[0].c_str());
1196 double y = atof((
char*)param[8].argument[0].c_str());
1197 double z = atof((
char*)param[9].argument[0].c_str());
1206 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,",param+2);
1207 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1209 int semantique = atoi((
char*)param[3].argument[0].c_str());
1210 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1212 long id_forme_entree =
cid((
char*)param[5].argument[0].c_str());
1213 if(id_forme_entree!=0) mgcg_forme_entree=mgcg_modele->
get_mgcg_formeid(id_forme_entree);
1214 long id_forme_sortie =
cid((
char*)param[6].argument[0].c_str());
1216 double x = atof((
char*)param[7].argument[0].c_str());
1217 double y = atof((
char*)param[8].argument[0].c_str());
1218 double z = atof((
char*)param[9].argument[0].c_str());
1219 double facteur = atof((
char*)param[10].argument[0].c_str());
1229 parse.
decode(data.c_str(),
"@,@,@,@,@,@,",param+2);
1230 long id_modele =
cid((
char*)param[2].argument[0].c_str());
1232 int semantique = atoi((
char*)param[3].argument[0].c_str());
1233 int etat_operateur = atoi((
char*)param[4].argument[0].c_str());
1235 long id_forme_entree =
cid((
char*)param[5].argument[0].c_str());
1236 if(id_forme_entree!=0) mgcg_forme_entree=mgcg_modele->
get_mgcg_formeid(id_forme_entree);
1237 long id_forme_sortie =
cid((
char*)param[6].argument[0].c_str());
1239 double decallage = atof((
char*)param[7].argument[0].c_str());
1248 parse.
decode(data.c_str(),
"@,@",param+2);
1249 std::string identifiant = param[2].argument[0];
1250 std::string valeur = param[3].argument[0];
1256 if(modele->get_id()==
id)
1268 MG_CONSTRUCTION_GEOMETRIQUE* mg_constr_geo = (MG_CONSTRUCTION_GEOMETRIQUE*)mg_id;
1278 parse.
decode(data.c_str(),
"@,@",param+2);
1279 std::string identifiant = param[2].argument[0];
1280 double valeur = atof(param[3].argument[0].c_str());
1286 if(modele->get_id()==
id)
1298 MG_CONSTRUCTION_GEOMETRIQUE* mg_constr_geo = (MG_CONSTRUCTION_GEOMETRIQUE*)mg_id;
1308 parse.
decode(data.c_str(),
"@,@,(&)",param+2);
1309 std::string identifiant = param[2].argument[0];
1310 long nb_valeur = atol(param[3].argument[0].c_str());
1311 std::vector<double> vector_valeur;
1312 for(
long i=0;i<nb_valeur;i++)
1314 double valeur = atof(param[4].argument[i].c_str());
1315 vector_valeur.push_back(valeur);
1322 if(modele->get_id()==
id)
1334 MG_CONSTRUCTION_GEOMETRIQUE* mg_constr_geo = (MG_CONSTRUCTION_GEOMETRIQUE*)mg_id;
1345 in=fopen(chemin,
"rt");
1346 if (in==NULL)
return 0;
1352 #ifdef WINDOWS_VERSION
1353 std::multimap<CAD4FE::MCVertex*, unsigned long> mapMergedRefVertices;
1355 bool updatedMergedRefVertices =
false;
1357 std::vector<unsigned long> volumemince;
1361 std::string ligne=parse.
lire(in,
';',&ierr);
1362 parse.
decode(ligne.c_str(),
"@;",param);
1363 const char *chaine=param[0].
argument[0].c_str();
1364 if ((chaine[0]==
'/') && (chaine[1]==
'/'))
1366 if ((chaine[2]==
'*')&&(chaine[3]==
'i'))
1369 sscanf(chaine,
"//*i:%lu;",&
id);
1372 if ((chaine[2]==
'*')&&(chaine[3]==
'v'))
1375 else if (param[0].argument[0]!=
"FIN")
1377 parse.
decode(ligne.c_str(),
"%@=@(@);",param);
1378 std::string entite=param[1].
argument[0];
1379 long id=atol(param[0].argument[0].c_str());
1380 std::string data=param[2].
argument[0] ;
1383 if (entite==
"GEOMETRIE")
1385 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
1386 double unite=atof(param[2].argument[0].c_str());
1387 std::string typegeo=param[3].
argument[0];
1388 std::string chemin_geo=param[4].
argument[0];
1389 if (typegeo==
"VIRTUEL")
1391 mggeo=
new MG_GEOMETRIE((
char*)typegeo.c_str(),
id,(
char*)chemin_geo.c_str(),unite);
1395 if (typegeo==
"STEP")
1397 mggeo=
new MG_GEOMETRIE((
char*)
"STEP",
id,(
char *)chemin_geo.c_str(),unite);
1402 if (typegeo==
"ACIS")
1404 mggeo=
new MG_GEOMETRIE((
char*)
"ACIS",
id,(
char *)chemin_geo.c_str(),unite);
1412 mggeo=
new MG_GEOMETRIE((
char*)
"OCC",
id,chemin_geo.c_str(),unite);
1415 if (typegeo==
"OCCV2015")
1417 mggeo=
new MG_GEOMETRIE((
char*)
"OCCV2015",
id,chemin_geo.c_str(),unite);
1422 if (typegeo==
"OCCV2017")
1424 mggeo=
new MG_GEOMETRIE((
char*)
"OCCV2017",
id,chemin_geo.c_str(),unite);
1427 std::string chemin_caf =
str_dossier + chemin_geo +
".ocaf";
1428 char* chemin_caf_char = (
char*)chemin_caf.c_str();
1432 std::string nommat=
"";
1433 if (param[5].argument[0]!=
"")
1437 if (entite==
"CONSTRUCTION")
1440 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
1441 double unite=atof(param[2].argument[0].c_str());
1442 std::string typegeo=param[3].
argument[0];
1443 std::string chemin_geo=param[4].
argument[0];
1445 if (typegeo==
"OCCV2017")
1447 mgconstruction=
new MG_GEOMETRIE((
char*)
"OCCV2017",
id,chemin_geo.c_str(),unite);
1448 mggeo=mgconstruction;
1452 std::string chemin_caf =
str_dossier + chemin_geo +
".ocaf";
1453 char* chemin_caf_char = (
char*)chemin_caf.c_str();
1457 if (typegeo==
"VIRTUEL")
1459 mgconstruction=
new MG_GEOMETRIE((
char*)typegeo.c_str(),
id,(
char*)chemin_geo.c_str(),unite);
1460 mggeo=mgconstruction;
1464 std::string nommat=
"";
1465 if (param[5].argument[0]!=
"")
1470 if (entite==
"ARBRE")
1472 parse.
decode(data.c_str(),
"@",param+2);
1473 std::string nom=param[2].
argument[0];
1474 arbre=
new MG_ARBRE(
id,nom.c_str());
1477 if (entite ==
"ASSEMBLAGE")
1479 parse.
decode(data.c_str(),
"@,@,(&)",param+2);
1480 std::string nom=param[2].
argument[0];
1481 int nb_primitive = atoi((
char*)param[3].argument[0].c_str());
1482 MG_ASSEMBLAGE *mgassembl=
new MG_ASSEMBLAGE(
id,nom.c_str());
1483 for(
int i=0;i<nb_primitive;i++)
1485 unsigned long id2 =
cid(param[4].argument[i]);
1486 mgassembl->ajouter_mg_primitive(id2);
1488 arbre->ajouter_mg_assemblage(mgassembl);
1490 if (entite==
"BOITE")
1492 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
1493 double x1=atof((
char*)param[2].argument[0].c_str());
1494 double y1=atof((
char*)param[3].argument[0].c_str());
1495 double z1=atof((
char*)param[4].argument[0].c_str());
1496 double x2=atof((
char*)param[5].argument[0].c_str());
1497 double y2=atof((
char*)param[6].argument[0].c_str());
1498 double z2=atof((
char*)param[7].argument[0].c_str());
1499 MG_PRIMITIVE_BOITE *b=
new MG_PRIMITIVE_BOITE(
id,x1,y1,z1,x2,y2,z2);
1501 arbre->ajouter_mg_primitive(b);
1503 if (entite==
"SPHERE")
1505 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
1506 double centre_x=atof((
char*)param[2].argument[0].c_str());
1507 double centre_y=atof((
char*)param[3].argument[0].c_str());
1508 double centre_z=atof((
char*)param[4].argument[0].c_str());
1509 double rayon=atof((
char*)param[5].argument[0].c_str());
1510 MG_PRIMITIVE_SPHERE *b=
new MG_PRIMITIVE_SPHERE(
id,centre_x,centre_y,centre_z,rayon);
1512 arbre->ajouter_mg_primitive(b);
1514 if (entite==
"ELLIPSOIDE_REVOLUTION")
1516 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@",param+2);
1517 double centre_x=atof((
char*)param[2].argument[0].c_str());
1518 double centre_y=atof((
char*)param[3].argument[0].c_str());
1519 double centre_z=atof((
char*)param[4].argument[0].c_str());
1520 double axe_x=atof((
char*)param[5].argument[0].c_str());
1521 double axe_y=atof((
char*)param[6].argument[0].c_str());
1522 double axe_z=atof((
char*)param[7].argument[0].c_str());
1523 double rayon_majeur=atof((
char*)param[8].argument[0].c_str());
1524 double rayon_mineur=atof((
char*)param[9].argument[0].c_str());
1525 MG_PRIMITIVE_ELLIPSOIDE_REVOLUTION *b=
new MG_PRIMITIVE_ELLIPSOIDE_REVOLUTION(
id,centre_x,centre_y,centre_z,axe_x,axe_y,axe_z,rayon_majeur,rayon_mineur);
1527 arbre->ajouter_mg_primitive(b);
1529 if (entite==
"CYLINDRE")
1531 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
1532 double extremite_x=atof((
char*)param[2].argument[0].c_str());
1533 double extremite_y=atof((
char*)param[3].argument[0].c_str());
1534 double extremite_z=atof((
char*)param[4].argument[0].c_str());
1535 double longitude=atof((
char*)param[5].argument[0].c_str());
1536 double latitude=atof((
char*)param[6].argument[0].c_str());
1537 double rayon=atof((
char*)param[7].argument[0].c_str());
1538 double longueur=atof((
char*)param[8].argument[0].c_str());
1539 MG_PRIMITIVE_CYLINDRE *b=
new MG_PRIMITIVE_CYLINDRE(
id,extremite_x,extremite_y,extremite_z,longitude,latitude,rayon,longueur);
1541 arbre->ajouter_mg_primitive(b);
1545 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
1546 double centre_x=atof((
char*)param[2].argument[0].c_str());
1547 double centre_y=atof((
char*)param[3].argument[0].c_str());
1548 double centre_z=atof((
char*)param[4].argument[0].c_str());
1549 double longitude=atof((
char*)param[5].argument[0].c_str());
1550 double latitude=atof((
char*)param[6].argument[0].c_str());
1551 double rayon_cercle=atof((
char*)param[7].argument[0].c_str());
1552 double rayon_tore=atof((
char*)param[8].argument[0].c_str());
1553 MG_PRIMITIVE_TORE *b=
new MG_PRIMITIVE_TORE(
id,centre_x,centre_y,centre_z,longitude,latitude,rayon_cercle,rayon_tore);
1555 arbre->ajouter_mg_primitive(b);
1559 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
1560 double base_x=atof((
char*)param[2].argument[0].c_str());
1561 double base_y=atof((
char*)param[3].argument[0].c_str());
1562 double base_z=atof((
char*)param[4].argument[0].c_str());
1563 double longitude=atof((
char*)param[5].argument[0].c_str());
1564 double latitude=atof((
char*)param[6].argument[0].c_str());
1565 double rayon=atof((
char*)param[7].argument[0].c_str());
1566 double hauteur=atof((
char*)param[8].argument[0].c_str());
1567 MG_PRIMITIVE_CONE *b=
new MG_PRIMITIVE_CONE(
id,base_x,base_y,base_z,longitude,latitude,rayon,hauteur);
1569 arbre->ajouter_mg_primitive(b);
1571 if (entite==
"UNION")
1573 parse.
decode(data.c_str(),
"@,@,@",param+2);
1574 int sem=atoi((
char*)param[2].argument[0].c_str());
1575 long id1=
cid((
char*)param[3].argument[0].c_str());
1576 long id2=
cid((
char*)param[4].argument[0].c_str());
1577 MG_PRIMITIVE *p1=arbre->get_mg_primitiveid(id1);
1578 MG_PRIMITIVE *p2=arbre->get_mg_primitiveid(id2);
1579 MG_OPERATEUR_BOOLEAN_UNION *op=
new MG_OPERATEUR_BOOLEAN_UNION(
id,sem,p1,p2);
1580 arbre->ajouter_mg_operateur_boolean(op);
1582 if (entite==
"DIFFERENCE")
1584 parse.
decode(data.c_str(),
"@,@,@",param+2);
1585 int sem=atoi((
char*)param[2].argument[0].c_str());
1586 long id1=
cid((
char*)param[3].argument[0].c_str());
1587 long id2=
cid((
char*)param[4].argument[0].c_str());
1588 MG_PRIMITIVE *p1=arbre->get_mg_primitiveid(id1);
1589 MG_PRIMITIVE *p2=arbre->get_mg_primitiveid(id2);
1590 MG_OPERATEUR_BOOLEAN_DIFFERENCE *op=
new MG_OPERATEUR_BOOLEAN_DIFFERENCE(
id,sem,p1,p2);
1591 arbre->ajouter_mg_operateur_boolean(op);
1593 if (entite==
"INTERSECTION")
1595 parse.
decode(data.c_str(),
"@,@,@",param+2);
1596 int sem=atoi((
char*)param[2].argument[0].c_str());
1597 long id1=
cid((
char*)param[3].argument[0].c_str());
1598 long id2=
cid((
char*)param[4].argument[0].c_str());
1599 MG_PRIMITIVE *p1=arbre->get_mg_primitiveid(id1);
1600 MG_PRIMITIVE *p2=arbre->get_mg_primitiveid(id2);
1601 MG_OPERATEUR_BOOLEAN_INTERSECTION *op=
new MG_OPERATEUR_BOOLEAN_INTERSECTION(
id,sem,p1,p2);
1602 arbre->ajouter_mg_operateur_boolean(op);
1604 if (entite==
"PRIM_COMPLEXE")
1606 parse.
decode(data.c_str(),
"@",param+2);
1607 long id1=
cid((
char*)param[2].argument[0].c_str());
1608 MG_OPERATEUR_BOOLEAN *op=arbre->get_mg_operateur_booleanid(id1);
1609 MG_PRIMITIVE* p=op->construit(
id);
1610 arbre->ajouter_mg_primitive(p);
1613 if (entite==
"MG_CG_MODELE")
1617 if (entite ==
"MG_CG_ASSEMBLAGE")
1621 if (entite ==
"MG_CG_INFO_DOUBLE")
1625 if (entite ==
"MG_CG_INFO_STRING")
1629 if (entite ==
"MG_CG_INFO_VCT_DOUBLE")
1633 if (entite ==
"MG_CG_GROUPE_FORME")
1637 if (entite ==
"MG_CG_FORME_ARETE")
1641 if (entite ==
"MG_CG_FORME_ARETE_DROITE")
1645 if (entite ==
"MG_CG_FORME_VOLUME")
1649 if (entite ==
"MG_CG_FORME_VOLUME_BOITE")
1653 if (entite ==
"MG_CG_FORME_VOLUME_SPHERE")
1657 if (entite ==
"MG_CG_FORME_VOLUME_ELLIPSOIDE")
1661 if (entite ==
"MG_CG_FORME_VOLUME_CYLINDRE")
1665 if (entite ==
"MG_CG_FORME_VOLUME_CONE")
1669 if (entite ==
"MG_CG_FORME_VOLUME_TORE")
1673 if (entite ==
"MG_CG_FORME_MULTIPLE")
1677 if (entite ==
"MG_CG_FORME_MULTI_VOLUME")
1681 if (entite ==
"MG_CG_OP_BOOL_UNION")
1685 if (entite ==
"MG_CG_OP_BOOL_DIFFERENCE")
1689 if (entite ==
"MG_CG_OP_BOOL_INTERSECTION")
1693 if (entite ==
"MG_CG_OP_BOOL_FRAGMENT")
1697 if (entite ==
"MG_CG_OP_INCLUSION_MATRICE")
1701 if (entite ==
"MG_CG_OP_TRANSF_ROTATION")
1705 if (entite ==
"MG_CG_OP_TRANSF_TRANSLATION")
1709 if (entite ==
"MG_CG_OP_TRANSF_ECHELLE")
1713 if (entite ==
"MG_CG_OP_TRANSF_DECALLAGE")
1719 if (entite ==
"MG_SOUS_GEOMETRIE")
1723 if (entite==
"GEOMETRIE_EPS")
1725 parse.
decode(data.c_str(),
"@",param+2);
1726 double val=atof((
char*)param[2].argument[0].c_str());
1729 if (entite==
"GROUPE_TOPOLOGIQUE")
1731 parse.
decode(data.c_str(),
"@,(&)",param+2);
1734 int nb=atoi(param[2].argument[0].c_str());
1735 for (
int i=0;i<nb;i++)
1737 unsigned long id2=
cid(param[3].argument[i].c_str());
1743 if (ele!=NULL) mggt->
ajouter(ele);
1747 if (entite==
"GEOM_FONCTION")
1749 parse.
decode(data.c_str(),
"@,@,(&)",param+2);
1750 int dim=atoi((
char*)param[2].argument[0].c_str());
1753 int nb=atoi(param[3].argument[0].c_str());
1754 for (
int i=0;i<nb;i++)
1756 parse.
decode(param[4].argument[i].c_str(),
"(&)",param+5);
1757 double *coo=
new double[dim];
1758 for (
int j=0;j<dim;j++)
1759 coo[j]=atof(param[5].argument[j].c_str());
1766 if (entite==
"VOLUME")
1782 if (entite==
"COQUE")
1786 parse.
decode(data.c_str(),
"@,@,@,@,(&)",param+2);
1789 int nummat=atoi((
char*)param[4].argument[0].c_str());
1791 int nb=atoi(param[5].argument[0].c_str());
1796 parse.
decode(data.c_str(),
"@,@,@,(&)",param+2);
1799 int nb=atoi(param[4].argument[0].c_str());
1815 if (entite==
"POUTRE")
1819 parse.
decode(data.c_str(),
"@,@,@,@,(&)",param+2);
1822 int nummat=atoi((
char*)param[4].argument[0].c_str());
1824 int nb=atoi(param[5].argument[0].c_str());
1829 parse.
decode(data.c_str(),
"@,@,@,(&)",param+2);
1832 int nb=atoi(param[4].argument[0].c_str());
1849 if (entite==
"COQUILLE")
1855 if (entite==
"SURFACE_STEP")
1857 parse.
decode(data.c_str(),
"@",param+2);
1858 long idstepsuf=atol(param[2].argument[0].c_str());
1863 if (entite==
"COURBE_STEP")
1865 parse.
decode(data.c_str(),
"@",param+2);
1866 long idstepcur=atol(param[2].argument[0].c_str());
1872 if (entite==
"POINT_STEP")
1874 parse.
decode(data.c_str(),
"@",param+2);
1875 long idsteppt=atol(param[2].argument[0].c_str());
1883 if (entite==
"SURFACE_SAT")
1885 parse.
decode(data.c_str(),
"@",param+2);
1886 long idsatsuf=atol(param[2].argument[0].c_str());
1891 if (entite==
"COURBE_SAT")
1893 parse.
decode(data.c_str(),
"@",param+2);
1894 long idsatcur=atol(param[2].argument[0].c_str());
1900 if (entite==
"POINT_SAT")
1902 parse.
decode(data.c_str(),
"@",param+2);
1903 long idsatpt=atol(param[2].argument[0].c_str());
1913 if (entite==
"SURFACE_OCC")
1915 parse.
decode(data.c_str(),
"@",param+2);
1916 long idocc=atol(param[2].argument[0].c_str());
1917 TopoDS_Face occface;
1926 occface=TopoDS::Face(occshape);
1933 if (entite==
"COURBE_OCC")
1935 parse.
decode(data.c_str(),
"@",param+2);
1936 long idocc=atol(param[2].argument[0].c_str());
1937 TopoDS_Edge occedge;
1946 occedge=TopoDS::Edge(occshape);
1952 if (entite==
"POINT_OCC")
1954 parse.
decode(data.c_str(),
"@",param+2);
1955 long idocc=atol(param[2].argument[0].c_str());
1956 TopoDS_Vertex occvertex;
1965 occvertex=TopoDS::Vertex(occshape);
1973 #ifdef WINDOWS_VERSION
1974 if (entite==
"CAD4FE_POLYCURVE")
1977 parse.
decode(data.c_str(),
"@,(&)",param+2);
1978 int nb = atoi(param[2].argument[0].c_str());
1982 printf(
"PolyCurve %d is formed with reference vertex : ",
id);
1983 parse.
decode(param[3].argument[0].c_str(),
"@",param+4);
1985 idRefVertex=
cid(param[4].argument[0].c_str());
1986 printf(
"%d ;\n ", idRefVertex);
1992 printf(
"PolyCurve %d is formed with reference edges : ",
id);
1994 for (
int i=0;i<nb;i++)
1996 parse.
decode(param[3].argument[i].c_str(),
"@",param+4);
1998 idRefEdge=
cid(param[4].argument[0].c_str());
1999 printf(
"%d ; ", idRefEdge);
2002 polycurve->
Merge(tmpPC);
2012 if (entite==
"CAD4FE_POLYSURFACE")
2018 parse.
decode(data.c_str(),
"@,(&)",param+2);
2020 int nb = atoi(param[2].argument[0].c_str());
2021 printf(
"PolySurface %d is formed with reference faces : ",
id);
2022 for (
int i=0;i<nb;i++)
2024 parse.
decode(param[3].argument[i].c_str(),
"@",param+4);
2026 idRefFace=
cid(param[4].argument[0].c_str());
2027 printf(
"%d ; ", idRefFace);
2031 polysurface->
Merge(tmpSF);
2036 if (entite==
"CAD4FE_MCEDGE")
2038 parse.
decode(data.c_str(),
"@,@,@,@,@,@,(&)",param+2);
2040 std::string idOriginal = param[2].
argument[0];
2041 long idPolyCurve=
cid(param[3].argument[0]);
2051 int nb=atoi(param[7].argument[0].c_str());
2054 for (
int i=0;i<nb;i++)
2056 parse.
decode(param[8].argument[i].c_str(),
"(@,@)",param+9);
2059 strcpy(nom,param[9].argument[0].c_str());
2060 val=atof(param[10].argument[0].c_str());
2065 if (entite==
"CAD4FE_MCFACE")
2067 parse.
decode(data.c_str(),
"@,@,@,@,@,(&)",param+2);
2069 std::string idOriginal = param[2].
argument[0];
2070 long idPolySurface=
cid(param[3].argument[0]);
2077 int nb=atoi(param[6].argument[0].c_str());
2080 for (
int i=0;i<nb;i++)
2082 parse.
decode(param[7].argument[i].c_str(),
"(@,@)",param+8);
2085 strcpy(nom,param[8].argument[0].c_str());
2086 val=atof(param[9].argument[0].c_str());
2091 if (entite==
"CAD4FE_MCVERTEX")
2093 parse.
decode(data.c_str(),
"@,@,@,(&),@,(&)",param+2);
2094 std::string idOriginal = param[2].
argument[0];
2095 long idsom=
cid(param[3].argument[0]);
2100 int nb_ref_vertex=atoi(param[4].argument[0].c_str());
2101 if (nb_ref_vertex!=0)
2103 for (
int i=0;i<nb_ref_vertex;i++)
2105 unsigned long idRefVertex=
cid(param[5].argument[i]);
2107 mapMergedRefVertices.insert(std::make_pair(mcVertex,idRefVertex));
2110 int nb_ccf=atoi(param[4+2].argument[0].c_str());
2113 for (
int i=0;i<nb_ccf;i++)
2115 parse.
decode(param[5+2].argument[i].c_str(),
"(@,@)",param+6+2);
2118 strcpy(nom_ccf,param[6+2].argument[0].c_str());
2119 val_ccf=atof(param[7+2].argument[0].c_str());
2141 if (entite==
"COFACE")
2143 parse.
decode(data.c_str(),
"@,@,@",param+2);
2144 long idface=
cid(param[2].argument[0]);
2145 long idcoq=
cid(param[3].argument[0]);
2146 int sens=atoi(param[4].argument[0].c_str());
2152 if (entite==
"BOUCLE")
2156 if (entite==
"POINT")
2158 parse.
decode(data.c_str(),
"@,@,@",param+2);
2160 xyz[0]=atof(param[2].argument[0].c_str());
2161 xyz[1]=atof(param[3].argument[0].c_str());
2162 xyz[2]=atof(param[4].argument[0].c_str());
2166 if (entite==
"SOMMET")
2171 if (entite==
"OCC_SOMMET")
2173 parse.
decode(data.c_str(),
"@,@,@,@,(&)",param+2);
2174 long idpoint=
cid(param[3].argument[0]);
2176 TopoDS_Vertex topods_vertex;
2177 long idori = stol(param[2].argument[0]);
2189 std::cout <<
"*** MG_FILE : ERREUR lecture OCC_SOMMET : Mauvaise OCC_FONCTION ! ***" << std::endl;
2195 int ipole=atoi(param[4].argument[0].c_str());
2198 int nb=atoi(param[argccf-1].argument[0].c_str());
2201 if (entite==
"OCC_ARETE")
2203 parse.
decode(data.c_str(),
"@,@,@,@,@,@,(&)",param+2);
2204 long idcur=
cid(param[3].argument[0]);
2205 int sens=atol(param[6].argument[0].c_str());
2206 long idori = stoi(param[2].argument[0]);
2207 TopoDS_Edge topods_edge;
2220 std::cout <<
"*** MG_FILE : ERREUR lecture OCC_ARETE : Mauvaise OCC_FONCTION ! ***" << std::endl;
2222 int nb=atoi(param[7].argument[0].c_str());
2225 if (entite==
"OCC_BOUCLE")
2227 parse.
decode(data.c_str(),
"@,@,(@)",param+2);
2228 long ident=
cid(param[2].argument[0]);
2229 long idori=stol(param[3].argument[0]);
2230 TopoDS_Wire topods_wire;
2262 std::cout <<
"*** MG_FILE : ERREUR lecture OCC_BOUCLE : Mauvaise OCC_FONCTION ! ***" << std::endl;
2266 if (entite==
"OCC_FACE")
2268 parse.
decode(data.c_str(),
"@,@,(@),@,@,@,(&)",param+2);
2269 long idsurf=
cid(param[3].argument[0]);
2270 int sens=atoi(param[5].argument[0].c_str());
2271 long idori = stol(param[2].argument[0]);
2272 TopoDS_Face topods_face;
2285 std::cout <<
"*** MG_FILE : ERREUR lecture OCC_FACE : Mauvaise OCC_FONCTION ! ***" << std::endl;
2291 int nbpole=atoi(param[6].argument[0].c_str());
2294 int nb=atoi(param[argccf-1].argument[0].c_str());
2297 if (entite==
"OCC_COQUILLE")
2299 parse.
decode(data.c_str(),
"@,@,@",param+2);
2300 long ident=
cid(param[2].argument[0]);
2301 long idori = stol(param[3].argument[0]);
2302 TopoDS_Shell topods_shell;
2334 std::cout <<
"*** MG_FILE : ERREUR lecture OCC_COQUILLE : Mauvaise OCC_FONCTION ! ***" << std::endl;
2337 if (entite==
"OCC_VOLUME")
2340 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
2341 long idori = stol(param[2].argument[0]);
2342 TopoDS_Solid topods_solid;
2354 std::cout <<
"*** MG_FILE : ERREUR lecture OCC_VOLUME : Mauvaise OCC_FONCTION ! ***" << std::endl;
2356 int mince=atoi(param[4].argument[0].c_str());
2359 std::string data2=param[5].
argument[0];
2360 parse.
decode(data2.c_str(),
"@,(&)",param+5);
2361 int nb=atoi(param[5].argument[0].c_str());
2366 std::string data2=param[5].
argument[0];
2367 parse.
decode(data2.c_str(),
"(&),@,(&)",param+5);
2368 int nb_face=param[5].
argument.size();
2369 for (
int i=0;i<nb_face;i=i+2)
2371 unsigned long idn1=
cid(param[5].argument[i]);
2372 unsigned long idn2=
cid(param[5].argument[i+1]);
2373 volumemince.push_back(
id);
2374 volumemince.push_back(idn1);
2375 volumemince.push_back(idn2);
2377 int nb=atoi(param[6].argument[0].c_str());
2384 if (entite==
"ARETE_ELEMENT")
2387 parse.
decode(data.c_str(),
"@,(&),@,(&)",param+2);
2389 parse.
decode(data.c_str(),
"@,(&),(&),@,(&)",param+2);
2398 int nb=atoi(param[numparamnb].argument[0].c_str());
2403 if (entite==
"FACE_ELEMENT")
2406 parse.
decode(data.c_str(),
"@,(&),@,(&)",param+2);
2408 parse.
decode(data.c_str(),
"@,(&),(&),@,(&)",param+2);
2418 int nb=atoi(param[numparamnb].argument[0].c_str());
2423 if (entite==
"COQUE_ELEMENT")
2425 parse.
decode(data.c_str(),
"@,(&),@,(&)",param+2);
2428 int nbele=atoi(param[2].argument[0].c_str());
2429 for (
int i=0;i<nbele;i++)
2431 unsigned long idele=
cid(param[3].argument[i].c_str());
2434 int nb=atoi(param[4].argument[0].c_str());
2449 if (entite==
"POUTRE_ELEMENT")
2451 parse.
decode(data.c_str(),
"@,(&),@,(&)",param+2);
2454 int nbele=atoi(param[2].argument[0].c_str());
2455 for (
int i=0;i<nbele;i++)
2457 unsigned long idele=
cid(param[3].argument[i].c_str());
2460 int nb=atoi(param[4].argument[0].c_str());
2475 if (entite==
"VOLUME_ELEMENT")
2478 parse.
decode(data.c_str(),
"@,(&),@,(&)",param+2);
2480 parse.
decode(data.c_str(),
"@,(&),(&),@,(&)",param+2);
2490 int nb=atoi(param[numparamnb].argument[0].c_str());
2494 if (entite==
"SOMMET_NOEUD")
2497 parse.
decode(data.c_str(),
"@,@,(&)",param+2);
2499 parse.
decode(data.c_str(),
"@,(&),@,(&)",param+2);
2500 long idnoeud=
cid(param[2].argument[0]);
2510 int nb=atoi(param[numparamnb].argument[0].c_str());
2513 if (entite==
"ARETE")
2517 if (entite==
"COSOMMET")
2519 parse.
decode(data.c_str(),
"@,@,@",param+2);
2520 long idsom=
cid(param[2].argument[0]);
2521 long idarete=
cid(param[3].argument[0]);
2522 int num=atoi(param[4].argument[0].c_str());
2529 if (entite==
"COARETE")
2531 parse.
decode(data.c_str(),
"@,@,@",param+2);
2532 long idarete=
cid(param[2].argument[0]);
2533 long idboucle=
cid(param[3].argument[0]);
2534 int sens=atoi(param[4].argument[0].c_str());
2540 if (entite==
"VISU_COURBE")
2542 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
2545 xyz1[0]=atof(param[2].argument[0].c_str());
2546 xyz1[1]=atof(param[3].argument[0].c_str());
2547 xyz1[2]=atof(param[4].argument[0].c_str());
2548 xyz2[0]=atof(param[5].argument[0].c_str());
2549 xyz2[1]=atof(param[6].argument[0].c_str());
2550 xyz2[2]=atof(param[7].argument[0].c_str());
2554 if (entite==
"MAILLAGE")
2556 parse.
decode(data.c_str(),
"@",param+2);
2557 long idgeo=
cid(param[2].argument[0]);
2563 if (entite==
"MAILLAGE_STRUCTURE")
2565 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@",param+2);
2566 long idgeo=
cid(param[2].argument[0]);
2570 double xmin=atof(param[3].argument[0].c_str());
2571 double ymin=atof(param[4].argument[0].c_str());
2572 double zmin=atof(param[5].argument[0].c_str());
2573 double xmax=atof(param[6].argument[0].c_str());
2574 double ymax=atof(param[7].argument[0].c_str());
2575 double zmax=atof(param[8].argument[0].c_str());
2576 int nx=atoi(param[9].argument[0].c_str());
2577 int ny=atoi(param[10].argument[0].c_str());
2578 int nz=atoi(param[11].argument[0].c_str());
2579 BOITE_3D b(xmin,ymin,zmin,xmax,ymax,zmax);
2582 if (entite==
"FEM_MAILLAGE")
2584 parse.
decode(data.c_str(),
"@,@,@",param+2);
2585 int degre=atoi(param[2].argument[0].c_str());
2586 long idmai=
cid(param[3].argument[0]);
2587 long idgeo=
cid(param[4].argument[0]);
2594 if (entite==
"FEM_MAILLAGE_STRUCTURE")
2596 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,@",param+2);
2597 int degre=atoi(param[2].argument[0].c_str());
2598 long idmai=
cid(param[3].argument[0]);
2599 long idgeo=
cid(param[4].argument[0]);
2604 double xmin=atof(param[5].argument[0].c_str());
2605 double ymin=atof(param[6].argument[0].c_str());
2606 double zmin=atof(param[7].argument[0].c_str());
2607 double xmax=atof(param[8].argument[0].c_str());
2608 double ymax=atof(param[9].argument[0].c_str());
2609 double zmax=atof(param[10].argument[0].c_str());
2610 int nx=atoi(param[11].argument[0].c_str());
2611 int ny=atoi(param[12].argument[0].c_str());
2612 int nz=atoi(param[13].argument[0].c_str());
2613 BOITE_3D b(xmin,ymin,zmin,xmax,ymax,zmax);
2616 if (entite==
"NOEUD")
lire_NOEUD(
id,parse,param,data,mgmai,mggeo);
2617 if (entite==
"FEM_NOEUD")
2619 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
2620 long idtopo=
cid(param[2].argument[0]);
2621 long idmai=
cid(param[3].argument[0]);
2622 double x=atof(param[4].argument[0].c_str());
2623 double y=atof(param[5].argument[0].c_str());
2624 double z=atof(param[6].argument[0].c_str());
2625 int num=atoi(param[7].argument[0].c_str());
2626 int numopt=atoi(param[8].argument[0].c_str());
2637 if (elmai!=NULL) noeud=
new FEM_NOEUD(
id,elmai,x,y,z);
2655 if (entite==
"FEM_NOEUD_DEF")
2657 parse.
decode(data.c_str(),
"@,@,@",param+2);
2658 double x=atof(param[2].argument[0].c_str());
2659 double y=atof(param[3].argument[0].c_str());
2660 double z=atof(param[4].argument[0].c_str());
2667 if (entite==
"FEM_NOEUD_REAC")
2669 parse.
decode(data.c_str(),
"@,@,@",param+2);
2670 double x=atof(param[2].argument[0].c_str());
2671 double y=atof(param[3].argument[0].c_str());
2672 double z=atof(param[4].argument[0].c_str());
2679 if (entite==
"SEGMENT")
lire_SEGMENT(
id,parse,param,data,mgmai,mggeo);
2680 if (entite==
"FEM_ELEMENT_NOEUD")
2682 parse.
decode(data.c_str(),
"@,@,@",param+2);
2683 long idtopo=
cid(param[2].argument[0]);
2684 long idmai=
cid(param[3].argument[0]);
2685 long idn1=
cid(param[4].argument[0]);
2698 if (entite==
"FEM_SEGMENT2")
2700 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
2701 long idtopo=
cid(param[2].argument[0]);
2702 long idmai=
cid(param[3].argument[0]);
2703 long idn1=
cid(param[4].argument[0]);
2704 long idn2=
cid(param[5].argument[0]);
2719 if (entite==
"FEM_MINI_SEGMENT2")
2721 parse.
decode(data.c_str(),
"@,@",param+2);
2722 long idn1=
cid(param[2].argument[0]);
2723 long idn2=
cid(param[3].argument[0]);
2731 if (entite==
"FEM_SEGMENT3")
2733 parse.
decode(data.c_str(),
"@,@,@,@,@",param+2);
2734 long idtopo=
cid(param[2].argument[0]);
2735 long idmai=
cid(param[3].argument[0]);
2736 long idn1=
cid(param[4].argument[0]);
2737 long idn2=
cid(param[5].argument[0]);
2738 long idn3=
cid(param[6].argument[0]);
2753 if (entite==
"TRIANGLE")
lire_TRIANGLE(
id,parse,param,data,mgmai,mggeo);
2754 if (entite==
"QUADRANGLE")
lire_QUADRANGLE(
id,parse,param,data,mgmai,mggeo);
2755 if (entite==
"FEM_TRIANGLE3")
2757 parse.
decode(data.c_str(),
"@,@,@,@,@",param+2);
2758 long idtopo=
cid(param[2].argument[0]);
2759 long idmai=
cid(param[3].argument[0]);
2760 long idn1=
cid(param[4].argument[0]);
2761 long idn2=
cid(param[5].argument[0]);
2762 long idn3=
cid(param[6].argument[0]);
2777 if (entite==
"FEM_TRIANGLE6")
2779 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@",param+2);
2780 long idtopo=
cid(param[2].argument[0]);
2781 long idmai=
cid(param[3].argument[0]);
2782 long idn1=
cid(param[4].argument[0]);
2783 long idn2=
cid(param[5].argument[0]);
2784 long idn3=
cid(param[6].argument[0]);
2785 long idn4=
cid(param[7].argument[0]);
2786 long idn5=
cid(param[8].argument[0]);
2787 long idn6=
cid(param[9].argument[0]);
2805 if (entite==
"FEM_QUADRANGLE4")
2807 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
2808 long idtopo=
cid(param[2].argument[0]);
2809 long idmai=
cid(param[3].argument[0]);
2810 long idn1=
cid(param[4].argument[0]);
2811 long idn2=
cid(param[5].argument[0]);
2812 long idn3=
cid(param[6].argument[0]);
2813 long idn4=
cid(param[7].argument[0]);
2829 if (entite==
"FEM_QUADRANGLE8")
2831 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@",param+2);
2832 long idtopo=
cid(param[2].argument[0]);
2833 long idmai=
cid(param[3].argument[0]);
2834 long idn1=
cid(param[4].argument[0]);
2835 long idn2=
cid(param[5].argument[0]);
2836 long idn3=
cid(param[6].argument[0]);
2837 long idn4=
cid(param[7].argument[0]);
2838 long idn5=
cid(param[8].argument[0]);
2839 long idn6=
cid(param[9].argument[0]);
2840 long idn7=
cid(param[10].argument[0]);
2841 long idn8=
cid(param[11].argument[0]);
2861 if (entite==
"TETRAEDRE")
lire_TETRA(
id,parse,param,data,mgmai,mggeo);
2863 if (entite==
"HEXAEDRE")
lire_HEXA(
id,parse,param,data,mgmai,mggeo);
2864 if (entite==
"PENTAEDRE")
lire_PENTA(
id,parse,param,data,mgmai,mggeo);
2865 if (entite==
"PYRAMIDE")
lire_PYRAMIDE(
id,parse,param,data,mgmai,mggeo);
2866 if (entite==
"FEM_TETRA4")
2868 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
2869 long idtopo=
cid(param[2].argument[0]);
2870 long idmai=
cid(param[3].argument[0]);
2871 long idn1=
cid(param[4].argument[0]);
2872 long idn2=
cid(param[5].argument[0]);
2873 long idn3=
cid(param[6].argument[0]);
2874 long idn4=
cid(param[7].argument[0]);
2875 long etat=atoi(param[8].argument[0].c_str());
2892 if (entite==
"XFEM_ELEMENT_NOEUD")
2894 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
2895 unsigned long idele=
cid(param[2].argument[0]);
2896 unsigned long idtopo=
cid(param[3].argument[0]);
2897 unsigned long idn1=
cid(param[4].argument[0]);
2898 int etat=atoi(param[5].argument[0].c_str());
2910 if (entite==
"XFEM_SEGMENT2")
2912 parse.
decode(data.c_str(),
"@,@,@,@,@",param+2);
2913 unsigned long idele=
cid(param[2].argument[0]);
2914 unsigned long idtopo=
cid(param[3].argument[0]);
2915 unsigned long idn1=
cid(param[4].argument[0]);
2916 unsigned long idn2=
cid(param[5].argument[0]);
2917 int etat=atoi(param[6].argument[0].c_str());
2929 if (entite==
"XFEM_TRIANGLE3")
2931 parse.
decode(data.c_str(),
"@,@,@,@,@,@",param+2);
2932 unsigned long idtet=
cid(param[2].argument[0]);
2933 unsigned long idtopo=
cid(param[3].argument[0]);
2934 unsigned long idn1=
cid(param[4].argument[0]);
2935 unsigned long idn2=
cid(param[5].argument[0]);
2936 unsigned long idn3=
cid(param[6].argument[0]);
2937 int etat=atoi(param[7].argument[0].c_str());
2948 if (entite==
"XFEM_TETRA4")
2950 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@",param+2);
2951 unsigned long idtet=
cid(param[2].argument[0]);
2952 unsigned long idtopo=
cid(param[3].argument[0]);
2953 unsigned long idn1=
cid(param[4].argument[0]);
2954 unsigned long idn2=
cid(param[5].argument[0]);
2955 unsigned long idn3=
cid(param[6].argument[0]);
2956 unsigned long idn4=
cid(param[7].argument[0]);
2957 int etat=atoi(param[8].argument[0].c_str());
2969 if (entite==
"FEM_TETRA10")
2971 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,@",param+2);
2972 long idtopo=
cid(param[2].argument[0]);
2973 long idmai=
cid(param[3].argument[0]);
2974 long idn1=
cid(param[4].argument[0]);
2975 long idn2=
cid(param[5].argument[0]);
2976 long idn3=
cid(param[6].argument[0]);
2977 long idn4=
cid(param[7].argument[0]);
2978 long idn5=
cid(param[8].argument[0]);
2979 long idn6=
cid(param[9].argument[0]);
2980 long idn7=
cid(param[10].argument[0]);
2981 long idn8=
cid(param[11].argument[0]);
2982 long idn9=
cid(param[12].argument[0]);
2983 long idn10=
cid(param[13].argument[0]);
3005 if (entite==
"FEM_HEXA8")
3007 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@",param+2);
3008 long idtopo=
cid(param[2].argument[0]);
3009 long idmai=
cid(param[3].argument[0]);
3010 long idn1=
cid(param[4].argument[0]);
3011 long idn2=
cid(param[5].argument[0]);
3012 long idn3=
cid(param[6].argument[0]);
3013 long idn4=
cid(param[7].argument[0]);
3014 long idn5=
cid(param[8].argument[0]);
3015 long idn6=
cid(param[9].argument[0]);
3016 long idn7=
cid(param[10].argument[0]);
3017 long idn8=
cid(param[11].argument[0]);
3037 if (entite==
"FEM_HEXA20")
3039 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@",param+2);
3040 long idtopo=
cid(param[2].argument[0]);
3041 long idmai=
cid(param[3].argument[0]);
3042 long idn1=
cid(param[4].argument[0]);
3043 long idn2=
cid(param[5].argument[0]);
3044 long idn3=
cid(param[6].argument[0]);
3045 long idn4=
cid(param[7].argument[0]);
3046 long idn5=
cid(param[8].argument[0]);
3047 long idn6=
cid(param[9].argument[0]);
3048 long idn7=
cid(param[10].argument[0]);
3049 long idn8=
cid(param[11].argument[0]);
3050 long idn9=
cid(param[12].argument[0]);
3051 long idn10=
cid(param[13].argument[0]);
3052 long idn11=
cid(param[14].argument[0]);
3053 long idn12=
cid(param[15].argument[0]);
3054 long idn13=
cid(param[16].argument[0]);
3055 long idn14=
cid(param[17].argument[0]);
3056 long idn15=
cid(param[18].argument[0]);
3057 long idn16=
cid(param[19].argument[0]);
3058 long idn17=
cid(param[20].argument[0]);
3059 long idn18=
cid(param[21].argument[0]);
3060 long idn19=
cid(param[22].argument[0]);
3061 long idn20=
cid(param[23].argument[0]);
3093 if (entite==
"FEM_PENTA6")
3095 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@",param+2);
3096 long idtopo=
cid(param[2].argument[0]);
3097 long idmai=
cid(param[3].argument[0]);
3098 long idn1=
cid(param[4].argument[0]);
3099 long idn2=
cid(param[5].argument[0]);
3100 long idn3=
cid(param[6].argument[0]);
3101 long idn4=
cid(param[7].argument[0]);
3102 long idn5=
cid(param[8].argument[0]);
3103 long idn6=
cid(param[9].argument[0]);
3121 if (entite==
"FEM_PENTA15")
3123 parse.
decode(data.c_str(),
"@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@",param+2);
3124 long idtopo=
cid(param[2].argument[0]);
3125 long idmai=
cid(param[3].argument[0]);
3126 long idn1=
cid(param[4].argument[0]);
3127 long idn2=
cid(param[5].argument[0]);
3128 long idn3=
cid(param[6].argument[0]);
3129 long idn4=
cid(param[7].argument[0]);
3130 long idn5=
cid(param[8].argument[0]);
3131 long idn6=
cid(param[9].argument[0]);
3132 long idn7=
cid(param[10].argument[0]);
3133 long idn8=
cid(param[11].argument[0]);
3134 long idn9=
cid(param[12].argument[0]);
3135 long idn10=
cid(param[13].argument[0]);
3136 long idn11=
cid(param[14].argument[0]);
3137 long idn12=
cid(param[15].argument[0]);
3138 long idn13=
cid(param[16].argument[0]);
3139 long idn14=
cid(param[17].argument[0]);
3140 long idn15=
cid(param[18].argument[0]);
3167 if (entite==
"SOLUTION")
3169 parse.
decode(data.c_str(),
"@,@,@,@,@,@,(&)",param+2);
3170 int typeentite=atoi(param[2].argument[0].c_str());
3171 int typesolution=atoi(param[3].argument[0].c_str());
3172 std::string nomsol=param[4].
argument[0];
3173 long idmai=
cid(param[5].argument[0]);
3174 int nb=atoi(param[6].argument[0].c_str());
3175 std::string chemin=param[7].
argument[0];
3179 for (
int i=0;i<nb;i++)
3182 if (entite==
"FEM_SOLUTION")
3184 parse.
decode(data.c_str(),
"@,@,@,@,@,@,(&)",param+2);
3185 int typeentite=atoi(param[2].argument[0].c_str());
3186 int typesolution=atoi(param[3].argument[0].c_str());
3187 std::string nomsol=param[4].
argument[0];
3188 long idmai=
cid(param[5].argument[0]);
3189 int nb=atoi(param[6].argument[0].c_str());
3190 std::string chemin_sol=param[7].
argument[0];
3194 for (
int i=0;i<nb;i++)
3197 #ifdef WINDOWS_VERSION
3198 if (entite==
"CAD4FE_MCSEGMENT")
3200 parse.
decode(data.c_str(),
"@,@,@",param+2);
3201 long idtopo=
cid(param[2].argument[0]);
3202 long idn1=
cid(param[3].argument[0]);
3203 long idn2=
cid(param[4].argument[0]);
3217 if (entite==
"CAD4FE_MCNODE")
3219 parse.
decode(data.c_str(),
"@,@,@,@,@",param+2);
3220 long idRefTopo=
cid(param[2].argument[0]);
3221 long idMCTopo=
cid(param[3].argument[0]);
3222 double x=atof(param[4].argument[0].c_str());
3223 double y=atof(param[5].argument[0].c_str());
3224 double z=atof(param[6].argument[0].c_str());
3238 if (updatedMergedRefVertices ==
false)
3240 for (std::multimap<CAD4FE::MCVertex * , unsigned long>::iterator itMergedRefVertices = mapMergedRefVertices.begin();
3241 itMergedRefVertices != mapMergedRefVertices.end();
3242 itMergedRefVertices++)
3246 unsigned long id = itMergedRefVertices->second;
3251 updatedMergedRefVertices =
true;
3258 if (entite==
"CAD4FE_MCTRIANGLE")
3260 parse.
decode(data.c_str(),
"@,@,@,@",param+2);
3261 long idtopo=
cid(param[2].argument[0]);
3262 long idn1=
cid(param[3].argument[0]);
3263 long idn2=
cid(param[4].argument[0]);
3264 long idn3=
cid(param[5].argument[0]);
3272 for (
int i=0;i<3;i++)
3275 if (mgsegment[i]==NULL)
3287 while (param[0].argument[0]!=
"FIN");
3289 for (
int i=0;i<volumemince.size();i=i+3)
3298 LISTE_MG_ARBRE::iterator itarbre;
3301 LISTE_MG_ASSEMBLAGE::iterator itass;
3302 for (MG_ASSEMBLAGE *ass=arb->get_premier_assemblage(itass);ass!=NULL;ass=arb->get_suivant_assemblage(itass))
3303 ass->ini_donne(arb);
3306 LISTE_MG_GEOMETRIE::iterator itgeo;
3309 LISTE_MG_CONSTRUCTION::iterator itcon;
3315 LISTE_MG_SOMMET::iterator itsom;
3316 for (
MG_SOMMET* som=geo->get_premier_sommet(itsom);som;som=geo->get_suivant_sommet(itsom))
3317 if (som->est_une_topo_element())
3322 LISTE_MG_MAILLAGE::iterator itmai;
3324 if (mai->get_mg_noeudid(idnoeud)!=NULL) noeud=mai->get_mg_noeudid(idnoeud);
3327 LISTE_MG_COQUE::iterator itcoq;
3328 for (
MG_COQUE* coq=geo->get_premier_coque(itcoq);coq;coq=geo->get_suivant_coque(itcoq))
3329 if (coq->est_une_topo_element())
3334 for (
int i=0;i<nbele;i++)
3339 LISTE_MG_MAILLAGE::iterator itmai;
3342 if (mai->get_mg_triangleid(eleid)!=NULL) mgmai=mai;
3343 if (mai->get_mg_quadrangleid(eleid)!=NULL) mgmai=mai;
3353 LISTE_MG_POUTRE::iterator itpou;
3354 for (
MG_POUTRE* pou=geo->get_premier_poutre(itpou);pou;pou=geo->get_suivant_poutre(itpou))
3355 if (pou->est_une_topo_element())
3360 for (
int i=0;i<nbele;i++)
3365 LISTE_MG_MAILLAGE::iterator itmai;
3368 if (mai->get_mg_segmentid(eleid)!=NULL) mgmai=mai;
3378 #ifdef WINDOWS_VERSION
3379 if (updatedMergedRefVertices ==
false)
3381 for (std::multimap<CAD4FE::MCVertex * , unsigned long>::iterator itMergedRefVertices = mapMergedRefVertices.begin();
3382 itMergedRefVertices != mapMergedRefVertices.end();
3383 itMergedRefVertices++)
3387 unsigned long id = itMergedRefVertices->second;
3392 updatedMergedRefVertices =
true;