Author |
Topic |
|
Skaarj81
Russia
2 Posts |
Posted - 01/27/2009 : 19:49:56
|
Я пользуюсь Visio буквально пару дней, но теперь придется в нем находиться очень часто :) Версия у меня 2007, русская поэтому и вопрос задам так как я это воспринял.
По ходу моей работы многие схемы, которые мне рисовать придется, будут содержать элементы, положения которых со временем могут меняться и хочется чтобы переключение из одного режима в другой осуществлялось по правому клику мыши на элементе. А не удалением его и вставкой нового из библиотеки.
В стандартной базе таких фигур довольно много: допустим в разделе техника> электротехника> базовые компоненты> резистор, батарея, конденсатор... и пр. имеют два варианта отображения. А микрофон, катушка индуктивности... ещё больше.
Научите создавать такие фигуры самому. |
|
zhuravsky
Russia
115 Posts |
|
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 на противоположное. Значение передается в такую же ячейку внутреннего шейпа, в котором содержится геометрия. В зависимости от значения этой ячейки меняются координаты линии. Для управления могут использоваться и другие приемы: изменение видимости элементов, изменение типа линий или заливки). Наличие группы тоже совершенно не обязательно. Короче, разных возможностей - море. |
|
|
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)
теперь дело лишь за малым научиться объединять элементы из которых строю фигуры, да бы не писать полукилометровые формулы :) И четко нарисовать то что мне нужно.
Автору статей выражаю огромную благодарность. За то, как они написаны. В большинстве случаев о таких руководствах можно лишь мечтать. |
|
|
zhuravsky
Russia
115 Posts |
Posted - 01/29/2009 : 05:23:00
|
По поводу точек с запятыми. Не забывайте о разных версиях Визио. В этом продукте с точками и запятыми временами происходят забавные вещи, имейте это ввиду, если где-нибудь получите "непонятное" сообщение об ошибке. Удачи. |
|
|
GDK
Russia
90 Posts |
Posted - 01/30/2009 : 10:49:31
|
Давно хотел спросить. Где то здесь было написано про то что лучше использовать вместо сгруппированной фигуры (напр. квадрат из 4-х линий) одну с несколькими строками в секц. Geometry. Это уменьшает количество "метров" (Мбайт), занимаемых фигурой. Так вот. А если надо чтобы линии были разного типа (одна толще, другая штриховая и т.п.)? Как нибудь можно сделать? Есть ведь такие готовые SmartShape. По их листу с формулами понять ничего не смог. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 01/30/2009 : 20:50:59
|
quote: Есть ведь такие готовые SmartShape.
Таких быть не должно, так как тип линии определяется в одном месте для всего шейпа. Значит просто что-то накручено либо с группировкой, либо с образцами линий. Если видите такой готовый, дайте ссылку, поразбираемся... |
|
|
GDK
Russia
90 Posts |
Posted - 02/24/2009 : 12:25:09
|
Да. Похоже я загнался. Целый месяц пытался найти, вспомнить. Зря. Похоже это по неопытности принимал фигуры с несколькими Geometry в шеип листе за одну пунктирную линию. Прошу извинить. |
|
|
|
Topic |
|
|
|