diff --git a/Geo/GModelIO_MESH.cpp b/Geo/GModelIO_MESH.cpp index 7f43d9c57c57bffd32434baec211aca3448e1f60..9e845f3fe0561c0dfcb791426647308504556811 100644 --- a/Geo/GModelIO_MESH.cpp +++ b/Geo/GModelIO_MESH.cpp @@ -86,6 +86,21 @@ int GModel::readMESH(const std::string &name) elements[0][cl].push_back(new MLine(vertices)); } } + else if(!strcmp(str, "EdgesP2")){ + if(!fgets(buffer, sizeof(buffer), fp)) break; + int nbe; + sscanf(buffer, "%d", &nbe); + Msg::Info("%d edges", nbe); + for(int i = 0; i < nbe; i++) { + if(!fgets(buffer, sizeof(buffer), fp)) break; + int n[3], cl; + sscanf(buffer, "%d %d %d", &n[0], &n[1], &n[2], &cl); + for(int j = 0; j < 3; j++) n[j]--; + std::vector<MVertex*> vertices; + if(!getVertices(3, n, vertexVector, vertices)) return 0; + elements[0][cl].push_back(new MLine3(vertices)); + } + } else if(!strcmp(str, "Triangles")){ if(!fgets(buffer, sizeof(buffer), fp)) break; int nbe; @@ -235,7 +250,10 @@ int GModel::writeMESH(const std::string &name, int elementTagType, } if(numEdges){ - fprintf(fp, " Edges\n"); + if(CTX::instance()->mesh.order == 2) + fprintf(fp, " EdgesP2\n"); + else + fprintf(fp, " Edges\n"); fprintf(fp, " %d\n", numEdges); for(eiter it = firstEdge(); it != lastEdge(); ++it){ int numPhys = (*it)->physicals.size();