Using BRepFill_OffsetWire with a wire containing an arc edge (e.g. a rectangle with round corners) leads to an offset arc with reduced radius (offset the rectangle to the "inner" side) (that is ok). If the offset distance is very large, the arc "disappears" from the resulting offset wire (that is ok).

The Problem is: there are certain distances for which the arc radius becomes "nearly" 0 (in my case ~1E-15). "BRepFill_OffsetWire::PerformWithBiLo" calls "BRepFill_TrimEdgeTool::IntersectWith" with an arc edge with *very* small radius. Deeper in the code at "EvalParameters()" (BRepFill_TrimEdgeTool) calls "Intersector = Geom2dInt_GInter(CAC, CBis, Tol, Tol);" and the exception is thrown.

BRepFill_OffsetWire catches all exceptions, but of course there is no result. If I change the radius right from the debugger to e.g. "1", no exception is thrown and there is a result (a slightly wrong result of course).

Steps To Reproduce

Try to execute BRepFill_OffsetWire on the attached face/wire with an offset distance "5" (no result). Try it with "5.01" (result ok).

DRAW commands to reproduce the problem:

pload MODELING
restore B1.brep a
mkoffset r a 1 -5

Output:
An exception was caught in BRepFill_OffsetWire::Perform : 000007FEEE452B38 : Standard_NullValue:
Error: Offset is not done.