  | 
				www.integro.ru ЦСИ ИНТЕГРО   
				 | 
			 
		 
		 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		Динар
 
 
  Зарегистрирован: 28.06.2009 Сообщения: 6
 
  | 
		
			
				 Добавлено: Пт 10 Июл 2009 13:44    Заголовок сообщения: Линейные операции | 
				     | 
			 
			
				
  | 
			 
			
				Существует несколько линейных объектов с одинаковым параметром ( скажем объекты: улица, параметр: название улицы). Необходимо их все объеденить в один объект. Попробовал написать скрипт, который копирует вершины линейных объектов и записывает их в первый объект,в итоге получился единый объект с ребрами между двумя объектами, то есть вершины из разный объектов соединились ребром. А необходимо их просто объединить. Как можно удалить ребра? Или как можно реализовать по другому? =) 
 
 
 	  | Код: | 	 		  option explicit
 
sub line
 
application.selection.deselectall
 
dim MapObjects, wera, adress, i, shape, part, mapobject, x, y, c, j, n1, style, n
 
set MapObjects = Application.ActiveDb.MapObjects
 
set style = MapObjects.QueryByLayers("0001000003F7")
 
do while not style.EOF
 
  set wera = MapObjects.GetObject(style.objectid)
 
  adress = wera.SemData.GetValue("Деревушка", "Адрес", 0)
 
    if (adress = "ул.Горького") then
 
       application.selection.select style.objectid,0
 
    end if
 
 style.MoveNext
 
loop
 
 
n = application.selection.ids (0)
 
 
 for i=1 to application.selection.count-1
 
 n1 = application.selection.ids (i)
 
    set mapobject = mapobjects.getobject(n1)
 
  for each shape in mapobject.shapes
 
     for each part in shape.contour
 
        for j=0 to mapobject.shapes.item(0).contour.item(0).vertexcount-1
 
                   mapobject.shapes.item(0).contour.item(0).sgetvertex  j, x, y, c
 
                   MapObjects.GetObject(n).shapes.item(0).contour.item(0).insertvertex j,x,y,c
 
         next
 
      next
 
  next
 
next
 
MapObjects.UpdateChanges
 
end sub | 	 
  | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Алексей В. Бастриков
 
 
  Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
  | 
		
			
				 Добавлено: Вс 12 Июл 2009 13:35    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| Добавляйте в пополняемый объект новые контуры, и используйте для данных контуров функцию addPartsFrom. См. справку, там эта функция есть. | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Динар
 
 
  Зарегистрирован: 28.06.2009 Сообщения: 6
 
  | 
		
			
				 Добавлено: Пн 13 Июл 2009 01:30    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Алексей В. Бастриков писал(а): | 	 		  | Добавляйте в пополняемый объект новые контуры, и используйте для данных контуров функцию addPartsFrom. См. справку, там эта функция есть. | 	  
 
 
огромное спасибо, Алексей. все заработало =) | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Динар
 
 
  Зарегистрирован: 28.06.2009 Сообщения: 6
 
  | 
		
			
				 Добавлено: Чт 16 Июл 2009 01:13    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| еще вопрос: как из существующей таблицы легче всего выбрать одинаковые и непустые значения полей одного поля? | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Динар
 
 
  Зарегистрирован: 28.06.2009 Сообщения: 6
 
  | 
		
			
				 Добавлено: Пт 17 Июл 2009 01:29    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				посоветовали использовать sql запросы, но пока не могу разобраться, может подскажете кто знает?
 
задача стоит следующая: нужно объеденить объекты у которых совпадают значения в определенном поле семантической таблицы. | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Алексей В. Бастриков
 
 
  Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
  | 
		
			
				 Добавлено: Пн 20 Июл 2009 20:27    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Что касается sql, можно поступить так:
 
set DataSet = SemTable.SemDbTable.SelectData("ID", "Поле='" & Значение & "'", null)
 
while not DataSet.EOF
 
  ObjectID = DataSet.Fields.Item("ID").Value
 
  DataSet.MoveNext
 
wend
 
При объединении объектов нужно учитывать стили их форм, а также то, что они могут принадлежать разным слоям, тогда будет посложнее...
 
Читайте внимательно справку   | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
  | 
   
 
		 |