diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index bc96d1eab25b04e7a2c1bd077e3c2c246841fd4e..475ca38bea58dd507850631f544dd2626f79bbbe 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -642,6 +642,21 @@ int GModel::getNumMeshVertices() return n; } +void GModel::getMeshVertices(std::vector<MVertex *> &meshVertices) +{ + meshVertices.resize(getNumMeshVertices()); + std::vector<GEntity*> entities; + getEntities(entities); + int n = -1; + for(unsigned int i = 0; i < entities.size(); i++) + { + GEntity *entity=entities[i]; + unsigned msh_size=entity->mesh_vertices.size(); + for(unsigned j=0;j<msh_size;++j) + meshVertices[++n]=entity->mesh_vertices[j]; + } +} + int GModel::getNumMeshElements() { std::vector<GEntity*> entities; diff --git a/Geo/GModel.h b/Geo/GModel.h index 83d1bf1d2ecd5c5f52f2a62ca0d715ea656301a3..89e324776cd67bf2c476055b676f0b7511ef1a77 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -310,6 +310,9 @@ class GModel // return the total number of vertices in the mesh int getNumMeshVertices(); + + // return all the mesh vertices + void getMeshVertices(std::vector<MVertex *> &meshVertices); // access a mesh vertex by tag, using the vertex cache MVertex *getMeshVertexByTag(int n); diff --git a/Geo/GModelIO_Geo.cpp b/Geo/GModelIO_Geo.cpp index 8c5d0c15a6665ad62f1786363a1eb2cdcee84573..c15ee550947e94eb54e7268c7e74eac194995a50 100644 --- a/Geo/GModelIO_Geo.cpp +++ b/Geo/GModelIO_Geo.cpp @@ -39,7 +39,9 @@ void GModel::_deleteGEOInternals() int GModel::readGEO(const std::string &name) { ParseFile(name, true); - return GModel::current()->importGEOInternals(); + GModel *newModel=GModel::current(); + newModel->setFileName(name); + return newModel->importGEOInternals(); } int GModel::exportDiscreteGEOInternals()