diff --git a/src/BOPAlgo/BOPAlgo_Builder_3.cxx b/src/BOPAlgo/BOPAlgo_Builder_3.cxx index decfb308d9..d65e917c27 100644 --- a/src/BOPAlgo/BOPAlgo_Builder_3.cxx +++ b/src/BOPAlgo/BOPAlgo_Builder_3.cxx @@ -65,6 +65,7 @@ #include // #include +#include static @@ -313,6 +314,14 @@ void BOPAlgo_Builder::FillIn3DParts aNbFP=aBBTree.Select(aSelector); // const BOPCol_ListOfInteger& aLIFP=aSelector.Indices(); + //sort indices + NCollection_Array1 aIVec(1, aNbFP); + aItLI.Initialize(aLIFP); + for (k = 1; aItLI.More(); aItLI.Next(), ++k) { + nFP=aItLI.Value(); + aIVec(k) = nFP; + } + std::sort(aIVec.begin(), aIVec.end()); // // 2.5. Collect faces that are IN aSolid [ aLFIN ] BOPCol_ListOfShape aLFP(aAlr1); @@ -322,9 +331,8 @@ void BOPAlgo_Builder::FillIn3DParts // BOPTools::MapShapes(aSD, TopAbs_EDGE, aME); // - aItLI.Initialize(aLIFP); - for (; aItLI.More(); aItLI.Next()) { - nFP=aItLI.Value(); + for (k = 1; k <= aNbFP; ++k) { + nFP = aIVec(k); const BOPAlgo_ShapeBox& aSBF=aDMISB.Find(nFP); const TopoDS_Face& aFP=(*(TopoDS_Face*)&aSBF.Shape()); if (aMF.Contains(aFP)) { diff --git a/tests/boolean/bcut_complex/O8 b/tests/boolean/bcut_complex/O8 index dcec1a84f0..be1a8501c1 100644 --- a/tests/boolean/bcut_complex/O8 +++ b/tests/boolean/bcut_complex/O8 @@ -1,3 +1,5 @@ +puts "TODO #25319 ALL: Error : The area of the resulting shape is" + ## cts20461 restore [locate_data_file cts20461.rle] a diff --git a/tests/bugs/modalg_5/bug25319_1 b/tests/bugs/modalg_5/bug25319_1 new file mode 100644 index 0000000000..1ee8ada52a --- /dev/null +++ b/tests/bugs/modalg_5/bug25319_1 @@ -0,0 +1,28 @@ +puts "TODO OCC25319 ALL: Faulty shapes in variables faulty_1 to faulty_" + +puts "================" +puts "OCC25319" +puts "================" +puts "" +######################################################################## +# Bop Common produces strange results with same shapes. +######################################################################## + +restore [locate_data_file bug25319_S1.brep] b1 +restore [locate_data_file bug25319_S2.brep] b2 + +bcommon result b1 b2 + +set square 1690.81 + +set nb_v_good 20 +set nb_e_good 31 +set nb_w_good 13 +set nb_f_good 13 +set nb_sh_good 1 +set nb_sol_good 1 +set nb_compsol_good 0 +set nb_compound_good 1 +set nb_shape_good 80 + +set 2dviewer 1 diff --git a/tests/bugs/modalg_5/bug25319_2 b/tests/bugs/modalg_5/bug25319_2 new file mode 100644 index 0000000000..794cbcb5b6 --- /dev/null +++ b/tests/bugs/modalg_5/bug25319_2 @@ -0,0 +1,31 @@ +puts "TODO OCC25319 ALL: Faulty shapes in variables faulty_1 to faulty_" + +puts "================" +puts "OCC25319" +puts "================" +puts "" +######################################################################## +# Bop Common produces strange results with same shapes. +######################################################################## + +restore [locate_data_file bug25319_S1.brep] b1 +restore [locate_data_file bug25319_S2.brep] b2 + +explode b1 so; copy b1_1 b1 +explode b2 so; copy b2_3 b2 + +bcommon result b1 b2 + +set square 1690.81 + +set nb_v_good 20 +set nb_e_good 31 +set nb_w_good 13 +set nb_f_good 13 +set nb_sh_good 1 +set nb_sol_good 1 +set nb_compsol_good 0 +set nb_compound_good 1 +set nb_shape_good 80 + +set 2dviewer 1