Нужно программными средствами рисовать дуги. Простая дуга (полукруг на горизонтальной линии) у меня получилась. Вот так:
То есть это линия Безье, которая практически точно повторяет часть окружности (для проверки я рисовала там же эллипс - линии накладываются в ноль).
Углы контрольных линий записаны просто наглядно-практическим путем, а то, что длина этих контрольных линий - 0,55 от радиуса - это просто попалось наугад. Я не знаю, почему эта цифра.
Теперь вот мне интересно - а если я захочу эту дугу наклонить? Или взять меньший сектор, скажем, 45 градусов? Немного попробовала через тригонометрию, но слишком сложно показалось.
Может, кто-нибудь формулы знает?
Код:
rad = 50
otr = rad * 0.55
xAb = 0
yAb = 0
ugol = 90
plecho = rad / 3
Set crv = CreateCurve(ActiveDocument)
Set sp = crv.CreateSubPath(xAb - plecho, yAb)
sp.AppendLineSegment xAb, yAb
sp.AppendCurveSegment xAb + rad, yAb + rad, otr, ugol, otr, ugol - 270, False
sp.AppendCurveSegment xAb + rad * 2, yAb, otr, ugol - 90, otr, ugol, False
sp.AppendLineSegment xAb + rad * 2 + plecho, yAb
sp.AppendLineSegment xAb + rad * 2 + plecho, yAb - rad * 5
sp.AppendLineSegment xAb - plecho, yAb - rad * 5
sp.AppendLineSegment xAb - plecho, yAb
sp.Closed = true
Set s = ActiveLayer.CreateCurve(crv)
s.Fill.ApplyNoFills.Outline.SetProperties 0.007874, OutlineStyles(0), CreateRGBColor(19, 145, 191), ArrowHeads(0), ArrowHeads(0), cdrFalse, cdrFalse, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100, MiterLimit:=5#
То есть это линия Безье, которая практически точно повторяет часть окружности (для проверки я рисовала там же эллипс - линии накладываются в ноль).
Углы контрольных линий записаны просто наглядно-практическим путем, а то, что длина этих контрольных линий - 0,55 от радиуса - это просто попалось наугад. Я не знаю, почему эта цифра.
Теперь вот мне интересно - а если я захочу эту дугу наклонить? Или взять меньший сектор, скажем, 45 градусов? Немного попробовала через тригонометрию, но слишком сложно показалось.
Может, кто-нибудь формулы знает?