| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		rjdgtn
 
 
  Зарегистрирован: 26.02.2009 Сообщения: 37
 
  | 
		
			
				 Добавлено: Ср 08 Апр 2009 13:05    Заголовок сообщения: Создание объекта. | 
				     | 
			 
			
				
  | 
			 
			
				Здравствуйте, прошу вас посмотреть такой вот код:
 
Код должен создать на указонном слое точечный(колодец например) объект уазанного стиля.
 
Но после выполнения функции  в указанных коодрдинатах никакого объекта не появляется. что тут не так?
 
 
значения //markerID= 00020007B4B7         // markerlayerID=00020007B4B1
 
используется тестовая БД 500
 
 
 	  | Код: | 	 		  void TMainForm::CreateObj(double x,double y)
 
{
 
if(!App->ActiveDb->StyleExists(markerID))
 
        ShowMessage("Стиль с ID:\""+markerlayerID+"\"не найден в текущей БД.");
 
if(!App->ActiveDb->LayerExists(markerlayerID))
 
        ShowMessage("Слой с ID:\""+markerID+"\"не найден в текущей БД.");
 
 
IIngeoMapObject* obj=App->ActiveDb->MapObjects->AddObject(markerlayerID);
 
IIngeoContourPart* part=obj->Shapes->Insert(-1,markerID)->Contour->Insert(-1);
 
part->InsertVertex(-1,x,y,0);
 
part->Closed=true;
 
App->ActiveDb->MapObjects->UpdateChanges();
 
} | 	 
  | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Михаил Власов
 
  
  Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		rjdgtn
 
 
  Зарегистрирован: 26.02.2009 Сообщения: 37
 
  | 
		
			
				 Добавлено: Сб 11 Апр 2009 17:37    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				посмотрел и не нашел существенных отличий. вроде тоже самое делаю.
 
 
кто-нибудь может сказать что я упустил?
 
ведь семантические данные необязательно задавать? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Михаил Власов
 
  
  Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Пн 13 Апр 2009 15:19    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Выдержка из IngeoIntfs.chm:
 
 	  | Цитата: | 	 		  Объект IIngeoMapObjects
 
 
--------------------------------------------------------------------------------
 
 
Через этот объект осуществляется работа с пространственными объектами ГИС. 
 
 
Каждое получение ссылки на этот объект начинает новую транзакцию. При последнем освобождении ссылки на этот объект транзакция завершается. Таким образом чтобы какая-либо последовательность действий над объектами происходила внутри одной транзакции, надо ссылку на этот объект сохранить в переменной. Потом через эту ссылку произвести последовательность действий. После чего освободить ссылку. 
 
 | 	  
 
Вам необходимо запомнить ссылку на объект MapObjects в локальной переменной в начале метода.
 
Затем вносить изменения в рамках этого объекта.
 
И в конце метода вызывать метод UpdateChanges у того объекта, который Вы получили в начале метода.
 
Что-то вроде следующего кода:
 
 	  | Код: | 	 		  void TMainForm::CreateObj(double x,double y)
 
{
 
if(!App->ActiveDb->StyleExists(markerID))
 
        ShowMessage("Стиль с ID:\""+markerlayerID+"\"не найден в текущей БД.");
 
if(!App->ActiveDb->LayerExists(markerlayerID))
 
        ShowMessage("Слой с ID:\""+markerID+"\"не найден в текущей БД.");
 
 
IIngeoMapObjects* mapObjects = App->ActiveDb->MapObjects;
 
IIngeoMapObject* obj=mapObjects->AddObject(markerlayerID);
 
IIngeoContourPart* part=obj->Shapes->Insert(-1,markerID)->Contour->Insert(-1);
 
part->InsertVertex(-1,x,y,0);
 
part->Closed=true;
 
mapObjects->UpdateChanges();
 
mapObjects->Release();
 
}
 
 | 	 
  _________________ С уважением, Михаил Власов. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		rjdgtn
 
 
  Зарегистрирован: 26.02.2009 Сообщения: 37
 
  | 
		
			
				 Добавлено: Вт 14 Апр 2009 23:47    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| спасибо большое. у меня уже все заработало | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		rjdgtn
 
 
  Зарегистрирован: 26.02.2009 Сообщения: 37
 
  | 
		
			
				 Добавлено: Ср 15 Апр 2009 19:34    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				мой косяк вот так заработало
 
SetForegroundWindow((HWND)App->MainWindow->Handle); | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |