From bbee248796c79a97e431c95fcc9d9f05b2861228 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 4 Nov 2008 20:37:54 +0000
Subject: [PATCH] skipping embed edges from loops

---
 Geo/OCCFace.cpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 5ba119fe01..301f6a9afb 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -46,7 +46,14 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape
         TopoDS_Edge edge = TopoDS::Edge(exp3.Current());
         int index = emap.FindIndex(edge);
         GEdge *e = m->getEdgeByTag(index);
-        if(e){
+        if(!e){
+          Msg::Error("Unknown edge %d in face %d", index, num);
+        }
+        else if(std::find(embedded_edges.begin(), embedded_edges.end(), e) != 
+                embedded_edges.end()){
+          Msg::Debug("OCC Face %d - Skipping embedded edge in loop", num);
+        }
+        else{
           l_wire.push_back(e);
           Msg::Debug("Edge %d ori %d", e->tag(), edge.Orientation());
           e->addFace(this);
@@ -55,9 +62,6 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape
             occe->setTrimmed(this);
           }
         }
-        else{
-          Msg::Error("Unknown edge %d in face %d", index, num);
-        }
       }      
 
       GEdgeLoop el(l_wire);
-- 
GitLab