From: msv Date: Fri, 20 May 2016 08:36:11 +0000 (+0300) Subject: 0027521: Standard_ConstructionError when trying to use unifySameDom into a shape X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=8b1badef027a4807430fc8d9d40c1781df603d17;p=occt-copy.git 0027521: Standard_ConstructionError when trying to use unifySameDom into a shape Correct the algorithm in the function MergeEdges in ShapeUpgrade_UnifySameDomain.cxx so as to take into account the orientation of the next edge added to the chain. Test cases for issue CR27521 --- diff --git a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx index 85d56ab93d..cd2d0a6e3b 100644 --- a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx +++ b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx @@ -873,16 +873,20 @@ static Standard_Boolean MergeEdges(TopTools_SequenceOfShape& SeqEdges, edge = TopoDS::Edge(itL.Value()); if (!aUsedEdges.Contains(edge)) { - if (j == 0) - aChain.Prepend(edge); - else - aChain.Append(edge); - aUsedEdges.Add(edge); - TopoDS_Vertex VF2, VL2; - TopExp::Vertices(edge, VF2, VL2, Standard_True); - V[j] = (VF2.IsSame(V[j]) ? VL2 : VF2); - isAdded = Standard_True; - break; + TopoDS_Vertex V2[2]; + TopExp::Vertices(edge, V2[0], V2[1], Standard_True); + // the neighboring edge must have V[j] reversed and located on the opposite end + if (V2[1 - j].IsEqual(V[j].Reversed())) + { + if (j == 0) + aChain.Prepend(edge); + else + aChain.Append(edge); + aUsedEdges.Add(edge); + V[j] = V2[j]; + isAdded = Standard_True; + break; + } } } } diff --git a/tests/bugs/modalg_6/bug27521_1 b/tests/bugs/modalg_6/bug27521_1 new file mode 100644 index 0000000000..d47ae3d258 --- /dev/null +++ b/tests/bugs/modalg_6/bug27521_1 @@ -0,0 +1,15 @@ +puts "============" +puts "OCC27521" +puts "============" +puts "" +############################### +## Standard_ConstructionError when trying to use unifySameDom into a shape +############################### + +restore [locate_data_file bug27521_dom8443-good.brep] a +unifysamedom result a + +don result +smallview; fit +checkshape result +checknbshapes result -m UnifySameDomain -face 31 -edge 286 diff --git a/tests/bugs/modalg_6/bug27521_2 b/tests/bugs/modalg_6/bug27521_2 new file mode 100644 index 0000000000..deed5e917c --- /dev/null +++ b/tests/bugs/modalg_6/bug27521_2 @@ -0,0 +1,15 @@ +puts "============" +puts "OCC27521" +puts "============" +puts "" +############################### +## Standard_ConstructionError when trying to use unifySameDom into a shape +############################### + +restore [locate_data_file bug27521_dom8443-wrong.brep] a +unifysamedom result a + +don result +smallview; fit +checkshape result +checknbshapes result -m UnifySameDomain -face 31 -edge 286