From: pkv Date: Thu, 26 Dec 2013 11:47:44 +0000 (+0400) Subject: 0024463: BRepAlgo_Section::Build hangs X-Git-Tag: HYDRO-2014-01-31~57 X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff_plain;h=9c06009aa5099d9472a2c26577c3f47ae6f83d1d;hp=ceaa5e27ebbf8961c089069b71672c6667f4d971 0024463: BRepAlgo_Section::Build hangs Added test case bugs/modalg_5/bug24463 --- diff --git a/src/BRepTools/BRepTools.cxx b/src/BRepTools/BRepTools.cxx index 2d6094436b..09b239af44 100644 --- a/src/BRepTools/BRepTools.cxx +++ b/src/BRepTools/BRepTools.cxx @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -176,9 +177,23 @@ void BRepTools::AddUVBounds(const TopoDS_Face& F, gp_Pnt2d Pa,Pb,Pc; - Standard_Real i, nbp = 20; + Standard_Integer i, j, k, nbp = 20; if (PC.GetType() == GeomAbs_Line) nbp = 2; - Standard_Real step = (pl - pf) / nbp; + Standard_Integer NbIntC1 = PC.NbIntervals(GeomAbs_C1); + if (NbIntC1 > 1) + nbp = 10; + TColStd_Array1OfReal SharpPoints(1, NbIntC1+1); + PC.Intervals(SharpPoints, GeomAbs_C1); + TColStd_Array1OfReal Parameters(1, nbp*NbIntC1+1); + k = 1; + for (i = 1; i <= NbIntC1; i++) + { + Standard_Real delta = (SharpPoints(i+1) - SharpPoints(i))/nbp; + for (j = 0; j < nbp; j++) + Parameters(k++) = SharpPoints(i) + j*delta; + } + Parameters(nbp*NbIntC1+1) = SharpPoints(NbIntC1+1); + gp_Pnt2d P; PC.D0(pf,P); Baux.Add(P); @@ -187,11 +202,11 @@ void BRepTools::AddUVBounds(const TopoDS_Face& F, Standard_Real dv=0.0; Pc=P; - for (i = 1; i < nbp; i++) { - pf += step; + for (i = 2; i < Parameters.Upper(); i++) { + pf = Parameters(i); PC.D0(pf,P); Baux.Add(P); - if(i==1) { Pb=Pc; Pc=P; } + if(i==2) { Pb=Pc; Pc=P; } else { //-- Calcul de la fleche Pa=Pb; Pb=Pc; Pc=P; diff --git a/tests/bugs/modalg_5/bug24463 b/tests/bugs/modalg_5/bug24463 new file mode 100644 index 0000000000..aa85623e98 --- /dev/null +++ b/tests/bugs/modalg_5/bug24463 @@ -0,0 +1,11 @@ +puts "============" +puts "OCC24463" +puts "============" +puts "" +#################################### +# BRepAlgo_Section::Build hangs +#################################### + +restore [locate_data_file bug24463_TK0000000000480_109.brep] a +plane p 0 7000 0 0 -1 0 0 0 -1 +psection r a p