- fprintf(stdout,"\n(**************************)\n");
- fprintf(stdout,"(* ELEMENTS DU MAILLAGE : *)\n");
- fprintf(stdout,"(**************************)");
- /* Ecriture des connectivites, noms, numeros des mailles */
-
- fprintf(myFileId,"%s\n", sUNV_SEPARATOR);
- fprintf(myFileId,"%s\n", sELT_UNV_ID );
-
- SMDS_MeshEdgesIterator itEdges(myMesh);
- for (;itEdges.More();itEdges.Next()) {
- const Handle(SMDS_MeshElement)& elem = itEdges.Value();
-
- switch (elem->NbNodes()) {
- case 2 : {
- fprintf(myFileId, sELT_BEAM_DESC1, elem->GetID(), 21, elem->NbNodes());
- fprintf(myFileId, sELT_BEAM_DESC2);
- fprintf(myFileId, "%10d%10d\n", elem->GetConnection(1), elem->GetConnection(2));
- break;
- }
- case 3 : {
- fprintf(myFileId, sELT_BEAM_DESC1, elem->GetID(), 24, elem->NbNodes());
- fprintf(myFileId, sELT_BEAM_DESC2);
- fprintf(myFileId, "%10d%10d%10d\n",elem->GetConnection(1), elem->GetConnection(2), elem->GetConnection(3));
- break;
- }
- }
- }
-
- SMDS_MeshFacesIterator itFaces(myMesh);
- for (;itFaces.More();itFaces.Next()) {
- const Handle(SMDS_MeshElement)& elem = itFaces.Value();
-
- switch (elem->NbNodes()) {
- case 3 :
- // linear triangle
- fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 74, elem->NbNodes());
- break;
- case 4 :
- // linear quadrilateral
- fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 71, elem->NbNodes());
- break;
- case 6 :
- // parabolic triangle
- fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 72, elem->NbNodes());
- break;
- case 8 :
- // parabolic quadrilateral
- fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 75, elem->NbNodes());
- break;
- default:
- fprintf(myFileId, "element not registered\n");
- }
-
- for (i=0;i<elem->NbNodes();i++)
- fprintf(myFileId,"%10d",elem->GetConnection(i+1));
-
- fprintf(myFileId,"\n");
- }
-
- SMDS_MeshVolumesIterator itVolumes(myMesh);
- for (;itVolumes.More();itVolumes.Next()) {
- const Handle(SMDS_MeshElement)& elem = itVolumes.Value();
-
- switch (elem->NbNodes()) {
- case 4 :
- // linear tetrahedron
- fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 111, elem->NbNodes());
- break;
- case 6 :
- // linear tetrahedron
- fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 112, elem->NbNodes());
- break;
- case 8 :
- // linear brick
- fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 115, elem->NbNodes());
- break;
- }
-
- for (i=0;i<elem->NbNodes();i++)
- fprintf(myFileId,"%10d",elem->GetConnection(i+1));
-
- fprintf(myFileId,"\n");
- }
- fprintf(myFileId,"%s\n", sUNV_SEPARATOR);
-
- fclose (myFileId);
+ fprintf(stdout, "\n(**************************)\n");
+ fprintf(stdout, "(* ELEMENTS DU MAILLAGE : *)\n");
+ fprintf(stdout, "(**************************)");
+ /* Ecriture des connectivites, noms, numeros des mailles */
+
+ fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
+ fprintf(myFileId, "%s\n", sELT_UNV_ID);
+
+ SMDS_Iterator<const SMDS_MeshEdge *> * itEdges=myMesh->edgesIterator();
+ while(itEdges->more())
+ {
+ const SMDS_MeshElement * elem = itEdges->next();
+ SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
+
+ switch (elem->NbNodes())
+ {
+ case 2:
+ fprintf(myFileId, sELT_BEAM_DESC1, elem->GetID(), 21,
+ elem->NbNodes());
+ fprintf(myFileId, sELT_BEAM_DESC2);
+ fprintf(myFileId, "%10d%10d\n", itn->next()->GetID(),
+ itn->next()->GetID());
+ break;
+
+ case 3:
+ fprintf(myFileId, sELT_BEAM_DESC1, elem->GetID(), 24,
+ elem->NbNodes());
+ fprintf(myFileId, sELT_BEAM_DESC2);
+ fprintf(myFileId, "%10d%10d%10d\n", itn->next()->GetID(),
+ itn->next()->GetID(), itn->next()->GetID());
+
+ break;
+ }
+ delete itn;
+ }
+ delete itEdges;
+
+ SMDS_Iterator<const SMDS_MeshFace*> * itFaces=myMesh->facesIterator();
+ while(itFaces->more())
+ {
+ const SMDS_MeshElement * elem = itFaces->next();
+
+ switch (elem->NbNodes())
+ {
+ case 3:
+ // linear triangle
+ fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 74,
+ elem->NbNodes());
+ break;
+ case 4:
+ // linear quadrilateral
+ fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 71,
+ elem->NbNodes());
+ break;
+ case 6:
+ // parabolic triangle
+ fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 72,
+ elem->NbNodes());
+ break;
+ case 8:
+ // parabolic quadrilateral
+ fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 75,
+ elem->NbNodes());
+ break;
+ default:
+ fprintf(myFileId, "element not registered\n");
+ }
+
+ SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
+ while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
+ delete itn;
+
+ fprintf(myFileId, "\n");
+ }
+ delete itFaces;
+
+ SMDS_Iterator<const SMDS_MeshVolume*> * itVolumes=myMesh->volumesIterator();
+ while(itVolumes->more())
+ {
+ const SMDS_MeshElement * elem = itVolumes->next();
+
+ switch (elem->NbNodes())
+ {
+ case 4:
+ // linear tetrahedron
+ fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 111,
+ elem->NbNodes());
+ break;
+ case 6:
+ // linear tetrahedron
+ fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 112,
+ elem->NbNodes());
+ break;
+ case 8:
+ // linear brick
+ fprintf(myFileId, sELT_SURF_DESC, elem->GetID(), 115,
+ elem->NbNodes());
+ break;
+ }
+
+ SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
+ while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
+ delete itn;
+
+ fprintf(myFileId, "\n");
+ }
+ delete itVolumes;
+
+ fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
+
+ fclose(myFileId);