Графические примитивы в Авеню

0 голосов
спросил 08 Янв, 11 от Elliv (160 баллов) в категории Программные продукты Esri
Нужно средствами Авеню отрисовать графические примитивы, типа прямоугольников и окружностей, из центра отрисовать линии к определенным точкам и т.п. Проблема: линии рисуются, метки рисуются, окружности и прямоугольники не рисуются. Думал, что в коде ошибка какая, хотя и копипаст из методички. Спросил у знакомой, сказала, что "они рисуются, но невидимые". "Нужно поменять цвет отображения этих объектов, тогда их будет видно". Что-то не могу найти про это ничего в сети, а справка у меня не работает. Подскажите, плз, кто знает.

1 Ответ

0 голосов
ответил 10 Янв, 11 от Elliv (160 баллов)
И еще, подскажите плз, как правильно создать квадрат с центром в точке нажатия мышкой? Скрипт, приведенный в методичке, почему-то рисует его со смещением относительно центра и искаженными (увеличенными) размерами. В чем фишка?

Задание: создать инструмент на панели инструментов, при использовании которого рисуется прямоугольник с центром в точке расположения мышки и длинами сторон, запрошенными у пользователя. Запросить у пользователя подпись к полученному объекту и координаты двух точек и провести прямые от центра квадрата к каждой точке.

theView=Av.GetActiveDoc
theDpy=theView.GetDisplay
theGList=theView.GetGraphics
aMousePoint=theDpy.GetMouseLoc
aPoint=aMousePoint.Clone
a=MsgBox.Input ("Введите ширину прямоугольника","Ввод параметров прямоугольника" , "")
b=MsgBox.Input ("Введите длину прямоугольника","Ввод параметров прямоугольника" , "")
aLeftPoint=Point.Make(aPoint.GetX-(a.asNumber)/2,aPoint.GetY-(b.asNumber)/2)
aRightPoint=Point.Make(aPoint.GetX+(a.asNumber)/2,aPoint.GetY+(b.asNumber)/2)
aRectangle=Rect.Make(aLeftPoint,aRightPoint)
aGRect=GraphicShape.Make(aRectangle)
theGList.Add(aGRect)
aLabel=MsgBox.Input ("Метка точки","Ввод метки" , "")
if (nil=aLabel)then
  MsgBox.Warning ("Метка точки на введена.Программа остановлена","Предупреждение")
  exit
else
  aGLabel=graphicText.Make(aLabel,aMousePoint)
end
theGList.Add(aGLabel)
x1=MsgBox.Input ("Введите координату Х первой точки","Ввод координат первой точки" , "")
y1=MsgBox.Input ("Введите координату Y первой точки","Ввод координат первой точки" , "")
x2=MsgBox.Input ("Введите координату Х второй точки","Ввод координат второй точки" , "")
y2=MsgBox.Input ("Введите координату Y второй точки","Ввод координат второй точки" , "")
aPoint2=Point.Make(x1.AsNumber,y1.AsNumber)
aPoint3=Point.Make(x2.AsNumber,y2.AsNumber)
aLine1=Line.Make(aPoint,aPoint2)
aGLine=GraphicShape.Make(aLine1)
theGList.Add(aGLine)
aLine2=Line.Make(aPoint,aPoint3)
aGLine=GraphicShape.Make(aLine2)
theGList.Add(aGLine)

Результат
http://i019.radikal.ru/1101/d5/6787ea02203c.jpg
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...