Вот тут написал небольшую процедурку для перевода участка LWPolyline к виду арки с известным радиусом, центром арки и углами начала и конца скругления, учитывая знак "выпуклости"
b - значение за строкой " 42"
procedure Calc_LWPoly_Otr(x1,y1,x2,y2,b:extended;var x0,y0,r,a1,a2:extended);
var x,y:extended;
d,a0,h:Extended;
begin
d:=sqrt(sqr(x2-x1)+sqr(y2-y1)); // Длина хорды
h:=Abs(0.5*b*d); // Максимальная высота дуги над хордой
r:=Abs(d*(1+b*b)/(4*b)); // Радиус скругления
if x2-x1=0 then a0:=pi/2
else a0:=abs(arctan((y2-y1)/(x2-x1)));
if x2-x1<0 then a0:=pi-a0;
if y2-y1<0 then a0:=2*pi-a0; // Угол наклона хорды к оси OX
a0:=a0-Pi/2*b/abs(b); // Угол наклона перпендикуляра к хорде НА КОТОРОМ ЛЕЖИТ ЦЕНТР ОКРУЖНОСТИ
x:=x1+(x2-x1)/2; // Абсцисса центра хорды
y:=y1+(y2-y1)/2; // Ордината центра хорды
x0:=x+(r-h)*cos(a0); // Координаты центра окружности
y0:=y+(r-h)*sin(a0); //
if x1-x0=0 then a1:=pi/2
else a1:=abs(arctan((y1-y0)/(x1-x0)));
if x1-x0<0 then a1:=pi-a1;
if y1-y0<0 then a1:=-a1; // Начальный угол дуги к оси ОХ
if x2-x0=0 then a2:=pi/2
else a2:=abs(arctan((y2-y0)/(x2-x0)));
if x2-x0<0 then a2:=pi-a2;
if y2-y0<0 then a2:=-a2;
if b<0 then a2:=2*pi-abs(a2); // Конечный угол дуги к оси ОХ
a1:=a1*180/pi; // Перевели углы к градусной мере...
a2:=a2*180/pi;
end;
!!! Процедура выдаст ошибку при b=0 !!!