From f33f393a116dda6cf25c8f20705fad374a9a4098 Mon Sep 17 00:00:00 2001 From: jgv Date: Fri, 30 Oct 2015 16:23:53 +0300 Subject: [PATCH] 0026757: Wrong history of a fillet Small correction Test case for issue CR26757 --- src/ChFi3d/ChFi3d_Builder_C1.cxx | 19 ++++++++++++ tests/bugs/modalg_6/bug26757_1 | 51 ++++++++++++++++++++++++++++++++ tests/bugs/modalg_6/bug26757_2 | 51 ++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100755 tests/bugs/modalg_6/bug26757_1 create mode 100755 tests/bugs/modalg_6/bug26757_2 diff --git a/src/ChFi3d/ChFi3d_Builder_C1.cxx b/src/ChFi3d/ChFi3d_Builder_C1.cxx index bb920e7310..3d351ab15d 100644 --- a/src/ChFi3d/ChFi3d_Builder_C1.cxx +++ b/src/ChFi3d/ChFi3d_Builder_C1.cxx @@ -2256,6 +2256,25 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) inters.Perform(HC, HGs); if (inters.IsDone()&& inters.NbPoints()!=0) { Fd->ChangeSurf(DStr.AddSurface(TopOpeBRepDS_Surface(S1, DStr.ChangeSurface(Isurf).Tolerance()))); + //update history + if (myEVIMap.IsBound(EdgeSpine)) + { + TColStd_ListIteratorOfListOfInteger itl(myEVIMap.ChangeFind(EdgeSpine)); + for (; itl.More(); itl.Next()) + if (itl.Value() == Isurf) + { + myEVIMap.ChangeFind(EdgeSpine).Remove(itl); + break; + } + myEVIMap.ChangeFind(EdgeSpine).Append(Fd->Surf()); + } + else + { + TColStd_ListOfInteger IndexList; + IndexList.Append(Fd->Surf()); + myEVIMap.Bind(EdgeSpine, IndexList); + } + //////////////// Isurf=Fd->Surf(); } } diff --git a/tests/bugs/modalg_6/bug26757_1 b/tests/bugs/modalg_6/bug26757_1 new file mode 100755 index 0000000000..1fe3450e7b --- /dev/null +++ b/tests/bugs/modalg_6/bug26757_1 @@ -0,0 +1,51 @@ +puts "============" +puts "OCC26757" +puts "============" +puts "" +############################################################################################### +# Wrong history of a fillet +############################################################################################### + +restore [locate_data_file bug26757_s.brep] s + +explode s e +blend r s 2 s_14 +checkhist +explode generated_001 + +set nbshapes_expected_1 " +Number of shapes in shape + VERTEX : 2 + EDGE : 1 + WIRE : 0 + FACE : 0 + SHELL : 0 + SOLID : 0 + COMPSOLID : 0 + COMPOUND : 0 + SHAPE : 3 +" +checknbshapes generated_001_1 -ref ${nbshapes_expected_1} -t -m "selected edge" + +set nbshapes_expected_2 " +Number of shapes in shape + VERTEX : 5 + EDGE : 5 + WIRE : 1 + FACE : 1 + SHELL : 0 + SOLID : 0 + COMPSOLID : 0 + COMPOUND : 0 + SHAPE : 12 +" +if { [info exists generated_001_2] == 0 } { + puts "Error: Wrong history of a fillet" +} else { + checknbshapes generated_001_2 -ref ${nbshapes_expected_2} -t -m "fillet face" +} + +smallview +donly generated_001_1 generated_001_2 +fit +xwd ${imagedir}/${test_image}.png diff --git a/tests/bugs/modalg_6/bug26757_2 b/tests/bugs/modalg_6/bug26757_2 new file mode 100755 index 0000000000..3e26476000 --- /dev/null +++ b/tests/bugs/modalg_6/bug26757_2 @@ -0,0 +1,51 @@ +puts "============" +puts "OCC26757" +puts "============" +puts "" +############################################################################################### +# Wrong history of a fillet +############################################################################################### + +restore [locate_data_file bug26757_s.brep] s + +explode s e +blend r s 10 s_14 +checkhist +explode generated_001 + +set nbshapes_expected_1 " +Number of shapes in shape + VERTEX : 2 + EDGE : 1 + WIRE : 0 + FACE : 0 + SHELL : 0 + SOLID : 0 + COMPSOLID : 0 + COMPOUND : 0 + SHAPE : 3 +" +checknbshapes generated_001_1 -ref ${nbshapes_expected_1} -t -m "selected edge" + +set nbshapes_expected_2 " +Number of shapes in shape + VERTEX : 5 + EDGE : 5 + WIRE : 1 + FACE : 1 + SHELL : 0 + SOLID : 0 + COMPSOLID : 0 + COMPOUND : 0 + SHAPE : 12 +" +if { [info exists generated_001_2] == 0 } { + puts "Error: Wrong history of a fillet" +} else { + checknbshapes generated_001_2 -ref ${nbshapes_expected_2} -t -m "fillet face" +} + +smallview +donly generated_001_1 generated_001_2 +fit +xwd ${imagedir}/${test_image}.png -- 2.20.1