From f9f5a96a25e3c926de6097451d3a55b0d59648a1 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Thu, 3 Sep 2009 10:08:21 +0000 Subject: [PATCH] add support for Edges in writeMESH --- Geo/GModelIO_Mesh.cpp | 50 ++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp index 79bdfe1e22..8b9b89c58d 100644 --- a/Geo/GModelIO_Mesh.cpp +++ b/Geo/GModelIO_Mesh.cpp @@ -1378,7 +1378,6 @@ int GModel::readMESH(const std::string &name) std::vector<MVertex*> vertexVector; std::map<int, std::vector<MElement*> > elements[4]; - std::vector<MVertex*> corners,ridges; while(!feof(fp)) { if(!fgets(buffer, 256, fp)) break; @@ -1432,36 +1431,6 @@ int GModel::readMESH(const std::string &name) elements[0][cl].push_back(new MTriangle(vertices)); } } - else if(!strcmp(str, "Corners")){ - if(!fgets(buffer, sizeof(buffer), fp)) break; - int nbe; - sscanf(buffer, "%d", &nbe); - Msg::Info("%d corners", nbe); - for(int i = 0; i < nbe; i++) { - if(!fgets(buffer, sizeof(buffer), fp)) break; - int n[1]; - sscanf(buffer, "%d", &n[0]); - for(int j = 0; j < 1; j++) n[j]--; - // std::vector<MVertex*> vertices; - // if(!getVertices(1, n, vertexVector, vertices)) return 0; - // corners.push_back(vertices[0]); - } - } - else if(!strcmp(str, "Ridges")){ - if(!fgets(buffer, sizeof(buffer), fp)) break; - int nbe; - sscanf(buffer, "%d", &nbe); - Msg::Info("%d ridges", nbe); - for(int i = 0; i < nbe; i++) { - if(!fgets(buffer, sizeof(buffer), fp)) break; - int n[1]; - sscanf(buffer, "%d", &n[0]); - for(int j = 0; j < 1; j++) n[j]--; - // std::vector<MVertex*> vertices; - // if(!getVertices(1, n, vertexVector, vertices)) return 0; - // ridges.push_back(vertices[0]); - } - } else if(!strcmp(str, "Quadrilaterals")) { if(!fgets(buffer, sizeof(buffer), fp)) break; int nbe; @@ -1529,7 +1498,12 @@ int GModel::writeMESH(const std::string &name, int elementTagType, for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++) entities[i]->mesh_vertices[j]->writeMESH(fp, scalingFactor); - int numTriangles = 0, numQuadrangles = 0, numTetrahedra = 0; + int numEdges = 0, numTriangles = 0, numQuadrangles = 0, numTetrahedra = 0; + for(eiter it = firstEdge(); it != lastEdge(); ++it){ + if(saveAll || (*it)->physicals.size()){ + numEdges += (*it)->lines.size(); + } + } for(fiter it = firstFace(); it != lastFace(); ++it){ if(saveAll || (*it)->physicals.size()){ numTriangles += (*it)->triangles.size(); @@ -1542,6 +1516,18 @@ int GModel::writeMESH(const std::string &name, int elementTagType, } } + if(numEdges){ + fprintf(fp, " Edges\n"); + fprintf(fp, " %d\n", numEdges); + for(eiter it = firstEdge(); it != lastEdge(); ++it){ + int numPhys = (*it)->physicals.size(); + if(saveAll || numPhys){ + for(unsigned int i = 0; i < (*it)->lines.size(); i++) + (*it)->lines[i]->writeMESH(fp, elementTagType, (*it)->tag(), + numPhys ? (*it)->physicals[0] : 0); + } + } + } if(numTriangles){ fprintf(fp, " Triangles\n"); fprintf(fp, " %d\n", numTriangles); -- GitLab