Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 29 мар 2024, 00:53

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Наложение фигур
СообщениеДобавлено: 04 апр 2018, 14:23 
Не в сети
Постоянный участник

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 72
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Уважаемые форумчане.
Подскажите, пожалуйста, каким образом можно реализовать отбор среди всех фигур листа по следующему условию:
отбираемая фигура должна находиться в пределах площади искомой фигуры?
Пример. Отбираются круги (красные), находящиеся в пределах квадрата.
Изображение

Вариант с группировкой и контейнером не подходят.

Спасибо


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Наложение фигур
СообщениеДобавлено: 04 апр 2018, 14:27 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
На основе вот этого:
http://visio.getbb.ru/viewtopic.php?f=15&t=671

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Наложение фигур
СообщениеДобавлено: 04 апр 2018, 15:17 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
shape.SpatialSearch / shape.SpatiaRelation / shape.SpatialNeighbors ?

Если надо быстро и фигуры прямоугольные, то лучше руками по координатам (как подсказал Shishok)

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Последний раз редактировалось nbelyh 04 апр 2018, 15:30, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Наложение фигур
СообщениеДобавлено: 04 апр 2018, 15:29 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 127

Добавить очки репутацииУменьшить очки репутации
Скорее всего SpatialNeighbors применительно к прямоугольнику, в котором идет поиск. Будет сформирован список шейпов, попавших в его границы. Пройти по ним в цикле и найти красные.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Наложение фигур
СообщениеДобавлено: 04 апр 2018, 15:32 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
9rey писал(а):
Скорее всего SpatialNeighbors применительно к прямоугольнику, в котором идет поиск. Будет сформирован список шейпов, попавших в его границы. Пройти по ним в цикле и найти красные.


SpatialXXX - меееедленные.
Если фигур много (сотни), и их можно считать прямоугольниками, то просто по координатам (PinX/Width/PinY/Height) сильно быстрее

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Наложение фигур
СообщениеДобавлено: 04 апр 2018, 15:53 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Код:
Option Explicit

Sub StartSelect() 'старт
If Not (ActiveWindow.Type = visDrawing And ActiveWindow.SubType = visPageWin And ActiveWindow.Selection.Count <> 1) Then Call SelectShapes(ActiveWindow.Selection.PrimaryItem)
End Sub

Private Sub SelectShapes(sh As Visio.Shape)
Dim sel As Visio.Selection, sht As Visio.Shape

Set sel = sh.SpatialNeighbors(visSpatialContain, 0, 0)  'определение соседей целевого шейпа

ActiveWindow.DeselectAll

For Each sht In sel 'выделение на экране всех найденных шейпов попадающих под целевой прямоугольник
    ActiveWindow.Select sht, visSelect
Next sht

End Sub

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Наложение фигур
СообщениеДобавлено: 05 апр 2018, 10:04 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Если нужно все шейпы выделить, то можно цикл заменить на:
Код:
ActiveWindow.Selection = sel

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB