  | 
				www.integro.ru ЦСИ ИНТЕГРО   
				 | 
			 
		 
		 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		AleksSmr
 
  
  Зарегистрирован: 15.03.2006 Сообщения: 4
 
  | 
		
			
				 Добавлено: Вт 12 Дек 2006 12:10    Заголовок сообщения: Определение координат объекта | 
				     | 
			 
			
				
  | 
			 
			
				Есть объект "Здание" у него есть 2 стиля: "Строение" и "Подпись"
 
Рисунок у меня на аватаре - картинке слева от сообщения под ником. (влом было на веб кидать   )
 
Где квадрат это стиль "Строение", а полоска это стиль "Подпись". Полоса задаёт направление подписи. 
 
У стиля "Строение" стоит галка "Определять геометрию объекта"
 
соответственно у стиля "Подпись" этот пункт отключен.
 
Когда я программно пытаюсь найти координату середины объекта:
 
 	  | Код: | 	 		  X = (IMapObject.X1 + IMapObject.X2) / 2;
 
Y = (IMapObject.Y1 + IMapObject.Y2) / 2; | 	  
 
Он считает правый край линии как часть объекта, и соответственно реальная координата центра строения неслабо смещается... 
 
Подскажите пожалуйста, как можно решить эту проблему?
 
Я подразумеваю что через Shape, но чёт я там не понял как получить координаты хотяб части фигуры.
 
Заранее спасибо. | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Михаил Власов
 
  
  Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Вт 12 Дек 2006 13:58    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Для вычисления габаритов объекта с учетом только форм, определяющих геометрию, можно использовать приведенный ниже пример:
 
 	  | Код: | 	 		  function Min(a, b)
 
  if a < b then
 
    Min = a
 
  else
 
    Min = b
 
  end if
 
end function
 
function Max(a, b)
 
  if a > b then
 
    Max = a
 
  else
 
    Max = b
 
  end if
 
end function
 
function GetBoundsOfDefinedGeometryShapes(mapObject, boundsX1, boundsX2, boundsY1, boundsY2)
 
  dim x1, x2, y1, y2, shape, boundsAssigned
 
  boundsAssigned = False
 
  for each shape in mapObject.Shapes
 
    if shape.DefineGeometry then
 
      if shape.Contour.sGetBounds(x1, y1, x2, y2) then
 
        if not boundsAssigned then
 
          boundsX1 = x1
 
          boundsX2 = x2
 
          boundsY1 = y1
 
          boundsY2 = y2
 
          boundsAssigned = True
 
        else
 
          boundsX1 = Min(boundsX1, x1)
 
          boundsX2 = Max(boundsX2, x2)
 
          boundsY1 = Min(boundsY1, y1)
 
          boundsY2 = Max(boundsY2, y2)
 
        end if
 
      end if
 
    end if
 
  next
 
  GetBoundsOfDefinedGeometryShapes = boundsAssigned
 
end sub
 
 | 	 
  _________________ С уважением, Михаил Власов. | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
  | 
   
 
		 |