diff --git a/Fltk/classificationEditor.cpp b/Fltk/classificationEditor.cpp index 1d37eaeb43665f2b1c4b6877d80e9e6a8edf99aa..10e610a5123e474c0e4b2c0d952341df57389b69 100644 --- a/Fltk/classificationEditor.cpp +++ b/Fltk/classificationEditor.cpp @@ -383,7 +383,7 @@ static void class_color_cb(Fl_Widget* w, void* data) for (std::map<std::pair<int, int>, GEdge*>::iterator it = newEdges.begin() ; it != newEdges.end() ; ++it){ GEdge *ge = it->second; - printf("new edge with tag %d \n", ge->tag()); + printf("NEW edge with tag = %d \n", ge->tag()); std::list<MLine*> segments; for (int i=0; i < ge->lines.size(); i++){ @@ -391,7 +391,8 @@ static void class_color_cb(Fl_Widget* w, void* data) } //for each actual GEdge - while (! segments.empty()) { + while (!segments.empty()) { + std::vector<MLine*> myLines; std::list<MLine*>::iterator it = segments.begin(); @@ -401,7 +402,7 @@ static void class_color_cb(Fl_Widget* w, void* data) segments.erase(it); it++; - printf("***candidate mline %d %d of size \n", vB->getNum(), vE->getNum(), segments.size()); + //printf("***candidate mline %d %d of size %d \n", vB->getNum(), vE->getNum(), segments.size()); for (int i=0; i<2; i++) { @@ -409,19 +410,24 @@ static void class_color_cb(Fl_Widget* w, void* data) for (std::list<MLine*>::iterator it = segments.begin() ; it != segments.end(); ++it){ MVertex *v1 = (*it)->getVertex(0); MVertex *v2 = (*it)->getVertex(1); - printf("mline %d %d \n", v1->getNum(), v2->getNum()); - + //printf("mline %d %d \n", v1->getNum(), v2->getNum()); + + std::list<MLine*>::iterator itp; if ( v1 == vE ){ - printf("->push back this mline \n"); + //printf("->push back this mline \n"); myLines.push_back(*it); - segments.erase(it); + itp = it; + it++; + segments.erase(itp); vE = v2; i = -1; } else if ( v2 == vE){ - printf("->push back this mline \n"); + //printf("->push back this mline \n"); myLines.push_back(*it); - segments.erase(it); + itp = it; + it++; + segments.erase(itp); vE = v1; i=-1; } @@ -431,20 +437,20 @@ static void class_color_cb(Fl_Widget* w, void* data) if (segments.empty()) break; - printf("not found VB=%d vE=%d\n", vB->getNum(), vE->getNum()); + //printf("not found VB=%d vE=%d\n", vB->getNum(), vE->getNum()); MVertex *temp = vB; vB = vE; vE = temp; - printf("not found VB=%d vE=%d\n", vB->getNum(), vE->getNum()); + //printf("not found VB=%d vE=%d\n", vB->getNum(), vE->getNum()); } - printf("************ CANDIDATE NEW EDGE \n"); - for (std::vector<MLine*>::iterator it = myLines.begin() ; it != myLines.end() ; ++it){ - MVertex *v1 = (*it)->getVertex(0); - MVertex *v2 = (*it)->getVertex(1); - printf("Line %d %d \n", v1->getNum(), v2->getNum()); - } +// printf("************ CANDIDATE NEW EDGE \n"); +// for (std::vector<MLine*>::iterator it = myLines.begin() ; it != myLines.end() ; ++it){ +// MVertex *v1 = (*it)->getVertex(0); +// MVertex *v2 = (*it)->getVertex(1); +// printf("Line %d %d \n", v1->getNum(), v2->getNum()); +// } GEdge *newGe = new discreteEdge(GModel::current(), maxEdgeNum() + 1, 0, 0); newGe->lines.insert(newGe->lines.end(), myLines.begin(), myLines.end()); GModel::current()->add(newGe); diff --git a/Geo/GFaceCompound.cpp b/Geo/GFaceCompound.cpp index b119c0814de48487171ae27a43cbdb6de0da19cf..2f8e8cb6880c5b53061d979bf64dfce618b32c09 100644 --- a/Geo/GFaceCompound.cpp +++ b/Geo/GFaceCompound.cpp @@ -259,17 +259,22 @@ void GFaceCompound::getBoundingEdges() GVertex *v1 = (*it)->getBeginVertex(); GVertex *v2 = (*it)->getEndVertex(); + std::set<GEdge*>::iterator itp; if ( v1 == vE ){ printf("boundary add edge=%d \n", (*it)->tag()); _loop.push_back(*it); - _unique.erase(it); + itp = it; + it++; + _unique.erase(itp); vE = v2; i = -1; } else if ( v2 == vE){ printf("boundary add edge=%d \n", (*it)->tag()); _loop.push_back(*it); - _unique.erase(it); + itp = it; + it++; + _unique.erase(itp); vE = v1; i=-1; } diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index bf7301a226531c6ab5c05f2eda7dd1cf174b1112..631f6c243a7a437b8753c66c9d20d2a523bd2434 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -1092,17 +1092,22 @@ void GModel::createTopologyFromMesh() MVertex *v2 = (*it).getVertex(1); //printf("mline %d %d size=%d\n", v1->getNum(), v2->getNum(), myEdges.size()); + std::vector<MEdge>::iterator itp; if ( v1 == vE ){ //printf("->v1 = vE push back this mline \n"); myLines.push_back(*it); - myEdges.erase(it); + itp = it; + it++; + myEdges.erase(itp); vE = v2; i = -1; } else if ( v2 == vE){ //printf("->v2 = VE push back this mline \n"); myLines.push_back(*it); - myEdges.erase(it); + itp = it; + it++; + myEdges.erase(itp); vE = v1; i=-1; }