All Forums
 Категория Visio
 Форум Вопросы и ответы
 Определить наложение фигур
Author Previous Topic Topic Next Topic  

bdfy

Belarus
267 Posts

Posted - 01/02/2011 :  23:04:13
Задача:
на чертеже есть фигура с подписью. положение подписи определяется контролом. известны типы фигур на которые я не хочу чтобы подпись накладывалась. Это коннекторы и пара пользовательских мастер-шейпов. нужно разместить подпись по возможности без наложений.
мне видиться следующий алгоритм - создать прямоугольник по размеру текста и перемещать его вокруг фигуры пока не найду место свободное от фигур. проблем вот только с определением фигур попадающих в прямоугольник.
вот необходимая команда
Set vs = Sh.SpatialNeighbors(visSpatialTouching, tolerence, 0)
но как это работает я после долгих тестов понять не смог. ощущение что tolerence это расстояние между центрами фигур которые попадают в выборку, а может нет. в любом случае добиться приемлимой работы я не могу. у кого опыт есть ?

bdfy

Belarus
267 Posts

Posted - 01/02/2011 :  23:05:25
http://rapidshare.com/files/440473302/naloz.vsd
здесь файл пример с шейпами
вот код для теста.
Set Sh = ActiveWindow.Selection(1)
    
    Set vs = Sh.SpatialNeighbors(visSpatialTouching, 2, 0)
    Debug.Print vs.Count

что называется попробуйте устойчиво ловить все пересечения...

Edited by - bdfy on 01/02/2011 23:06:23
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)