  | 
				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    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Андрей, спасибо. Именно в этом и была проблема. _________________ Нет ни чего сложнее, чем достигнуть простоты. | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
  | 
   
 
		 |