From 4967bb58cf33d971c8dc92d78f22e7671c80d7f1 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Thu, 9 Dec 2010 22:22:33 +0000
Subject: [PATCH] fix to allow merging of several occ models

---
 Geo/GModelIO_OCC.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index cc14fe9075..faa4147076 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -501,6 +501,7 @@ GRegion* OCC_Internals::addRegionToModel(GModel *model, TopoDS_Solid region){
 
 void OCC_Internals::buildGModel(GModel *model)
 {
+  int voffset = model->getMaxElementaryNumber(0);
 
   // building geom vertices
   int nvertices = vmap.Extent();
@@ -513,11 +514,12 @@ void OCC_Internals::buildGModel(GModel *model)
   // building geom edges
   int nedges = emap.Extent();
   for(int i = 1; i <= nedges; i++){
-    int i1 = vmap.FindIndex(TopExp::FirstVertex(TopoDS::Edge(emap(i)))); 
-    int i2 = vmap.FindIndex(TopExp::LastVertex(TopoDS::Edge(emap(i))));
+    int i1 = voffset + vmap.FindIndex(TopExp::FirstVertex(TopoDS::Edge(emap(i)))); 
+    int i2 = voffset + vmap.FindIndex(TopExp::LastVertex(TopoDS::Edge(emap(i))));
     int num = model->getMaxElementaryNumber(1) + 1;
     if (!getOCCEdgeByNativePtr(model,TopoDS::Edge(emap(i))))
-      model->add(new OCCEdge(model, TopoDS::Edge(emap(i)), num, model->getVertexByTag(i1), model->getVertexByTag(i2)));
+      model->add(new OCCEdge(model, TopoDS::Edge(emap(i)), num,
+                             model->getVertexByTag(i1), model->getVertexByTag(i2)));
   }
 
   // building geom faces
-- 
GitLab