From e8158bce0f86be43229dab3c649755d960f82f8e Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Fri, 13 Feb 2015 18:12:56 +0000
Subject: [PATCH] first test of automatic embedded edges/vertices in OCC faces

---
 Geo/GModelIO_OCC.cpp |  3 ++-
 Geo/OCCFace.cpp      | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index a5eac37dc0..22296bf55d 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -35,7 +35,8 @@ void OCC_Internals::buildLists()
   addShapeToLists(shape);
 }
 
-void  OCC_Internals::buildShapeFromGModel(GModel* gm){
+void  OCC_Internals::buildShapeFromGModel(GModel* gm)
+{
   somap.Clear();
   shmap.Clear();
   fmap.Clear();
diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index cbf2d27dec..843a2dec8e 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -70,6 +70,12 @@ void OCCFace::setup()
       if(!e){
 	Msg::Error("Unknown edge in face %d", tag());
       }
+      else if(edge.Orientation() == TopAbs_INTERNAL){
+        Msg::Info("Adding embedded edge %d", e->tag());
+        embedded_edges.push_back(e);
+        OCCEdge *occe = (OCCEdge*)e;
+        occe->setTrimmed(this);
+      }
       else{
         l_wire.push_back(e);
         Msg::Debug("Edge %d (%d --> %d) ori %d", e->tag(),
@@ -123,6 +129,20 @@ void OCCFace::setup()
   //          (*it)->getBeginVertex()->tag(), (*it)->getEndVertex()->tag(),
   //          (*it)->isSeam(this));
   // }
+
+  /*
+  for(exp2.Init(s, TopAbs_VERTEX); exp2.More(); exp2.Next()){
+    TopoDS_Vertex vertex = TopoDS::Vertex(exp2.Current());
+    GVertex *v = model()->getOCCInternals()->getOCCVertexByNativePtr(model(), vertex);
+    if(!v){
+      Msg::Error("Unknown vertex in face %d", tag());
+    }
+    else if(vertex.Orientation() == TopAbs_INTERNAL){
+      Msg::Info("Adding embedded vertex %d", v->tag());
+      embedded_vertices.push_back(v);
+    }
+  }
+  */
 }
 
 SBoundingBox3d OCCFace::bounds() const
-- 
GitLab