From 29ae7886c0ea9073341d0cd28c492ffe47835099 Mon Sep 17 00:00:00 2001 From: skv Date: Fri, 19 Jun 2015 10:51:17 +0300 Subject: [PATCH] 0022776: [CEA 1269] Project a wire or a face on a cylinder: rm instability in RemoveExtraEdges --- src/BlockFix/BlockFix_UnionFaces.cxx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/BlockFix/BlockFix_UnionFaces.cxx b/src/BlockFix/BlockFix_UnionFaces.cxx index c1b56f260..c1788bbb1 100644 --- a/src/BlockFix/BlockFix_UnionFaces.cxx +++ b/src/BlockFix/BlockFix_UnionFaces.cxx @@ -138,8 +138,9 @@ static Standard_Boolean AddOrdinaryEdges(TopTools_SequenceOfShape& edges, { //map of edges TopTools_MapOfShape aNewEdges; + TopExp_Explorer exp(aShape,TopAbs_EDGE); //add edges without seams - for(TopExp_Explorer exp(aShape,TopAbs_EDGE); exp.More(); exp.Next()) { + for(; exp.More(); exp.Next()) { TopoDS_Shape edge = exp.Current(); if(aNewEdges.Contains(edge)) aNewEdges.Remove(edge); @@ -164,9 +165,14 @@ static Standard_Boolean AddOrdinaryEdges(TopTools_SequenceOfShape& edges, } } - //add edges to the sequemce - for(TopTools_MapIteratorOfMapOfShape anIter(aNewEdges); anIter.More(); anIter.Next()) - edges.Append(anIter.Key()); + //add edges to the sequence + for(exp.ReInit(); exp.More(); exp.Next()) { + const TopoDS_Shape &anEdge = exp.Current(); + + if (aNewEdges.Contains(anEdge)) { + edges.Append(anEdge); + } + } return isDropped; } -- 2.39.2