From 2efed964f053b2779f6f790ec30a5f7e527da487 Mon Sep 17 00:00:00 2001
From: Laurent Van Migroet <l.vanmiegroet@ulg.ac.be>
Date: Fri, 4 Jun 2010 10:54:39 +0000
Subject: [PATCH] Added deleteMesh to GModel

---
 Geo/GModel.cpp | 13 +++++++++++++
 Geo/GModel.h   | 10 ++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 2acb8f07ad..6e50e18961 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 520f4f1bec..83d1bf1d2e 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);
-- 
GitLab