diff --git a/src/ChFi3d/ChFi3d_Builder_C1.cxx b/src/ChFi3d/ChFi3d_Builder_C1.cxx index 5125920ba9..401cec0fb9 100644 --- a/src/ChFi3d/ChFi3d_Builder_C1.cxx +++ b/src/ChFi3d/ChFi3d_Builder_C1.cxx @@ -371,29 +371,30 @@ static Standard_Boolean Update(Handle(Adaptor3d_HSurface)& face, pared = ponc1.Parameter(); parltg = ponc2.Parameter(); if ((parltg > f) && (parltg < l)) { -#ifdef OCC23139 - ////modified by jgv, 10.05.2012 for the bug 23139//// + ////modified by jgv, 10.05.2012 for the bug 23139, 25657//// Handle(Geom2d_Curve) PConF = fi.PCurveOnFace(); if (!PConF.IsNull()) { Handle(Geom2d_TrimmedCurve) aTrCurve = Handle(Geom2d_TrimmedCurve)::DownCast(PConF); if (!aTrCurve.IsNull()) PConF = aTrCurve->BasisCurve(); - if (isfirst) + if (!PConF->IsPeriodic()) { - Standard_Real fpar = PConF->FirstParameter(); - if (parltg < fpar) - parltg = fpar; - } - else - { - Standard_Real lpar = PConF->LastParameter(); - if (parltg > lpar) - parltg = lpar; + if (isfirst) + { + Standard_Real fpar = PConF->FirstParameter(); + if (parltg < fpar) + parltg = fpar; + } + else + { + Standard_Real lpar = PConF->LastParameter(); + if (parltg > lpar) + parltg = lpar; + } } } ///////////////////////////////////////////////////// -#endif fi.SetParameter(parltg,isfirst); cp.SetArc(cp.Tolerance(),cp.Arc(),pared,cp.TransitionOnArc()); return Standard_True; diff --git a/tests/bugs/modalg_5/bug25657 b/tests/bugs/modalg_5/bug25657 new file mode 100644 index 0000000000..61bb47f45b --- /dev/null +++ b/tests/bugs/modalg_5/bug25657 @@ -0,0 +1,25 @@ +puts "========" +puts "OCC25657" +puts "========" +puts "" +########################################################################################### +# Bad result of Fillet operation +########################################################################################### + +restore [locate_data_file bug25657_r4.brep] r4 +explode r4 e +shape c c +add r4_15 c +fillet res r4 20 c + +explode res f + +pcurve res_2 +# exception + +pcurve res_5 +# exception + +smallview +fit +set only_screen_axo 1 diff --git a/tests/bugs/modalg_5/bug25657_1 b/tests/bugs/modalg_5/bug25657_1 new file mode 100644 index 0000000000..a3436b725a --- /dev/null +++ b/tests/bugs/modalg_5/bug25657_1 @@ -0,0 +1,16 @@ +puts "========" +puts "OCC25657" +puts "========" +puts "" +########################################################################################### +# Bad result of Fillet operation +########################################################################################### + +pcylinder a1 140 220 +pcylinder a2 206 120 +ttranslate a2 100 100 120 +bcut a a1 a2 +explode a e +donly a a_9 + +blend result a 20 a_9