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

Форум по вопросам применения и программирования в Visio
Текущее время: 16 окт 2019, 18:07

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Номерация ConnectionPoint
СообщениеДобавлено: 24 апр 2019, 10:30 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Есть ли в Visio возможность отображения номера ConnectionPoint (точка соединения)на фигуре. Или придется вручную создавать текстовое поле напротив каждой точки соединения?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 24 апр 2019, 10:55 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3705
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
TheHeat писал(а):
Есть ли в Visio возможность отображения номера ConnectionPoint (точка соединения)на фигуре.
в штатном функционале такого нет !
TheHeat писал(а):
Или придется вручную создавать текстовое поле напротив каждой точки соединения
можно попробовать написать свой макрос.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 24 апр 2019, 12:11 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
можно попробовать написать свой макрос.

Ну я это и имел ввиду ;)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 24 апр 2019, 21:53 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Вот я бы не советовал...
Дело в том, что Connection Points могут возникать сами по себе, не только по вашему желанию. Поэтому пронумеровать случайно можно совсем не то.
А откуда вообще берет начало такая мысль? Может все можно решить и более традиционными методами?
И что понимается под "номером ConnectionPoint"?! Номер строки в секции или что-то другое?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 14:12 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Вот я бы не советовал...
Дело в том, что Connection Points могут возникать сами по себе, не только по вашему желанию. Поэтому пронумеровать случайно можно совсем не то.
А откуда вообще берет начало такая мысль? Может все можно решить и более традиционными методами?
И что понимается под "номером ConnectionPoint"?! Номер строки в секции или что-то другое?

Поинты нужны для обозначения входов и выходов логических элементов ("И", "ИЛИ" и т.д.) Вставляю я их автоматически макросом в зависимости от того сколько входов нужно пользователю. Сейчас я нумерацию сделал внутри элемента с помощью заливки (нарисовал цифры в шаблоне заливки). Не очень эстетично выглядит, но зато шейпов меньше стало, что для For Each Shape In Shapes гораздо лучше. Было бы идеально если бы нумерация была на подобие автонумерации точек на графике в Excel, то есть свойством самого поинта, а не шейпом.


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

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

Добавить очки репутацииУменьшить очки репутации
Да, подход гарантировано оригинальный... До сих пор подобного не встречал ни разу.
Небольшое предостережение. Получается, что ваши шейпы не будут копиями мастеров. Все будут созданы (изменены) программно. Помните, что это скажется на объеме документа? Хотя, в конкретном решении это может быть и несущественно.
Распространенная практика - если требуется сделать настраиваемый шейп, то количеством фрагментов управляют за счет невидимости. То есть шейп остается неизменным, меняется только видимость отдельных частей (за счет формул).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 15:15 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Небольшое предостережение. Получается, что ваши шейпы не будут копиями мастеров. Все будут созданы (изменены) программно. Помните, что это скажется на объеме документа?

Не понял о чем речь. Шейп вставляется из vss и изменяется макросом.
Tumanov писал(а):
Распространенная практика - если требуется сделать настраиваемый шейп, то количеством фрагментов управляют за счет невидимости. То есть шейп остается неизменным, меняется только видимость отдельных частей (за счет формул).

Не подходит. Размеры шейпа зависят от количества входов. И я так понимаю невидимость фрагментов не поможет ускорить For Each Shape In Shapes.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 15:23 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Не понял о чем речь. Шейп вставляется из vss и изменяется макросом.

Вы хотите сказать, что после программных изменений в копии связь с мастер-шейпом не нарушится? Может быть. Нужно смотреть.
Цитата:
Размеры шейпа зависят от количества входов.

Не проблема. Примеры решений существуют.
Цитата:
И я так понимаю невидимость фрагментов не поможет ускорить For Each Shape In Shapes.

Не поможет. А это настолько существенно? Программы легко перебирают сотни шейпов на странице. Что им стоит перебрать десятки мастеров в трафарете!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 15:31 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Цитата:
Не понял о чем речь. Шейп вставляется из vss и изменяется макросом.

Вы хотите сказать, что после программных изменений в копии связь с мастер-шейпом не нарушится? Может быть. Нужно смотреть.

Я не понимаю что такое "связь с мастер шейпом" и как это связано с размером файла. :D

Tumanov писал(а):
Цитата:
И я так понимаю невидимость фрагментов не поможет ускорить For Each Shape In Shapes.

Не поможет. А это настолько существенно? Программы легко перебирают сотни шейпов на странице. Что им стоит перебрать десятки мастеров в трафарете!

Да. Я бы не сказал что легко. Например алгоритм поиска дубликатов цикл в цикле с исключением проверенных шейпов занимает на странице из сотни логических элементов около 10 секунд.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 16:44 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Я не понимаю что такое "связь с мастер шейпом" и как это связано с размером файла. :D

Тревога была ложной, поэтому можно не обращать внимания.
А если интересно, то поясню.
1. Копируем мастер-шейп, являющийся группой из трафарета на страницу. Разгруппируем его и опять сгруппируем.
Полученный шейп уже не будет связан с исходным мастер-шейпом. Это уже совсем другой шейп. Здесь для примера взята уж очень "грубая" операция. Но в принципе, могут влиять и более простые.
Но добавление Connection Point связь с мастером не разрушает.
2. Про объем документа. Пусть в документе один мастер-шейп и 100 его копий. В другом документе 100 таких же шейпов, нарисованных заново. Объем второго документа будет раза в 2-3 больше. Причина - в копиях мастер-шейпа хранятся только отличия от исходного шейпа. Объем отличий гораздо меньше полного объема данных.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 17:02 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 12 май 2012, 15:16
Сообщений: 119
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
связь с мастером
вы имеете в виду наследование или что-то более глобальное ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 17:50 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Наследование.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 25 апр 2019, 22:44 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Цитата:
Я не понимаю что такое "связь с мастер шейпом" и как это связано с размером файла. :D

Тревога была ложной, поэтому можно не обращать внимания.
А если интересно, то поясню.
1. Копируем мастер-шейп, являющийся группой из трафарета на страницу. Разгруппируем его и опять сгруппируем.
Полученный шейп уже не будет связан с исходным мастер-шейпом. Это уже совсем другой шейп. Здесь для примера взята уж очень "грубая" операция. Но в принципе, могут влиять и более простые.
Но добавление Connection Point связь с мастером не разрушает.
2. Про объем документа. Пусть в документе один мастер-шейп и 100 его копий. В другом документе 100 таких же шейпов, нарисованных заново. Объем второго документа будет раза в 2-3 больше. Причина - в копиях мастер-шейпа хранятся только отличия от исходного шейпа. Объем отличий гораздо меньше полного объема данных.

Что понимается под словами "совсем другой шейп"? Имя изменится на Sheet.*?

Еще вопрос не по теме. Сегодня обнаружил что у некоторых фигур в Section Character несколько Rows (строки экземпляры шрифтов?), хотя текст в шейпе очень простой, одного шрифта и размера. Удалить лишние Rows нельзя. Решения не гуглятся. Пока придумал только скопировать Shape.Text в Shape.Data1 и обратно. При этом лишние Rows удаляются. Есть ли практическое решение данной проблемы? Нужно что-то вроде "очистка формата" как в Word.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 26 апр 2019, 00:20 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Что понимается под словами "совсем другой шейп"? Имя изменится на Sheet.*?

Не только имя. Во-первых, исчезнет ссылка на мастер-шейп. Во-вторых, увеличится объем данных. Вместо тех ячеек, содержимое которых отличается от мастер-шейпа, будут прописаны вообще все ячейки.
Цитата:
Пока придумал только скопировать Shape.Text в Shape.Data1 и обратно.

Как мне кажется это самый простой способ. Можно вообще просто переписать текст. Типа:
Код:
ActivePage.Shapes(1).Text = ActivePage.Shapes(1).Text


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 26 апр 2019, 08:35 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Цитата:
Что понимается под словами "совсем другой шейп"? Имя изменится на Sheet.*?

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

Пока не разобрался где вообще это все смотреть. В таблицах свойств не видел ссылок. Как сделать шейп мастером?
Tumanov писал(а):
Цитата:
Пока придумал только скопировать Shape.Text в Shape.Data1 и обратно.

Как мне кажется это самый простой способ. Можно вообще просто переписать текст. Типа:
Код:
ActivePage.Shapes(1).Text = ActivePage.Shapes(1).Text

Неа, так копируются все Fonts.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 26 апр 2019, 08:59 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3705
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
TheHeat писал(а):
Сегодня обнаружил что у некоторых фигур в Section Character несколько Rows (строки экземпляры шрифтов?), хотя текст в шейпе очень простой, одного шрифта и размера.
одно из предположений как это могло произойти: вставили в середине текста одной фигуры текст из другой фигуры, который был другого размера (или имел другой отличающийся элемент форматирования). а потом привели все высоты шрифта (элементы форматирования) к общему знаменателю.
Изображение
Дополнено позднее: если вы вставите в текст фигуры фрагмент текста другой фигуры того же размера, в раздел Characters также будут добавлены строки !

Tumanov писал(а):
Можно вообще просто переписать текст.
хочу отметить, что этот способ иногда может быть вреден ! например если текст фигуры содержит поле, после выполнения кода текст получится такой
Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 26 апр 2019, 09:40 
Не в сети
Administrator

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

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

Естественно! Но мы же знаем, что точнее использовать Characters.Text :)
Код:
ActivePage.Shapes(1).Characters.Text = ActivePage.Shapes(1).Characters.Text

Цитата:
Неа, так копируются все Fonts.

Интересно, а у меня в 2007 получается одна строка. Во всяком случае, с Characters. Может в конкретных случаях что-то еще мешает...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 26 апр 2019, 09:54 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Пока не разобрался где вообще это все смотреть. В таблицах свойств не видел ссылок. Как сделать шейп мастером?

Это хитро, но интересно. И очень полезно.
Смотреть нужно в XML.
Для старого формата нужно просто сохранить документ в vdx. Теперь его можно открывать в текстовом редакторе и рассматривать.
Новый формат нужно разархивировать. Предварительно переименовав в .zip. Смотреть PageNNN.xml
Очень удобно смотреть в Notepad++, если доставить ему плагин XML Tools. Там есть режим Pretty Print (XML only with line breaks), в котором XML показывается структурированным.


Вложения:
Capt_2.JPG
Capt_2.JPG [ 40.81 Кб | Просмотров: 253 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 26 апр 2019, 10:07 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Как сделать шейп мастером?

Сделать шейп мастером можно только перебросив его в трафарет.
А вот посмотреть, является ли он копией мастера, можно вот в этой строке
Код:
<Shape ID='181' NameU='Asset.21' Name='Asset.21' Type='Group' Master='21'>

Если шейп сам по себе, то атрибут Master отсутствует.
----------
Да, и через пользовательский интерфейс ссылку на мастер-шейп посмотреть можно.
Developer / Shape Name.
В строке Master будет либо имя прототипа (мастер-шейпа), либо текст <no master>.


Вложения:
Capt.JPG
Capt.JPG [ 17.29 Кб | Просмотров: 254 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Номерация ConnectionPoint
СообщениеДобавлено: 26 апр 2019, 14:10 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3705
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
Tumanov писал(а):
Но мы же знаем, что точнее использовать Characters.Text
это уже лучше! Но поле заменяется значением
:wall:


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

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



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

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


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

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