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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 12:27

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Повторный слой
СообщениеДобавлено: 25 сен 2012, 18:01 
Не в сети

Зарегистрирован: 27 сен 2012, 10:02
Сообщений: 10
Очков репутации: 0

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


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

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

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

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


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

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

Добавить очки репутацииУменьшить очки репутации
если параметры - это например секция Shape Data (Custom Properties) у этой самой линии, в которой хранятся данные из экселя, то со слоями облом, так как в визио к слою может принадлежать только вся фигура, а не ее свойства.
либо тебе придется делать группы из шейпов(фигур): линия + текст1, текст2... текстN и тд. и уже их раскидывать по слоям. либо делать механизм отображения тех или иных данных например кнопочкой на тулбаре. второй вариант значительно проще (как мне кажется).
я конечно могу чет-то не так понять. уточняй. присылай примеры. поможем.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Повторный слой
СообщениеДобавлено: 26 сен 2012, 15:37 
Не в сети

Зарегистрирован: 27 сен 2012, 10:02
Сообщений: 10
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Вот ссылка на архив:
http://rghost.ru/40583944 - Файл визио+файл эксель.

Попытаюсь объяснить четче:
В визио, как можете видеть, есть блоки, соединенные линиями. У этих линий есть разные параметры, которые вбиты в эксель (номер линии, всего каналов, занято каналов, загруженность линии).
Линиям даются имена - номера линий. Соответственно, после связывания экселевского файла с визио линии стали обладать теми же параметрами.

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

Изображение
Изображение

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

Если кто-то сумеет на прикрепленной схеме совместить это дело, то будет отлично:) Мне хотя бы пример, как это смастерить.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
если имеем дело с 2 слоями.

1. Добавляем на линию текстовое поле. Ctrl+F9, в разделе "Данные фигуры" выбираем пункт "Всего каналов"
теперь на линии появится значение, но без кружка вокруг текста и всех этих стилей
2. Делаем, чтоб текст этого поля был виден если в свойстве слоя "загруженность" стоит галочка. Пишем формулу
Код:
=NOT(ThePage!Layers.Visible[2])
см. оранжевый прямоугольник
3. Делаем, чтоб текст цвет линии юыл черным если в свойстве слоя "загруженность" стоит галочка, если галочки нет то он будет цветным. Пишем формулу
Код:
=IF(ThePage!Layers.Visible[2]=0,User.visDGCBVFill,0)
см. зеленый прямоугольник


Хотя я наверно слишком упростил задачу :) не поняв всей ее сути.

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


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

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

Добавить очки репутацииУменьшить очки репутации
А так ли Вам важно слово "слой"? По-моему, здесь удобнее использовать не слои, а просто некую переменную. Например, "режим".
Шейпы нужно настроить так, чтобы они изменяли отображаемую информацию в зависимости от режима. Данные они будут хранить все, а изображение менять.
Например, в режиме 1 цвет управляется одим из свойств. А в режиме 2 цвет всегда черный, зато появляется кружок, в котором отображается другое свойство.
Такой подход более "родной" для Visio.
А реализация примерно такая, как написал Surrogate, только ссылка не на слой, а на свойство страницы или документа, в который заносится и где хранится значение режима.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Повторный слой
СообщениеДобавлено: 26 сен 2012, 19:07 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
вот! я и хотел уже такой пример написать, но Surrogate вроде как тоже предложил рабочий вариант. я бы эту переменную (как предложил Tumanov) разместил на шейпшите страницы и на нее ссылался.


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

Зарегистрирован: 27 сен 2012, 10:02
Сообщений: 10
Очков репутации: 0

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

1. Добавляем на линию текстовое поле. Ctrl+F9, в разделе "Данные фигуры" выбираем пункт "Всего каналов"
теперь на линии появится значение, но без кружка вокруг текста и всех этих стилей
2. Делаем, чтоб текст этого поля был виден если в свойстве слоя "загруженность" стоит галочка. Пишем формулу
Код:
=NOT(ThePage!Layers.Visible[2])
см. оранжевый прямоугольник
3. Делаем, чтоб текст цвет линии юыл черным если в свойстве слоя "загруженность" стоит галочка, если галочки нет то он будет цветным. Пишем формулу
Код:
=IF(ThePage!Layers.Visible[2]=0,User.visDGCBVFill,0)
см. зеленый прямоугольник

Хотя я наверно слишком упростил задачу :) не поняв всей ее сути.

Я так понимаю надо каждой линии приписать эти строки?

Слово "слой" вообще не важно. Просто в визио я работал только со слоями до этого, в таблицу свойств фигуры никогда не приходилось заглядывать)
"Режим" надо создать. Подскажите, пожалуйста, каким способом. Столь глубоко в визио не лазил все-таки.


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

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

Слово "слой" вообще не важно. Просто в визио я работал только со слоями до этого, в таблицу свойств фигуры никогда не приходилось заглядывать)
"Режим" надо создать. Подскажите, пожалуйста, каким способом. Столь глубоко в визио не лазил все-таки.

Можно для каждой линии, а можно для одной а потом сделать нужное количество ее копий и каждую копию связать с экселем

чтоб увидеть таблицу свойств фигуры в визио2010 нужно предварительно включить "Режим разработчика". Тогда на риббоне появится панель "Разработчик". как включить я описал p#1412
самый простой вариант открытия таблицы свойств, надо чтоб не было выделено ни одного шейпа. щелкаем по правой кнопке мыши

добавление секции Action
Изображение

по правому клику мыши увидим на контекстной менюшке добавился пункт "Режим"
Изображение
я ничего не стал писать что нужно делать по клику на этом пункте меню

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Повторный слой
СообщениеДобавлено: 27 сен 2012, 12:59 
Не в сети

Зарегистрирован: 27 сен 2012, 10:02
Сообщений: 10
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Цитата:
Surrogate


Так, хорошо. Создал.
В шейпшите я могу что-то понаписать, где интуитивно понятно. А другие строки (тоже самое задание действия для какого-то режима) уже проблема. Все упирается в элементарное незнание формул, используемых в визио. Может быть есть ресурс какой, где это подробно объясняется? Я, к сожалению, не нашел.
А то я боюсь, что замучаю вас своими вопросами)

Что нужно прописать, чтобы цвет всех линий управлялся свойствами этих самых линий, одним из значений?


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

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

очень хорошая книга от создателя данного форума http://visio.artberg.ru/bookpdf.htm
можно воспользоваться поиском на этом форуме и на старом http://visio.artberg.ru/forum/default.asp
http://visio.artberg.ru/bib.htm
http://visio.artberg.ru/faq.htm
http://www.prodigitall.narod.ru/articles/index.html
http://ovisio.ru/?cat=16

если владеешь английским то http://www.visguy.com/
ну и поисковики типа яндекса и гугла наверняка помогут


кстати на линиях в примере была формула
Код:
=IF(AND(0<=Prop._VisDM_Загруженность_линии,Prop._VisDM_Загруженность_линии<=0.5),RGB(0,176,80),IF(AND(0.51<=Prop._VisDM_Загруженность_линии,Prop._VisDM_Загруженность_линии<=0.75),RGB(255,192,0),IF(AND(0.76<=Prop._VisDM_Загруженность_линии,Prop._VisDM_Загруженность_линии<=1),RGB(255,0,0),1.5)))

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Повторный слой
СообщениеДобавлено: 27 сен 2012, 15:02 
Не в сети
Ветеран

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

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


самый простой "ресурс" - кнопка F1. там подробное описание всех ф-й от разработчиков визио (если знаешь английский). начиная с визио 2007 хелп на русском.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Повторный слой
СообщениеДобавлено: 27 сен 2012, 17:47 
Не в сети

Зарегистрирован: 27 сен 2012, 10:02
Сообщений: 10
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Всем спасибо за помощь!
Соорудил нужное задание проще, без слоев и т.д.

Все равно почерпнул много нового, буду еще к вам обращаться, уважаемые спецы:)


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

Зарегистрирован: 27 сен 2012, 10:02
Сообщений: 10
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
И таки возник еще вопрос.
Вот участок схемы:
Изображение

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

Подскажете? С макросами и программированием очень туго, код помог бы:)


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

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

Добавить очки репутацииУменьшить очки репутации
Полагаю из точки А в точку В можно попасть разными путями? Тогда задача не тривиальная, ибо тут, для начала, надо сделать поиск оптимального пути ("задача коммивояжера").

Чуть проще будет если заставить юзера выделять сам путь ручками.


Последний раз редактировалось ss87 04 окт 2012, 13:55, всего редактировалось 1 раз.

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

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

так что подсветка вычисляемого участка ни к чему

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


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

Зарегистрирован: 27 сен 2012, 10:02
Сообщений: 10
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Вариант с выбором "ручками" подходит) Так даже легче будет на самом деле.
А параметры будут складываться, ничего сложнее.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Код:
Sub Macro4()
Dim c As Integer
Dim sh As Shape
Dim se As Selection
c = 0
Set se = ActiveWindow.Selection
For i = 1 To se.Count
Set sh = se.Item(i)
c = c + sh.Cells("Prop.1").FormulaU * 1
Debug.Print sh.Name
Next i
MsgBox c
End Sub

допустим у всех конеекторов есть параметр Prop.1!
макрос делает перебор выбранных коннекторов и суммирует значения этого параметра

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Повторный слой
СообщениеДобавлено: 04 окт 2012, 12:43 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
немного поправлю в этой строке:
Код:
c = c + sh.Cells("Prop.1").FormulaU * 1

если надо взять непосредственно число с ячейки, не нужно использовать FormulaU. нужно использовать Result(0) или ResultIU.
возвращается сразу число, а не строка (если там было число конечно). и работает так быстрее.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Повторный слой
СообщениеДобавлено: 04 окт 2012, 13:02 
Не в сети
Content manager
Content manager
Аватара пользователя

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

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


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

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



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

Сейчас этот форум просматривают: Yandex [bot] и гости: 5


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

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