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

Форум по вопросам применения и программирования в Visio
Текущее время: 08 фев 2023, 23:35

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Именованные точки соединения
СообщениеДобавлено: 18 янв 2023, 14:02 
Не в сети
Ветеран

Зарегистрирован: 23 апр 2015, 19:23
Сообщений: 155
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
В Visio можно именовать точки соединения в ShapeSheet: https://bvisual.net/2013/05/21/getting- ... on-points/
Видимо это позволяет решить задачу типизации точек соединения и задания на этом принципе правил соединения фигур.
Например, есть три типа точек соединения на фигуре: верхняя (имя: квадрат), нижняя (имя: прямоугольник), правая (имя: круг).
Требуется, чтобы к этой фигуре остальные фигуры соединялись по правилу:
- квадрат(ы) соединяется только к точке соединения типа (с именем) "квадрат",
- прямоугольник(и) соединяется только к точке соединения типа (с именем) "прямоугольник".
Хорошо бы как то задать такое правило и нажать Конструктор "Изменить макет страницы" или тоже самое вызвать из VBA через Layout.
т.е. провести автопостроение с учетом того, что все связанные прямоугольники будут подключены к фигуре через нижнюю Connection Point, а все квадраты через верхнюю.

Можно немного изменить задачу: все пунктирные линии подключаются к фигуре с типом (именем) точки соединения "пунктир", а все двойные линии к точке типа "двойной".
Если такое штатно нельзя, то может есть примеры на VBA (правила соединения через именованные точки соединения)?
Было бы также интересно узнать как такое сделать в drawio.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 18 янв 2023, 14:21 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4812
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
BPM писал(а):
Требуется, чтобы к этой фигуре остальные фигуры соединялись по правилу:
- квадрат(ы) соединяется только к точке соединения типа (с именем) "квадрат",
- прямоугольник(и) соединяется только к точке соединения типа (с именем) "прямоугольник".
Где должны быть эти правила ? Вы имеете в виду, чтоб пользователь не имел возможности соединять коннектором точки соединения с разными именами ?
BPM писал(а):
Можно немного изменить задачу: все пунктирные линии подключаются к фигуре с типом (именем) точки соединения "пунктир", а все двойные линии к точке типа "двойной".
линии сами должны к точкам прилипать нужного типа / или не давать линии прилипать не к тому месту ?
BPM писал(а):
Если такое штатно нельзя
Однозначно, нет такой возможности штатными средствами :!:
Боюсь примера, в котором все перечисленное уже реализовано мы точно не найдем. Может что-то и есть в разных местах, но собрать Франкеншейна и допилить его напильником придется…

Оффтоп:
Интересно, зачем это все нужно ?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 18 янв 2023, 14:47 
Не в сети
Ветеран

Зарегистрирован: 23 апр 2015, 19:23
Сообщений: 155
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Цитата:
Где должны быть эти правила ? Вы имеете в виду, чтоб пользователь не имел возможности соединять коннектором точки соединения с разными именами ?

Интересны любые варианты, но основной - это автопостроение. Примерно как с TABVAD: накидал шейпов невпопад на лист, соединил друг с другом и скомандовал: "стройсь" (автопостроение).
Цитата:
линии сами должны к точкам прилипать нужного типа / или не давать линии прилипать не к тому месту ?

такой же ответ: посмотреть бы на любой вариант, но главный - автопостроить, т.е. при соединении мы принудительно указываем, что линия определённого типа будет прилипать к конкретной точке связи (точке соединения соответствующего типа \ имени).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 18 янв 2023, 14:51 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4812
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
BPM писал(а):
Интересны любые варианты, но основной - это автопостроение.
Вам интересно это самому написать или получить от кого-то готовый вариант?
Оффтоп:
Я лично на такое даже за большие деньги не подписался бы :mrgreen:

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 18 янв 2023, 15:03 
Не в сети
Ветеран

Зарегистрирован: 23 апр 2015, 19:23
Сообщений: 155
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Цитата:
Вам интересно это самому написать или получить от кого-то готовый вариант?

Мне это интересно: а) как хобби б) обзор вариантов и понимание принципов реализации.
Например, в аналогичный итоговый результат (идентичное соединение указанному ранее подходу) я получал (в drawio) просто программно размещая смежный объект нужного типа к ближайшей точке соединения нужного типа.
drawio отрисовывала стрелку к ближайшей точке соединения (что логично). Плюс там еще есть направление входа \ выхода стрелки: на север, на юг, запад, восток, что также пришлось использовать.
Однако хотелось бы более "объектно-ориентированный" подход, основанный на типизации connection points, тогда сработало бы автопостроение - авторазмещение самих фигур на листе.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 18 янв 2023, 16:00 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
BPM писал(а):
Если такое штатно нельзя, то может есть примеры на VBA (правила соединения через именованные точки соединения)?
Было бы также интересно узнать как такое сделать в drawio.

Думаю лучшее что я видел в плане авто-построения это yFiles
Посмотри их демки, вполне возможно у них есть также типы точек соединения.
https://www.yworks.com/products/yfiles/demos#layout

Автопостроение с типами портов
https://live.yworks.com/demos/databindi ... e-builder/

С весами
https://live.yworks.com/demos/layout/layerconstraints/

Минус - у них абсолютно конские цены, IMHO.
Цена 1 лицензии = цена 1 Теслы

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 30 янв 2023, 11:37 
Не в сети
Ветеран

Зарегистрирован: 23 апр 2015, 19:23
Сообщений: 155
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Пример похожей задачи: Управление направлением стрелок Graphviz
https://stackoverflow.com/questions/467 ... -direction


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 30 янв 2023, 11:47 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4812
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
BPM писал(а):
Пример похожей задачи
А там точно про именованные точки соединения ? Или вам нужны не шашечки, вам ехать ?
У Mermaid есть возможность использовать разные стрелки

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 30 янв 2023, 12:37 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2049
Очков репутации: 100622

Добавить очки репутацииУменьшить очки репутации
Цитата:
Например, есть три типа точек соединения на фигуре: верхняя (имя: квадрат), нижняя (имя: прямоугольник), правая (имя: круг).
Требуется, чтобы к этой фигуре остальные фигуры соединялись по правилу:
- квадрат(ы) соединяется только к точке соединения типа (с именем) "квадрат",
- прямоугольник(и) соединяется только к точке соединения типа (с именем) "прямоугольник".
Хорошо бы как то задать такое правило и нажать Конструктор "Изменить макет страницы" или тоже самое вызвать из VBA через Layout.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 30 янв 2023, 12:48 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4812
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tumanov писал(а):
Легко написать макрос, который просканирует имеющиеся связи и переконнектит
Перебор существующих точек соединения это несложно, а вот про написание правил я бы так не сказал. Да и на нарисованной схеме кем-то схеме точек соединения может и не быть, коннекторы "не дотянулись" до контура фигуры
BPM писал(а):
Интересны любые варианты, но основной - это автопостроение.
Это уже совсем не простая задача, как мне кажется
Tumanov писал(а):
Если Вы не боитесь VBA
Не только лишь все не такое способны, придется BPM ждать пока вы Геннадий сделаете, как в случае с TABVAD

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 30 янв 2023, 13:13 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2049
Очков репутации: 100622

Добавить очки репутацииУменьшить очки репутации
Цитата:
Да и на нарисованной схеме кем-то схеме точек соединения может и не быть, коннекторы "не дотянулись" до контура фигуры

Так по условию задачи предполагается, что они не только есть, но даже переименованы. Уж если есть имя объекта, то и объект обязан быть.
Цитата:
Это уже совсем не простая задача, как мне кажется

В Visio есть функция авторазмещения. Чаще всего она вполне удовлетворяет пользователя.
Я, например, обычно (программно) просто размещаю шейпы в вертикальную колонку с постоянным шагом. Потом соединяю их коннекторами. Потом командую Visio - Re-Layout по нужному шаблону размещения. И он все выстраивает, как надо.
Вот когда способностей встроенного размещения не хватает, тогда действительно это становится сложной задачей. Или когда шейпы не связаны.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 30 янв 2023, 14:49 
Не в сети
Ветеран

Зарегистрирован: 23 апр 2015, 19:23
Сообщений: 155
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Цитата:
У Mermaid есть возможность использовать разные стрелки…

Это же совсем другое.
Цитата:
А там точно про именованные точки соединения ?

VBA побаиваюсь (поэтому только несложные вещи), тем более, когда это со временем перестает работать (как TABVAD).
Хотелось бы вначале понять: не упущены ли совсем простые методы.
Пример простого метода в dot и drawio через стороны шейпа: South, North, East and West. Мы просто говорим соедини наш коннектор с северной стороной шейпа А. Например:
"d" / NORTH - "e" / SOUTH
Изображение
https://github.com/nidi3/graphviz-java

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Именованные точки соединения
СообщениеДобавлено: 30 янв 2023, 15:40 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4812
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
BPM писал(а):
Это же совсем другое.
Конечно другое, в Visio все совсем не так :!:
BPM писал(а):
Это работает хорошо, когда на каждой стороне шейпа по одной точке соединения (точнее четыре авто именованные точки по сторонам света). В большинстве случаев этого достаточно (это план минимум).
Однако, если на одной стороне шейпа уже две точки, то нужны именно именованные точки соединения (например, на левой стороне шейпа есть верхняя и нижняя точка). Это задача максимум.
В Visio аналогично у всех фигур бизнес-процессов по одной точке соединения на каждой из сторон!
Изображение
В явном виде точки соединения не прописаны в таблице свойств!
Tumanov писал(а):
Потом командую Visio - Re-Layout по нужному шаблону размещения. И он все выстраивает, как надо.
Visio сам понимает кто из них папа, кто мама какая точка = какое направление. И авто-построение сработает!
BPM когда вы налепите кучу дополнительных точек, совсем не факт что движок Visio осилит работу с ними.

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


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

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



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

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


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

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