diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index 2acb8f07add77083c5c3fc50c3e27d7a23952d97..6e50e189610b39301be878aa7d672434bb0b0521 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -250,6 +250,19 @@ void GModel::destroyMeshCaches() _octree = 0; } +void GModel::deleteMesh() +{ + for(riter it=firstRegion();it!=lastRegion();++it) + (*it)->deleteMesh(); + for(fiter it=firstFace();it!=lastFace();++it) + (*it)->deleteMesh(); + for(eiter it=firstEdge();it!=lastEdge();++it) + (*it)->deleteMesh(); + for(viter it=firstVertex();it!=lastVertex();++it) + (*it)->deleteMesh(); + destroyMeshCaches(); +} + bool GModel::empty() const { return vertices.empty() && edges.empty() && faces.empty() && regions.empty(); diff --git a/Geo/GModel.h b/Geo/GModel.h index 520f4f1bec70e26d385bd1c3a68fbba774e2e030..83d1bf1d2ecd5c5f52f2a62ca0d715ea656301a3 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -151,6 +151,8 @@ class GModel // delete all the mesh-related caches (this must be called when the // mesh is changed) void destroyMeshCaches(); + //delete the mesh stored in entities and call destroMeshCaches + void deleteMesh(); // access internal CAD representations GEO_Internals *getGEOInternals(){ return _geo_internals; } @@ -388,10 +390,10 @@ class GModel GEntity *revolve(GEntity *e, std::vector<double> p1, std::vector<double> p2, double angle); GEntity *extrude(GEntity *e, std::vector<double> p1, std::vector<double> p2); - GEntity *addPipe(GEntity *e, std::vector<GEdge *> edges); - void addRuledFaces(std::vector<std::vector<GEdge *> > edges); - GFace *addFace(std::vector<GEdge *> edges, std::vector< std::vector<double > > points); - GFace *addPlanarFace(std::vector<std::vector<GEdge *> > edges); + GEntity *addPipe(GEntity *e, std::vector<GEdge *> edges); + void addRuledFaces (std::vector<std::vector<GEdge *> > edges); + GFace* addFace (std::vector<GEdge *> edges, std::vector< std::vector<double > > points); + GFace* addPlanarFace (std::vector<std::vector<GEdge *> > edges); // create solid geometry primitives using the factory GEntity *addSphere(double cx, double cy, double cz, double radius);