Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

Логика

Рассмотрим, что может использовать Visio для взаимосвязи внутри диаграмм, для соединения и связывания шейпов друг с другом.

Отношения могут быть выражены различными способами. Например, по положению и расстоянию между шейпами, по цвету, по соединению, по входимости или обводке, по порядку, по ассоциации. Есть еще много других, таких как размер, текстура и, конечно же, форма, но четыре из этих отношений особенно выделяются при использовании Visio. Это

Хотя многие приложения для рисования могут рисовать два прямоугольника и линию между двумя прямоугольниками, Visio отличается тем, что может фиксировать как логическую, так и визуальную взаимосвязь. Предоставляя эту логическую связь, Visio позволяет вам читать, какие шейпы связаны друг с другом или какие шейпы содержатся друг в друге.

Это позволяет вам перемещаться по всем соединениям на диаграмме, например, чтобы прочитать иерархию на организационной диаграмме или понять, какие шейпы процессов находятся в определенной функциональной дорожке.

Рассмотрим по порядку показанный выше 4 типа отношений.

Соединения

Visio поддерживает связи между шейпами с помощью системы, называемой клеем. В связанной диаграмме именно эта связующая концепция обеспечивает логические связи между объектами.

Клей создается либо с помощью кода, либо с помощью действий в пользовательском интерфейсе. Например, если вы перетащите конечную точку одномерной фигуры на другую, Visio выделит места, к которым можно приклеить конечную точку.

Если вы отпустите кнопку мыши, скажем, над одной из четырех точек соединения, конечная точка соединителя будет приклеена к целевому шейпу. При изменении положения прямоугольника конечная точка линии будет следовать за точкой, к которой она была приклеена.

Если вы посмотрите на ячейки ShapeSheet в 1D шейпе, вы увидите, как это происходит в Visio. Когда кнопка мыши отпущена, Visio создает некоторые формулы в ячейки конечных точек, чтобы отслеживать точку на целевом шейпе.

В некоторых ситуациях, например при приклеивании к геометрии шейпа или к управляющей точке, Visio динамически добавляет точки соединения к целевому шейпу. Но если не считать этого, то чаще всего целевой шейп остается нетронутым. Если посмотреть на ячейки в целевом шейпе, то будет видно, что приклеивание не вызвало никаких изменений.

Все это подчеркивает, что клей не является равноправным отношением, есть приклеиваемый шейп и целевой шейп.

Если переместить целевой шейп, соединение сохранится, но если вы переместить приклеиваемый шейп, то соединение разорвется.

Можно представить это с точки зрения создания клея. Если вы перетаскиваете шейп к другому шейпу для приклеивания, то перетаскиваемый шейп является клеем, а тот, к которому нужно приклеить, является целью.

Давайте теперь посмотрим, какие части шейпа к каким можно приклеить.

Самый распространенный тип приклеивания в Visio - это конечная точка одномерного шейпа, приклеиваемая к некоторой части двухмерного шейпа.

Вот слегка измененная версия ранее рассмотренного прямоугольника.

Я внес несколько изменений в геометрию, чтобы выделить некоторые типы клея, в том числе круговой вырез, положение которого основано на управляющем маркере, являющемся частью шейпа.

Есть пять основных элементов, к которым можно приклеить конечную точку:

Помимо конечных точек 1D шейпа в качестве приклеиваемых можно использовать управляющие точки шейпа и точки соединения. И наконец, вы можете приклеить маркеры выравнивания 2D шейпов и маркеры селектирования к направляющей.

Так, например, я могу перетащить управляющую точку одного 2D шейпа и приклеить ее к точке соединения в другом шейпе.

Точно так же, перетаскивая один 2D шейп на соседний, я смогу приклеить точку соединения перетаскиваемого шейпа к той, которая существует в целевом шейпе.

До сих пор мы рассматривали то, что известно как статическое склеивание, и это один из двух типов склеивания, доступных в Visio. Другой называется динамическим клеем.

При использовании статического клея вы приклеиваете точку исходной формы или приклеиваете к точке целевой формы. Если после такого приклеивания мы будем перемещать целевой шейп, то линия будет все время тянуться к точке приклеивания.

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

И если отпустить мышь над одной из них, получим еще одно статическое соединение. Но обратите внимание, что если мышь находится где-то еще в шейпе, весь шейп выделяется зеленой рамкой, указывая на то, что вместо этого будет создано динамическое приклеивание. И после такого приклеивания линия не будет тянуться к фиксированной точке, а будет динамически отслеживать перемещение, чтобы найти кратчайший путь от края шейпа.

В то время как динамическое склеивание имеет смысл для многих ситуаций, таких как организационная схема или схема процессов, в других, таких как электрическая схема, это явно не так. Это ключевой выбор при разработке вашего решения. Например, если вы посмотрите на эти простые формы процессов, вам, вероятно, все равно, к какой точке соединения подключена соединительная линия. Достаточно знать, что концептуально процесс A связан с решением B. Значит в этой ситуации динамический клей является правильным выбором.

Но если вы посмотрите на принципиальную схему, очевидно, важно, чтобы провода оставались подключенными к тем же точкам, к которым они были изначально приклеены. И поэтому здесь можно использовать статический клей.

Таким образом, концепция склеивания - это просто метод, позволяющий Visio создавать как визуальные, так и логические связи между фигурами. И поведение этих соединений определяется тем, являются ли они статическими и остаются приклеенными к определенной точке или динамическими, когда требуется найти наиболее подходящий путь.

Входимость

Теперь перейдем к входимости. Если линия между двумя сущностями показывает отношение посредством соединения, входимость подразумевает некоторую форму собственности или принадлежность одной сущности к какой-либо другой.

До версии 2010 вы могли отобразить этот тип отношений в Visio, либо нарисовав прямоугольник вокруг другого набора шейпов, либо фактически сгруппировав набор дочерних шейпов для создания одного родителя.

Оба метода хорошо работают во многих ситуациях, но оба имеют свои недостатки. Метод прямоугольника, хотя и гибкий, необходимо обновлять вручную каждый раз, когда один из целевых шейпов перемещается в содержащую область или из нее. В коде вы можете выполнять множество пространственных запросов, но вам все равно нужно понимать намерение пользователя, когда он добавляет, удаляет или просто перемещает один из шейпов. Кроме того, целевые шейпы не знают, принадлежат ли они ограничивающему прямоугольнику или нет.

С другой стороны, при группировке целевые шейпы имеют более постоянную связь со своим родителем. Группировка, как правило, лучше подходит для более статичных компонентов, которые являются частью отдельного единого блока, например, ножки стула или дверь автомобиля.

Контейнеры, которые были представлены в Visio 2010, устраняют эти недостатки и находятся в середине спектра гибкости, поддерживая отношения, но, что особенно важно, не изменяя базовую структуру. Так что подумайте, например, о сотрудниках, назначенных в проектные группы или какое-либо другое организационное подразделение.

Здесь показаны два шейпа контейнера, и я могу выбрать набор сотрудников и добавить их в контейнер региональных менеджеров.

Обратите внимание, что когда я перетаскиваю шейпы на контейнер, Visio отображает зеленый прямоугольник вокруг края контейнера, указывающий, что шейпы станут членами контейнера. После того как они добавлены, я могу перемещать контейнер, и шейпы элементов следуют за ним.

Но важно понимать, что структура шейпов не изменилась, и я все еще могу выбрать одного сотрудника, переместить ее из контейнера, а оставшиеся шейпы участников останутся нетронутыми.

Еще одна ключевая особенность контейнеров заключается в том, что шейпы-члены могут получить ссылку на контейнер, в котором они находятся. Поэтому в этих шейпах сотрудников я добавил небольшой кружок, который динамически меняется, чтобы выделить, в каком контейнере они находятся.

Если я переведу этих четырех сотрудников в команду по открытию новых магазинов, вы увидите, что кружки отражают это изменение. Я также добавил числовое текстовое поле в область заголовка контейнера, чтобы отображать изменяющееся количество элементов, чтобы показать, как форма контейнера может знать свои элементы.

Это демонстрация того, что нам удалось изменить данные в шейпе экземпляра, просто позволив пользователю перемещать шейп на странице. И это довольно мощно.

Структурированное построение диаграмм

Как я уже упоминал, контейнеры были представлены в Visio 2010 и являются частью функции, называемой структурированным построением диаграмм.

Эта функция состоит из трех основных типов, одной из частей которых являются контейнеры. Два других типа это списки (Lists) и выноски (Callouts). О выносках чуть позже, а сначала давайте взглянем на списки.

Списки

Списки это, по сути, еще один тип контейнера, но в котором положение и порядок следования управляются. Они позволяют отображать список шейпов как в горизонтальной, так и в вертикальной ориентации.

Например, вот форма списка, которую я собираюсь использовать, чтобы показать порядок ответственности за закрытие конкретной кофейни на ночь.

Если я перетащу менеджеров в список, вы увидите, что Visio снова отображает зеленую линию вокруг списка, чтобы показать, что шейпы станут членами списка после перетаскивания.

Вы также можете видеть, что если я хочу изменить порядок списка, Visio предоставляет мне связанные элементы пользовательского интерфейса, чтобы я мог это сделать. Работа контейнеров и списков основана на наборе служб построения диаграмм, работающих в Visio, которые ищут шейпы с определенным набором именованных пользовательских ячеек.

Если вы посмотрите на ShapeSheet шейпа списка, вы увидите, что есть несколько ячеек с именем user.msv плюс какое-то продолжение.

Давайте посмотрим на самые важные из них. StructureType идентифицирует шейп как тип структурированного списка. Если бы это был контейнер или выноска, значением были бы их имена.

Следующая ячейка, на которую следует обратить внимание, это ShapeCategories, которые можно применить к любому шейпу и которые позволяют эффективно помечать шейпы как принадлежащие к определенной категории.

Это, в свою очередь, можно использовать с инклюзивным или эксклюзивным фильтром, например, SDListRequiredCategories содержит список категорий, разрешенных для добавления в этот список. В этом примере видно, что список будет разрешать добавление только шейпов с типом Manager.

Все остальные ячейки просто определяют другие аспекты списка, такие как стиль или макет, и синхронизируются с контекстной вкладкой ленты, чтобы пользователь мог устанавливать различные параметры.

Таким образом, User-defined ячейки идентифицируют шейп как представляющую интерес для сервисов построения диаграмм и хранят атрибуты шейпа, но есть еще одна ячейка, которая используется для завершения функции.

Ниже по ShapeSheet в разделе Layout вы найдете ячейку Relationships.

Visio использует эту ячейку для хранения взаимосвязей между шейпами. Для шейпа списка или контейнера подобного приведенному здесь будет храниться ссылка для каждого из шейпов-членов. И если вы откроете ShapeSheet для одного из шейпов-членов, вы увидите соответствующую ссылку на ее контейнер. Хотя реально вам скорее всего никогда не придется взаимодействовать с этой ячейкой.

Это подчеркивает двунаправленную связь между шейпами и то, как Visio поддерживает эти отношения в фоновом режиме.

Выноски

Выноски обеспечивают ассоциативную связь, позволяющую связать положение одной фигуры с другой. Как и контейнеры - без группировки или каких-либо изменений в структуре целевого шейпа или самой выноски.

Вернемся еще раз к списку закрытия магазина. Я могу добавить на страницу шейп выноски и связать его с одним из шейпов менеджера, используя управляющую точку. И отметить, что этот человек доступен только в будние дни.

Затем я могу переместить шейп целевого менеджера, и вы увидите, как выноска следует вместе с ним.

Это довольно стандартный сценарий для выносок, использующий их для комментирования или выделения другого шейпа в диаграмме.

Но мы не ограничены только отображением текста или использованием только встроенных типов.

Вот еще один пользовательский шейп к которому добавлено поведение выноски. Я могу связать этот шейп ключа с щейпом менеджера, чтобы показать, кто в настоящее время владеет ключами от магазина. Опять же, можно изменить порядок шейпов в списке, но выноска остается связанной с тем же целевым менеджером.

Я могу легко передать ключ другому менеджеру, и теперь ключ будет отслеживать новую цель.

Вот и все, что касается отношений в Visio. Основные выводы здесь заключаются в том, что Visio поддерживает ряд различных методов, которые позволяют вам фиксировать логические отношения, которые ваши пользователи строят при сборке диаграммы. Они сделали это не путем сопоставления одного текстового поля с другим, а путем визуального перемещения объектов, которые имеют для них смысл, и области, в которой они работают.

Компоновка и маршрутизация

Еще одной важной особенностью является способность Visio размещать фигуры на странице, используя не только базовое выравнивание, но и принимая во внимание любые существующие взаимосвязи.

Например, я добавил на страницу группу простых шейпов, как показано ниже. Они пронумерованы, чтобы упростить просмотр иерархии после добавлении соединений. Добавляем соединения и для ясности установим зеленый цвет корневого узла.

Из-за того, что связи имеют направленный характер, Visio может интерпретировать иерархию. И вы можете видеть, как выбор встроенных стилей размещения влияет на расположение шейпов.

При использовании макета Visio различает два типа шейпов: размещаемые (Placeable) и соединяющие (Routable). Размещаемые шейпы - это шейпы, которые нужно разместить или расположить на странице. Соединяющие - это шейпы-коннекторы. Размещаемые шейпы, как правило, являются 2D - шейпами, а соединяющие - 1D. Хотя не все 2D-шейпы обязательно размещаемые, и точно так же не все 1D-шейпы могут быть соединяющими.

Конечно, как и в большинстве случаев в Visio, в ShapeSheet есть соответствующая ячейка. И в данном случае это ячейка с именем ObjType. Именно она определяет, какой это тип.

При разработке шейпа вы можете решить, нужно ли вам, чтобы шейп был размещаемым, например узел блок-схемы, или вы хотите отказаться от влияния макета, например, для шейпа, которая представляет столб или стену в здании.

Как правило, новые шейпы, рисуемые на странице, устанавливаются таким образом, чтобы позволить Visio решать, какой тип они должны иметь. В этом случае шейп станет доступным для размещения только в том случае, если вы подключите к ней коннектор.

Конечно, все встроенные стили компоновки и маршрутизации можно применять через пользовательский интерфейс, но в конечном итоге все настройки, определяющие поведение, хранятся в таблице свойств фигуры как на уровне страницы, так и на уровне шейпа. Эти разделы таблицы свойств фигуры раскрывают несколько интересных деталей.

Во-первых, есть ячейки Plow Эти ячейки представляют концепцию, согласно которой Visio позволяет шейпам отталкивать другие шейпы, если они расположены поверх них.

Комбинация ShapePlowCode и ShapeFixedCode определяет, может ли шейп расталкивать другие или быть отодвинутым, и позволяет вам, как разработчику шейпа, управлять, соглашаетесь ли вы на такое поведение или отказываетесь от него.

В качестве примера использования этого типа функциональности может быть план этажа кофейни. Там, когда вы перетаскиваете фигуру стола на страницу, имеет смысл, чтобы один стол не перекрыл другой, и Plow гарантирует, что этого не произойдет.

Второй набор ячеек, на который следует обратить внимание, - это BlockSize и AvenueSize.

Visio использует эти ячейки при расчете интервалов для стилей макета. Понятно, что AvenueSize используется для пространства между шейпами, а BlockSize - для пространства, заданного для каждого шейпа. Конечно, фактические размеры шейпа могут отличаться от значений BlockSize, поэтому к конечному результату применяется дополнительная логика.

Итак, краткий обзор компоновки и маршрутизации. Следует подчеркнуть две вещи:

1) Visio имеет ряд встроенных алгоритмов компоновки и доступ к ним доступен для ваших пользователей через пользовательский интерфейс или для вас с помощью методов в API.

2) существует разумный уровень управления мельчайшими деталями, позволяющий получить стиль, который подходит для вашего решения.

Конечно, ничто не мешает вам создать собственную логику, если встроенная не соответствует вашим потребностям. Но, безусловно, стоит в первую очередь взглянуть на то, что находится в коробке.

Перечень литературы

Ответы на вопросы