Графические примитивы в Avenue

Arcview GIS 3.x, Arcinfo Workstation, Mapobjects
Ответить
Elliv
Новоприбывший
Сообщения: 7
Зарегистрирован: 08 янв 2011, 18:05
Репутация: 0

Графические примитивы в Avenue

Сообщение Elliv » 08 янв 2011, 18:19

Нужно средствами Авеню отрисовать графические примитивы, типа прямоугольников и окружностей, из центра отрисовать линии к определенным точкам и т.п. Проблема: линии рисуются, метки рисуются, окружности и прямоугольники не рисуются. Думал, что в коде ошибка какая, хотя и копипаст из методички. Спросил у знакомой, сказала, что "они рисуются, но невидимые". "Нужно поменять цвет отображения этих объектов, тогда их будет видно". Что-то не могу найти про это ничего в сети, а справка у меня не работает. Подскажите, плз, кто знает.
Gugoruwo sitte kudasai!

Elliv
Новоприбывший
Сообщения: 7
Зарегистрирован: 08 янв 2011, 18:05
Репутация: 0

Re: Графические примитивы в Avenue

Сообщение Elliv » 09 янв 2011, 22:21

И еще, подскажите плз, как правильно создать квадрат с центром в точке нажатия мышкой? Скрипт, приведенный в методичке, почему-то рисует его со смещением относительно центра и искаженными (увеличенными) размерами. В чем фишка?
Задание: создать инструмент на панели инструментов, при использовании которого рисуется прямоугольник с центром в точке расположения мышки и длинами сторон, запрошенными у пользователя. Запросить у пользователя подпись к полученному объекту и координаты двух точек и провести прямые от центра квадрата к каждой точке.

Код: Выделить всё

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
Gugoruwo sitte kudasai!

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Графические примитивы в Avenue

Сообщение Максим Дубинин » 10 янв 2011, 02:56

так в rect.make первая точка не aLeftPoint, а origin, а вторая не Right, а размеры

Код: Выделить всё

theGList=Av.GetActiveDoc.GetGraphics
aRect = Rect.Make( 0@0, 50@100)
theGList.Add(GraphicShape.Make(aRect))
если надо из двух точек, то Rect.MakeXY используйте
пристегивайтесь, турбулентность прямо по курсу

Ответить

Вернуться в «Arcview GIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей