All Forums
 Категория Visio
 Форум Вопросы и ответы
 Связь шейпов
Author Previous Topic Topic Next Topic  

vis

47 Posts

Posted - 08/12/2012 :  08:31:32
Добрый день.
Подскажите, пожалуйста, как мне объединить в некую группу (класс) несколько шейпов с разных страниц документа. Каким инструментом?
Ну вот пример приведу.
Имеется реле К1. На принципиальной схеме на разных страницах отображены Катушка (прямоугольник) и два контакта этого реле. И вот я не знаю как их объединить в некий "класс" К1, чтобы можно было вытащить номера страниц, где присутствуют элементы этого класса.
И вот таких классов в документе может быть много.

Tumanov

Russia
1198 Posts

Posted - 08/12/2012 :  10:31:50
Добрый день.
На разных страницах шейпы не объединяются.
Можно сделать это косвенным образом. Например, установить гиперссылки, связать через данные и т.д. Но чтобы выбрать способ, хорошо бы знать, как Вы эту связь собираетесь использовать. Программно или "вручную". Выбирать данные из схемы или просто перейти при необходимости от катушки к контактам.
Если у Вас схема поддерживается программным проектом, то можно и вообще создать в нем свой класс, включив в него и шейп с катушкой, и шейп с контактами. Да еще и добавить методы, специфичные для этого класса.
Go to Top of Page

vis

47 Posts

Posted - 08/12/2012 :  11:06:27
quote:
Originally posted by Tumanov

Но чтобы выбрать способ, хорошо бы знать, как Вы эту связь собираетесь использовать. Программно или "вручную".


Программно.

Если конкретнее, то задачу можно рассмотреть следующим образом.
У меня есть 3 шейпа на разных страницах (одна катушка и два контакта).
Я запускаю макрос, ввожу в поле имя класса и макрос определяет номера страниц и текст всех этих элементов.

Понятно, что можно использовать данные фигуры (Visio2010) или как это раньше называлось Custom properties и по факту запуска макроса перебирать все шейпы на наличие нужного Кастом Пропети. Но это долго. Вот я и подумал, может есть способы?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 08/12/2012 :  13:29:36
Не обязательно перебирать все шейпы.
Если шейп катушки будет содержать ссылки на шейпы контактов (например, идентификаторы в Custom Properties), то после нахождения катушки Вы по этим идентификаторам сразу можете добраться до контактов.
Можно написать макрос, "заряжающий" катушку в режиме рисования. Например, рисуете катушку, контакты. Потом селектируете катушку и вызываете заряжающий макрос. Он просит выбрать по очереди контекты. После каждого выбора имя страницы и идентификатор контакта заносится в Custom Properties катушки.
Можно заряжать перекрестными ссылками все три шейпа. Тогда, селектировав любой из них, можно быстро найти любой другой компонент реле.
Go to Top of Page

9rey

Russia
30 Posts

Posted - 08/16/2012 :  15:30:06
я бы наверно сделал так: при открытии документа сканировал один раз все страницы, создавая коллекции из катушек и контактов (при условии, что они имеют одно имя, пример - катушку и все контакты KL1) и выводил список из этих имен(позиций) пользователю. при выборе из списка позиции - считывается информация о всех элементах + возможность быстрой навигации к элементу.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 08/16/2012 :  16:57:57
Я подумал, подумал и выбрал тот вариант, который попроще :)
Если проект большой, с коллекциями, естественно, работать удобнее. Причем, коллекцию (коллекции) можно строить из объектов, содержащих шейпы. И такой объект может объединять все нужные шейпы. Собственно, этот вариант упоминался в моем первом ответе.
Go to Top of Page

9rey

Russia
30 Posts

Posted - 08/16/2012 :  17:46: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)