All Forums
 Категория Visio
 Форум Вопросы и ответы
 фигуры с несколькими действиями
Author Previous Topic Topic Next Topic  

Skaarj81

Russia
2 Posts

Posted - 01/27/2009 :  19:49:56
Я пользуюсь Visio буквально пару дней, но теперь придется в нем находиться очень часто :) Версия у меня 2007, русская поэтому и вопрос задам так как я это воспринял.

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

В стандартной базе таких фигур довольно много: допустим в разделе техника> электротехника> базовые компоненты> резистор, батарея, конденсатор... и пр. имеют два варианта отображения.
А микрофон, катушка индуктивности... ещё больше.

Научите создавать такие фигуры самому.

zhuravsky

Russia
115 Posts

Posted - 01/28/2009 :  05:30:06
http://visio.artberg.ru/biblio/st003.htm
В разделе Библиотека на этом сайте очень много статей по этому поводу
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/28/2009 :  15:39:18
Еще пару слов добавлю... На конкретном примере.
Для решения нужны три составляющие:
1. переключающаяся графика;
2. управление через контекстное меню;
3. ячейка для хранения состояния.
Смотрим, как устроен шейп Switches and Relays (Metric) / SPST
Шейп имеет два изображения: открытый и закрытый ключ.
Шейп управляется одним пунктом встроенного меню. Причем текст меню изменяется в зависимости от изображения. Это либо "Show Open Circuit", либо "Show Closed Circuit".
Для изучения переносим шейп на рисунок, селектируем и щелкаем Window / Show ShapeSheet. Все поведение шейпа описано в шейп-листе.
1. Контекстное меню.
Для получения такого меню в шейп-листе должна быть секция Actions. Каждая строка - это один пункт меню.
Ячейка Action задает собственно действие, Menu - текст меню.
В Menu записана формула IF(Scratch.A1=1,"Sho&w Open Circuit","Sho&w Closed Circuit")
Формула с условием, означает следующее: Если в ячейке Scratch.A1 записана 1, выводить текст "Sho&w Open Circuit", иначе текст "Sho&w Closed Circuit".
А формула в ячейке Action как раз меняет значение ячейки Scratch.A1
Ее формула: SETF(GetRef(Scratch.A1),IF(Scratch.A1=0,1,0))
Это значит: Если в Scratch.A1 записан 0, то записать туда 1, иначе записать 0. То есть каждое выполнение формулы меняет значение ячейки Scratch.A1 на альтернативное.
2. Секция Scratch - секция которая вводится для хранения каких-либо промежуточных результатов вычислений. В нашем случае она хранит текущее состояние шейпа.
Так как шейп является группой, значение управляющей ячейки передается шейпу-компоненту. Если открыть группу, то во внутреннем шейпе в аналогичной ячейке Scratch мы увидим формулу =Sheet.2!Scratch.A1. Это трансляция значения во внутренний шейп.
3. Геометрия
Геометрия состоит из трех секций: две окружности и линия. При переключении геометрии (в данном случае) меняются координаты линии.
Формула в координате Y начала линии =IF (Scratch.A1=0,Height*0.2279,Geometry2.Y2) задает небольшое смещение вверх при нулевом значении ячейки Scratch.A1.
В конце линии в зависимости от той же ячейки меняются обе координаты.
Еще раз коротко повторяем общий принцип. При выборе пункта контекстного меню выполняется формула в секции Action шейпа-группы. Формула изменяет значение ячейки Scratch на противоположное. Значение передается в такую же ячейку внутреннего шейпа, в котором содержится геометрия. В зависимости от значения этой ячейки меняются координаты линии.
Для управления могут использоваться и другие приемы: изменение видимости элементов, изменение типа линий или заливки). Наличие группы тоже совершенно не обязательно. Короче, разных возможностей - море.
Go to Top of Page

Skaarj81

Russia
2 Posts

Posted - 01/28/2009 :  20:11:37
Всем спасибо, я нашел то что меня интересует в статье "Мультифигуры"
Всё подробно расписано, и главное есть картинки и примеры.

Кстати в тексте статьи формулы неправильно записаны.
=SETF("Geometry1.NoShow";0)+SETF("Geometry2.NoShow";1)вместо точки с запятой должны быть просто запятые. Вот так(как в созданном автором примере.
=SETF("Geometry1.NoShow",0)+SETF("Geometry2.NoShow",1)

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

Автору статей выражаю огромную благодарность. За то, как они написаны. В большинстве случаев о таких руководствах можно лишь мечтать.
Go to Top of Page

zhuravsky

Russia
115 Posts

Posted - 01/29/2009 :  05:23:00
По поводу точек с запятыми.
Не забывайте о разных версиях Визио. В этом продукте с точками и запятыми временами происходят забавные вещи, имейте это ввиду, если где-нибудь получите "непонятное" сообщение об ошибке.
Удачи.
Go to Top of Page

GDK

Russia
90 Posts

Posted - 01/30/2009 :  10:49:31
Давно хотел спросить. Где то здесь было написано про то что лучше использовать вместо сгруппированной фигуры (напр. квадрат из 4-х линий) одну с несколькими строками в секц. Geometry. Это уменьшает количество "метров" (Мбайт), занимаемых фигурой. Так вот. А если надо чтобы линии были разного типа (одна толще, другая штриховая и т.п.)? Как нибудь можно сделать? Есть ведь такие готовые SmartShape. По их листу с формулами понять ничего не смог.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/30/2009 :  20:50:59
quote:
Есть ведь такие готовые SmartShape.

Таких быть не должно, так как тип линии определяется в одном месте для всего шейпа. Значит просто что-то накручено либо с группировкой, либо с образцами линий.
Если видите такой готовый, дайте ссылку, поразбираемся...
Go to Top of Page

GDK

Russia
90 Posts

Posted - 02/24/2009 :  12:25:09
Да. Похоже я загнался. Целый месяц пытался найти, вспомнить. Зря. Похоже это по неопытности принимал фигуры с несколькими Geometry в шеип листе за одну пунктирную линию. Прошу извинить.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)