Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Использование методов объекта Surface на VBScript

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
Tulon



Зарегистрирован: 11.07.2006
Сообщения: 77
Откуда: Сочи

СообщениеДобавлено: Пн 25 Авг 2008 14:39    Заголовок сообщения: Использование методов объекта Surface на VBScript Ответить с цитатой

Имеется простая скриптовая программка, которая будет создавать точечный объект по щелчку левой кнопкой мыши на карте ИнГео.
Переменные EndPointX и EndPointY глобальные.
Вот фрагмент программы:

Код:

dim EndPointX, EndPointY

sub MapEditors_MouseDown(aButton, aShift, aX, aY)
  dim MapObjects, MapObject, Shape
  if IsActive=1 then
    if aButton=inmbLeft then
      Application.MainWindow.MapWindow.Surface.PointDeviceToWorld aX, aY, EndPointX, EndPointY 'Строка №1
      set MapObjects = Application.ActiveDB.MapObjects 'Строка №2
      set MapObject = MapObjects.AddObject(Application.ActiveProjectView.ActiveLayerView.Layer.ID) 'Строка №3
      set Shape = MapObject.Shapes.Insert(-1, Application.ActiveProjectView.ActiveLayerView.StyleViews.Item(0).Style.ID) 'Строка №4
      Shape.Contour.Insert(-1).InsertVertex -1, EndPointX, EndPointY, -1 'Строка №5
    end if
  end if
end sub


Если координаты устройства передать COM объекту и в нем произвести пересчет координат и рисование точки, то всё обрабатывается нормально.
В том же виде, который я привел выше, отладчик скриптов не ругается, но при запуске программки в режиме "разработчика", то при клике мышкой на карте вызывается окно с кодом и курсор устанавливается на строку №1. Если её полностью убрать и точку создавать с координатами (aX,aY), то всё прекрасно создается.

Вопрос - почему из скриптов у меня не получается обратиться к методу PointDeviceToWorld?
PS. Я пытался передать параметры методу в скобках, но отладчик ругается.

_________________
Нет ни чего сложнее, чем достигнуть простоты.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tulon



Зарегистрирован: 11.07.2006
Сообщения: 77
Откуда: Сочи

СообщениеДобавлено: Пн 25 Авг 2008 15:07    Заголовок сообщения: Ответить с цитатой

После того, как скачал и установил QScript, он сообщил мне, что в строке №1 несоответствие типов(((
Забавно, что он не пропустил даже вот такой вариант кода (танец с бубном):
Код:
option explicit

dim aX, aY
dim EndPointX, EndPointY
   
aX = 316
aY = 438
EndPointX = 0.1
EndPointY = 0.1
Application.MainWindow.MapWindow.Surface.PointDeviceToWorld aX, aY, EndPointX, EndPointY


Я думал там всё идет через Variant и несоотвествия дробных/целых значений быть не может. Можете пояснить ситуацию?[/code]

_________________
Нет ни чего сложнее, чем достигнуть простоты.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tulon



Зарегистрирован: 11.07.2006
Сообщения: 77
Откуда: Сочи

СообщениеДобавлено: Пн 25 Авг 2008 15:39    Заголовок сообщения: Ответить с цитатой

Извините, конечно, за флуд, но у меня уже мозг подкипать начинает от того, что я не могу понять где в моем коде ошибка(((
Сделал следующее:
Код:
option explicit

sub MakeDouble(int1, int2, dbl1, dbl2)
   dbl1 = int1/2
   dbl2 = int2/3
end sub

dim aX, aY
dim EndPointX, EndPointY
   
aX = 316
aY = 437
MakeDouble aX, aY, EndPointX, EndPointY
MsgBox EndPointX&" "&EndPointY

Всё обрабатывается, результат выводится %-(
А через PointDeviceToWorld не выдает.

_________________
Нет ни чего сложнее, чем достигнуть простоты.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
andreichernov



Зарегистрирован: 14.02.2005
Сообщения: 209
Откуда: Самара

СообщениеДобавлено: Вт 26 Авг 2008 08:21    Заголовок сообщения: Ответить с цитатой

Вместо
Surface.PointDeviceToWorld
в скриптах следует использовать
Surface.sPointDeviceToWorld

С уважением, Андрей Чернов
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tulon



Зарегистрирован: 11.07.2006
Сообщения: 77
Откуда: Сочи

СообщениеДобавлено: Вт 26 Авг 2008 10:03    Заголовок сообщения: Ответить с цитатой

Андрей, спасибо. Именно в этом и была проблема.
_________________
Нет ни чего сложнее, чем достигнуть простоты.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB