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;
--- /dev/null
+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
--- /dev/null
+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