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

Форум по вопросам применения и программирования в Visio
Текущее время: 14 июн 2021, 13:36

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 21:31 
Не в сети
Новичок

Зарегистрирован: 24 мар 2021, 21:04
Сообщений: 25
Использую Visio c: 2013
Добрый вечер всем.
Есть какой-то способ рисовать элементы на виртуальную страницу, или виртуальную фигуру, а затем показать её?
Я хочу ускорить отрисовку. И ищу любые варианты.

У меня достаточно большие проекты с элементами больше тысячи. Мне нужно выделить некоторые.
Вот что я пробовал:
1. Изменить параметры всех фигур, например прозрачность текста, прозрачность линий и прозрачность заливки, кроме тех что нужны.
Это чертовски медленно.
2. Рисовать белый чуть прозрачный прямоугольник поверх страницы, и рисовать на нём (в его группу) необходимые фигуры (методом Drop)
Быстро, но довольно глючно. Некоторые 1D фигуры рисуются иначе (Возможно надо запоминать их MoveTo LineTo, но это запарно). И не могу разобраться почему некоторые фигуры, после группировки разгруппировки, даже при полном репарсе страницы (разборе всех необходимых фигур) пропадают. И не получается дропнуть фиугуру, как будто она уже помечена для данной страницы с данным ID как мастер из такой-то группы, и трогать группу нельзя иначе дроп этой фигуры не сработает.
3. Рисовать белый чуть прозрачный прямоугольник поверх страницы, и копировать в него все фигуры. Медленно, но чертовски надёжно. (Единственное нельзя в этот момент использовать буфер обмена)

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

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

Использую VSTO C#. Пишу надстройку.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4206
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
А что такое виртуальная страница?

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 21:45 
Не в сети
Новичок

Зарегистрирован: 24 мар 2021, 21:04
Сообщений: 25
Использую Visio c: 2013
Это образное выражение, того что я хочу. Невидимая страница или объект. На которой не срабатывает отрисовка. Чтобы объект был только внутри математики, никаких ГУИ. И когда объект готов - показать его.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4206
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Dubsage писал(а):
Есть какой-то способ рисовать элементы на виртуальную страницу, или виртуальную фигуру, а затем показать её?
Я хочу ускорить отрисовку. И ищу любые варианты.

У меня достаточно большие проекты с элементами больше тысячи. Мне нужно выделить некоторые.
Вот что я пробовал:
1. Изменить параметры всех фигур, например прозрачность текста, прозрачность линий и прозрачность заливки, кроме тех что нужны.
может помешать их в специальный слой, который показывать в случае необходимости?

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 21:52 
Не в сети
Новичок

Зарегистрирован: 24 мар 2021, 21:04
Сообщений: 25
Использую Visio c: 2013
О это идея. Возможно это ускорит процесс! Попробую. Спасибо.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4206
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Цитата:
Некоторые 1D фигуры рисуются иначе (Возможно надо запоминать их MoveTo LineTo, но это запарно). И не могу разобраться почему некоторые фигуры, после группировки разгруппировки, даже при полном репарсе страницы (разборе всех необходимых фигур) пропадают. И не получается дропнуть фиугуру, как будто она уже помечена для данной страницы с данным ID как мастер из такой-то группы, и трогать группу нельзя иначе дроп этой фигуры не сработает.
тут я вообще не понял, зачем что то рисовать/группировать и тут же разгруппировывать? И сразу туда дропнуть что то

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 21:59 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 523
Использую Visio c: 2008
Цитата:
На которой не срабатывает отрисовка. Чтобы объект был только внутри математики, никаких ГУИ.

Может использовать метод SetFormulas. Сразу задается куча значений/формул/параметров фигуры.
https://docs.microsoft.com/ru-ru/office/vba/api/visio.shape.setformulas

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 22:06 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4206
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
В таблице свойств каждого раздела Geometry, есть ячейки NoLine и NoShow с их помощью, можно поиграть видимостью фигуры или ее частей.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 23:05 
Не в сети
Новичок

Зарегистрирован: 24 мар 2021, 21:04
Сообщений: 25
Использую Visio c: 2013
[/quote] может помешать их в специальный слой, который показывать в случае необходимости?[/quote]
Увы, засёк время видимых и не видимых фигур. И одинаково до долей секунды. Всё же не туда копаю. Надо возвращаться к дропу и разбираться с ним, вместо копи паста фигур =(

Surrogate писал(а):
Цитата:
Некоторые 1D фигуры рисуются иначе (Возможно надо запоминать их MoveTo LineTo, но это запарно). И не могу разобраться почему некоторые фигуры, после группировки разгруппировки, даже при полном репарсе страницы (разборе всех необходимых фигур) пропадают. И не получается дропнуть фиугуру, как будто она уже помечена для данной страницы с данным ID как мастер из такой-то группы, и трогать группу нельзя иначе дроп этой фигуры не сработает.
тут я вообще не понял, зачем что то рисовать/группировать и тут же разгруппировывать? И сразу туда дропнуть что то

Как я делаю отрисовку через дроп. Есть проект, я его просматриваю, делаю изменения, сохраняю данные в excel. И теперь мне нужно выделить некоторые определенные фиугры. Я Рисую белую прозрачную подложку, группирую и дропаю на неё копии всех необходимых фигур. То есть в первом параметре функций Drop - ссылка на реальную фигуру на странице. Эти фигуры могут быть где-то в глубоких подгруппах. И всё хорошо. Всё отрисовалсь. Но если пользователь меняет проект, что-то группирует или разгруппирует. То теперь, запустив процесс повторно, получив уже новые ссылки на фигуры, они не дропаются, вылетает ошибка, не помню какая, поэтому отказался от этого способа. Это очень удивительно. Возможно я где-то накосячил, надо будет попробовать это повторить на каком-то простейшем примере.

Shishok писал(а):
Цитата:
На которой не срабатывает отрисовка. Чтобы объект был только внутри математики, никаких ГУИ.

Может использовать метод SetFormulas. Сразу задается куча значений/формул/параметров фигуры.
https://docs.microsoft.com/ru-ru/office/vba/api/visio.shape.setformulas

Это прямо сейчас не особо важно, нужно просто нарисовать много фигур, овер 1000. Но про этот метод не знал, буду пользоваться - огромное спасибо.

Surrogate писал(а):
В таблице свойств каждого раздела Geometry, есть ячейки NoLine и NoShow с их помощью, можно поиграть видимостью фигуры или ее частей.

На групповых - такой секции нет по умолчанию, надо добавлять, а на внутренние фигуры, всё равно не действует. Я искал что-то более универсальное. Слои действительно - то что надо. Но не сработало. Время моего копипаста ни чуть не изменилось (

Пойду попробую повторить ошибку с дропом в миниатюре. Дроп мне ещё не нравится тем, что 1D линии ломаются. Копирую же шейп дропом со всеми параметрами, должно быть 1 в 1, а они меняются (MoveTo LineTo).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 23:33 
Не в сети
Ветеран

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

Код:
    Application.DeferRecalc = True 'отключен внутренний пересчет ячеек
    Application.ScreenUpdating = False


как раз для ускорения.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 24 мар 2021, 23:38 
Не в сети
Новичок

Зарегистрирован: 24 мар 2021, 21:04
Сообщений: 25
Использую Visio c: 2013
9rey писал(а):
есть же отключение прорисовки экрана и пересчета ячеек:

Код:
    Application.DeferRecalc = True 'отключен внутренний пересчет ячеек
    Application.ScreenUpdating = False


как раз для ускорения.

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


Воот, это уже очень близко к тому, что я ищу. Попробую. Спасибо!

Но вопрос с дропом у меня остался. С имитировал его. Задам в отдельной ветке.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4206
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Dubsage писал(а):
нужно просто нарисовать много фигур, овер 1000
это не так много кстати, быстро отрисовать не сложно. особенно воспользовавшись советом выше
9rey писал(а):
Код:
    Application.DeferRecalc = True 'отключен внутренний пересчет ячеек
    Application.ScreenUpdating = False
как раз для ускорения
показывать / скрывать фигуры в завимости от некоторого условия это уже отдельная задача!
Dubsage писал(а):
Как я делаю отрисовку через дроп. Есть проект, я его просматриваю, делаю изменения, сохраняю данные в excel. И теперь мне нужно выделить некоторые определенные фиугры. Я Рисую белую прозрачную подложку, группирую и дропаю на неё копии всех необходимых фигур. То есть в первом параметре функций Drop - ссылка на реальную фигуру на странице. Эти фигуры могут быть где-то в глубоких подгруппах. И всё хорошо. Всё отрисовалсь. Но если пользователь меняет проект, что-то группирует или разгруппирует. То теперь, запустив процесс повторно, получив уже новые ссылки на фигуры, они не дропаются, вылетает ошибка, не помню какая
а тут вообще мешанина всякого. одно дело нарисовать что-то, а другое сделать что-то с тем что останется от нарисованного после ядерного взрыва серии группировок/разгруппировок.
powercat в сообщении #12290 писал(а):
Привет, коллеги-визуализаторы )))
Пишу новый проект. Управляющая оболочка на С# + стенсилсы на вижуо с вмонтированными формулами )))

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 25 мар 2021, 00:40 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 779
Откуда: Вена, Австрия
Использую Visio c: 1998
Самый быстрый способ - выбросить нафик C#, переписать все как макрос на VBA, и запускать все в Visio 2010.
Еще быстрее - выбросить Visio, генерировать VSDX напрямую. Еще быстрее - выбросить VSDX; генерировать SVG. Будет просто ракета.
Применимо ли в твоем случае - х.з.

Про полезность "белого, чуть прозрачного" прямоугольника вообще не понял, выглядит как "шапочка из фольги" :D

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 25 мар 2021, 00:49 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4206
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
nbelyh писал(а):
выглядит как "шапочка из фольги"
такой головной убор не поможет ускорить работу кода, но от этих просто спасает !
Изображение

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 25 мар 2021, 18:17 
Не в сети
Новичок

Зарегистрирован: 24 мар 2021, 21:04
Сообщений: 25
Использую Visio c: 2013
Код:
   
Application.DeferRecalc = True
Application.ScreenUpdating = False

Ускорился на 10%. Вернусь на дроп вместо копирования, и посмотрю результат. Буду учить ДропМэни.

Цитата:
очень напоминает постановки задачи от этого персонажа :mrgreen:

Есть такие проблемы =)

Цитата:
Самый быстрый способ - выбросить нафик C#, переписать все как макрос на VBA, и запускать все в Visio 2010.
Еще быстрее - выбросить Visio, генерировать VSDX напрямую. Еще быстрее - выбросить VSDX; генерировать SVG. Будет просто ракета.
Применимо ли в твоем случае - х.з.

Не возможно спорить. Но от VSTO не могу уйти.

Цитата:
Про полезность "белого, чуть прозрачного" прямоугольника вообще не понял, выглядит как "шапочка из фольги" :D

Абсолютно бесполезный с точки зрения скорости. xD

Всем спасибо. ^___^


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

Зарегистрирован: 24 мар 2021, 21:04
Сообщений: 25
Использую Visio c: 2013
Если вдруг кому интересно будет. То Дроп Мэни, сократил время в половину по сравнению с обычным множественным Дропом. Про копи/паст забыл как про страшный сон. Теперь это приемлимо по скорости. Не мгновенно, как бы мне хотелось, но уже работабельно.


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

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
nbelyh писал(а):
выбросить нафик C#

Т.е. ты разочаровался в С#? Или не советуешь на нем писать надстройки?


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4206
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
9rey писал(а):
не советуешь на нем писать надстройки?
дружище ты все ещё планируешь на него перейти?
9rey в сообщении от 19.07.2012 писал(а):
тоже подумываю о переходе на C# в будущем
:mrgreen:

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 26 мар 2021, 00:01 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 779
Откуда: Вена, Австрия
Использую Visio c: 1998
9rey писал(а):
Т.е. ты разочаровался в С#? Или не советуешь на нем писать надстройки?

Я просто имел в виду что быстрее чем VBA не будет.
Для надстроек Visio сейчас альтернатив C# особых и нет, я думаю. Сам я на C# последние пару лет почти не пишу. Жаваскрипт наше все.
Не то чтобы я разочаровался, C# отличный язык, просто текущий проект который делаю, он для web.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как быстро рисовать фигуры?
СообщениеДобавлено: 26 мар 2021, 13:32 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Surrogate писал(а):
дружище ты все ещё планируешь на него перейти?

Не я же автор темы, совет не мне был.
Я сам уже давно ничего не планирую)


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

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



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

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


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

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