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

Форум по вопросам применения и программирования в Visio
Текущее время: 25 ноя 2017, 13:42

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Видовой экран
СообщениеДобавлено: 02 окт 2016, 21:54 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 433
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Тема поднималась - http://visio.getbb.ru/viewtopic.php?f=3&t=694
Ну так вот я доделал свою задумку по этому поводу.
В принципе можно применять, если необходимо. Справка в файле.
Скачать ViewPort.zip.

https://yadi.sk/d/qbpj9WI9d2eqF


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Видовой экран
СообщениеДобавлено: 03 окт 2016, 09:05 
Не в сети
Ветеран

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Видовой экран
СообщениеДобавлено: 03 окт 2016, 09:35 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 433
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
9rey писал(а):
интересный подход.
работает, если потом ничего не дорисовывать в этой области, так как новая фигура не попадет в видовой экран при обновлении.
для этого видимо надо запоминать область первоначального выделения, и потом при обновлении видового экрана выделять все шейпы в зоне и строить картинку. ну либо как-то еще...
а в целом принцип зачетный!


9rey, ты не прав.

Вариант 1: Если ВЭ создавался для всего листа, все что дорисовано попадет в ВЭ, все что удалено - исчезнет.

Вариант 2: Если ВЭ создавался для выделенных шейпов, все что дорисовано НЕ попадет в ВЭ, все что удалено (удалено из выделенных при создании ВЭ) - исчезнет.
Правда в этом случае есть нюанс. Если был выделен, например Sheet.45 (среди прочих) и он был удален, а потом добавлены некие другие шейпы и среди этих новых будет опять Sheet.45, то этот новый шейп тоже попадет в ВЭ.
Как то так. :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Видовой экран
СообщениеДобавлено: 03 окт 2016, 09:58 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
да это все понятно.
для всего листа создавать видовой экран не вижу смысла (для меня).
меня интересовал второй вариант. а там все как я и писал. дорисовал новый элемент без удаления старых - он не отобразится на ВЭ. в чем я тут не прав?
надо при обновлении опираться не на запомненные ID, а заново выделять шейпы макросом, попавшие в ту область, которую юзер выделил первый раз. т.е. запоминать не шейпы, а координаты зоны. ну это как бы я сделал. тут дело твоё.
с ID шейпов это мутно. не ясно как визио и чего там присваивает (вроде Surrogate говорил, что в новых версиях пустые ID не заполняются, в отличие от старых версий)


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 433
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
9rey, я наверно не допонял твой коммент. Ты видимо имел в виду создание ВЭ для выделенных шейпов в какой то области листа. Да действительно, если в эту область что то дорисовать, то это не войдет в обновленный ВЭ.
Проблема решается просто как очистка апельсина. Дописать Id дорисованных шейпов в ячейку "User.ShapesID.Value" целевого ВЭ. До обновления ВЭ. Ну конечно, это не совсем удобно, ручная работа. :D
Ладно, я тебя понял. Подумаю.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Видовой экран
СообщениеДобавлено: 03 окт 2016, 10:22 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
да. именно это. может сумбурно выразился.
просто сразу стал пробовать второй вариант с выделением группы шейпов. и стал "ломать" :) стирать, дорисовывать. смотрел код. как себя ведет в разных условиях.
ну и увидел такое поведение.
обычно же как: пользователь выделяет рамкой ту область, которую ему надо видеть и работать только с тем, что в нее попадает (например, как в автокаде).
не спорю, твой вариант тоже полезен, когда надо вынести в ВЭ только определенные объекты.
можно же реализовать оба варианта.
ну а вручную добавлять по ID, да, как-то кисло :D


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Видовой экран
СообщениеДобавлено: 03 окт 2016, 10:33 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 433
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Проще наверное, для твоего случая, создавать ВЭ для всего листа и настраивать его на нужную область.
Ну а повторить функционал Autocad до тонкостей - это сам понимаешь.
Тем более я не очень представляю как макросом определять отмеченную пользователем область.
Использовать WithEvents? Так код должен быть в модуле документа, а у меня все в .vss.
И метод Selection.BoundingBox работает только для одного шейпа. :cry:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Видовой экран
СообщениеДобавлено: 03 окт 2016, 11:20 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Проще наверное, для твоего случая, создавать ВЭ для всего листа и настраивать его на нужную область.

если так, то да. наверно это решает проблему. тогда можно ничего и не делать больше.
Shishok писал(а):
Использовать WithEvents? Так код должен быть в модуле документа, а у меня все в .vss.

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


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

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



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

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


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

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