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

krys

55 Posts

Posted - 09/27/2006 :  13:44:49
Привет.
Я работаю с Visual Studio C++ 6 и Visio2003.
Я столкнулся с ситуацией, в которой на чертеже размещенны елементы(шейпы) обьедененные в группу. Если я перемещаю группу , то в область группы попадают другие шейпы. которые мне надо программно найти.
Для етого я поочередно опрашивал шейпы группы и использовал свойство SpatialNeighbors- безрезультатно.
Может ли кто-то предложить другое решение?
Зарание спасибо

Tumanov

Russia
1198 Posts

Posted - 09/27/2006 :  18:26:09
В чем выражается безрезультатнсть?
Не пробовали менять .IterationMode объекта Selection?
Go to Top of Page

krys

55 Posts

Posted - 09/27/2006 :  19:50:12
_
У меня есть шейп в Форме квадрата |_|, который был созданы путем группирования линий.
Таким образом если как бы внутри этого шейпа позже будет размещен другой шейп, то я использую свойство Shape.SpatialNeighbors с Флагом visSpatialContain
что бы найти этот другой шейп программно. При этом он не селектирован и не является частью группы.
Теперь я имею группу из квадратов.
Я перемещаю группу по документу, так что она может наложится на другие шейпы
Когда я обрабатываю событие QueryCancelUngroup.
Я использую выше описанный Принцип : заполучив обьект описывающий Квадрат, я проверяю не находится ли внутри квадрата других элементов. В этом случае такие элементы не будут найдены.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 09/28/2006 :  00:11:54
Пока не понятно, придется объяснять дальше :(
Почему "такие элементы не будут найдены"? Они теоретически не должны быть найдены или просто не получается, не удается найти? Из-за того, что между компонентами группы дырки имеются что ли?
Go to Top of Page

elena

41 Posts

Posted - 09/28/2006 :  12:37:45
Участвуют ли в "определении соседа" локальные координаты фигур? Ведь если группа вошла в соотав другой группы, то ее локальные координаты изменились... Если дело не в этом, то sorry
Go to Top of Page

krys

55 Posts

Posted - 09/28/2006 :  16:31:33
...просто не получается:(

Я попытаюсь обьяснить ситуацию на примере:

На чертеже размещен 1 Шейп "Квадрат"(удaчнее будет имя "Рамка" :[ ].
При помощи мыши я перетаскиваю внутрь "Рамки" другой елемент е1.
[ e1 ]:

функция "Рамка".SpatialNeighbors(visSpatialContain,...)
возращает обьект Типа Selection.
Selection->GetCount()=1:
внутри "Рамки" находится 1 елемент


Теперь я группирую ети елементы с ,к примеру, другой рамкой:

[ e1 ] [ ]

После этого я мышкой перетаскиваю ещё один шейп, так что он визуально оказывается внутри "Рамки".
[e1 e2] [ ]

Selection="Ramka".SpatialNeighbors(visSpatialContain,...)
Selection->GetCount()=1.

Шейп е2 не найден.
Примечание: в данном случае "Рамка" является поделементом Группы
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 09/28/2006 :  20:55:31
SpatialNeighbors ищет шейпы только внутри одного пространства. В данном случае таким пространством может быть либо страница, либо группа.
Манипулируйте четвертым параметром метода SpatialNeighbors.
Если написать
Set Se = Sh.SpatialNeighbors(visSpatialContain, 0.02, 0, ActivePage.PageSheet)
то Вы найдете шейп е2
Если написать, например,
Set Se = Sh.SpatialNeighbors(visSpatialContain, 0.02, 0, ActivePage.Shapes("Sheet.3"))
где Sheet.3 - это группа, то найдете е1.
Go to Top of Page

krys

55 Posts

Posted - 09/28/2006 :  21:23:51
проблемa решена.
Go to Top of Page

krys

55 Posts

Posted - 09/28/2006 :  22:26:16
предыдущее сообщение я написал, не читав вашего поста (я просто обошел проблему )

Сейчас последовал вашему совету - вроде как работает :).

Большое спасибо за помощь :)
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)